Assembly Diffs

linux arm64

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

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

Overall (-250,480 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 15,545,232 -3,284
benchmarks.run_pgo.linux.arm64.checked.mch 79,735,896 -19,856
benchmarks.run_tiered.linux.arm64.checked.mch 24,597,876 -6,084
coreclr_tests.run.linux.arm64.checked.mch 508,527,192 -29,700
libraries.crossgen2.linux.arm64.checked.mch 55,834,472 -11,212
libraries.pmi.linux.arm64.checked.mch 76,274,408 -8,672
libraries_tests.run.linux.arm64.Release.mch 394,024,440 -150,612
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 164,978,292 -15,980
realworld.run.linux.arm64.checked.mch 15,900,008 -3,380
smoke_tests.nativeaot.linux.arm64.checked.mch 2,829,664 -1,700

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 (-227,592 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 15,240,304 -3,284
benchmarks.run_pgo.linux.arm64.checked.mch 53,801,112 -14,564
benchmarks.run_tiered.linux.arm64.checked.mch 4,859,440 -2,428
coreclr_tests.run.linux.arm64.checked.mch 160,379,040 -26,988
libraries.crossgen2.linux.arm64.checked.mch 55,832,836 -11,212
libraries.pmi.linux.arm64.checked.mch 76,154,424 -8,672
libraries_tests.run.linux.arm64.Release.mch 178,892,488 -139,976
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 151,480,828 -15,388
realworld.run.linux.arm64.checked.mch 15,319,084 -3,380
smoke_tests.nativeaot.linux.arm64.checked.mch 2,828,676 -1,700

Example diffs

benchmarks.run.linux.arm64.checked.mch

-8 (-8.70%) : 6045.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)

@@ -50,23 +50,20 @@ G_M6504_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, by ;; size=28 bbWeight=1 PerfScore 7.00 G_M6504_IG03: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=100002 {x1 x20}, byref, isz mov w3, w2
- lsl x4, x3, #1 - add x4, x1, x4 - ; byrRegs +[x4] - ldrb w3, [x20, x3] - strh w3, [x4]
+ ldrb w4, [x20, x3] + strh w4, [x1, x3, LSL #2]
add w2, w2, #1 cmp w2, w19 blt G_M6504_IG03
- ;; size=32 bbWeight=4 PerfScore 32.00
+ ;; size=24 bbWeight=4 PerfScore 26.00
G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[x1 x4 x20]
+ ; byrRegs -[x1 x20]
ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 92, prolog size 20, PerfScore 45.50, instruction count 23, allocated bytes for code 92 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
+; Total bytes of code 84, prolog size 20, PerfScore 39.50, instruction count 21, allocated bytes for code 84 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -77,7 +74,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)

-40 (-7.94%) : 27787.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (FullOpts)

@@ -7,36 +7,30 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 7, 5.08) ref -> x0 class-hnd single-def <int[][]> -; V01 arg1 [V01,T16] ( 11, 26.98) int -> x1 single-def -; V02 loc0 [V02,T11] ( 18, 35.40) int -> x2 -; V03 loc1 [V03,T01] ( 23, 84.96) int -> x5 -; V04 loc2 [V04,T14] ( 6, 32.00) int -> x10
+; V00 arg0 [V00,T17] ( 7, 5.08) ref -> x0 class-hnd single-def <int[][]> +; V01 arg1 [V01,T15] ( 11, 26.98) int -> x1 single-def +; V02 loc0 [V02,T11] ( 17, 35.48) int -> x2 +; V03 loc1 [V03,T01] ( 25, 85.27) int -> x5 +; V04 loc2 [V04,T13] ( 6, 32.00) int -> x9
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T03] ( 7, 64.32) ref -> x11 class-hnd "Strict ordering of exceptions for Array store" <int[]>
+; V06 tmp1 [V06,T03] ( 7, 64.32) ref -> x10 class-hnd "Strict ordering of exceptions for Array store" <int[]>
; V07 tmp2 [V07,T04] ( 6, 64.00) int -> x13 "Strict ordering of exceptions for Array store"
-; V08 tmp3 [V08,T02] ( 8, 64.64) ref -> x8 "arr expr" -; V09 tmp4 [V09,T00] ( 9, 96.00) ref -> registers "arr expr" -; V10 tmp5 [V10,T13] ( 6, 1.91) ref -> registers "arr expr" -; V11 cse0 [V11,T26] ( 3, 0.36) ref -> x6 hoist "CSE - conservative" -; V12 cse1 [V12,T22] ( 3, 0.48) ref -> x8 "CSE - conservative" -; V13 cse2 [V13,T24] ( 3, 0.48) ref -> x0 "CSE - conservative" -; V14 cse3 [V14,T10] ( 8, 37.64) ref -> x7 hoist multi-def "CSE - aggressive" -; V15 cse4 [V15,T06] ( 2, 31.36) ref -> x0 "CSE - aggressive" -; V16 cse5 [V16,T21] ( 4, 4.00) long -> x6 hoist multi-def "CSE - aggressive" -; V17 cse6 [V17,T12] ( 6, 33.68) long -> x6 hoist multi-def "CSE - aggressive" -; V18 cse7 [V18,T08] ( 3, 47.04) long -> x8 "CSE - aggressive" -; V19 cse8 [V19,T28] ( 2, 0.08) long -> x10 hoist "CSE - conservative" -; V20 cse9 [V20,T27] ( 3, 0.36) long -> x7 hoist "CSE - conservative" -; V21 cse10 [V21,T23] ( 3, 0.48) long -> x9 "CSE - conservative" -; V22 cse11 [V22,T25] ( 3, 0.48) long -> x8 "CSE - conservative" -; V23 cse12 [V23,T17] ( 8, 19.08) byref -> x4 hoist multi-def "CSE - aggressive" -; V24 cse13 [V24,T05] ( 6, 47.52) byref -> x9 multi-def "CSE - aggressive" -; V25 cse14 [V25,T15] ( 2, 31.36) int -> x13 "CSE - aggressive" -; V26 cse15 [V26,T07] ( 3, 47.04) byref -> x0 "CSE - aggressive" -; V27 cse16 [V27,T19] ( 7, 6.36) int -> x3 hoist multi-def "CSE - aggressive" -; V28 cse17 [V28,T20] ( 6, 6.00) long -> x0 multi-def "CSE - aggressive" -; V29 cse18 [V29,T09] ( 3, 47.04) long -> x0 "CSE - aggressive"
+; V08 tmp3 [V08,T02] ( 8, 64.64) ref -> registers "arr expr" +; V09 tmp4 [V09,T00] ( 9, 96.00) ref -> x11 "arr expr" +; V10 tmp5 [V10,T12] ( 6, 1.91) ref -> x6 "arr expr" +; V11 cse0 [V11,T20] ( 3, 0.48) ref -> x10 "CSE - conservative" +; V12 cse1 [V12,T21] ( 3, 0.48) ref -> x6 "CSE - conservative" +; V13 cse2 [V13,T22] ( 3, 0.48) ref -> x6 "CSE - conservative" +; V14 cse3 [V14,T09] ( 8, 37.78) ref -> x6 multi-def "CSE - aggressive" +; V15 cse4 [V15,T07] ( 2, 31.36) ref -> x11 "CSE - aggressive" +; V16 cse5 [V16,T16] ( 8, 19.34) byref -> x4 hoist multi-def "CSE - aggressive" +; V17 cse6 [V17,T06] ( 6, 47.52) byref -> x8 multi-def "CSE - aggressive" +; V18 cse7 [V18,T14] ( 2, 31.36) int -> x13 "CSE - aggressive" +; V19 cse8 [V19,T08] ( 3, 47.04) byref -> x11 "CSE - aggressive" +; V20 cse9 [V20,T18] ( 7, 6.48) int -> x3 hoist multi-def "CSE - aggressive" +; V21 cse10 [V21,T10] ( 8, 35.82) long -> x0 hoist multi-def "CSE - aggressive" +; V22 cse11 [V22,T05] ( 4, 62.73) long -> x7 "CSE - aggressive" +; V23 cse12 [V23,T19] ( 4, 0.52) long -> x7 hoist "CSE - conservative"
; ; Lcl frame size = 0 @@ -65,103 +59,94 @@ G_M43574_IG03: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, b ;; size=12 bbWeight=3.96 PerfScore 7.92 G_M43574_IG04: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz mov w0, w2
- lsl x6, x0, #3 - ldr x7, [x4, x6] - ; gcrRegs +[x7] - cbz x7, G_M43574_IG07 - ldr w6, [x7, #0x08] - cmp w6, w1
+ ldr x6, [x4, x0, LSL #3] + ; gcrRegs +[x6] + cbz x6, G_M43574_IG07 + ldr w7, [x6, #0x08] + cmp w7, w1
ble G_M43574_IG07
- lsl x6, x0, #2 - ;; size=32 bbWeight=1.98 PerfScore 21.78 -G_M43574_IG05: ; bbWeight=15.68, gcrefRegs=0080 {x7}, byrefRegs=0010 {x4}, byref, isz - mov x8, x7 - ; gcrRegs +[x8] - add x9, x8, #16 - ; byrRegs +[x9] - mov w0, w5 - lsl x8, x0, #2 - ; gcrRegs -[x8] - ldr w10, [x9, x8] - mov x11, x7
+ ;; size=24 bbWeight=1.98 PerfScore 17.82 +G_M43574_IG05: ; bbWeight=15.68, gcrefRegs=0040 {x6}, byrefRegs=0010 {x4}, byref, isz + mov x7, x6 + ; gcrRegs +[x7] + add x8, x7, #16 + ; byrRegs +[x8] + mov w7, w5 + ; gcrRegs -[x7] + ldr w9, [x8, x7, LSL #2] + mov x10, x6 + ; gcrRegs +[x10] + ldr x11, [x4, x7, LSL #3]
; gcrRegs +[x11]
- lsl x0, x0, #3 - ldr x0, [x4, x0] - ; gcrRegs +[x0] - ldr w13, [x0, #0x08]
+ ldr w13, [x11, #0x08]
cmp w2, w13 bhs G_M43574_IG15
- add x0, x0, #16 - ; gcrRegs -[x0] - ; byrRegs +[x0] - ldr w13, [x0, x6] - ldr w11, [x11, #0x08]
+ add x11, x11, #16
; gcrRegs -[x11]
- cmp w5, w11
+ ; byrRegs +[x11] + ldr w13, [x11, x0, LSL #2] + ldr w10, [x10, #0x08] + ; gcrRegs -[x10] + cmp w5, w10
bhs G_M43574_IG15
- str w13, [x9, x8] - str w10, [x0, x6]
+ str w13, [x8, x7, LSL #2] + str w9, [x11, x0, LSL #2]
add w5, w5, #1 cmp w5, w1 ble G_M43574_IG05
- ;; size=84 bbWeight=15.68 PerfScore 415.56
+ ;; size=76 bbWeight=15.68 PerfScore 384.20
G_M43574_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref
- ; gcrRegs -[x7] - ; byrRegs -[x0 x9]
+ ; gcrRegs -[x6] + ; byrRegs -[x8 x11]
b G_M43574_IG09 ;; size=4 bbWeight=3.96 PerfScore 3.96 G_M43574_IG07: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref mov w0, w2
- lsl x6, x0, #3 - ldr x7, [x4, x6]
+ ;; size=4 bbWeight=0.02 PerfScore 0.01 +G_M43574_IG08: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz + ldr x6, [x4, x0, LSL #3] + ; gcrRegs +[x6] + mov x7, x6
; gcrRegs +[x7]
- lsl x6, x0, #2 - ;; size=16 bbWeight=0.02 PerfScore 0.11 -G_M43574_IG08: ; bbWeight=0.16, gcrefRegs=0080 {x7}, byrefRegs=0010 {x4}, byref, isz - mov x8, x7 - ; gcrRegs +[x8] - ldr w9, [x8, #0x08] - cmp w5, w9
+ ldr w8, [x7, #0x08] + cmp w5, w8
bhs G_M43574_IG15
- add x9, x8, #16 - ; byrRegs +[x9] - ubfiz x8, x5, #2, #32 - ; gcrRegs -[x8] - ldr w10, [x9, x8] - mov x11, x7 - ; gcrRegs +[x11]
+ add x8, x7, #16 + ; byrRegs +[x8] + ldr w9, [x8, w5, UXTW #2] + mov x10, x6 + ; gcrRegs +[x10]
cmp w5, w3 bhs G_M43574_IG15
- ldr x0, [x4, w5, UXTW #3] - ; gcrRegs +[x0] - mov x14, x0 - ; gcrRegs +[x14] - ldr w13, [x14, #0x08]
+ ldr x6, [x4, w5, UXTW #3] + mov x11, x6 + ; gcrRegs +[x11] + ldr w13, [x11, #0x08]
cmp w2, w13 bhs G_M43574_IG15
- add x14, x14, #16 - ; gcrRegs -[x14] - ; byrRegs +[x14] - ldr w13, [x14, x6] - ldr w11, [x11, #0x08]
+ add x7, x11, #16 + ; gcrRegs -[x7] + ; byrRegs +[x7] + ldr w13, [x7, x0, LSL #2] + ldr w10, [x10, #0x08] + ; gcrRegs -[x10] + cmp w5, w10 + bhs G_M43574_IG15 + str w13, [x8, w5, UXTW #2] + ldr w11, [x6, #0x08]
; gcrRegs -[x11]
- cmp w5, w11
+ cmp w2, w11
bhs G_M43574_IG15
- str w13, [x9, x8] - ldr w13, [x0, #0x08] - cmp w2, w13 - bhs G_M43574_IG15 - add x0, x0, #16 - ; gcrRegs -[x0] - ; byrRegs +[x0] - str w10, [x0, x6]
+ add x13, x6, #16 + ; byrRegs +[x13] + str w9, [x13, x0, LSL #2]
add w5, w5, #1 cmp w5, w1 ble G_M43574_IG08
- ;; size=116 bbWeight=0.16 PerfScore 5.78
+ ;; size=116 bbWeight=0.16 PerfScore 6.10
G_M43574_IG09: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
- ; gcrRegs -[x7] - ; byrRegs -[x0 x9 x14]
+ ; gcrRegs -[x6] + ; byrRegs -[x7-x8 x13]
add w2, w2, #1 cmp w2, w1 ble G_M43574_IG03 @@ -170,68 +155,63 @@ G_M43574_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x4] b G_M43574_IG14 ;; size=4 bbWeight=1 PerfScore 1.00
-G_M43574_IG11: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M43574_IG11: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x0] mov w5, #1 ldr w3, [x0, #0x08] add x4, x0, #16 ; byrRegs +[x4]
- ubfiz x10, x2, #3, #32
+ mov w7, w2 + ;; size=16 bbWeight=0.04 PerfScore 0.18 +G_M43574_IG12: ; bbWeight=0.16, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref, isz
cmp w2, w3 bhs G_M43574_IG15
- ldr x6, [x4, x10] - ; gcrRegs +[x6] - ubfiz x7, x2, #2, #32 - ;; size=32 bbWeight=0.04 PerfScore 0.42 -G_M43574_IG12: ; bbWeight=0.16, gcrefRegs=0041 {x0 x6}, byrefRegs=0010 {x4}, byref, isz - mov x8, x6 - ; gcrRegs +[x8] - ldr w9, [x8, #0x08]
...

-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 (+3.57%) : 12157.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span1[uint],System.ReadOnlySpan1[uint],ulong):uint (FullOpts)

@@ -19,8 +19,8 @@ ; V09 tmp2 [V09,T10] ( 2, 5 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V10 tmp3 [V10,T09] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP ; V11 tmp4 [V11,T07] ( 3, 6 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V12 cse0 [V12,T04] ( 3, 12 ) long -> x7 "CSE - aggressive" -; V13 cse1 [V13,T05] ( 3, 12 ) int -> x9 "CSE - aggressive"
+; V12 cse0 [V12,T04] ( 3, 12 ) int -> x9 "CSE - aggressive" +; V13 cse1 [V13,T05] ( 3, 12 ) long -> x7 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -36,19 +36,20 @@ G_M60135_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, b ble G_M60135_IG06 ;; size=16 bbWeight=1 PerfScore 2.50 G_M60135_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- ubfiz x7, x6, #2, #32 - ldr w8, [x2, x7]
+ mov w7, w6 + ldr w8, [x2, x7, LSL #2]
madd x5, x8, x4, x5 sxtw w8, w5 lsr x5, x5, #32 cmp w6, w1 bhs G_M60135_IG08
+ lsl x7, x7, #2
add x7, x0, x7 ; byrRegs +[x7] ldr w9, [x7] cmp w9, w8 bhs G_M60135_IG05
- ;; size=44 bbWeight=4 PerfScore 68.00
+ ;; size=48 bbWeight=4 PerfScore 70.00
G_M60135_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0085 {x0 x2 x7}, byref add x5, x5, #1 ;; size=4 bbWeight=2 PerfScore 1.00 @@ -73,7 +74,7 @@ G_M60135_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 112, prolog size 8, PerfScore 89.50, instruction count 28, allocated bytes for code 112 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (FullOpts)
+; Total bytes of code 116, prolog size 8, PerfScore 91.50, instruction count 29, allocated bytes for code 116 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (FullOpts)
; ============================================================ Unwind Info: @@ -84,7 +85,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ 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 (+4.24%) : 945.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)

@@ -9,35 +9,36 @@ ; Final local variable assignments ; ; V00 this [V00,T04] ( 11, 7 ) byref -> x19 this single-def
-; V01 arg1 [V01,T06] ( 5, 3.50) int -> x1 single-def -; V02 loc0 [V02,T16] ( 3, 2.50) int -> x0
+; V01 arg1 [V01,T07] ( 5, 3.50) int -> x1 single-def +; V02 loc0 [V02,T17] ( 3, 2.50) int -> x0
; V03 loc1 [V03,T15] ( 5, 2.50) int -> x21
-; V04 loc2 [V04,T11] ( 5, 4 ) int -> x20 ld-addr-op -; V05 loc3 [V05,T00] ( 11, 29.50) int -> x22 -; V06 loc4 [V06,T01] ( 14, 22 ) int -> x23 -; V07 loc5 [V07,T18] ( 2, 1 ) int -> x0 -; V08 loc6 [V08,T09] ( 4, 5 ) int -> x1 -; V09 loc7 [V09,T03] ( 4, 10.50) int -> x2 -; V10 loc8 [V10,T05] ( 3, 6.50) int -> x3
+; V04 loc2 [V04,T16] ( 5, 2.50) int -> x20 ld-addr-op +; V05 loc3 [V05,T00] ( 13, 34.50) int -> x22 +; V06 loc4 [V06,T01] ( 14, 28 ) int -> x23 +; V07 loc5 [V07,T19] ( 2, 1 ) int -> x0 +; V08 loc6 [V08,T05] ( 4, 9 ) int -> x1 +; V09 loc7 [V09,T03] ( 6, 13.50) int -> x2 +; V10 loc8 [V10,T06] ( 4, 9 ) int -> x3
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp3 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V15 tmp4 [V15 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V16 tmp5 [V16,T07] ( 5, 5 ) long -> [fp+0x18] "Inlining Arg"
+; V16 tmp5 [V16,T09] ( 5, 5 ) long -> [fp+0x18] "Inlining Arg"
;* V17 tmp6 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V18 tmp7 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp8 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp9 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V21 tmp10 [V21 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V22 tmp11 [V22,T08] ( 5, 5 ) long -> [fp+0x10] spill-single-def "Inlining Arg"
+; V22 tmp11 [V22,T10] ( 5, 5 ) long -> [fp+0x10] spill-single-def "Inlining Arg"
;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V24 tmp13 [V24,T13] ( 3, 3 ) long -> x0 "Cast away GC" ; V25 tmp14 [V25,T14] ( 3, 3 ) long -> x0 "Cast away GC"
-; V26 cse0 [V26,T17] ( 3, 1.50) int -> x0 "CSE - moderate" -; V27 cse1 [V27,T02] ( 12, 18 ) byref -> x24 hoist multi-def "CSE - aggressive" -; V28 cse2 [V28,T10] ( 2, 4.50) int -> x0 hoist "CSE - aggressive" -; V29 cse3 [V29,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
+; V26 cse0 [V26,T18] ( 3, 1.50) int -> x0 "CSE - moderate" +; V27 cse1 [V27,T02] ( 13, 20.50) byref -> x24 hoist multi-def "CSE - aggressive" +; V28 cse2 [V28,T11] ( 3, 5 ) int -> x0 "CSE - aggressive" +; V29 cse3 [V29,T08] ( 4, 5.50) int -> x4 hoist multi-def "CSE - aggressive" +; V30 cse4 [V30,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
; ; Lcl frame size = 16 @@ -151,7 +152,7 @@ G_M38441_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=48 bbWeight=0.50 PerfScore 4.75
-G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add w0, w23, #1 str w0, [x19] neg w0, w20 @@ -159,42 +160,45 @@ G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, mov w1, wzr add x24, x19, #4 ; byrRegs +[x24]
+ ldr w2, [x24, w22, SXTW #2]
and w0, w0, #31
- b G_M38441_IG13 - ;; size=32 bbWeight=0.50 PerfScore 2.50 -G_M38441_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ lsr w3, w2, w0 + cmp w22, #0 + ble G_M38441_IG13 + and w4, w20, #31 + ;; size=48 bbWeight=0.50 PerfScore 4.75 +G_M38441_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
orr w1, w1, w3 str w1, [x24, w23, SXTW #2]
- lsl w1, w2, w20
+ lsl w1, w2, w4
sub w22, w22, #1 sub w23, w23, #1
- ;; size=20 bbWeight=2 PerfScore 6.00 -G_M38441_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w2, [x24, w22, SXTW #2] lsr w3, w2, w0 cmp w22, #0 bgt G_M38441_IG12
- ;; size=16 bbWeight=4 PerfScore 20.00 -G_M38441_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3 - str w0, [x24, w23, SXTW #2]
+ ;; size=36 bbWeight=4 PerfScore 32.00 +G_M38441_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w4, w1, w3 + str w4, [x24, w23, SXTW #2]
sub w0, w23, #1
- lsl w1, w2, w20
+ and w4, w20, #31 + lsl w1, w2, w4
str w1, [x24, w0, SXTW #2] mov x0, x24 lsl w1, w21, #2 mov w1, w1 str x1, [fp, #0x10] // [V22 tmp11]
- cbz x1, G_M38441_IG16
+ cbz x1, G_M38441_IG15
cmp x1, #0xD1FFAB1E
- bhi G_M38441_IG15
+ bhi G_M38441_IG14
mov w1, wzr ldr w2, [fp, #0x10] // [V22 tmp11] bl CORINFO_HELP_MEMSET ; gcr arg pop 0
- b G_M38441_IG16 - ;; size=64 bbWeight=0.50 PerfScore 6.75 -G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ b G_M38441_IG15 + ;; size=68 bbWeight=0.50 PerfScore 7.00 +G_M38441_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
ldr x1, [fp, #0x10] // [V22 tmp11] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -203,7 +207,7 @@ G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 blr x2 ; gcr arg pop 0 ;; size=24 bbWeight=0.50 PerfScore 3.75
-G_M38441_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w0, [x19] sub w0, w0, #1 ldr w1, [x24, w0, SXTW #2] @@ -212,7 +216,7 @@ G_M38441_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 b G_M38441_IG04 ;; size=24 bbWeight=0.50 PerfScore 4.75
-; Total bytes of code 472, prolog size 24, PerfScore 111.75, instruction count 118, allocated bytes for code 472 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
+; Total bytes of code 492, prolog size 24, PerfScore 120.25, instruction count 123, allocated bytes for code 492 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
; ============================================================ Unwind Info: @@ -223,7 +227,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 118 (0x00076) Actual length = 472 (0x0001d8)
+ Function Length : 123 (0x0007b) Actual length = 492 (0x0001ec)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+4.55%) : 33370.dasm - BenchmarksGame.ReverseComplement_1:InitComplements() (FullOpts)

@@ -19,9 +19,9 @@ ; V09 cse0 [V09,T08] ( 4, 7 ) ref -> x1 hoist "CSE - aggressive" ; V10 cse1 [V10,T10] ( 2, 5 ) byref -> x4 hoist "CSE - aggressive" ; V11 cse2 [V11,T11] ( 2, 5 ) byref -> x5 hoist "CSE - aggressive"
-; V12 cse3 [V12,T07] ( 3, 12 ) long -> x6 "CSE - aggressive" -; V13 cse4 [V13,T05] ( 5, 14 ) int -> x3 "CSE - aggressive" -; V14 cse5 [V14,T06] ( 3, 12 ) byref -> x2 "CSE - aggressive"
+; V12 cse3 [V12,T05] ( 5, 14 ) int -> x3 "CSE - aggressive" +; V13 cse4 [V13,T06] ( 3, 12 ) byref -> x2 "CSE - aggressive" +; V14 cse5 [V14,T07] ( 3, 12 ) long -> x6 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -63,8 +63,10 @@ G_M12226_IG04: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0004 {x2}, by ;; size=28 bbWeight=1 PerfScore 3.50 G_M12226_IG05: ; bbWeight=4, gcrefRegs=0002 {x1}, byrefRegs=0034 {x2 x4 x5}, byref, isz ; byrRegs +[x4-x5]
- ubfiz x6, x0, #1, #32 - ldrb w7, [x4, x6]
+ mov w6, w0 + lsl x7, x6, #1 + ldrb w7, [x4, x7] + lsl x6, x6, #1
ldrb w6, [x5, x6] cmp w7, w3 bhs G_M12226_IG08 @@ -72,7 +74,7 @@ G_M12226_IG05: ; bbWeight=4, gcrefRegs=0002 {x1}, byrefRegs=0034 {x2 x4 x add w0, w0, #1 cmp w0, #24 blt G_M12226_IG05
- ;; size=36 bbWeight=4 PerfScore 46.00
+ ;; size=44 bbWeight=4 PerfScore 52.00
G_M12226_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x2 x4-x5] mov x0, x1 @@ -95,7 +97,7 @@ G_M12226_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 8, PerfScore 99.50, instruction count 44, allocated bytes for code 176 (MethodHash=c680d03d) for method BenchmarksGame.ReverseComplement_1:InitComplements() (FullOpts)
+; Total bytes of code 184, prolog size 8, PerfScore 105.50, instruction count 46, allocated bytes for code 184 (MethodHash=c680d03d) for method BenchmarksGame.ReverseComplement_1:InitComplements() (FullOpts)
; ============================================================ Unwind Info: @@ -106,7 +108,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
+ 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)

benchmarks.run_pgo.linux.arm64.checked.mch

-40 (-10.99%) : 110250.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)

@@ -9,35 +9,30 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 99.11 ; Final local variable assignments ;
-; V00 arg0 [V00,T19] ( 6, 4.99) ref -> x0 class-hnd single-def <int[][]>
+; V00 arg0 [V00,T17] ( 6, 4.99) ref -> x0 class-hnd single-def <int[][]>
; V01 arg1 [V01,T14] ( 9,105.97) int -> x1 single-def
-; V02 loc0 [V02,T15] ( 9,104.00) int -> x3
+; V02 loc0 [V02,T15] ( 9,104.98) int -> x3
; V03 loc1 [V03,T01] ( 15,499.97) int -> x2
-; V04 loc2 [V04,T11] ( 4,198.00) int -> x13
+; V04 loc2 [V04,T11] ( 4,198.00) int -> x10
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T03] ( 4,396.00) ref -> x14 class-hnd "Strict ordering of exceptions for Array store" <int[]> -; V07 tmp2 [V07,T04] ( 4,396.00) int -> x10 "Strict ordering of exceptions for Array store" -; V08 tmp3 [V08,T02] ( 5,397.98) ref -> x10 "arr expr" -; V09 tmp4 [V09,T00] ( 6,594.01) ref -> registers "arr expr"
+; V06 tmp1 [V06,T03] ( 4,396.00) ref -> x11 class-hnd "Strict ordering of exceptions for Array store" <int[]> +; V07 tmp2 [V07,T04] ( 4,396.00) int -> registers "Strict ordering of exceptions for Array store" +; V08 tmp3 [V08,T02] ( 5,397.98) ref -> x8 "arr expr" +; V09 tmp4 [V09,T00] ( 6,594.01) ref -> x13 "arr expr"
;* V10 tmp5 [V10,T12] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V11 cse0 [V11,T18] ( 5,100.99) ref -> x7 hoist multi-def "CSE - aggressive" -; V12 cse1 [V12,T22] ( 2, 1.98) ref -> x6 "CSE - aggressive" -; V13 cse2 [V13,T16] ( 7,101.99) ref -> x8 multi-def "CSE - aggressive" -; V14 cse3 [V14,T06] ( 2,196.02) ref -> x5 "CSE - aggressive" -; V15 cse4 [V15,T26] ( 4, 2.00) long -> x7 hoist multi-def "CSE - aggressive" -; V16 cse5 [V16,T10] ( 6,199.00) long -> x9 hoist multi-def "CSE - aggressive" -; V17 cse6 [V17,T08] ( 3,294.03) long -> x6 "CSE - aggressive" -; V18 cse7 [V18,T24] ( 3, 2.97) long -> x8 "CSE - aggressive" -; V19 cse8 [V19,T17] ( 5,101.00) byref -> x4 hoist "CSE - aggressive" -; V20 cse9 [V20,T20] ( 6, 3.98) int -> x5 hoist multi-def "CSE - aggressive" -; V21 cse10 [V21,T05] ( 6,297.00) byref -> x11 multi-def "CSE - aggressive" -; V22 cse11 [V22,T13] ( 2,196.02) int -> x10 "CSE - aggressive" -; V23 cse12 [V23,T07] ( 3,294.03) byref -> x5 "CSE - aggressive" -; V24 cse13 [V24,T27] ( 2, 1.98) int -> x10 "CSE - aggressive" -; V25 cse14 [V25,T23] ( 3, 2.97) byref -> x6 "CSE - aggressive" -; V26 cse15 [V26,T21] ( 6, 3.00) long -> x6 multi-def "CSE - aggressive" -; V27 cse16 [V27,T09] ( 3,294.03) long -> x5 "CSE - aggressive" -; V28 cse17 [V28,T25] ( 3, 2.97) long -> x6 "CSE - aggressive"
+; V11 cse0 [V11,T20] ( 2, 1.98) ref -> x13 "CSE - aggressive" +; V12 cse1 [V12,T09] ( 8,201.96) ref -> x7 multi-def "CSE - aggressive" +; V13 cse2 [V13,T07] ( 2,196.02) ref -> x13 "CSE - aggressive" +; V14 cse3 [V14,T16] ( 5,101.98) byref -> x4 hoist "CSE - aggressive" +; V15 cse4 [V15,T18] ( 6, 4.96) int -> x5 hoist multi-def "CSE - aggressive" +; V16 cse5 [V16,T06] ( 6,297.00) byref -> x9 multi-def "CSE - aggressive" +; V17 cse6 [V17,T13] ( 2,196.02) int -> x8 "CSE - aggressive" +; V18 cse7 [V18,T08] ( 3,294.03) byref -> x13 "CSE - aggressive" +; V19 cse8 [V19,T22] ( 2, 1.98) int -> x7 "CSE - aggressive" +; V20 cse9 [V20,T21] ( 3, 2.97) byref -> x7 "CSE - aggressive" +; V21 cse10 [V21,T10] ( 8,200.98) long -> x6 hoist multi-def "CSE - aggressive" +; V22 cse11 [V22,T05] ( 4,392.04) long -> x5 "CSE - aggressive" +; V23 cse12 [V23,T19] ( 4, 3.96) long -> x8 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -67,109 +62,96 @@ G_M43574_IG05: ; bbWeight=0.99, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, cmp w5, w3 bls G_M43574_IG08 mov w6, w3
- lsl x7, x6, #3 - ldr x8, [x4, x7] - ; gcrRegs +[x8] - cbz x8, G_M43574_IG08 - orr w7, w2, w1 - tbnz w7, #31, G_M43574_IG08 - ldr w7, [x8, #0x08] - cmp w7, w1
+ ldr x7, [x4, x6, LSL #3] + ; gcrRegs +[x7] + cbz x7, G_M43574_IG08 + orr w8, w2, w1 + tbnz w8, #31, G_M43574_IG08 + ldr w8, [x7, #0x08] + cmp w8, w1
ble G_M43574_IG08 cmp w5, w1 ble G_M43574_IG08
- mov x7, x8 - ; gcrRegs +[x7] - lsl x9, x6, #2 - ;; size=68 bbWeight=0.99 PerfScore 19.78 -G_M43574_IG06: ; bbWeight=98.01, gcrefRegs=0181 {x0 x7 x8}, byrefRegs=0010 {x4}, byref, isz - mov x10, x8 - ; gcrRegs +[x10] - add x11, x10, #16 - ; byrRegs +[x11]
+ ;; size=56 bbWeight=0.99 PerfScore 17.31 +G_M43574_IG06: ; bbWeight=98.01, gcrefRegs=0081 {x0 x7}, byrefRegs=0010 {x4}, byref, isz + mov x8, x7 + ; gcrRegs +[x8] + add x9, x8, #16 + ; byrRegs +[x9]
mov w5, w2
- lsl x6, x5, #2 - ldr w13, [x11, x6] - mov x14, x7 - ; gcrRegs +[x14] - lsl x10, x5, #3 - ; gcrRegs -[x10] - ldr x5, [x4, x10] - ; gcrRegs +[x5] - ldr w10, [x5, #0x08] - cmp w3, w10
+ ldr w10, [x9, x5, LSL #2] + mov x11, x7 + ; gcrRegs +[x11] + ldr x13, [x4, x5, LSL #3] + ; gcrRegs +[x13] + ldr w8, [x13, #0x08] + ; gcrRegs -[x8] + cmp w3, w8
bhs G_M43574_IG11
- add x5, x5, #16 - ; gcrRegs -[x5] - ; byrRegs +[x5] - ldr w10, [x5, x9] - ldr w14, [x14, #0x08] - ; gcrRegs -[x14] - cmp w2, w14
+ add x13, x13, #16 + ; gcrRegs -[x13] + ; byrRegs +[x13] + ldr w8, [x13, x6, LSL #2] + ldr w11, [x11, #0x08] + ; gcrRegs -[x11] + cmp w2, w11
bhs G_M43574_IG11
- str w10, [x11, x6] - str w13, [x5, x9]
+ str w8, [x9, x5, LSL #2] + str w10, [x13, x6, LSL #2]
add w2, w2, #1 cmp w2, w1 ble G_M43574_IG06
- ;; size=84 bbWeight=98.01 PerfScore 2597.29
+ ;; size=76 bbWeight=98.01 PerfScore 2401.27
G_M43574_IG07: ; bbWeight=0.99, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref
- ; gcrRegs -[x7-x8] - ; byrRegs -[x5 x11]
+ ; gcrRegs -[x7] + ; byrRegs -[x9 x13]
b G_M43574_IG10 ;; size=4 bbWeight=0.99 PerfScore 0.99
-G_M43574_IG08: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref, isz
+G_M43574_IG08: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref
ldr w5, [x0, #0x08] mov w6, w3
- lsl x7, x6, #3
+ ;; size=8 bbWeight=0.01 PerfScore 0.03 +G_M43574_IG09: ; bbWeight=0.99, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref, isz
cmp w3, w5 bhs G_M43574_IG11
- ldr x8, [x4, x7] - ; gcrRegs +[x8] - mov x7, x8
+ ldr x7, [x4, x6, LSL #3]
; gcrRegs +[x7]
- lsl x9, x6, #2 - ;; size=32 bbWeight=0.01 PerfScore 0.10 -G_M43574_IG09: ; bbWeight=0.99, gcrefRegs=0081 {x0 x7}, byrefRegs=0010 {x4}, byref, isz - ; gcrRegs -[x8] - mov x10, x7 - ; gcrRegs +[x10] - ldr w11, [x10, #0x08] - cmp w2, w11
+ mov x8, x7 + ; gcrRegs +[x8] + ldr w9, [x8, #0x08] + cmp w2, w9
bhs G_M43574_IG11
- add x11, x10, #16 - ; byrRegs +[x11] - mov w6, w2 - lsl x8, x6, #2 - ldr w13, [x11, x8] - mov x14, x7 - ; gcrRegs +[x14]
+ add x9, x8, #16 + ; byrRegs +[x9] + mov w8, w2 + ; gcrRegs -[x8] + ldr w10, [x9, x8, LSL #2] + mov x11, x7 + ; gcrRegs +[x11]
cmp w2, w5 bhs G_M43574_IG11
- lsl x6, x6, #3 - ldr x6, [x4, x6] - ; gcrRegs +[x6] - ldr w10, [x6, #0x08] - ; gcrRegs -[x10] - cmp w3, w10
+ ldr x13, [x4, x8, LSL #3] + ; gcrRegs +[x13] + ldr w7, [x13, #0x08] + ; gcrRegs -[x7] + cmp w3, w7
bhs G_M43574_IG11
- add x6, x6, #16 - ; gcrRegs -[x6] - ; byrRegs +[x6] - ldr w10, [x6, x9] - ldr w14, [x14, #0x08] - ; gcrRegs -[x14] - cmp w2, w14
+ add x7, x13, #16 + ; byrRegs +[x7] + ldr w13, [x7, x6, LSL #2] + ; gcrRegs -[x13] + ldr w11, [x11, #0x08] + ; gcrRegs -[x11] + cmp w2, w11
bhs G_M43574_IG11
- str w10, [x11, x8] - str w13, [x6, x9]
+ str w13, [x9, x8, LSL #2] + str w10, [x7, x6, LSL #2]
add w2, w2, #1 cmp w2, w1 ble G_M43574_IG09
- ;; size=104 bbWeight=0.99 PerfScore 32.18
+ ;; size=108 bbWeight=0.99 PerfScore 34.65
G_M43574_IG10: ; bbWeight=1.00, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref, isz
- ; gcrRegs -[x7] - ; byrRegs -[x6 x11]
+ ; byrRegs -[x7 x9]
add w3, w3, #1 cmp w3, w1 bgt G_M43574_IG12 @@ -187,7 +169,7 @@ G_M43574_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 364, prolog size 20, PerfScore 2664.33, instruction count 91, allocated bytes for code 364 (MethodHash=d41955c9) for method Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
+; Total bytes of code 324, prolog size 20, PerfScore 2468.25, instruction count 81, allocated bytes for code 324 (MethodHash=d41955c9) for method Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
; ============================================================ Unwind Info: @@ -198,7 +180,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 91 (0x0005b) Actual length = 364 (0x00016c)
+ Function Length : 81 (0x00051) Actual length = 324 (0x000144)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

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

+4 (+2.50%) : 143640.dasm - NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)

@@ -10,16 +10,16 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T08] ( 5, 2.06) ref -> x0 class-hnd single-def <int[][]>
+; V00 arg0 [V00,T11] ( 5, 2.06) ref -> x0 class-hnd single-def <int[][]>
; V01 arg1 [V01,T05] ( 4,102 ) int -> x1 single-def
-; V02 arg2 [V02,T09] ( 3, 2.02) int -> x2 single-def -; V03 loc0 [V03,T10] ( 5, 0.10) int -> x4
+; V02 arg2 [V02,T12] ( 3, 2.02) int -> x2 single-def +; V03 loc0 [V03,T06] ( 5,100.06) int -> x4
; V04 loc1 [V04,T00] ( 8,599.92) int -> x3 ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+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,599.88) ref -> x7 class-hnd "Strict ordering of exceptions for Array store" <int[]> -; V09 tmp4 [V09,T03] ( 2,399.92) int -> x8 "Strict ordering of exceptions for Array store"
+; V08 tmp3 [V08,T01] ( 3,599.88) ref -> x9 class-hnd "Strict ordering of exceptions for Array store" <int[]> +; V09 tmp4 [V09,T03] ( 2,399.92) int -> x10 "Strict ordering of exceptions for Array store"
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref "Strict ordering of exceptions for Array store" ;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" @@ -28,13 +28,12 @@ ;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref "arr expr" ;* V16 tmp11 [V16 ] ( 0, 0 ) ref -> zero-ref "arr expr" ;* V17 tmp12 [V17 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V18 tmp13 [V18,T02] ( 3,599.88) ref -> x8 "arr expr" -; V19 cse0 [V19,T06] ( 2,100.00) ref -> x5 hoist "CSE - aggressive" -; V20 cse1 [V20,T07] ( 2,100.00) ref -> x6 hoist "CSE - aggressive" -; V21 cse2 [V21,T12] ( 2, 0.04) long -> x7 hoist "CSE - conservative" -; V22 cse3 [V22,T04] ( 3,299.94) long -> x9 "CSE - aggressive" -; V23 cse4 [V23,T13] ( 2, 0.04) int -> x5 hoist "CSE - conservative" -; V24 cse5 [V24,T11] ( 2, 0.04) byref -> x6 hoist "CSE - conservative"
+; V18 tmp13 [V18,T02] ( 3,599.88) ref -> x10 "arr expr" +; V19 cse0 [V19,T08] ( 2,100.00) ref -> x8 hoist "CSE - aggressive" +; V20 cse1 [V20,T07] ( 3,100.02) int -> x5 hoist "CSE - aggressive" +; V21 cse2 [V21,T09] ( 2,100.00) byref -> x6 hoist "CSE - aggressive" +; V22 cse3 [V22,T10] ( 2,100.00) long -> x7 hoist "CSE - aggressive" +; V23 cse4 [V23,T04] ( 3,299.94) long -> x11 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -60,43 +59,42 @@ G_M12699_IG05: ; bbWeight=0.02, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ldr w5, [x0, #0x08] add x6, x0, #16 ; byrRegs +[x6]
- ubfiz x7, x4, #3, #32
+ mov w7, w4 + cmp w5, #0 + bls G_M12699_IG08 + ldr x8, [x0, #0x10] + ; gcrRegs +[x8] + ;; size=24 bbWeight=0.02 PerfScore 0.17 +G_M12699_IG06: ; bbWeight=99.98, gcrefRegs=0101 {x0 x8}, byrefRegs=0040 {x6}, byref, isz
cmp w4, w5 bhs G_M12699_IG08
- ldr x5, [x6, x7] - ; gcrRegs +[x5] - ldr x6, [x0, #0x10] - ; gcrRegs +[x6] - ; byrRegs -[x6] - ;; size=28 bbWeight=0.02 PerfScore 0.24 -G_M12699_IG06: ; bbWeight=99.98, gcrefRegs=0061 {x0 x5 x6}, byrefRegs=0000 {}, byref, isz - mov x7, x5 - ; gcrRegs +[x7] - mov x8, x6 - ; gcrRegs +[x8] - ldr w9, [x8, #0x08] - cmp w3, w9
+ ldr x9, [x6, x7, LSL #3] + ; gcrRegs +[x9] + mov x10, x8 + ; gcrRegs +[x10] + ldr w11, [x10, #0x08] + cmp w3, w11
bhs G_M12699_IG08
- add x8, x8, #16 - ; gcrRegs -[x8] - ; byrRegs +[x8] - ubfiz x9, x3, #2, #32 - ldr w8, [x8, x9] - ; byrRegs -[x8] - ldr w10, [x7, #0x08] - cmp w3, w10
+ add x10, x10, #16 + ; gcrRegs -[x10] + ; byrRegs +[x10] + mov w11, w3 + ldr w10, [x10, x11, LSL #2] + ; byrRegs -[x10] + ldr w13, [x9, #0x08] + cmp w3, w13
bhs G_M12699_IG08
- add x7, x7, #16 - ; gcrRegs -[x7] - ; byrRegs +[x7] - str w8, [x7, x9]
+ add x9, x9, #16 + ; gcrRegs -[x9] + ; byrRegs +[x9] + str w10, [x9, x11, LSL #2]
add w3, w3, #1 cmp w3, w1 blt G_M12699_IG06
- ;; size=64 bbWeight=99.98 PerfScore 1799.64
+ ;; size=72 bbWeight=99.98 PerfScore 2149.57
G_M12699_IG07: ; bbWeight=0.02, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x5-x6] - ; byrRegs -[x7]
+ ; gcrRegs -[x8] + ; byrRegs -[x6 x9]
add w4, w4, #1 cmp w4, w2 bge G_M12699_IG09 @@ -113,7 +111,7 @@ G_M12699_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 160, prolog size 20, PerfScore 1808.48, instruction count 40, allocated bytes for code 160 (MethodHash=6a3cce64) for method NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
+; Total bytes of code 164, prolog size 20, PerfScore 2158.34, instruction count 41, allocated bytes for code 164 (MethodHash=6a3cce64) for method NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
; ============================================================ Unwind Info: @@ -124,7 +122,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+3.57%) : 130948.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span1[uint],System.ReadOnlySpan1[uint],ulong):uint (Tier1)

@@ -20,8 +20,8 @@ ; V09 tmp2 [V09,T10] ( 2,1079.60) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V10 tmp3 [V10,T09] ( 2,1079.60) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP ; V11 tmp4 [V11,T07] ( 3,1080.60) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V12 cse0 [V12,T04] ( 3,3235.81) long -> x7 "CSE - aggressive" -; V13 cse1 [V13,T05] ( 3,3235.81) int -> x9 "CSE - aggressive"
+; V12 cse0 [V12,T04] ( 3,3235.81) int -> x9 "CSE - aggressive" +; V13 cse1 [V13,T05] ( 3,3235.81) long -> x7 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -37,19 +37,20 @@ G_M60135_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, b ble G_M60135_IG06 ;; size=16 bbWeight=1 PerfScore 2.50 G_M60135_IG03: ; bbWeight=1078.60, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- ubfiz x7, x6, #2, #32 - ldr w8, [x2, x7]
+ mov w7, w6 + ldr w8, [x2, x7, LSL #2]
madd x5, x8, x4, x5 sxtw w8, w5 lsr x5, x5, #32 cmp w6, w1 bhs G_M60135_IG08
+ lsl x7, x7, #2
add x7, x0, x7 ; byrRegs +[x7] ldr w9, [x7] cmp w9, w8 bhs G_M60135_IG05
- ;; size=44 bbWeight=1078.60 PerfScore 18336.26
+ ;; size=48 bbWeight=1078.60 PerfScore 18875.56
G_M60135_IG04: ; bbWeight=539.01, gcrefRegs=0000 {}, byrefRegs=0085 {x0 x2 x7}, byref add x5, x5, #1 ;; size=4 bbWeight=539.01 PerfScore 269.50 @@ -74,7 +75,7 @@ G_M60135_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 112, prolog size 8, PerfScore 22387.37, instruction count 28, allocated bytes for code 112 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
+; Total bytes of code 116, prolog size 8, PerfScore 22926.68, instruction count 29, allocated bytes for code 116 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
; ============================================================ Unwind Info: @@ -85,7 +86,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ 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)

+32 (+7.14%) : 36379.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

@@ -12,131 +12,126 @@ ; V00 this [V00,T00] ( 11, 4.33) byref -> x19 this single-def ; V01 arg1 [V01,T01] ( 5, 3 ) int -> x1 single-def ; V02 loc0 [V02,T05] ( 3, 2.33) int -> x0
-; V03 loc1 [V03,T11] ( 5, 1.00) int -> x21 -; V04 loc2 [V04,T08] ( 5, 1.67) int -> x20 ld-addr-op -; V05 loc3 [V05,T04] ( 10, 2.67) int -> x22
+; V03 loc1 [V03,T12] ( 5, 1.00) int -> x21 +; V04 loc2 [V04,T08] ( 5, 1.50) int -> x20 ld-addr-op +; V05 loc3 [V05,T03] ( 12, 2.67) int -> x22
; V06 loc4 [V06,T02] ( 14, 3.33) int -> x23
-; V07 loc5 [V07,T15] ( 2, 0.67) int -> x0 -; V08 loc6 [V08,T09] ( 4, 1.33) int -> x1 -; V09 loc7 [V09,T07] ( 4, 2.00) int -> x2 -; V10 loc8 [V10,T10] ( 3, 1.33) int -> x3
+; V07 loc5 [V07,T16] ( 2, 0.67) int -> x0 +; V08 loc6 [V08,T09] ( 4, 1.33) int -> x3 +; V09 loc7 [V09,T06] ( 6, 2.00) int -> x25 +; V10 loc8 [V10,T10] ( 4, 1.33) int -> x26
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp3 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V15 tmp4 [V15 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V16 tmp5 [V16,T06] ( 5, 2.00) long -> [fp+0x18] spill-single-def "Inlining Arg"
+; V16 tmp5 [V16,T07] ( 5, 2.00) long -> [fp+0x18] spill-single-def "Inlining Arg"
;* V17 tmp6 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V18 tmp7 [V18,T12] ( 3, 1.00) long -> x0 "Cast away GC" -; V19 cse0 [V19,T14] ( 2, 1.00) int -> x0 hoist "CSE - moderate" -; V20 cse1 [V20,T13] ( 3, 1.00) int -> x0 "CSE - conservative" -; V21 cse2 [V21,T03] ( 10, 2.67) byref -> x24 hoist multi-def "CSE - aggressive"
+; V18 tmp7 [V18,T13] ( 3, 1.00) long -> x0 "Cast away GC" +; V19 cse0 [V19,T14] ( 3, 1.00) int -> x0 "CSE - moderate" +; V20 cse1 [V20,T15] ( 3, 1.00) int -> x0 "CSE - conservative" +; V21 cse2 [V21,T11] ( 4, 1.17) int -> x1 hoist multi-def "CSE - moderate" +; V22 cse3 [V22,T04] ( 11, 2.67) byref -> x24 multi-def "CSE - aggressive"
; ; Lcl frame size = 16 G_M38441_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] stp x23, x24, [sp, #0x40]
+ stp x25, x26, [sp, #0x50]
mov fp, sp mov x19, x0 ; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=28 bbWeight=1 PerfScore 6.00
G_M38441_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz ldr w0, [x19]
- cbnz w0, G_M38441_IG08
+ cbnz w0, G_M38441_IG04
;; size=8 bbWeight=1 PerfScore 4.00 G_M38441_IG03: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x19]
+ ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0.67 PerfScore 3.33 -G_M38441_IG04: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, gcvars, byref - ; byrRegs +[x19 x24] - orr w1, w1, w3 - str w1, [x24, w23, SXTW #2] - lsl w1, w2, w20 - sub w22, w22, #1 - sub w23, w23, #1 - ;; size=20 bbWeight=0.33 PerfScore 1.00 -G_M38441_IG05: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - ldr w2, [x24, w22, SXTW #2] - lsr w3, w2, w0 - cmp w22, #0 - bgt G_M38441_IG04 - ;; size=16 bbWeight=0.67 PerfScore 3.33 -G_M38441_IG06: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3 - str w0, [x24, w23, SXTW #2] - sub w0, w23, #1 - lsl w1, w2, w20 - str w1, [x24, w0, SXTW #2] - mov x0, x24 - lsl w1, w21, #2 - mov w1, w1 - str x1, [fp, #0x18] // [V16 tmp5] - cbnz x1, G_M38441_IG09 - ;; size=40 bbWeight=0.33 PerfScore 2.50 -G_M38441_IG07: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - ldr w0, [x19] - sub w0, w0, #1 - ldr w1, [x24, w0, SXTW #2] - cbnz w1, G_M38441_IG03 - str w0, [x19] - b G_M38441_IG03 - ;; size=24 bbWeight=0.33 PerfScore 3.17 -G_M38441_IG08: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - ; byrRegs -[x24]
+ ;; size=24 bbWeight=0.67 PerfScore 4.00 +G_M38441_IG04: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz + ; byrRegs +[x19]
cbz w1, G_M38441_IG03 and w20, w1, #31 lsr w21, w1, #5 sub w22, w0, #1 add w23, w22, w21
- cbz w20, G_M38441_IG13 - b G_M38441_IG10 - ;; size=28 bbWeight=0.33 PerfScore 1.83 -G_M38441_IG09: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - ; byrRegs +[x24] - cmp x1, #0xD1FFAB1E - bhi G_M38441_IG12 - mov w1, wzr - ldr w2, [fp, #0x18] // [V16 tmp5] - bl CORINFO_HELP_MEMSET - ; gcr arg pop 0 - b G_M38441_IG07 - ;; size=24 bbWeight=0.17 PerfScore 1.00 -G_M38441_IG10: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - ; byrRegs -[x24]
+ cbz w20, G_M38441_IG12
add w23, w23, #1 cmp w23, #115
- bge G_M38441_IG17 - ;; size=12 bbWeight=0.33 PerfScore 0.67 -G_M38441_IG11: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+ bge G_M38441_IG16 + ;; size=36 bbWeight=0.33 PerfScore 2.17 +G_M38441_IG05: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add w0, w23, #1 str w0, [x19] neg w0, w20 add w0, w0, #32
- mov w1, wzr
+ mov w3, wzr
add x24, x19, #4 ; byrRegs +[x24]
+ ldr w25, [x24, w22, SXTW #2]
and w0, w0, #31
- b G_M38441_IG05 - ;; size=32 bbWeight=0.33 PerfScore 1.67 -G_M38441_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref - ldr x1, [fp, #0x18] // [V16 tmp5] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2
+ lsr w26, w25, w0 + cmp w22, #0 + bgt G_M38441_IG08 + ;; size=44 bbWeight=0.33 PerfScore 3.00 +G_M38441_IG06: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w1, w3, w26 + str w1, [x24, w23, SXTW #2] + sub w0, w23, #1 + and w1, w20, #31 + lsl w1, w25, w1 + str w1, [x24, w0, SXTW #2] + mov x0, x24 + lsl w1, w21, #2 + mov w1, w1 + str x1, [fp, #0x18] // [V16 tmp5] + cbz x1, G_M38441_IG11 + ;; size=44 bbWeight=0.33 PerfScore 2.67 +G_M38441_IG07: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref + b G_M38441_IG10 + ;; size=4 bbWeight=0.17 PerfScore 0.17 +G_M38441_IG08: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref + and w1, w20, #31 + ;; size=4 bbWeight=0.17 PerfScore 0.08 +G_M38441_IG09: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w3, w3, w26 + str w3, [x24, w23, SXTW #2] + lsl w3, w25, w1 + sub w22, w22, #1 + sub w23, w23, #1 + ldr w25, [x24, w22, SXTW #2] + lsr w26, w25, w0 + cmp w22, #0 + bgt G_M38441_IG09 + b G_M38441_IG06 + ;; size=40 bbWeight=0.33 PerfScore 3.00 +G_M38441_IG10: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + cmp x1, #0xD1FFAB1E + bhi G_M38441_IG17 + mov w1, wzr + ldr w2, [fp, #0x18] // [V16 tmp5] + bl CORINFO_HELP_MEMSET
; gcr arg pop 0
- b G_M38441_IG07 - ;; size=28 bbWeight=0 PerfScore 0.00 -G_M38441_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+ ;; size=20 bbWeight=0.17 PerfScore 0.83 +G_M38441_IG11: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + ldr w1, [x19] + sub w0, w1, #1 + ldr w1, [x24, w0, SXTW #2] + cbnz w1, G_M38441_IG03 + str w0, [x19] + b G_M38441_IG03 + ;; size=24 bbWeight=0.33 PerfScore 3.17 +G_M38441_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
; byrRegs -[x24] cmp w23, #115 cset x0, lt @@ -146,9 +141,9 @@ G_M38441_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ldr x1, [x1] blr x1 ; gcr arg pop 0
- b G_M38441_IG15
+ b G_M38441_IG14
;; size=32 bbWeight=0 PerfScore 0.00
-G_M38441_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
add x24, x19, #4 ; byrRegs +[x24] sbfiz x0, x23, #2, #32 @@ -159,9 +154,9 @@ G_M38441_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by sub w22, w22, #1 sub w23, w23, #1 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M38441_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M38441_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs -[x0 x24]
- tbz w22, #31, G_M38441_IG14
+ tbz w22, #31, G_M38441_IG13
ldr w0, [x19] add w0, w0, w21 str w0, [x19] @@ -176,14 +171,15 @@ G_M38441_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; byrRegs -[x0 x19] ; gcr arg pop 0 ;; size=44 bbWeight=0 PerfScore 0.00
-G_M38441_IG16: ; bbWeight=0, epilog, nogc, extend
+G_M38441_IG15: ; bbWeight=0, epilog, nogc, extend + ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00 -G_M38441_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref
...

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)

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

@@ -8,32 +8,27 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T21] ( 6, 10.05) ref -> x0 class-hnd single-def <int[][]> -; V01 arg1 [V01,T06] ( 9, 46 ) int -> x1 single-def -; V02 loc0 [V02,T05] ( 10, 48.24) int -> x3 -; V03 loc1 [V03,T01] ( 16, 94.48) int -> x2 -; V04 loc2 [V04,T14] ( 4, 32 ) int -> x13
+; V00 arg0 [V00,T18] ( 6, 10.05) ref -> x0 class-hnd single-def <int[][]> +; V01 arg1 [V01,T07] ( 9, 46 ) int -> x1 single-def +; V02 loc0 [V02,T06] ( 10, 48.36) int -> x3 +; V03 loc1 [V03,T01] ( 17, 94.64) int -> x2 +; V04 loc2 [V04,T14] ( 4, 32 ) int -> x10
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T03] ( 4, 64 ) ref -> x14 class-hnd "Strict ordering of exceptions for Array store" <int[]> -; V07 tmp2 [V07,T04] ( 4, 64 ) int -> x10 "Strict ordering of exceptions for Array store" -; V08 tmp3 [V08,T02] ( 5, 64.32) ref -> x10 "arr expr" -; V09 tmp4 [V09,T00] ( 6, 96 ) ref -> registers "arr expr" -; V10 tmp5 [V10,T13] ( 3, 0.96) ref -> x8 "arr expr" -; V11 cse0 [V11,T17] ( 5, 20.20) ref -> x7 hoist multi-def "CSE - aggressive" -; V12 cse1 [V12,T23] ( 3, 0.48) ref -> x8 "CSE - conservative" -; V13 cse2 [V13,T15] ( 7, 31.92) ref -> x8 multi-def "CSE - aggressive" -; V14 cse3 [V14,T08] ( 2, 31.68) ref -> x5 "CSE - aggressive" -; V15 cse4 [V15,T22] ( 4, 8.08) long -> x7 hoist multi-def "CSE - aggressive" -; V16 cse5 [V16,T12] ( 6, 36.04) long -> x9 hoist multi-def "CSE - aggressive" -; V17 cse6 [V17,T10] ( 3, 47.52) long -> x6 "CSE - aggressive" -; V18 cse7 [V18,T24] ( 3, 0.48) long -> x6 "CSE - conservative" -; V19 cse8 [V19,T18] ( 5, 20.05) byref -> x4 hoist "CSE - aggressive" -; V20 cse9 [V20,T19] ( 6, 12.24) int -> x5 hoist multi-def "CSE - aggressive" -; V21 cse10 [V21,T07] ( 6, 48 ) byref -> x11 multi-def "CSE - aggressive" -; V22 cse11 [V22,T16] ( 2, 31.68) int -> x10 "CSE - aggressive" -; V23 cse12 [V23,T09] ( 3, 47.52) byref -> x5 "CSE - aggressive" -; V24 cse13 [V24,T20] ( 6, 12.12) long -> x6 multi-def "CSE - aggressive" -; V25 cse14 [V25,T11] ( 3, 47.52) long -> x5 "CSE - aggressive"
+; V06 tmp1 [V06,T03] ( 4, 64 ) ref -> x11 class-hnd "Strict ordering of exceptions for Array store" <int[]> +; V07 tmp2 [V07,T04] ( 4, 64 ) int -> x8 "Strict ordering of exceptions for Array store" +; V08 tmp3 [V08,T02] ( 5, 64.32) ref -> x8 "arr expr" +; V09 tmp4 [V09,T00] ( 6, 96 ) ref -> x13 "arr expr" +; V10 tmp5 [V10,T13] ( 3, 0.96) ref -> x7 "arr expr" +; V11 cse0 [V11,T19] ( 3, 0.48) ref -> x7 "CSE - conservative" +; V12 cse1 [V12,T11] ( 8, 44.16) ref -> x7 multi-def "CSE - aggressive" +; V13 cse2 [V13,T09] ( 2, 31.68) ref -> x13 "CSE - aggressive" +; V14 cse3 [V14,T16] ( 5, 20.17) byref -> x4 hoist "CSE - aggressive" +; V15 cse4 [V15,T17] ( 6, 12.36) int -> x5 hoist multi-def "CSE - aggressive" +; V16 cse5 [V16,T08] ( 6, 48 ) byref -> x9 multi-def "CSE - aggressive" +; V17 cse6 [V17,T15] ( 2, 31.68) int -> x8 "CSE - aggressive" +; V18 cse7 [V18,T10] ( 3, 47.52) byref -> x13 "CSE - aggressive" +; V19 cse8 [V19,T12] ( 8, 40.20) long -> x6 hoist multi-def "CSE - aggressive" +; V20 cse9 [V20,T05] ( 4, 63.36) long -> x5 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -63,113 +58,102 @@ G_M43574_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, by cmp w5, w3 bls G_M43574_IG08 mov w6, w3
- lsl x7, x6, #3 - ldr x8, [x4, x7] - ; gcrRegs +[x8] - cbz x8, G_M43574_IG08 - orr w7, w2, w1 - tbnz w7, #31, G_M43574_IG08 - ldr w7, [x8, #0x08] - cmp w7, w1
+ ldr x7, [x4, x6, LSL #3] + ; gcrRegs +[x7] + cbz x7, G_M43574_IG08 + orr w8, w2, w1 + tbnz w8, #31, G_M43574_IG08 + ldr w8, [x7, #0x08] + cmp w8, w1
ble G_M43574_IG08 cmp w5, w1 ble G_M43574_IG08
- mov x7, x8 - ; gcrRegs +[x7] - lsl x9, x6, #2 - ;; size=68 bbWeight=4 PerfScore 80.00 -G_M43574_IG06: ; bbWeight=15.84, gcrefRegs=0181 {x0 x7 x8}, byrefRegs=0010 {x4}, byref, isz - mov x10, x8 - ; gcrRegs +[x10] - add x11, x10, #16 - ; byrRegs +[x11]
+ ;; size=56 bbWeight=4 PerfScore 70.00 +G_M43574_IG06: ; bbWeight=15.84, gcrefRegs=0081 {x0 x7}, byrefRegs=0010 {x4}, byref, isz + mov x8, x7 + ; gcrRegs +[x8] + add x9, x8, #16 + ; byrRegs +[x9]
mov w5, w2
- lsl x6, x5, #2 - ldr w13, [x11, x6] - mov x14, x7 - ; gcrRegs +[x14] - lsl x10, x5, #3 - ; gcrRegs -[x10] - ldr x5, [x4, x10] - ; gcrRegs +[x5] - ldr w10, [x5, #0x08] - cmp w3, w10
+ ldr w10, [x9, x5, LSL #2] + mov x11, x7 + ; gcrRegs +[x11] + ldr x13, [x4, x5, LSL #3] + ; gcrRegs +[x13] + ldr w8, [x13, #0x08] + ; gcrRegs -[x8] + cmp w3, w8
bhs G_M43574_IG12
- add x5, x5, #16 - ; gcrRegs -[x5] - ; byrRegs +[x5] - ldr w10, [x5, x9] - ldr w14, [x14, #0x08] - ; gcrRegs -[x14] - cmp w2, w14
+ add x13, x13, #16 + ; gcrRegs -[x13] + ; byrRegs +[x13] + ldr w8, [x13, x6, LSL #2] + ldr w11, [x11, #0x08] + ; gcrRegs -[x11] + cmp w2, w11
bhs G_M43574_IG12
- str w10, [x11, x6] - str w13, [x5, x9]
+ str w8, [x9, x5, LSL #2] + str w10, [x13, x6, LSL #2]
add w2, w2, #1 cmp w2, w1 ble G_M43574_IG06
- ;; size=84 bbWeight=15.84 PerfScore 419.76
+ ;; size=76 bbWeight=15.84 PerfScore 388.08
G_M43574_IG07: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref
- ; gcrRegs -[x7-x8] - ; byrRegs -[x5 x11]
+ ; gcrRegs -[x7] + ; byrRegs -[x9 x13]
b G_M43574_IG10 ;; size=4 bbWeight=8 PerfScore 8.00
-G_M43574_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref, isz
+G_M43574_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref
ldr w5, [x0, #0x08] mov w6, w3
- lsl x7, x6, #3
+ ;; size=8 bbWeight=0.04 PerfScore 0.14 +G_M43574_IG09: ; bbWeight=0.16, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref, isz
cmp w3, w5 bhs G_M43574_IG12
- ldr x8, [x4, x7] - ; gcrRegs +[x8] - mov x7, x8
+ ldr x7, [x4, x6, LSL #3]
; gcrRegs +[x7]
- lsl x9, x6, #2 - ;; size=32 bbWeight=0.04 PerfScore 0.42 -G_M43574_IG09: ; bbWeight=0.16, gcrefRegs=0081 {x0 x7}, byrefRegs=0010 {x4}, byref, isz - ; gcrRegs -[x8] - mov x10, x7 - ; gcrRegs +[x10] - ldr w11, [x10, #0x08] - cmp w2, w11
+ mov x8, x7 + ; gcrRegs +[x8] + ldr w9, [x8, #0x08] + cmp w2, w9
bhs G_M43574_IG12
- add x11, x10, #16 - ; byrRegs +[x11] - ubfiz x6, x2, #2, #32 - ldr w13, [x11, x6] - mov x14, x7 - ; gcrRegs +[x14]
+ add x9, x8, #16 + ; byrRegs +[x9] + ldr w10, [x9, w2, UXTW #2] + mov x11, x7 + ; gcrRegs +[x11]
cmp w2, w5 bhs G_M43574_IG12
- ldr x8, [x4, w2, UXTW #3] - ; gcrRegs +[x8] - mov x10, x8 - ldr w12, [x10, #0x08] - cmp w3, w12
+ ldr x7, [x4, w2, UXTW #3] + mov x13, x7 + ; gcrRegs +[x13] + ldr w8, [x13, #0x08] + ; gcrRegs -[x8] + cmp w3, w8
bhs G_M43574_IG12
- add x10, x10, #16 - ; gcrRegs -[x10] - ; byrRegs +[x10] - ldr w10, [x10, x9] - ; byrRegs -[x10] - ldr w14, [x14, #0x08] - ; gcrRegs -[x14] - cmp w2, w14
+ add x8, x13, #16 + ; byrRegs +[x8] + ldr w8, [x8, x6, LSL #2] + ; byrRegs -[x8] + ldr w11, [x11, #0x08] + ; gcrRegs -[x11] + cmp w2, w11
bhs G_M43574_IG12
- str w10, [x11, x6] - ldr w6, [x8, #0x08] - cmp w3, w6
+ str w8, [x9, w2, UXTW #2] + ldr w8, [x7, #0x08] + cmp w3, w8
bhs G_M43574_IG12
- add x6, x8, #16 - ; byrRegs +[x6] - str w13, [x6, x9]
+ add x7, x7, #16 + ; gcrRegs -[x7] + ; byrRegs +[x7] + str w10, [x7, x6, LSL #2]
add w2, w2, #1 cmp w2, w1 ble G_M43574_IG09
- ;; size=116 bbWeight=0.16 PerfScore 5.84
+ ;; size=124 bbWeight=0.16 PerfScore 6.40
G_M43574_IG10: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref, isz
- ; gcrRegs -[x7-x8] - ; byrRegs -[x6 x11]
+ ; gcrRegs -[x13] + ; byrRegs -[x7 x9]
add w3, w3, #1 cmp w3, w1 ble G_M43574_IG03 @@ -187,7 +171,7 @@ G_M43574_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 376, prolog size 20, PerfScore 545.61, instruction count 94, allocated bytes for code 376 (MethodHash=d41955c9) for method Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
+; Total bytes of code 340, prolog size 20, PerfScore 504.21, instruction count 85, allocated bytes for code 340 (MethodHash=d41955c9) for method Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
; ============================================================ Unwind Info: @@ -198,7 +182,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 94 (0x0005e) Actual length = 376 (0x000178)
...

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

+4 (+2.50%) : 26720.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span1[uint],System.ReadOnlySpan1[uint],ulong):uint (Tier1-OSR)

@@ -20,8 +20,8 @@ ; V09 tmp2 [V09,T12] ( 2, 4.01) int -> x1 "V00.[008..012)" ; V10 tmp3 [V10,T11] ( 2, 4.01) byref -> x2 single-def "V01.[000..008)" ; V11 tmp4 [V11,T06] ( 4, 9.01) int -> x3 "V01.[008..012)"
-; V12 cse0 [V12,T04] ( 3, 12 ) long -> x6 "CSE - aggressive" -; V13 cse1 [V13,T05] ( 3, 12 ) int -> x9 "CSE - aggressive"
+; V12 cse0 [V12,T04] ( 3, 12 ) int -> x9 "CSE - aggressive" +; V13 cse1 [V13,T05] ( 3, 12 ) long -> x6 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -44,20 +44,21 @@ G_M60135_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M60135_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz cmp w5, w3 bhs G_M60135_IG10
- ubfiz x6, x5, #2, #32 - ldr w7, [x2, x6]
+ mov w6, w5 + ldr w7, [x2, x6, LSL #2]
ldr x8, [fp, #0x40] // [V03 loc0] madd x8, x7, x4, x8 sxtw w7, w8 lsr x8, x8, #32 cmp w5, w1 bhs G_M60135_IG10
+ lsl x6, x6, #2
add x6, x0, x6 ; byrRegs +[x6] ldr w9, [x6] cmp w9, w7 bhs G_M60135_IG05
- ;; size=56 bbWeight=4 PerfScore 82.00
+ ;; size=60 bbWeight=4 PerfScore 84.00
G_M60135_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0045 {x0 x2 x6}, byref add x8, x8, #1 ;; size=4 bbWeight=2 PerfScore 1.00 @@ -93,7 +94,7 @@ G_M60135_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 160, prolog size 12, PerfScore 105.65, instruction count 40, allocated bytes for code 160 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1-OSR)
+; Total bytes of code 164, prolog size 12, PerfScore 107.65, instruction count 41, allocated bytes for code 164 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1-OSR)
; ============================================================ Unwind Info: @@ -104,7 +105,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+3.57%) : 55012.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span1[uint],System.ReadOnlySpan1[uint],ulong):uint (Tier1)

@@ -19,8 +19,8 @@ ; V09 tmp2 [V09,T10] ( 2, 5 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V10 tmp3 [V10,T09] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP ; V11 tmp4 [V11,T07] ( 3, 6 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V12 cse0 [V12,T04] ( 3, 12 ) long -> x7 "CSE - aggressive" -; V13 cse1 [V13,T05] ( 3, 12 ) int -> x9 "CSE - aggressive"
+; V12 cse0 [V12,T04] ( 3, 12 ) int -> x9 "CSE - aggressive" +; V13 cse1 [V13,T05] ( 3, 12 ) long -> x7 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -36,19 +36,20 @@ G_M60135_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, b ble G_M60135_IG06 ;; size=16 bbWeight=1 PerfScore 2.50 G_M60135_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- ubfiz x7, x6, #2, #32 - ldr w8, [x2, x7]
+ mov w7, w6 + ldr w8, [x2, x7, LSL #2]
madd x5, x8, x4, x5 sxtw w8, w5 lsr x5, x5, #32 cmp w6, w1 bhs G_M60135_IG08
+ lsl x7, x7, #2
add x7, x0, x7 ; byrRegs +[x7] ldr w9, [x7] cmp w9, w8 bhs G_M60135_IG05
- ;; size=44 bbWeight=4 PerfScore 68.00
+ ;; size=48 bbWeight=4 PerfScore 70.00
G_M60135_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0085 {x0 x2 x7}, byref add x5, x5, #1 ;; size=4 bbWeight=2 PerfScore 1.00 @@ -73,7 +74,7 @@ G_M60135_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 112, prolog size 8, PerfScore 89.50, instruction count 28, allocated bytes for code 112 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
+; Total bytes of code 116, prolog size 8, PerfScore 91.50, instruction count 29, allocated bytes for code 116 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
; ============================================================ Unwind Info: @@ -84,7 +85,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ 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 (+4.24%) : 8432.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

@@ -9,35 +9,36 @@ ; Final local variable assignments ; ; V00 this [V00,T04] ( 11, 7 ) byref -> x19 this single-def
-; V01 arg1 [V01,T06] ( 5, 3.50) int -> x1 single-def -; V02 loc0 [V02,T16] ( 3, 2.50) int -> x0
+; V01 arg1 [V01,T07] ( 5, 3.50) int -> x1 single-def +; V02 loc0 [V02,T17] ( 3, 2.50) int -> x0
; V03 loc1 [V03,T15] ( 5, 2.50) int -> x21
-; V04 loc2 [V04,T11] ( 5, 4 ) int -> x20 ld-addr-op -; V05 loc3 [V05,T00] ( 11, 29.50) int -> x22 -; V06 loc4 [V06,T01] ( 14, 22 ) int -> x23 -; V07 loc5 [V07,T18] ( 2, 1 ) int -> x0 -; V08 loc6 [V08,T09] ( 4, 5 ) int -> x1 -; V09 loc7 [V09,T03] ( 4, 10.50) int -> x2 -; V10 loc8 [V10,T05] ( 3, 6.50) int -> x3
+; V04 loc2 [V04,T16] ( 5, 2.50) int -> x20 ld-addr-op +; V05 loc3 [V05,T00] ( 13, 34.50) int -> x22 +; V06 loc4 [V06,T01] ( 14, 28 ) int -> x23 +; V07 loc5 [V07,T19] ( 2, 1 ) int -> x0 +; V08 loc6 [V08,T05] ( 4, 9 ) int -> x1 +; V09 loc7 [V09,T03] ( 6, 13.50) int -> x2 +; V10 loc8 [V10,T06] ( 4, 9 ) int -> x3
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp3 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V15 tmp4 [V15 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V16 tmp5 [V16,T07] ( 5, 5 ) long -> [fp+0x18] "Inlining Arg"
+; V16 tmp5 [V16,T09] ( 5, 5 ) long -> [fp+0x18] "Inlining Arg"
;* V17 tmp6 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V18 tmp7 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp8 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp9 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V21 tmp10 [V21 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V22 tmp11 [V22,T08] ( 5, 5 ) long -> [fp+0x10] spill-single-def "Inlining Arg"
+; V22 tmp11 [V22,T10] ( 5, 5 ) long -> [fp+0x10] spill-single-def "Inlining Arg"
;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V24 tmp13 [V24,T13] ( 3, 3 ) long -> x0 "Cast away GC" ; V25 tmp14 [V25,T14] ( 3, 3 ) long -> x0 "Cast away GC"
-; V26 cse0 [V26,T17] ( 3, 1.50) int -> x0 "CSE - moderate" -; V27 cse1 [V27,T02] ( 12, 18 ) byref -> x24 hoist multi-def "CSE - aggressive" -; V28 cse2 [V28,T10] ( 2, 4.50) int -> x0 hoist "CSE - aggressive" -; V29 cse3 [V29,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
+; V26 cse0 [V26,T18] ( 3, 1.50) int -> x0 "CSE - moderate" +; V27 cse1 [V27,T02] ( 13, 20.50) byref -> x24 hoist multi-def "CSE - aggressive" +; V28 cse2 [V28,T11] ( 3, 5 ) int -> x0 "CSE - aggressive" +; V29 cse3 [V29,T08] ( 4, 5.50) int -> x4 hoist multi-def "CSE - aggressive" +; V30 cse4 [V30,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
; ; Lcl frame size = 16 @@ -151,7 +152,7 @@ G_M38441_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=48 bbWeight=0.50 PerfScore 4.75
-G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add w0, w23, #1 str w0, [x19] neg w0, w20 @@ -159,42 +160,45 @@ G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, mov w1, wzr add x24, x19, #4 ; byrRegs +[x24]
+ ldr w2, [x24, w22, SXTW #2]
and w0, w0, #31
- b G_M38441_IG13 - ;; size=32 bbWeight=0.50 PerfScore 2.50 -G_M38441_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ lsr w3, w2, w0 + cmp w22, #0 + ble G_M38441_IG13 + and w4, w20, #31 + ;; size=48 bbWeight=0.50 PerfScore 4.75 +G_M38441_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
orr w1, w1, w3 str w1, [x24, w23, SXTW #2]
- lsl w1, w2, w20
+ lsl w1, w2, w4
sub w22, w22, #1 sub w23, w23, #1
- ;; size=20 bbWeight=2 PerfScore 6.00 -G_M38441_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w2, [x24, w22, SXTW #2] lsr w3, w2, w0 cmp w22, #0 bgt G_M38441_IG12
- ;; size=16 bbWeight=4 PerfScore 20.00 -G_M38441_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3 - str w0, [x24, w23, SXTW #2]
+ ;; size=36 bbWeight=4 PerfScore 32.00 +G_M38441_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w4, w1, w3 + str w4, [x24, w23, SXTW #2]
sub w0, w23, #1
- lsl w1, w2, w20
+ and w4, w20, #31 + lsl w1, w2, w4
str w1, [x24, w0, SXTW #2] mov x0, x24 lsl w1, w21, #2 mov w1, w1 str x1, [fp, #0x10] // [V22 tmp11]
- cbz x1, G_M38441_IG16
+ cbz x1, G_M38441_IG15
cmp x1, #0xD1FFAB1E
- bhi G_M38441_IG15
+ bhi G_M38441_IG14
mov w1, wzr ldr w2, [fp, #0x10] // [V22 tmp11] bl CORINFO_HELP_MEMSET ; gcr arg pop 0
- b G_M38441_IG16 - ;; size=64 bbWeight=0.50 PerfScore 6.75 -G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ b G_M38441_IG15 + ;; size=68 bbWeight=0.50 PerfScore 7.00 +G_M38441_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
ldr x1, [fp, #0x10] // [V22 tmp11] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -203,7 +207,7 @@ G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 blr x2 ; gcr arg pop 0 ;; size=24 bbWeight=0.50 PerfScore 3.75
-G_M38441_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w0, [x19] sub w0, w0, #1 ldr w1, [x24, w0, SXTW #2] @@ -212,7 +216,7 @@ G_M38441_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 b G_M38441_IG04 ;; size=24 bbWeight=0.50 PerfScore 4.75
-; Total bytes of code 472, prolog size 24, PerfScore 111.75, instruction count 118, allocated bytes for code 472 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
+; Total bytes of code 492, prolog size 24, PerfScore 120.25, instruction count 123, allocated bytes for code 492 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
; ============================================================ Unwind Info: @@ -223,7 +227,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 118 (0x00076) Actual length = 472 (0x0001d8)
+ Function Length : 123 (0x0007b) Actual length = 492 (0x0001ec)
---- 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)

+28 (+6.60%) : 609020.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

@@ -11,15 +11,15 @@ ; ; V00 this [V00,T00] ( 11, 7 ) byref -> x19 this single-def ; V01 arg1 [V01,T04] ( 5, 5 ) int -> x1 single-def
-; V02 loc0 [V02,T12] ( 3, 3 ) int -> x0
+; V02 loc0 [V02,T13] ( 3, 3 ) int -> x0
; V03 loc1 [V03,T09] ( 5, 3 ) int -> x21
-; V04 loc2 [V04,T06] ( 5, 4.50) int -> x20 ld-addr-op -; V05 loc3 [V05,T05] ( 10, 6 ) int -> x22
+; V04 loc2 [V04,T07] ( 5, 4.50) int -> x20 ld-addr-op +; V05 loc3 [V05,T05] ( 12, 6 ) int -> x22
; V06 loc4 [V06,T01] ( 14, 8.50) int -> x23 ; V07 loc5 [V07,T16] ( 2, 2 ) int -> x0
-; V08 loc6 [V08,T10] ( 4, 3 ) int -> x1 -; V09 loc7 [V09,T07] ( 4, 4.50) int -> x2 -; V10 loc8 [V10,T13] ( 3, 3 ) int -> x3
+; V08 loc6 [V08,T10] ( 4, 3 ) int -> x3 +; V09 loc7 [V09,T06] ( 6, 4.50) int -> x25 +; V10 loc8 [V10,T11] ( 4, 3 ) int -> x26
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -28,31 +28,32 @@ ; V16 tmp5 [V16,T02] ( 5, 8.00) long -> [fp+0x18] spill-single-def "Inlining Arg" ;* V17 tmp6 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V18 tmp7 [V18,T08] ( 3, 4.00) long -> x0 "Cast away GC"
-; V19 cse0 [V19,T15] ( 2, 2.50) int -> x0 hoist "CSE - aggressive" -; V20 cse1 [V20,T14] ( 3, 3 ) int -> x0 "CSE - aggressive" -; V21 cse2 [V21,T03] ( 10, 7 ) byref -> x24 hoist multi-def "CSE - aggressive" -; V22 cse3 [V22,T11] ( 3, 3 ) ref -> x1 "CSE - aggressive"
+; V19 cse0 [V19,T14] ( 3, 3 ) int -> x0 "CSE - aggressive" +; V20 cse1 [V20,T15] ( 3, 2.50) int -> x0 "CSE - aggressive" +; V21 cse2 [V21,T03] ( 11, 7 ) byref -> x24 multi-def "CSE - aggressive" +; V22 cse3 [V22,T12] ( 3, 3 ) ref -> x1 "CSE - aggressive"
; ; Lcl frame size = 16 G_M38441_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] stp x23, x24, [sp, #0x40]
+ stp x25, x26, [sp, #0x50]
mov fp, sp mov x19, x0 ; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=28 bbWeight=1 PerfScore 6.00
G_M38441_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz ldr w0, [x19]
- cbz w0, G_M38441_IG11 - cbz w1, G_M38441_IG11
+ cbz w0, G_M38441_IG10 + cbz w1, G_M38441_IG10
and w20, w1, #31 lsr w21, w1, #5 sub w22, w0, #1 add w23, w22, w21
- cbz w20, G_M38441_IG12
+ cbz w20, G_M38441_IG11
add w23, w23, #1 cmp w23, #115 blt G_M38441_IG03 @@ -69,54 +70,56 @@ G_M38441_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=80 bbWeight=1 PerfScore 18.00
-G_M38441_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add w0, w23, #1 str w0, [x19] neg w0, w20 add w0, w0, #32
- mov w1, wzr
+ mov w3, wzr
add x24, x19, #4 ; byrRegs +[x24]
+ ldr w25, [x24, w22, SXTW #2]
and w0, w0, #31
- ;; size=28 bbWeight=1 PerfScore 4.00 -G_M38441_IG04: ; bbWeight=1.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - ldr w2, [x24, w22, SXTW #2] - lsr w3, w2, w0
+ lsr w26, w25, w0
cmp w22, #0
- bgt G_M38441_IG08 - ;; size=16 bbWeight=1.50 PerfScore 7.50 -G_M38441_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3
+ bgt G_M38441_IG07 + ;; size=44 bbWeight=1 PerfScore 9.00 +G_M38441_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w0, w3, w26
str w0, [x24, w23, SXTW #2] sub w0, w23, #1
- lsl w1, w2, w20
+ lsl w1, w25, w20
str w1, [x24, w0, SXTW #2] mov x0, x24 lsl w1, w21, #2 mov w1, w1 str x1, [fp, #0x18] // [V16 tmp5]
- cbz x1, G_M38441_IG10
+ cbz x1, G_M38441_IG09
;; size=40 bbWeight=1 PerfScore 7.50
-G_M38441_IG06: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M38441_IG05: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
cmp x1, #0xD1FFAB1E
- bhi G_M38441_IG09
+ bhi G_M38441_IG08
;; size=8 bbWeight=1.00 PerfScore 1.50
-G_M38441_IG07: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+G_M38441_IG06: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
mov w1, wzr ldr w2, [fp, #0x18] // [V16 tmp5] bl CORINFO_HELP_MEMSET ; gcr arg pop 0
- b G_M38441_IG10
+ b G_M38441_IG09
;; size=16 bbWeight=0.98 PerfScore 4.42
-G_M38441_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref - orr w1, w1, w3 - str w1, [x24, w23, SXTW #2] - lsl w1, w2, w20
+G_M38441_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w3, w3, w26 + str w3, [x24, w23, SXTW #2] + lsl w3, w25, w20
sub w22, w22, #1 sub w23, w23, #1
+ ldr w25, [x24, w22, SXTW #2] + lsr w26, w25, w0 + cmp w22, #0 + bgt G_M38441_IG07
b G_M38441_IG04
- ;; size=24 bbWeight=0.50 PerfScore 2.00 -G_M38441_IG09: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ ;; size=40 bbWeight=0.50 PerfScore 4.50 +G_M38441_IG08: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
ldr x1, [fp, #0x18] // [V16 tmp5] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -125,22 +128,23 @@ G_M38441_IG09: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 blr x2 ; gcr arg pop 0 ;; size=24 bbWeight=0.02 PerfScore 0.12
-G_M38441_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M38441_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w0, [x19] sub w0, w0, #1 ldr w1, [x24, w0, SXTW #2]
- cbnz w1, G_M38441_IG11
+ cbnz w1, G_M38441_IG10
str w0, [x19] ;; size=20 bbWeight=1 PerfScore 8.50
-G_M38441_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M38441_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x19 x24]
+ ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00 -G_M38441_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref
+ ;; size=24 bbWeight=0 PerfScore 0.00 +G_M38441_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref
; byrRegs +[x19] cmp w23, #115 cset x0, lt @@ -150,9 +154,9 @@ G_M38441_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ldr x1, [x1] blr x1 ; gcr arg pop 0
- b G_M38441_IG14
+ b G_M38441_IG13
;; size=32 bbWeight=0 PerfScore 0.00
-G_M38441_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
add x24, x19, #4 ; byrRegs +[x24] sbfiz x0, x23, #2, #32 @@ -163,9 +167,9 @@ G_M38441_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by sub w22, w22, #1 sub w23, w23, #1 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M38441_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M38441_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs -[x0 x24]
- tbz w22, #31, G_M38441_IG13
+ tbz w22, #31, G_M38441_IG12
ldr w0, [x19] add w0, w0, w21 str w0, [x19] @@ -180,15 +184,16 @@ G_M38441_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; byrRegs -[x0 x19] ; gcr arg pop 0 ;; size=44 bbWeight=0 PerfScore 0.00
-G_M38441_IG15: ; bbWeight=0, epilog, nogc, extend
+G_M38441_IG14: ; bbWeight=0, epilog, nogc, extend + ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 424, prolog size 24, PerfScore 58.54, instruction count 106, allocated bytes for code 424 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
+; Total bytes of code 452, prolog size 28, PerfScore 59.54, instruction count 113, allocated bytes for code 452 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
; ============================================================ Unwind Info: @@ -199,7 +204,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 106 (0x0006a) Actual length = 424 (0x0001a8)
+ 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) @@ -212,8 +217,8 @@ Unwind Info: ---- Epilog start at index 1 ---- E6 save_next E6 save_next
+ E6 save_next
C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
- 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]! - E4 end
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end

+36 (+8.49%) : 323465.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

@@ -11,15 +11,15 @@ ; ; V00 this [V00,T01] ( 11, 7 ) byref -> x19 this single-def ; V01 arg1 [V01,T05] ( 5, 5 ) int -> x1 single-def
-; V02 loc0 [V02,T13] ( 3, 3 ) int -> x0 -; V03 loc1 [V03,T11] ( 5, 3 ) int -> x21 -; V04 loc2 [V04,T07] ( 5, 5 ) int -> x20 ld-addr-op -; V05 loc3 [V05,T03] ( 10, 8 ) int -> x22
+; V02 loc0 [V02,T14] ( 3, 3 ) int -> x0 +; V03 loc1 [V03,T12] ( 5, 3 ) int -> x21 +; V04 loc2 [V04,T07] ( 5, 4.50) int -> x20 ld-addr-op +; V05 loc3 [V05,T02] ( 12, 8 ) int -> x22
; V06 loc4 [V06,T00] ( 14, 10 ) int -> x23
-; V07 loc5 [V07,T16] ( 2, 2 ) int -> x0 -; V08 loc6 [V08,T08] ( 4, 4 ) int -> x1 -; V09 loc7 [V09,T06] ( 4, 6 ) int -> x2 -; V10 loc8 [V10,T09] ( 3, 4 ) int -> x3
+; V07 loc5 [V07,T17] ( 2, 2 ) int -> x0 +; V08 loc6 [V08,T08] ( 4, 4 ) int -> x3 +; V09 loc7 [V09,T06] ( 6, 6 ) int -> x25 +; V10 loc8 [V10,T09] ( 4, 4 ) int -> x26
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -28,22 +28,24 @@ ; V16 tmp5 [V16,T04] ( 5, 8.00) long -> [fp+0x18] spill-single-def "Inlining Arg" ;* V17 tmp6 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V18 tmp7 [V18,T10] ( 3, 4.00) long -> x0 "Cast away GC"
-; V19 cse0 [V19,T14] ( 3, 3 ) int -> x0 "CSE - aggressive" -; V20 cse1 [V20,T02] ( 10, 8 ) byref -> x24 hoist multi-def "CSE - aggressive" -; V21 cse2 [V21,T15] ( 2, 3 ) int -> x0 hoist "CSE - aggressive" -; V22 cse3 [V22,T12] ( 3, 3 ) ref -> x1 "CSE - aggressive"
+; V19 cse0 [V19,T15] ( 3, 3 ) int -> x0 "CSE - aggressive" +; V20 cse1 [V20,T03] ( 11, 8 ) byref -> x24 multi-def "CSE - aggressive" +; V21 cse2 [V21,T16] ( 3, 3 ) int -> x0 "CSE - aggressive" +; V22 cse3 [V22,T13] ( 3, 3 ) ref -> x1 "CSE - aggressive" +; V23 cse4 [V23,T11] ( 4, 3.50) int -> x1 hoist multi-def "CSE - aggressive"
; ; Lcl frame size = 16 G_M38441_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] stp x23, x24, [sp, #0x40]
+ stp x25, x26, [sp, #0x50]
mov fp, sp mov x19, x0 ; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=28 bbWeight=1 PerfScore 6.00
G_M38441_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz ldr w0, [x19] cbz w0, G_M38441_IG11 @@ -69,53 +71,59 @@ G_M38441_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=80 bbWeight=1 PerfScore 18.00
-G_M38441_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add w0, w23, #1 str w0, [x19] neg w0, w20 add w0, w0, #32
- mov w1, wzr
+ mov w3, wzr
add x24, x19, #4 ; byrRegs +[x24]
+ ldr w25, [x24, w22, SXTW #2]
and w0, w0, #31
- b G_M38441_IG05 - ;; size=32 bbWeight=1 PerfScore 5.00 -G_M38441_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref - orr w1, w1, w3 - str w1, [x24, w23, SXTW #2] - lsl w1, w2, w20 - sub w22, w22, #1 - sub w23, w23, #1 - ;; size=20 bbWeight=1 PerfScore 3.00 -G_M38441_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - ldr w2, [x24, w22, SXTW #2] - lsr w3, w2, w0
+ lsr w26, w25, w0
cmp w22, #0
- bgt G_M38441_IG04 - ;; size=16 bbWeight=2 PerfScore 10.00 -G_M38441_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3 - str w0, [x24, w23, SXTW #2]
+ bgt G_M38441_IG07 + ;; size=44 bbWeight=1 PerfScore 9.00 +G_M38441_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w1, w3, w26 + str w1, [x24, w23, SXTW #2]
sub w0, w23, #1
- lsl w1, w2, w20
+ and w1, w20, #31 + lsl w1, w25, w1
str w1, [x24, w0, SXTW #2] mov x0, x24 lsl w1, w21, #2 mov w1, w1 str x1, [fp, #0x18] // [V16 tmp5] cbz x1, G_M38441_IG10
- ;; size=40 bbWeight=1 PerfScore 7.50 -G_M38441_IG07: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+ ;; size=44 bbWeight=1 PerfScore 8.00 +G_M38441_IG05: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
cmp x1, #0xD1FFAB1E bhi G_M38441_IG09 ;; size=8 bbWeight=1.00 PerfScore 1.50
-G_M38441_IG08: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+G_M38441_IG06: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
mov w1, wzr ldr w2, [fp, #0x18] // [V16 tmp5] bl CORINFO_HELP_MEMSET ; gcr arg pop 0 b G_M38441_IG10 ;; size=16 bbWeight=0.98 PerfScore 4.42
+G_M38441_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref + and w1, w20, #31 + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M38441_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w3, w3, w26 + str w3, [x24, w23, SXTW #2] + lsl w3, w25, w1 + sub w22, w22, #1 + sub w23, w23, #1 + ldr w25, [x24, w22, SXTW #2] + lsr w26, w25, w0 + cmp w22, #0 + bgt G_M38441_IG08 + b G_M38441_IG04 + ;; size=40 bbWeight=1 PerfScore 9.00
G_M38441_IG09: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref ldr x1, [fp, #0x18] // [V16 tmp5] movz x2, #0xD1FFAB1E // code for <unknown method> @@ -134,12 +142,13 @@ G_M38441_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x2 ;; size=20 bbWeight=1 PerfScore 8.50 G_M38441_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x19 x24]
+ ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
G_M38441_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref ; byrRegs +[x19] cmp w23, #115 @@ -181,14 +190,15 @@ G_M38441_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; gcr arg pop 0 ;; size=44 bbWeight=0 PerfScore 0.00 G_M38441_IG15: ; bbWeight=0, epilog, nogc, extend
+ ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 424, prolog size 24, PerfScore 63.04, instruction count 106, allocated bytes for code 424 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
+; Total bytes of code 460, prolog size 28, PerfScore 64.79, instruction count 115, allocated bytes for code 460 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
; ============================================================ Unwind Info: @@ -199,7 +209,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 106 (0x0006a) Actual length = 424 (0x0001a8)
+ Function Length : 115 (0x00073) Actual length = 460 (0x0001cc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -212,8 +222,8 @@ Unwind Info: ---- Epilog start at index 1 ---- E6 save_next E6 save_next
+ E6 save_next
C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
- 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]! - E4 end
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end

+36 (+8.49%) : 494810.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

@@ -11,15 +11,15 @@ ; ; V00 this [V00,T01] ( 11, 7 ) byref -> x19 this single-def ; V01 arg1 [V01,T05] ( 5, 5 ) int -> x1 single-def
-; V02 loc0 [V02,T13] ( 3, 3 ) int -> x0 -; V03 loc1 [V03,T11] ( 5, 3 ) int -> x21 -; V04 loc2 [V04,T07] ( 5, 5 ) int -> x20 ld-addr-op -; V05 loc3 [V05,T03] ( 10, 8 ) int -> x22
+; V02 loc0 [V02,T14] ( 3, 3 ) int -> x0 +; V03 loc1 [V03,T12] ( 5, 3 ) int -> x21 +; V04 loc2 [V04,T07] ( 5, 4.50) int -> x20 ld-addr-op +; V05 loc3 [V05,T02] ( 12, 8 ) int -> x22
; V06 loc4 [V06,T00] ( 14, 10 ) int -> x23
-; V07 loc5 [V07,T16] ( 2, 2 ) int -> x0 -; V08 loc6 [V08,T08] ( 4, 4 ) int -> x1 -; V09 loc7 [V09,T06] ( 4, 6 ) int -> x2 -; V10 loc8 [V10,T09] ( 3, 4 ) int -> x3
+; V07 loc5 [V07,T17] ( 2, 2 ) int -> x0 +; V08 loc6 [V08,T08] ( 4, 4 ) int -> x3 +; V09 loc7 [V09,T06] ( 6, 6 ) int -> x25 +; V10 loc8 [V10,T09] ( 4, 4 ) int -> x26
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -28,22 +28,24 @@ ; V16 tmp5 [V16,T04] ( 5, 8.00) long -> [fp+0x18] spill-single-def "Inlining Arg" ;* V17 tmp6 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V18 tmp7 [V18,T10] ( 3, 4.00) long -> x0 "Cast away GC"
-; V19 cse0 [V19,T14] ( 3, 3 ) int -> x0 "CSE - aggressive" -; V20 cse1 [V20,T02] ( 10, 8 ) byref -> x24 hoist multi-def "CSE - aggressive" -; V21 cse2 [V21,T15] ( 2, 3 ) int -> x0 hoist "CSE - aggressive" -; V22 cse3 [V22,T12] ( 3, 3 ) ref -> x1 "CSE - aggressive"
+; V19 cse0 [V19,T15] ( 3, 3 ) int -> x0 "CSE - aggressive" +; V20 cse1 [V20,T03] ( 11, 8 ) byref -> x24 multi-def "CSE - aggressive" +; V21 cse2 [V21,T16] ( 3, 3 ) int -> x0 "CSE - aggressive" +; V22 cse3 [V22,T13] ( 3, 3 ) ref -> x1 "CSE - aggressive" +; V23 cse4 [V23,T11] ( 4, 3.50) int -> x1 hoist multi-def "CSE - aggressive"
; ; Lcl frame size = 16 G_M38441_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] stp x23, x24, [sp, #0x40]
+ stp x25, x26, [sp, #0x50]
mov fp, sp mov x19, x0 ; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=28 bbWeight=1 PerfScore 6.00
G_M38441_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz ldr w0, [x19] cbz w0, G_M38441_IG11 @@ -69,53 +71,59 @@ G_M38441_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=80 bbWeight=1 PerfScore 18.00
-G_M38441_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add w0, w23, #1 str w0, [x19] neg w0, w20 add w0, w0, #32
- mov w1, wzr
+ mov w3, wzr
add x24, x19, #4 ; byrRegs +[x24]
+ ldr w25, [x24, w22, SXTW #2]
and w0, w0, #31
- b G_M38441_IG05 - ;; size=32 bbWeight=1 PerfScore 5.00 -G_M38441_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref - orr w1, w1, w3 - str w1, [x24, w23, SXTW #2] - lsl w1, w2, w20 - sub w22, w22, #1 - sub w23, w23, #1 - ;; size=20 bbWeight=1 PerfScore 3.00 -G_M38441_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - ldr w2, [x24, w22, SXTW #2] - lsr w3, w2, w0
+ lsr w26, w25, w0
cmp w22, #0
- bgt G_M38441_IG04 - ;; size=16 bbWeight=2 PerfScore 10.00 -G_M38441_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3 - str w0, [x24, w23, SXTW #2]
+ bgt G_M38441_IG07 + ;; size=44 bbWeight=1 PerfScore 9.00 +G_M38441_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w1, w3, w26 + str w1, [x24, w23, SXTW #2]
sub w0, w23, #1
- lsl w1, w2, w20
+ and w1, w20, #31 + lsl w1, w25, w1
str w1, [x24, w0, SXTW #2] mov x0, x24 lsl w1, w21, #2 mov w1, w1 str x1, [fp, #0x18] // [V16 tmp5] cbz x1, G_M38441_IG10
- ;; size=40 bbWeight=1 PerfScore 7.50 -G_M38441_IG07: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+ ;; size=44 bbWeight=1 PerfScore 8.00 +G_M38441_IG05: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
cmp x1, #0xD1FFAB1E bhi G_M38441_IG09 ;; size=8 bbWeight=1.00 PerfScore 1.50
-G_M38441_IG08: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+G_M38441_IG06: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
mov w1, wzr ldr w2, [fp, #0x18] // [V16 tmp5] bl CORINFO_HELP_MEMSET ; gcr arg pop 0 b G_M38441_IG10 ;; size=16 bbWeight=0.98 PerfScore 4.42
+G_M38441_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref + and w1, w20, #31 + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M38441_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w3, w3, w26 + str w3, [x24, w23, SXTW #2] + lsl w3, w25, w1 + sub w22, w22, #1 + sub w23, w23, #1 + ldr w25, [x24, w22, SXTW #2] + lsr w26, w25, w0 + cmp w22, #0 + bgt G_M38441_IG08 + b G_M38441_IG04 + ;; size=40 bbWeight=1 PerfScore 9.00
G_M38441_IG09: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref ldr x1, [fp, #0x18] // [V16 tmp5] movz x2, #0xD1FFAB1E // code for <unknown method> @@ -134,12 +142,13 @@ G_M38441_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x2 ;; size=20 bbWeight=1 PerfScore 8.50 G_M38441_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x19 x24]
+ ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
G_M38441_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref ; byrRegs +[x19] cmp w23, #115 @@ -181,14 +190,15 @@ G_M38441_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; gcr arg pop 0 ;; size=44 bbWeight=0 PerfScore 0.00 G_M38441_IG15: ; bbWeight=0, epilog, nogc, extend
+ ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 424, prolog size 24, PerfScore 63.04, instruction count 106, allocated bytes for code 424 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
+; Total bytes of code 460, prolog size 28, PerfScore 64.79, instruction count 115, allocated bytes for code 460 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
; ============================================================ Unwind Info: @@ -199,7 +209,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 106 (0x0006a) Actual length = 424 (0x0001a8)
+ Function Length : 115 (0x00073) Actual length = 460 (0x0001cc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -212,8 +222,8 @@ Unwind Info: ---- Epilog start at index 1 ---- E6 save_next E6 save_next
+ E6 save_next
C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
- 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]! - E4 end
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end

libraries.crossgen2.linux.arm64.checked.mch

-48 (-8.51%) : 30502.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)

@@ -9,41 +9,39 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T14] ( 5, 5 ) ref -> x20 class-hnd single-def <System.Reflection.MethodBase[]> -; V01 arg1 [V01,T12] ( 4, 6 ) ref -> x19 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,T09] ( 5, 17 ) int -> x24
+; V00 arg0 [V00,T12] ( 5, 5 ) ref -> x20 class-hnd single-def <System.Reflection.MethodBase[]> +; V01 arg1 [V01,T10] ( 4, 6 ) ref -> x19 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,T05] ( 6, 19 ) int -> x24
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-; V06 loc4 [V06,T00] ( 7, 84 ) int -> [fp+0x3C]
+; 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,T13] ( 2, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase> -; V11 tmp3 [V11,T05] ( 2, 20 ) byref -> x27 "field V05._reference (fldOffset=0x0)" P-INDEP -; V12 tmp4 [V12,T03] ( 3, 24 ) int -> x28 "field V05._length (fldOffset=0x8)" P-INDEP
+; V10 tmp2 [V10,T11] ( 2, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase> +; V11 tmp3 [V11,T04] ( 2, 20 ) byref -> x26 "field V05._reference (fldOffset=0x0)" P-INDEP +; V12 tmp4 [V12,T02] ( 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,T01] ( 2, 64 ) ref -> x0 "argument with side effect"
-; V16 cse0 [V16,T02] ( 3, 48 ) long -> [fp+0x30] spill-single-def "CSE - aggressive" -; V17 cse1 [V17,T11] ( 3, 10 ) long -> x26 "CSE - aggressive" -; V18 cse2 [V18,T04] ( 4, 22 ) int -> [fp+0x2C] spill-single-def "CSE - aggressive" -; V19 cse3 [V19,T06] ( 2, 18 ) byref -> [fp+0x10] spill-single-def hoist "CSE - aggressive" -; V20 cse4 [V20,T16] ( 3, 7 ) byref -> x20 hoist "CSE - aggressive" -; V21 cse5 [V21,T15] ( 4, 7 ) int -> x21 "CSE - aggressive" -; V22 cse6 [V22,T07] ( 2, 18 ) long -> [fp+0x20] spill-single-def hoist "CSE - aggressive" -; V23 cse7 [V23,T08] ( 2, 18 ) long -> [fp+0x18] spill-single-def hoist "CSE - aggressive" -; V24 cse8 [V24,T18] ( 2, 5 ) long -> x25 hoist "CSE - moderate"
+; V16 cse0 [V16,T03] ( 4, 22 ) int -> [fp+0x2C] spill-single-def "CSE - aggressive" +; V17 cse1 [V17,T06] ( 2, 18 ) byref -> [fp+0x10] spill-single-def hoist "CSE - aggressive" +; V18 cse2 [V18,T14] ( 3, 7 ) byref -> x20 hoist "CSE - aggressive" +; V19 cse3 [V19,T13] ( 4, 7 ) int -> x21 "CSE - aggressive" +; V20 cse4 [V20,T07] ( 2, 18 ) long -> [fp+0x20] spill-single-def hoist "CSE - aggressive" +; V21 cse5 [V21,T08] ( 2, 18 ) long -> [fp+0x18] spill-single-def hoist "CSE - aggressive" +; V22 cse6 [V22,T16] ( 2, 5 ) long -> x25 hoist "CSE - moderate"
;
-; Lcl frame size = 48
+; Lcl frame size = 32
G_M8664_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x90]! - stp x19, x20, [sp, #0x40] - stp x21, x22, [sp, #0x50] - stp x23, x24, [sp, #0x60] - stp x25, x26, [sp, #0x70] - stp x27, x28, [sp, #0x80]
+ 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]
mov fp, sp mov x20, x0 ; gcrRegs +[x20] @@ -51,7 +49,7 @@ G_M8664_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19] ;; size=36 bbWeight=1 PerfScore 7.50 G_M8664_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M8664_IG19
+ cbz x20, G_M8664_IG16
ldr w21, [x20, #0x08] mov w0, w21 adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address @@ -64,7 +62,7 @@ G_M8664_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {} mov w23, wzr mov w24, wzr cmp w21, #0
- ble G_M8664_IG09
+ ble G_M8664_IG08
add x20, x20, #16 ; gcrRegs -[x20] ; byrRegs +[x20] @@ -73,8 +71,7 @@ G_M8664_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {} ;; size=60 bbWeight=1 PerfScore 14.00 G_M8664_IG03: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=100000 {x20}, byref, isz ; gcrRegs -[x0]
- ubfiz x26, x24, #3, #32 - ldr x0, [x20, x26]
+ ldr x0, [x20, w24, UXTW #3]
; gcrRegs +[x0] mov x11, x25 ldr wzr, [x0] @@ -82,76 +79,67 @@ G_M8664_IG03: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=100000 blr x1 ; gcrRegs -[x0] ; byrRegs +[x0]
- mov x27, x0 - ; byrRegs +[x27] - mov w28, w1 - cbz w28, G_M8664_IG08 - ;; size=36 bbWeight=4 PerfScore 54.00 -G_M8664_IG04: ; bbWeight=2, gcrefRegs=480000 {x19 x22}, byrefRegs=8100000 {x20 x27}, byref, isz
+ mov x26, x0 + ; byrRegs +[x26] + mov w27, w1 + cbz w27, G_M8664_IG07 + ;; size=32 bbWeight=4 PerfScore 50.00 +G_M8664_IG04: ; bbWeight=2, gcrefRegs=480000 {x19 x22}, byrefRegs=4100000 {x20 x26}, byref, isz
; byrRegs -[x0]
- mov w1, wzr - ldr w2, [x19, #0x08] - str w2, [fp, #0x2C] // [V18 cse2] - cmp w2, #0 - ble G_M8664_IG13 - adrp x3, [HIGH RELOC #0xD1FFAB1E] - add x3, x3, [LOW RELOC #0xD1FFAB1E] - str x3, [fp, #0x20] // [V22 cse6] - add x4, x19, #16 - ; byrRegs +[x4] - str x4, [fp, #0x10] // [V19 cse3] - ; GC ptr vars +{V19} - adrp x5, [HIGH RELOC #0xD1FFAB1E] - add x5, x5, [LOW RELOC #0xD1FFAB1E] - str x5, [fp, #0x18] // [V23 cse7]
+ mov w28, wzr + ldr w1, [x19, #0x08] + str w1, [fp, #0x2C] // [V16 cse0] + cmp w1, #0 + ble G_M8664_IG06 + adrp x2, [HIGH RELOC #0xD1FFAB1E] + add x2, x2, [LOW RELOC #0xD1FFAB1E] + str x2, [fp, #0x20] // [V20 cse4] + add x3, x19, #16 + ; byrRegs +[x3] + str x3, [fp, #0x10] // [V17 cse1] + ; GC ptr vars +{V17} + adrp x4, [HIGH RELOC #0xD1FFAB1E] + add x4, x4, [LOW RELOC #0xD1FFAB1E] + str x4, [fp, #0x18] // [V21 cse5]
;; size=52 bbWeight=2 PerfScore 23.00
-G_M8664_IG05: ; bbWeight=16, gcVars=0000000000000040 {V19}, gcrefRegs=480000 {x19 x22}, byrefRegs=8100000 {x20 x27}, gcvars, byref, isz - ; byrRegs -[x4] - cmp w1, w28 - bhs G_M8664_IG18 - str w1, [fp, #0x3C] // [V06 loc4] - ubfiz x6, x1, #3, #32 - str x6, [fp, #0x30] // [V16 cse0] - ldr x0, [x27, x6]
+G_M8664_IG05: ; bbWeight=16, gcVars=0000000000000040 {V17}, gcrefRegs=480000 {x19 x22}, byrefRegs=4100000 {x20 x26}, gcvars, byref, isz + ; byrRegs -[x3] + cmp w28, w27 + bhs G_M8664_IG15 + ldr x0, [x26, w28, UXTW #3]
; gcrRegs +[x0]
- mov x11, x3
+ mov x11, x2
ldr wzr, [x0]
- ldr x7, [x11] - blr x7 - ldr x2, [fp, #0x10] // [V19 cse3]
+ ldr x5, [x11] + blr x5 + ldr x2, [fp, #0x10] // [V17 cse1]
; byrRegs +[x2]
- ldr x1, [fp, #0x30] // [V16 cse0] - ldr x1, [x2, x1]
+ ldr x1, [x2, w28, UXTW #3]
; gcrRegs +[x1]
- ldr x11, [fp, #0x18] // [V23 cse7]
+ ldr x11, [fp, #0x18] // [V21 cse5]
ldr wzr, [x0] ldr x3, [x11] blr x3 ; gcrRegs -[x0-x1] ; byrRegs -[x2]
- cbz w0, G_M8664_IG07 - ldr w14, [fp, #0x3C] // [V06 loc4] - add w14, w14, #1 - ldr w15, [fp, #0x2C] // [V18 cse2] - cmp w15, w14 - ldr x3, [fp, #0x20] // [V22 cse6] - bgt G_M8664_IG12 - ;; size=96 bbWeight=16 PerfScore 640.00 -G_M8664_IG06: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=100000 {x20}, gcvars, byref - ; byrRegs -[x27] - ; GC ptr vars -{V19} - str w14, [fp, #0x3C] // [V06 loc4] - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M8664_IG07: ; bbWeight=2, gcrefRegs=480000 {x19 x22}, byrefRegs=100000 {x20}, byref, isz - ldr w15, [fp, #0x2C] // [V18 cse2] - ldr w14, [fp, #0x3C] // [V06 loc4] - cmp w15, w14 - bgt G_M8664_IG08 - ldr x15, [x20, x26]
+ cbz w0, G_M8664_IG06 + add w28, w28, #1 + ldr w14, [fp, #0x2C] // [V16 cse0] + cmp w14, w28 + ldr x2, [fp, #0x20] // [V20 cse4] + bgt G_M8664_IG05 + ;; size=76 bbWeight=16 PerfScore 528.00 +G_M8664_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=100000 {x20}, gcvars, byref, isz + ; byrRegs -[x26] + ; GC ptr vars -{V17} + ldr w14, [fp, #0x2C] // [V16 cse0] + cmp w14, w28 + bgt G_M8664_IG07 + ldr x15, [x20, w24, UXTW #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 @@ -162,65 +150,51 @@ G_M8664_IG07: ; bbWeight=2, gcrefRegs=480000 {x19 x22}, byrefRegs=100000 ; gcrRegs -[x15] ; byrRegs -[x14] add w23, w23, #1
- ;; size=60 bbWeight=2 PerfScore 40.00 -G_M8664_IG08: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=100000 {x20}, byref, isz
+ ;; size=56 bbWeight=2 PerfScore 36.00 +G_M8664_IG07: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=100000 {x20}, byref, isz
add w24, w24, #1 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
+G_M8664_IG08: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19] ; byrRegs -[x20]
- 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, #0x80] - ldp x25, x26, [sp, #0x70] - ldp x23, x24, [sp, #0x60] - ldp x21, x22, [sp, #0x50] - ldp x19, x20, [sp, #0x40] - ldp fp, lr, [sp], #0x90
+G_M8664_IG10: ; bbWeight=0.50, epilog, nogc, extend
...

-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

+20 (+7.25%) : 23130.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector5121[short],System.Runtime.Intrinsics.Vector5121[short]):System.Runtime.Intrinsics.Vector512`1short

@@ -9,42 +9,45 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00 ] ( 3, 4 ) struct (64) [fp+0x90] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[short]> -; V01 arg1 [V01 ] ( 3, 6 ) struct (64) [fp+0x50] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[short]> -; V02 loc0 [V02 ] ( 2, 5 ) struct (64) [fp+0x10] HFA(simd16) do-not-enreg[XSR] multireg-ret addr-exposed ld-addr-op <System.Runtime.Intrinsics.Vector512`1[short]> -; V03 loc1 [V03,T00] ( 9, 29 ) int -> x19 -; V04 loc2 [V04,T02] ( 4, 12 ) ushort -> x21 -; V05 loc3 [V05,T04] ( 3, 10 ) short -> x22
+; V00 arg0 [V00 ] ( 3, 4 ) struct (64) [fp+0x98] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[short]> +; V01 arg1 [V01 ] ( 3, 6 ) struct (64) [fp+0x58] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[short]> +; V02 loc0 [V02 ] ( 2, 5 ) struct (64) [fp+0x18] HFA(simd16) do-not-enreg[XSR] multireg-ret addr-exposed ld-addr-op <System.Runtime.Intrinsics.Vector512`1[short]> +; V03 loc1 [V03,T00] ( 10, 33 ) int -> x19 +; V04 loc2 [V04,T02] ( 4, 12 ) ushort -> x20 +; V05 loc3 [V05,T03] ( 3, 10 ) short -> x21
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) short -> zero-ref "Inline return value spill temp"
-; V08 tmp2 [V08,T05] ( 2, 4 ) int -> x1
+; V08 tmp2 [V08,T04] ( 2, 4 ) int -> x1
;* V09 tmp3 [V09 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V10 tmp4 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V11 tmp5 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp6 [V12 ] ( 0, 0 ) short -> zero-ref "Inline return value spill temp"
-; V13 tmp7 [V13,T07] ( 2, 4 ) int -> x1
+; V13 tmp7 [V13,T06] ( 2, 4 ) int -> x1
;* V14 tmp8 [V14 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V15 tmp9 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp10 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp11 [V17,T06] ( 2, 4 ) int -> x1
+; V17 tmp11 [V17,T05] ( 2, 4 ) int -> x1
;* V18 tmp12 [V18 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V19 tmp13 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp14 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 cse0 [V21,T01] ( 9, 18 ) ref -> x0 multi-def "CSE - aggressive"
-; V22 cse1 [V22,T03] ( 3, 12 ) long -> x20 "CSE - aggressive"
;
-; Lcl frame size = 192
+; Lcl frame size = 200
G_M11381_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0xF0]!
- stp x19, x20, [sp, #0xD0] - stp x21, x22, [sp, #0xE0]
+ stp x19, x20, [sp, #0xD8] + str x21, [sp, #0xE8]
mov fp, sp
- stp q0, q1, [fp, #0x90] // [V00 arg0], [V00 arg0+0x10] - stp q2, q3, [fp, #0xB0] // [V00 arg0+0x20], [V00 arg0+0x30] - stp q4, q5, [fp, #0x50] // [V01 arg1], [V01 arg1+0x10] - stp q6, q7, [fp, #0x70] // [V01 arg1+0x20], [V01 arg1+0x30] - ;; size=32 bbWeight=1 PerfScore 7.50
+ str q0, [fp, #0x98] // [V00 arg0] + str q1, [fp, #0xA8] // [V00 arg0+0x10] + str q2, [fp, #0xB8] // [V00 arg0+0x20] + str q3, [fp, #0xC8] // [V00 arg0+0x30] + str q4, [fp, #0x58] // [V01 arg1] + str q5, [fp, #0x68] // [V01 arg1+0x10] + str q6, [fp, #0x78] // [V01 arg1+0x20] + str q7, [fp, #0x88] // [V01 arg1+0x30] + ;; size=48 bbWeight=1 PerfScore 11.50
G_M11381_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w19, wzr ;; size=4 bbWeight=1 PerfScore 0.50 @@ -73,17 +76,16 @@ G_M11381_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 ;; size=36 bbWeight=2 PerfScore 25.00 G_M11381_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add x1, fp, #80 // [V01 arg1]
+ add x1, fp, #88 // [V01 arg1]
; byrRegs +[x1]
- sbfiz x20, x19, #1, #32 - ldrh w21, [x1, x20] - mov w22, wzr - cmp w21, #32
+ ldrh w20, [x1, w19, SXTW #2] + mov w21, wzr + cmp w20, #32
bge G_M11381_IG09
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=20 bbWeight=4 PerfScore 22.00
G_M11381_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x1]
- cmp w21, #32
+ cmp w20, #32
cset x1, lt tst w1, #255 bne G_M11381_IG08 @@ -102,9 +104,9 @@ G_M11381_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 ;; size=52 bbWeight=2 PerfScore 30.00 G_M11381_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x1, fp, #144 // [V00 arg0]
+ add x1, fp, #152 // [V00 arg0]
; byrRegs +[x1]
- ldrsh w22, [x1, w21, UXTW #2]
+ ldrsh w21, [x1, w20, UXTW #2]
;; size=8 bbWeight=2 PerfScore 7.00 G_M11381_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x1] @@ -132,26 +134,28 @@ G_M11381_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 ;; size=36 bbWeight=2 PerfScore 25.00 G_M11381_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add x0, fp, #16 // [V02 loc0]
+ add x0, fp, #24 // [V02 loc0]
; byrRegs +[x0]
- strh w22, [x0, x20]
+ strh w21, [x0, w19, SXTW #2]
add w19, w19, #1 cmp w19, #32 blt G_M11381_IG03 ;; size=20 bbWeight=4 PerfScore 14.00 G_M11381_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0]
- ldp q0, q1, [fp, #0x10] // [V02 loc0], [V02 loc0+0x10] - ldp q2, q3, [fp, #0x30] // [V02 loc0+0x20], [V02 loc0+0x30] - ;; size=8 bbWeight=1 PerfScore 4.00
+ ldr q0, [fp, #0x18] // [V02 loc0] + ldr q1, [fp, #0x28] // [V02 loc0+0x10] + ldr q2, [fp, #0x38] // [V02 loc0+0x20] + ldr q3, [fp, #0x48] // [V02 loc0+0x30] + ;; size=16 bbWeight=1 PerfScore 8.00
G_M11381_IG14: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0xE0] - ldp x19, x20, [sp, #0xD0]
+ ldr x21, [sp, #0xE8] + ldp x19, x20, [sp, #0xD8]
ldp fp, lr, [sp], #0xF0 ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 276, prolog size 32, PerfScore 161.00, instruction count 69, allocated bytes for code 276 (MethodHash=30e4d38a) for method System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[short],System.Runtime.Intrinsics.Vector512`1[short]):System.Runtime.Intrinsics.Vector512`1[short] (FullOpts)
+; Total bytes of code 296, prolog size 48, PerfScore 166.00, instruction count 74, allocated bytes for code 296 (MethodHash=30e4d38a) for method System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[short],System.Runtime.Intrinsics.Vector512`1[short]):System.Runtime.Intrinsics.Vector512`1[short] (FullOpts)
; ============================================================ Unwind Info: @@ -162,7 +166,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 69 (0x00045) Actual length = 276 (0x000114)
+ Function Length : 74 (0x0004a) Actual length = 296 (0x000128)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -170,10 +174,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next - C8 1A save_regp X#0 Z#26 (0x1A); stp x19, x20, [sp, #208]
+ D0 9D save_reg X#2 Z#29 (0x1D); str x21, [sp, #232] + C8 1B save_regp X#0 Z#27 (0x1B); stp x19, x20, [sp, #216]
9D save_fplr_x #29 (0x1D); stp fp, lr, [sp, #-240]! E4 end E4 end
- E4 end

+20 (+7.25%) : 23131.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector5121[ushort],System.Runtime.Intrinsics.Vector5121[ushort]):System.Runtime.Intrinsics.Vector512`1ushort

@@ -9,42 +9,45 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00 ] ( 3, 4 ) struct (64) [fp+0x90] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[ushort]> -; V01 arg1 [V01 ] ( 3, 6 ) struct (64) [fp+0x50] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[ushort]> -; V02 loc0 [V02 ] ( 2, 5 ) struct (64) [fp+0x10] HFA(simd16) do-not-enreg[XSR] multireg-ret addr-exposed ld-addr-op <System.Runtime.Intrinsics.Vector512`1[ushort]> -; V03 loc1 [V03,T00] ( 9, 29 ) int -> x19 -; V04 loc2 [V04,T02] ( 4, 12 ) ushort -> x21 -; V05 loc3 [V05,T04] ( 3, 10 ) ushort -> x22
+; V00 arg0 [V00 ] ( 3, 4 ) struct (64) [fp+0x98] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[ushort]> +; V01 arg1 [V01 ] ( 3, 6 ) struct (64) [fp+0x58] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[ushort]> +; V02 loc0 [V02 ] ( 2, 5 ) struct (64) [fp+0x18] HFA(simd16) do-not-enreg[XSR] multireg-ret addr-exposed ld-addr-op <System.Runtime.Intrinsics.Vector512`1[ushort]> +; V03 loc1 [V03,T00] ( 10, 33 ) int -> x19 +; V04 loc2 [V04,T02] ( 4, 12 ) ushort -> x20 +; V05 loc3 [V05,T03] ( 3, 10 ) ushort -> x21
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp"
-; V08 tmp2 [V08,T05] ( 2, 4 ) int -> x1
+; V08 tmp2 [V08,T04] ( 2, 4 ) int -> x1
;* V09 tmp3 [V09 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V10 tmp4 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V11 tmp5 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp6 [V12 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp"
-; V13 tmp7 [V13,T07] ( 2, 4 ) int -> x1
+; V13 tmp7 [V13,T06] ( 2, 4 ) int -> x1
;* V14 tmp8 [V14 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V15 tmp9 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp10 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp11 [V17,T06] ( 2, 4 ) int -> x1
+; V17 tmp11 [V17,T05] ( 2, 4 ) int -> x1
;* V18 tmp12 [V18 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V19 tmp13 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp14 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 cse0 [V21,T01] ( 9, 18 ) ref -> x0 multi-def "CSE - aggressive"
-; V22 cse1 [V22,T03] ( 3, 12 ) long -> x20 "CSE - aggressive"
;
-; Lcl frame size = 192
+; Lcl frame size = 200
G_M32000_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0xF0]!
- stp x19, x20, [sp, #0xD0] - stp x21, x22, [sp, #0xE0]
+ stp x19, x20, [sp, #0xD8] + str x21, [sp, #0xE8]
mov fp, sp
- stp q0, q1, [fp, #0x90] // [V00 arg0], [V00 arg0+0x10] - stp q2, q3, [fp, #0xB0] // [V00 arg0+0x20], [V00 arg0+0x30] - stp q4, q5, [fp, #0x50] // [V01 arg1], [V01 arg1+0x10] - stp q6, q7, [fp, #0x70] // [V01 arg1+0x20], [V01 arg1+0x30] - ;; size=32 bbWeight=1 PerfScore 7.50
+ str q0, [fp, #0x98] // [V00 arg0] + str q1, [fp, #0xA8] // [V00 arg0+0x10] + str q2, [fp, #0xB8] // [V00 arg0+0x20] + str q3, [fp, #0xC8] // [V00 arg0+0x30] + str q4, [fp, #0x58] // [V01 arg1] + str q5, [fp, #0x68] // [V01 arg1+0x10] + str q6, [fp, #0x78] // [V01 arg1+0x20] + str q7, [fp, #0x88] // [V01 arg1+0x30] + ;; size=48 bbWeight=1 PerfScore 11.50
G_M32000_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w19, wzr ;; size=4 bbWeight=1 PerfScore 0.50 @@ -73,17 +76,16 @@ G_M32000_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 ;; size=36 bbWeight=2 PerfScore 25.00 G_M32000_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add x1, fp, #80 // [V01 arg1]
+ add x1, fp, #88 // [V01 arg1]
; byrRegs +[x1]
- sbfiz x20, x19, #1, #32 - ldrh w21, [x1, x20] - mov w22, wzr - cmp w21, #32
+ ldrh w20, [x1, w19, SXTW #2] + mov w21, wzr + cmp w20, #32
bge G_M32000_IG09
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=20 bbWeight=4 PerfScore 22.00
G_M32000_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x1]
- cmp w21, #32
+ cmp w20, #32
cset x1, lt tst w1, #255 bne G_M32000_IG08 @@ -102,9 +104,9 @@ G_M32000_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 ;; size=52 bbWeight=2 PerfScore 30.00 G_M32000_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x1, fp, #144 // [V00 arg0]
+ add x1, fp, #152 // [V00 arg0]
; byrRegs +[x1]
- ldrh w22, [x1, w21, UXTW #2]
+ ldrh w21, [x1, w20, UXTW #2]
;; size=8 bbWeight=2 PerfScore 7.00 G_M32000_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x1] @@ -132,26 +134,28 @@ G_M32000_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 ;; size=36 bbWeight=2 PerfScore 25.00 G_M32000_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add x0, fp, #16 // [V02 loc0]
+ add x0, fp, #24 // [V02 loc0]
; byrRegs +[x0]
- strh w22, [x0, x20]
+ strh w21, [x0, w19, SXTW #2]
add w19, w19, #1 cmp w19, #32 blt G_M32000_IG03 ;; size=20 bbWeight=4 PerfScore 14.00 G_M32000_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0]
- ldp q0, q1, [fp, #0x10] // [V02 loc0], [V02 loc0+0x10] - ldp q2, q3, [fp, #0x30] // [V02 loc0+0x20], [V02 loc0+0x30] - ;; size=8 bbWeight=1 PerfScore 4.00
+ ldr q0, [fp, #0x18] // [V02 loc0] + ldr q1, [fp, #0x28] // [V02 loc0+0x10] + ldr q2, [fp, #0x38] // [V02 loc0+0x20] + ldr q3, [fp, #0x48] // [V02 loc0+0x30] + ;; size=16 bbWeight=1 PerfScore 8.00
G_M32000_IG14: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0xE0] - ldp x19, x20, [sp, #0xD0]
+ ldr x21, [sp, #0xE8] + ldp x19, x20, [sp, #0xD8]
ldp fp, lr, [sp], #0xF0 ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 276, prolog size 32, PerfScore 161.00, instruction count 69, allocated bytes for code 276 (MethodHash=070182ff) for method System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[ushort],System.Runtime.Intrinsics.Vector512`1[ushort]):System.Runtime.Intrinsics.Vector512`1[ushort] (FullOpts)
+; Total bytes of code 296, prolog size 48, PerfScore 166.00, instruction count 74, allocated bytes for code 296 (MethodHash=070182ff) for method System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[ushort],System.Runtime.Intrinsics.Vector512`1[ushort]):System.Runtime.Intrinsics.Vector512`1[ushort] (FullOpts)
; ============================================================ Unwind Info: @@ -162,7 +166,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 69 (0x00045) Actual length = 276 (0x000114)
+ Function Length : 74 (0x0004a) Actual length = 296 (0x000128)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -170,10 +174,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next - C8 1A save_regp X#0 Z#26 (0x1A); stp x19, x20, [sp, #208]
+ D0 9D save_reg X#2 Z#29 (0x1D); str x21, [sp, #232] + C8 1B save_regp X#0 Z#27 (0x1B); stp x19, x20, [sp, #216]
9D save_fplr_x #29 (0x1D); stp fp, lr, [sp, #-240]! E4 end E4 end
- E4 end

+36 (+8.11%) : 43994.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel+groupByRefTypeParallel@2301-1[System.Canon,System.Canon]:Invoke(int):this (FullOpts)

@@ -12,7 +12,7 @@ ; V00 this [V00,T03] ( 9, 21 ) ref -> x19 this class-hnd single-def <Microsoft.FSharp.Collections.ArrayModule+Parallel+groupByRefTypeParallel@2301-1[System.__Canon,System.__Canon]> ; V01 arg1 [V01,T12] ( 4, 4 ) int -> x1 single-def ; V02 loc0 [V02 ] ( 4, 4 ) struct (16) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op <System.ArraySegment`1[System.__Canon]>
-; V03 loc1 [V03,T20] ( 3, 3 ) int -> x20 single-def
+; V03 loc1 [V03,T24] ( 3, 3 ) int -> x20 single-def
; V04 loc2 [V04,T00] ( 8, 26 ) int -> x21 ;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon]> ; V06 loc4 [V06,T11] ( 2, 8 ) ref -> x1 class-hnd <System.__Canon> @@ -27,35 +27,41 @@ ; V15 tmp6 [V15 ] ( 4, 4 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._offset (fldOffset=0x8)" P-DEP ; V16 tmp7 [V16 ] ( 4, 4 ) int -> [fp+0x24] do-not-enreg[X] addr-exposed "field V02._count (fldOffset=0xc)" P-DEP ;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref "field V05.value (fldOffset=0x0)" P-INDEP
-; V18 tmp9 [V18,T08] ( 3, 12 ) ref -> x24 "field V11.value (fldOffset=0x0)" P-INDEP
+; V18 tmp9 [V18,T08] ( 3, 12 ) ref -> x28 "field V11.value (fldOffset=0x0)" P-INDEP
; V19 tmp10 [V19,T13] ( 3, 6 ) ref -> x0 single-def "arr expr"
-; V20 tmp11 [V20,T17] ( 2, 4 ) long -> x1 "argument with side effect" -; V21 tmp12 [V21,T18] ( 2, 4 ) long -> x1 "argument with side effect" -; V22 tmp13 [V22,T19] ( 2, 4 ) long -> x1 "argument with side effect"
+; V20 tmp11 [V20,T21] ( 2, 4 ) long -> x1 "argument with side effect" +; V21 tmp12 [V21,T22] ( 2, 4 ) long -> x1 "argument with side effect" +; V22 tmp13 [V22,T23] ( 2, 4 ) long -> x1 "argument with side effect"
; V23 tmp14 [V23,T01] ( 3, 24 ) ref -> x0 "arr expr" ; V24 tmp15 [V24,T02] ( 3, 24 ) ref -> x14 "arr expr" ; V25 tmp16 [V25,T09] ( 3, 12 ) ref -> x0 "Field obj" ; V26 tmp17 [V26,T07] ( 2, 16 ) long -> x0 "argument with side effect" ; V27 tmp18 [V27,T04] ( 2, 16 ) ref -> x2 "argument with side effect"
-; V28 tmp19 [V28,T05] ( 2, 16 ) ref -> x23 "argument with side effect"
+; V28 tmp19 [V28,T05] ( 2, 16 ) ref -> x27 "argument with side effect"
; V29 tmp20 [V29,T06] ( 2, 16 ) byref -> x0 "argument with side effect"
-; V30 cse0 [V30,T14] ( 2, 5 ) long -> x22 hoist "CSE - aggressive" -; V31 cse1 [V31,T16] ( 4, 4 ) long -> x20 "CSE - moderate" -; V32 cse2 [V32,T10] ( 3, 12 ) long -> x23 "CSE - aggressive" -; V33 cse3 [V33,T15] ( 2, 5 ) int -> x20 hoist "CSE - moderate"
+; V30 cse0 [V30,T14] ( 2, 5 ) long -> x23 hoist "CSE - aggressive" +; V31 cse1 [V31,T20] ( 4, 4 ) long -> x20 "CSE - moderate" +; V32 cse2 [V32,T15] ( 2, 5 ) int -> x20 hoist "CSE - aggressive" +; V33 cse3 [V33,T16] ( 2, 5 ) long -> x22 hoist "CSE - aggressive" +; V34 cse4 [V34,T17] ( 2, 5 ) long -> x24 hoist "CSE - aggressive" +; V35 cse5 [V35,T18] ( 2, 5 ) long -> x25 hoist "CSE - aggressive" +; V36 cse6 [V36,T19] ( 2, 5 ) long -> x26 hoist "CSE - aggressive" +; V37 cse7 [V37,T10] ( 3, 12 ) long -> x27 "CSE - aggressive"
; ; Lcl frame size = 32 G_M55655_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]!
+ 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]
mov fp, sp str x0, [fp, #0x28] mov x19, x0 ; gcrRegs +[x19]
- ;; size=28 bbWeight=1 PerfScore 6.00
+ ;; size=36 bbWeight=1 PerfScore 8.00
G_M55655_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x0, [x19, #0x28] ; gcrRegs +[x0] @@ -104,14 +110,22 @@ G_M55655_IG04: ; bbWeight=1, isz, extend sub w20, w0, #1 cmp w20, w21 blt G_M55655_IG06
+ adrp x22, [HIGH RELOC #0xD1FFAB1E] + add x22, x22, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x19] adrp x11, [HIGH RELOC #0xD1FFAB1E] add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] blr x1
- mov x22, x0
+ mov x23, x0 + adrp x24, [HIGH RELOC #0xD1FFAB1E] + add x24, x24, [LOW RELOC #0xD1FFAB1E] + adrp x25, [HIGH RELOC #0xD1FFAB1E] + add x25, x25, [LOW RELOC #0xD1FFAB1E] + adrp x26, [HIGH RELOC #0xD1FFAB1E] + add x26, x26, [LOW RELOC #0xD1FFAB1E]
add w20, w20, #1
- ;; size=148 bbWeight=1 PerfScore 39.00
+ ;; size=180 bbWeight=1 PerfScore 43.00
G_M55655_IG05: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x0, [x19, #0x10] ; gcrRegs +[x0] @@ -121,30 +135,30 @@ G_M55655_IG05: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ubfiz x23, x21, #3, #32 - ldr x1, [x0, x23]
+ mov w27, w21 + ldr x1, [x0, x27, LSL #3]
; gcrRegs +[x1] ldr x0, [x19, #0x08] ; gcrRegs +[x0] ; byrRegs -[x0]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E]
+ mov x11, x22
ldr wzr, [x0] ldr x2, [x11] blr x2 ; gcrRegs -[x1]
- mov x24, x0 - ; gcrRegs +[x24]
+ mov x28, x0 + ; gcrRegs +[x28]
ldr x14, [x19, #0x20] ; gcrRegs +[x14] ldr w15, [x14, #0x08] cmp w21, w15 bhs G_M55655_IG07
- add x15, x23, #16
+ lsl x15, x27, #3 + add x15, x15, #16
add x14, x14, x15 ; gcrRegs -[x14] ; byrRegs +[x14]
- mov x15, x24
+ mov x15, x28
; gcrRegs +[x15] adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_ASSIGN_REF add x12, x12, [LOW RELOC #0xD1FFAB1E] @@ -152,45 +166,44 @@ G_M55655_IG05: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by blr x12 ; gcrRegs -[x0 x15] ; byrRegs -[x14]
- ldr x23, [x19, #0x18] - ; gcrRegs +[x23] - mov x0, x22 - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E]
+ ldr x27, [x19, #0x18] + ; gcrRegs +[x27] + mov x0, x23 + mov x11, x24
ldr x1, [x11] blr x1 ; gcrRegs +[x0] mov x2, x0 ; gcrRegs +[x2]
- mov x0, x23 - mov x1, x24
+ mov x0, x27 + mov x1, x28
; gcrRegs +[x1]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E]
+ mov x11, x25
ldr wzr, [x0] ldr x3, [x11] blr x3
- ; gcrRegs -[x1-x2 x23-x24]
+ ; gcrRegs -[x1-x2 x27-x28]
ldrsb wzr, [x0] add x0, x0, #8 ; gcrRegs -[x0] ; byrRegs +[x0]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E]
+ mov x11, x26
ldr x1, [x11] blr x1 ; byrRegs -[x0] add w21, w21, #1 cmp w21, w20 bne G_M55655_IG05
- ;; size=192 bbWeight=4 PerfScore 264.00
+ ;; size=180 bbWeight=4 PerfScore 258.00
G_M55655_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc
+ 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], #0x60
+ ldp fp, lr, [sp], #0x80
ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00
+ ;; size=28 bbWeight=1 PerfScore 7.00
G_M55655_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address add x0, x0, [LOW RELOC #0xD1FFAB1E] @@ -199,18 +212,18 @@ G_M55655_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 brk_unix #0 ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 444, prolog size 24, PerfScore 328.50, instruction count 111, allocated bytes for code 444 (MethodHash=9a9c2698) for method Microsoft.FSharp.Collections.ArrayModule+Parallel+groupByRefTypeParallel@2301-1[System.__Canon,System.__Canon]:Invoke(int):this (FullOpts)
+; Total bytes of code 480, prolog size 32, PerfScore 330.50, instruction count 120, allocated bytes for code 480 (MethodHash=9a9c2698) for method Microsoft.FSharp.Collections.ArrayModule+Parallel+groupByRefTypeParallel@2301-1[System.__Canon,System.__Canon]:Invoke(int):this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 3
Epilog Count : 1 E bit : 0 X bit : 0 Vers : 0
- Function Length : 111 (0x0006f) Actual length = 444 (0x0001bc)
+ Function Length : 120 (0x00078) Actual length = 480 (0x0001e0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -220,8 +233,12 @@ Unwind Info: ---- Epilog start at index 1 ---- E6 save_next E6 save_next
+ E6 save_next + E6 save_next
C8 06 save_regp X#0 Z#6 (0x06); stp x19, x20, [sp, #48]
- 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
+ 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]! + E4 end + E4 end
E4 end E4 end

libraries.pmi.linux.arm64.checked.mch

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

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

@@ -34,8 +34,7 @@ G_M23259_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_M23259_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre bhs G_M23259_IG04 add x1, x3, #16 ; byrRegs +[x1]
- lsl x0, x0, #1 - strh w2, [x1, x0] - ;; size=68 bbWeight=1 PerfScore 26.00
+ strh w2, [x1, x0, LSL #2] + ;; size=60 bbWeight=1 PerfScore 24.00
G_M23259_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr @@ -60,7 +58,7 @@ G_M23259_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #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=399ca524) for method System.Collections.Generic.SegmentedList`1[short]:set_Item(long,short):this (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 27.50, instruction count 21, allocated bytes for code 84 (MethodHash=399ca524) for method System.Collections.Generic.SegmentedList`1[short]:set_Item(long,short):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)

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

@@ -34,8 +34,7 @@ G_M12539_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre add x2, x2, #16 ; gcrRegs -[x2] ; byrRegs +[x2]
- lsl x3, x3, #3 - ldr x2, [x2, x3]
+ ldr x2, [x2, x3, LSL #3]
; gcrRegs +[x2] ; byrRegs -[x2] ldrsw x0, [x0, #0x28] @@ -46,9 +45,8 @@ G_M12539_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre bhs G_M12539_IG04 add x1, x2, #16 ; byrRegs +[x1]
- lsl x0, x0, #3 - str d0, [x1, x0] - ;; size=68 bbWeight=1 PerfScore 26.00
+ str d0, [x1, x0, LSL #3] + ;; size=60 bbWeight=1 PerfScore 24.00
G_M12539_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr @@ -60,7 +58,7 @@ G_M12539_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #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=9d1dcf04) for method System.Collections.Generic.SegmentedList`1[double]:set_Item(long,double):this (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 27.50, instruction count 21, allocated bytes for code 84 (MethodHash=9d1dcf04) for method System.Collections.Generic.SegmentedList`1[double]:set_Item(long,double):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)

+12 (+4.48%) : 11810.dasm - System.Collections.Generic.ObjectEqualityComparer`1[long]:IndexOf(long[],long,int,int):int:this (FullOpts)

@@ -9,35 +9,35 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[long]>
-; V01 arg1 [V01,T08] ( 7, 5.08) ref -> x20 class-hnd single-def <long[]> -; V02 arg2 [V02,T07] ( 4, 6 ) long -> x19 single-def -; V03 arg3 [V03,T09] ( 4, 4 ) int -> x3 single-def -; V04 arg4 [V04,T11] ( 3, 3 ) int -> x4 single-def -; V05 loc0 [V05,T06] ( 6, 8 ) int -> x21
+; V01 arg1 [V01,T06] ( 7, 5.08) ref -> x20 class-hnd single-def <long[]> +; V02 arg2 [V02,T05] ( 4, 6 ) long -> x19 single-def +; V03 arg3 [V03,T07] ( 4, 4 ) int -> x3 single-def +; V04 arg4 [V04,T10] ( 3, 3 ) int -> x4 single-def +; V05 loc0 [V05,T04] ( 6, 8 ) int -> x21
;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref ; V07 loc2 [V07,T01] ( 13, 19.54) int -> x22 ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) long -> zero-ref "spilling side-effects" ; V10 tmp2 [V10,T00] ( 6, 24 ) ref -> x0 class-hnd exact "Single-def Box Helper" <System.Int64>
-; V11 tmp3 [V11,T02] ( 4, 16 ) byref -> registers "impImportAndPushBox"
+; V11 tmp3 [V11,T02] ( 4, 16 ) byref -> x25 "impImportAndPushBox"
;* V12 tmp4 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V13 tmp5 [V13,T03] ( 4, 16 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Int64>
-; V14 cse0 [V14,T04] ( 2, 7.92) long -> x20 "CSE - aggressive" -; V15 cse1 [V15,T05] ( 4, 5.04) byref -> x23 hoist multi-def "CSE - aggressive" -; V16 cse2 [V16,T10] ( 4, 5.04) long -> x24 hoist multi-def "CSE - aggressive"
+; V14 cse0 [V14,T08] ( 4, 5.04) byref -> x23 hoist multi-def "CSE - aggressive" +; V15 cse1 [V15,T09] ( 4, 5.04) long -> x24 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M53699_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 fp, lr, [sp, #-0x50]! + stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + stp x23, x24, [sp, #0x38] + str x25, [sp, #0x48]
mov fp, sp mov x20, x1 ; gcrRegs +[x20] mov x19, x2
- ;; size=28 bbWeight=1 PerfScore 5.50
+ ;; size=32 bbWeight=1 PerfScore 6.50
G_M53699_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz add w21, w3, w4 sxtw w22, w3 @@ -57,15 +57,15 @@ G_M53699_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ;; size=56 bbWeight=1 PerfScore 11.50 G_M53699_IG03: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz ; gcrRegs -[x20]
- ubfiz x20, x22, #3, #32
mov x0, x24 bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0
- add x20, x23, x20 - ; byrRegs +[x20]
+ ubfiz x1, x22, #3, #32 + add x25, x23, x1 + ; byrRegs +[x25]
str x19, [x0, #0x08]
- ldr x1, [x20]
+ ldr x1, [x25]
ldr x0, [x0, #0x08] ; gcrRegs -[x0] cmp x1, x0 @@ -75,7 +75,7 @@ G_M53699_IG03: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=800000 {x23} blt G_M53699_IG03 ;; size=48 bbWeight=3.96 PerfScore 53.46 G_M53699_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x20 x23]
+ ; byrRegs -[x23 x25]
b G_M53699_IG06 ;; size=4 bbWeight=0.50 PerfScore 0.50 G_M53699_IG05: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz @@ -93,11 +93,10 @@ G_M53699_IG05: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=0000 {} ; gcrRegs +[x0] ; gcr arg pop 0 ubfiz x1, x22, #3, #32
- add x1, x23, x1 - ; byrRegs +[x1]
+ add x25, x23, x1 + ; byrRegs +[x25]
str x19, [x0, #0x08]
- ldr x1, [x1] - ; byrRegs -[x1]
+ ldr x1, [x25]
ldr x0, [x0, #0x08] ; gcrRegs -[x0] cmp x1, x0 @@ -108,44 +107,46 @@ G_M53699_IG05: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=0000 {} ;; size=76 bbWeight=0.04 PerfScore 0.80 G_M53699_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x20]
- ; byrRegs -[x23]
+ ; byrRegs -[x23 x25]
movn w0, #0 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M53699_IG07: ; bbWeight=0.50, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x40
+ ldr x25, [sp, #0x48] + ldp x23, x24, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 2.50
+ ;; size=24 bbWeight=0.50 PerfScore 3.50
G_M53699_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref mov w0, w22 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M53699_IG09: ; bbWeight=0.50, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x40
+ ldr x25, [sp, #0x48] + ldp x23, x24, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 2.50
+ ;; size=24 bbWeight=0.50 PerfScore 3.50
G_M53699_IG10: ; 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 268, prolog size 28, PerfScore 77.26, instruction count 67, allocated bytes for code 268 (MethodHash=c3f02e3c) for method System.Collections.Generic.ObjectEqualityComparer`1[long]:IndexOf(long[],long,int,int):int:this (FullOpts)
+; Total bytes of code 280, prolog size 32, PerfScore 80.26, instruction count 70, allocated bytes for code 280 (MethodHash=c3f02e3c) for method System.Collections.Generic.ObjectEqualityComparer`1[long]:IndexOf(long[],long,int,int):int:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 3
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 67 (0x00043) Actual length = 268 (0x00010c)
+ Function Length : 70 (0x00046) Actual length = 280 (0x000118)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -156,10 +157,13 @@ 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 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ 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
E4 end E4 end

+32 (+7.84%) : 183351.dasm - System.Data.ExpressionParser:ScanNumeric():this (FullOpts)

@@ -7,25 +7,26 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 21, 41.50) ref -> x19 this class-hnd single-def <System.Data.ExpressionParser> -; V01 loc0 [V01,T06] ( 3, 10 ) ref -> x20 class-hnd single-def <<unknown class>> -; V02 loc1 [V02,T13] ( 3, 2 ) ubyte -> x21 -;* V03 loc2 [V03,T15] ( 0, 0 ) ubyte -> zero-ref
+; V00 this [V00,T01] ( 21, 38.50) ref -> x19 this class-hnd single-def <System.Data.ExpressionParser> +; V01 loc0 [V01,T10] ( 3, 3 ) ref -> x0 class-hnd single-def <<unknown class>> +; V02 loc1 [V02,T14] ( 3, 2 ) ubyte -> x20 +;* V03 loc2 [V03,T16] ( 0, 0 ) ubyte -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T00] ( 3, 48 ) int -> x0 "index expr"
+; V05 tmp1 [V05,T02] ( 6, 30 ) int -> x21 "index expr"
; V06 tmp2 [V06,T07] ( 3, 6 ) int -> x0 "index expr"
-; V07 tmp3 [V07,T01] ( 3, 48 ) int -> x0 "index expr"
+; V07 tmp3 [V07,T00] ( 3, 48 ) int -> x0 "index expr"
; V08 tmp4 [V08,T08] ( 3, 6 ) int -> x1 "index expr"
-;* V09 tmp5 [V09,T16] ( 0, 0 ) int -> zero-ref "index expr" -; V10 tmp6 [V10,T10] ( 3, 3 ) int -> x0 "index expr" -;* V11 tmp7 [V11,T17] ( 0, 0 ) int -> zero-ref "index expr" -; V12 tmp8 [V12,T04] ( 3, 24 ) int -> x0 "index expr" -; V13 cse0 [V13,T14] ( 3, 1.50) int -> x0 "CSE - moderate" -; V14 cse1 [V14,T11] ( 3, 2.50) int -> x1 "CSE - aggressive" -; V15 cse2 [V15,T12] ( 3, 1.50) int -> x0 "CSE - aggressive" -; V16 cse3 [V16,T09] ( 3, 2.50) int -> x0 "CSE - aggressive" -; V17 cse4 [V17,T05] ( 7, 23.50) byref -> x22 hoist "CSE - aggressive" -; V18 cse5 [V18,T03] ( 7, 30.50) int -> x23 "CSE - aggressive"
+;* V09 tmp5 [V09,T17] ( 0, 0 ) int -> zero-ref "index expr" +; V10 tmp6 [V10,T11] ( 3, 3 ) int -> x0 "index expr" +;* V11 tmp7 [V11,T18] ( 0, 0 ) int -> zero-ref "index expr" +; V12 tmp8 [V12,T03] ( 3, 24 ) int -> x0 "index expr" +; V13 cse0 [V13,T15] ( 3, 1.50) int -> x0 "CSE - moderate" +; V14 cse1 [V14,T12] ( 3, 2.50) int -> x1 "CSE - aggressive" +; V15 cse2 [V15,T06] ( 3, 12 ) int -> x21 "CSE - aggressive" +; V16 cse3 [V16,T13] ( 3, 1.50) int -> x0 "CSE - aggressive" +; V17 cse4 [V17,T09] ( 3, 2.50) int -> x0 "CSE - aggressive" +; V18 cse5 [V18,T04] ( 8, 20.50) byref -> x23 "CSE - aggressive" +; V19 cse6 [V19,T05] ( 8, 20.50) int -> x22 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -38,147 +39,153 @@ G_M57065_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x0 ; gcrRegs +[x19] ;; size=24 bbWeight=1 PerfScore 5.00
-G_M57065_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ldr x20, [x19, #0x08] - ; gcrRegs +[x20] - mov w21, wzr - add x22, x20, #16 - ; byrRegs +[x22] - b G_M57065_IG04 - ;; size=16 bbWeight=1 PerfScore 5.00 -G_M57065_IG03: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=400000 {x22}, byref
+G_M57065_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr x0, [x19, #0x08] + ; gcrRegs +[x0] + mov w20, wzr + ldr w21, [x19, #0x30] + ldr w22, [x0, #0x08] + cmp w21, w22 + bhs G_M57065_IG19 + add x23, x0, #16 + ; byrRegs +[x23] + ldrh w0, [x23, w21, UXTW #2] + ; gcrRegs -[x0] + movz x1, #0xD1FFAB1E // code for System.Data.ExpressionParser:IsDigit(ushort):ubyte + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + cbz w0, G_M57065_IG04 + ;; size=56 bbWeight=1 PerfScore 21.00 +G_M57065_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [x19, #0x30]
- add w0, w0, #1 - str w0, [x19, #0x30] - ;; size=12 bbWeight=2 PerfScore 9.00 -G_M57065_IG04: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=400000 {x22}, byref, isz - ldr w0, [x19, #0x30] - ldr w23, [x20, #0x08] - cmp w0, w23 - bhs G_M57065_IG20 - ldrh w0, [x22, w0, UXTW #2]
+ add w21, w0, #1 + str w21, [x19, #0x30] + cmp w21, w22 + bhs G_M57065_IG19 + ldrh w0, [x23, w21, UXTW #2]
movz x1, #0xD1FFAB1E // code for System.Data.ExpressionParser:IsDigit(ushort):ubyte movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 cbnz w0, G_M57065_IG03
- ;; size=44 bbWeight=8 PerfScore 136.00 -G_M57065_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz - ; gcrRegs -[x20]
+ ;; size=48 bbWeight=4 PerfScore 62.00 +G_M57065_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [x19, #0x30]
- cmp w0, w23 - bhs G_M57065_IG20 - ldrh w0, [x22, w0, UXTW #2]
+ cmp w0, w22 + bhs G_M57065_IG19 + ldrh w0, [x23, w0, UXTW #2]
ldrh w1, [x19, #0x4E] cmp w0, w1
- bne G_M57065_IG08
+ bne G_M57065_IG07
;; size=28 bbWeight=1 PerfScore 12.00
-G_M57065_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref - mov w21, #1
+G_M57065_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref + mov w20, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M57065_IG07: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
+G_M57065_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref
ldr w0, [x19, #0x30] add w0, w0, #1 str w0, [x19, #0x30] ;; size=12 bbWeight=2 PerfScore 9.00
-G_M57065_IG08: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M57065_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [x19, #0x30]
- cmp w0, w23 - bhs G_M57065_IG20 - ldrh w0, [x22, w0, UXTW #2]
+ cmp w0, w22 + bhs G_M57065_IG19 + ldrh w0, [x23, w0, UXTW #2]
movz x1, #0xD1FFAB1E // code for System.Data.ExpressionParser:IsDigit(ushort):ubyte movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- cbnz w0, G_M57065_IG07
+ cbnz w0, G_M57065_IG06
;; size=40 bbWeight=8 PerfScore 112.00
-G_M57065_IG09: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M57065_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [x19, #0x30] sxtw w1, w0
- cmp w1, w23 - bhs G_M57065_IG20 - ldrh w1, [x22, w1, UXTW #2]
+ cmp w1, w22 + bhs G_M57065_IG19 + ldrh w1, [x23, w1, UXTW #2]
ldrh w2, [x19, #0x52] cmp w1, w2
- beq G_M57065_IG11
+ beq G_M57065_IG10
;; size=32 bbWeight=1 PerfScore 12.50
-G_M57065_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M57065_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldrh w2, [x19, #0x54] cmp w1, w2
- bne G_M57065_IG16
+ bne G_M57065_IG15
;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M57065_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M57065_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
add w0, w0, #1 str w0, [x19, #0x30]
- cmp w0, w23 - bhs G_M57065_IG20 - ldrh w0, [x22, w0, UXTW #2]
+ cmp w0, w22 + bhs G_M57065_IG19 + ldrh w0, [x23, w0, UXTW #2]
cmp w0, #45
- beq G_M57065_IG12
+ beq G_M57065_IG11
cmp w0, #43
- bne G_M57065_IG13
+ bne G_M57065_IG12
;; size=36 bbWeight=0.50 PerfScore 4.50
-G_M57065_IG12: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
+G_M57065_IG11: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref
ldr w0, [x19, #0x30] add w0, w0, #1 str w0, [x19, #0x30] ;; size=12 bbWeight=2 PerfScore 9.00
-G_M57065_IG13: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M57065_IG12: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [x19, #0x30]
- cmp w0, w23 - bhs G_M57065_IG20 - ldrh w0, [x22, w0, UXTW #2]
+ cmp w0, w22 + bhs G_M57065_IG19 + ldrh w0, [x23, w0, UXTW #2]
movz x1, #0xD1FFAB1E // code for System.Data.ExpressionParser:IsDigit(ushort):ubyte movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- cbnz w0, G_M57065_IG12
+ cbnz w0, G_M57065_IG11
;; size=40 bbWeight=4 PerfScore 56.00
-G_M57065_IG14: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; byrRegs -[x22]
+G_M57065_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; byrRegs -[x23]
mov w0, #4 str w0, [x19, #0x38] ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M57065_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M57065_IG14: ; 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 ret lr ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M57065_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - cbz w21, G_M57065_IG18
+G_M57065_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz + cbz w20, G_M57065_IG17
mov w0, #3 str w0, [x19, #0x38] ;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M57065_IG17: ; bbWeight=0.50, epilog, nogc, extend
+G_M57065_IG16: ; 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 ret lr ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M57065_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M57065_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
mov w0, #2 str w0, [x19, #0x38] ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M57065_IG19: ; bbWeight=0.50, epilog, nogc, extend
+G_M57065_IG18: ; 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 ret lr ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M57065_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M57065_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19] ...

+32 (+26.67%) : 183352.dasm - System.Data.ExpressionParser:ScanName():this (FullOpts)

@@ -7,66 +7,74 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 7, 16 ) ref -> x19 this class-hnd single-def <System.Data.ExpressionParser> -; V01 loc0 [V01,T02] ( 3, 10 ) ref -> x20 class-hnd single-def <<unknown class>>
+; V00 this [V00,T01] ( 7, 13 ) ref -> x19 this class-hnd single-def <System.Data.ExpressionParser> +; V01 loc0 [V01,T05] ( 3, 3 ) ref -> x0 class-hnd single-def <<unknown class>>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 3, 48 ) int -> x0 "index expr" -; V04 cse0 [V04,T03] ( 2, 9 ) byref -> x21 hoist "CSE - aggressive"
+; V03 tmp1 [V03,T00] ( 6, 30 ) int -> x20 "index expr" +; V04 cse0 [V04,T02] ( 3, 12 ) int -> x20 "CSE - aggressive" +; V05 cse1 [V05,T03] ( 3, 6 ) byref -> x22 "CSE - aggressive" +; V06 cse2 [V06,T04] ( 3, 6 ) int -> x21 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M25477_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 x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M25477_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ldr x20, [x19, #0x08] - ; gcrRegs +[x20] - add x21, x20, #16 - ; byrRegs +[x21] - b G_M25477_IG04 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M25477_IG03: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
+G_M25477_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr x0, [x19, #0x08] + ; gcrRegs +[x0] + ldr w20, [x19, #0x30] + ldr w21, [x0, #0x08] + cmp w20, w21 + bhs G_M25477_IG06 + add x22, x0, #16 + ; byrRegs +[x22] + ldrh w0, [x22, w20, UXTW #2] + ; gcrRegs -[x0] + movz x1, #0xD1FFAB1E // code for <unknown method> + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + cbz w0, G_M25477_IG04 + ;; size=52 bbWeight=1 PerfScore 20.50 +G_M25477_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
ldr w0, [x19, #0x30]
- add w0, w0, #1 - str w0, [x19, #0x30] - ;; size=12 bbWeight=2 PerfScore 9.00 -G_M25477_IG04: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz - ldr w0, [x19, #0x30] - ldr w1, [x20, #0x08] - cmp w0, w1 - bhs G_M25477_IG07 - ldrh w0, [x21, w0, UXTW #2]
+ add w20, w0, #1 + str w20, [x19, #0x30] + cmp w20, w21 + bhs G_M25477_IG06 + ldrh w0, [x22, w20, UXTW #2]
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 cbnz w0, G_M25477_IG03
- ;; size=44 bbWeight=8 PerfScore 136.00 -G_M25477_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x20] - ; byrRegs -[x21]
+ ;; size=48 bbWeight=4 PerfScore 62.00 +G_M25477_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; byrRegs -[x22]
mov w0, #1 str w0, [x19, #0x38] ;; size=8 bbWeight=1 PerfScore 1.50
-G_M25477_IG06: ; bbWeight=1, epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+G_M25477_IG05: ; bbWeight=1, epilog, nogc, extend + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00 -G_M25477_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=1 PerfScore 4.00 +G_M25477_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19] bl CORINFO_HELP_RNGCHKFAIL brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 120, prolog size 16, PerfScore 160.00, instruction count 30, allocated bytes for code 120 (MethodHash=0db89c7a) for method System.Data.ExpressionParser:ScanName():this (FullOpts)
+; Total bytes of code 152, prolog size 16, PerfScore 92.00, instruction count 38, allocated bytes for code 152 (MethodHash=0db89c7a) for method System.Data.ExpressionParser:ScanName():this (FullOpts)
; ============================================================ Unwind Info: @@ -77,7 +85,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ 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) @@ -85,9 +93,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]
+ E6 save_next + 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

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)

+24 (+5.71%) : 629746.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

@@ -14,12 +14,12 @@ ; V02 loc0 [V02,T09] ( 3, 2.97) int -> x0 ; V03 loc1 [V03,T10] ( 5, 2.91) int -> x21 ; V04 loc2 [V04,T06] ( 5, 3.92) int -> x20 ld-addr-op
-; V05 loc3 [V05,T05] ( 11, 4.10) int -> x22
+; V05 loc3 [V05,T05] ( 13, 4.10) int -> x22
; V06 loc4 [V06,T02] ( 14, 6.94) int -> x23
-; V07 loc5 [V07,T15] ( 2, 1.93) int -> x0 -; V08 loc6 [V08,T12] ( 4, 2.04) int -> x1 -; V09 loc7 [V09,T08] ( 4, 3.05) int -> x2 -; V10 loc8 [V10,T13] ( 3, 2.04) int -> x3
+; V07 loc5 [V07,T14] ( 3, 1.98) int -> x0 +; V08 loc6 [V08,T12] ( 4, 2.04) int -> x3 +; V09 loc7 [V09,T08] ( 6, 3.05) int -> x25 +; V10 loc8 [V10,T13] ( 4, 2.04) int -> x26
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" @@ -28,23 +28,23 @@ ; V16 tmp5 [V16,T01] ( 5, 7.73) long -> [fp+0x18] spill-single-def "Inlining Arg" ;* V17 tmp6 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V18 tmp7 [V18,T07] ( 3, 3.86) long -> x0 "Cast away GC"
-; V19 tmp8 [V19,T16] ( 2, 0.02) long -> x0 "Cast away GC" -; V20 tmp9 [V20,T17] ( 2, 0.02) long -> x0 "argument with side effect" -; V21 cse0 [V21,T14] ( 2, 1.98) int -> x0 hoist "CSE - aggressive" -; V22 cse1 [V22,T11] ( 3, 2.90) int -> x0 "CSE - aggressive" -; V23 cse2 [V23,T04] ( 12, 5.92) byref -> x24 hoist multi-def "CSE - aggressive"
+; V19 tmp8 [V19,T15] ( 2, 0.02) long -> x0 "Cast away GC" +; V20 tmp9 [V20,T16] ( 2, 0.02) long -> x0 "argument with side effect" +; V21 cse0 [V21,T11] ( 3, 2.90) int -> x0 "CSE - aggressive" +; V22 cse1 [V22,T04] ( 13, 5.92) byref -> x24 multi-def "CSE - aggressive"
; ; Lcl frame size = 16 G_M38441_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] stp x23, x24, [sp, #0x40]
+ stp x25, x26, [sp, #0x50]
mov fp, sp mov x19, x0 ; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=28 bbWeight=1 PerfScore 6.00
G_M38441_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz ldr w0, [x19] cbz w0, G_M38441_IG12 @@ -57,7 +57,7 @@ G_M38441_IG03: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, add w23, w22, w21 cbz w20, G_M38441_IG07 ;; size=24 bbWeight=0.97 PerfScore 4.37
-G_M38441_IG04: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG04: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add w23, w23, #1 cmp w23, #115 cset x0, lt @@ -71,22 +71,19 @@ G_M38441_IG04: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, str w0, [x19] neg w0, w20 add w0, w0, #32
- mov w1, wzr
+ mov w3, wzr
add x24, x19, #4 ; byrRegs +[x24]
- and w0, w0, #31 - ;; size=60 bbWeight=0.97 PerfScore 10.63 -G_M38441_IG05: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - ldr w2, [x24, w22, SXTW #2] - lsr w3, w2, w0
+ ldr w25, [x24, w22, SXTW #2] + lsr w26, w25, w0
cmp w22, #0
- bgt G_M38441_IG13 - ;; size=16 bbWeight=1.02 PerfScore 5.09 -G_M38441_IG06: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3
+ bgt G_M38441_IG06 + ;; size=72 bbWeight=0.97 PerfScore 14.97 +G_M38441_IG05: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w0, w3, w26
str w0, [x24, w23, SXTW #2] sub w0, w23, #1
- lsl w1, w2, w20
+ lsl w1, w25, w20
str w1, [x24, w0, SXTW #2] mov x0, x24 lsl w1, w21, #2 @@ -94,13 +91,25 @@ G_M38441_IG06: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 str x1, [fp, #0x18] // [V16 tmp5] cbz x1, G_M38441_IG11 cmp x1, #0xD1FFAB1E
- bhi G_M38441_IG14
+ bhi G_M38441_IG13
mov w1, wzr ldr w2, [fp, #0x18] // [V16 tmp5] bl CORINFO_HELP_MEMSET ; gcr arg pop 0 b G_M38441_IG11 ;; size=64 bbWeight=0.97 PerfScore 13.04
+G_M38441_IG06: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w3, w3, w26 + str w3, [x24, w23, SXTW #2] + lsl w3, w25, w20 + sub w22, w22, #1 + sub w23, w23, #1 + ldr w25, [x24, w22, SXTW #2] + lsr w26, w25, w0 + cmp w22, #0 + bgt G_M38441_IG06 + b G_M38441_IG05 + ;; size=40 bbWeight=0.05 PerfScore 0.46
G_M38441_IG07: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz ; byrRegs -[x24] cmp w23, #115 @@ -144,12 +153,13 @@ G_M38441_IG09: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ; gcr arg pop 0 ;; size=48 bbWeight=0.00 PerfScore 0.05 G_M38441_IG10: ; bbWeight=0.00, epilog, nogc, extend
+ ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0.00 PerfScore 0.02
+ ;; size=24 bbWeight=0.00 PerfScore 0.02
G_M38441_IG11: ; bbWeight=0.97, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, gcvars, byref, isz ; byrRegs +[x19 x24] ldr w0, [x19] @@ -160,22 +170,15 @@ G_M38441_IG11: ; bbWeight=0.97, gcVars=0000000000000000 {}, gcrefRegs=000 ;; size=20 bbWeight=0.97 PerfScore 8.21 G_M38441_IG12: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x19 x24]
+ ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0.03 PerfScore 0.15 -G_M38441_IG13: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, gcvars, byref
+ ;; size=24 bbWeight=0.03 PerfScore 0.18 +G_M38441_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, gcvars, byref
; byrRegs +[x19 x24]
- orr w1, w1, w3 - str w1, [x24, w23, SXTW #2] - lsl w1, w2, w20 - sub w22, w22, #1 - sub w23, w23, #1 - b G_M38441_IG05 - ;; size=24 bbWeight=0.05 PerfScore 0.21 -G_M38441_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
ldr x1, [fp, #0x18] // [V16 tmp5] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -186,7 +189,7 @@ G_M38441_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x2 b G_M38441_IG11 ;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 420, prolog size 24, PerfScore 50.83, instruction count 105, allocated bytes for code 420 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
+; Total bytes of code 444, prolog size 28, PerfScore 51.38, instruction count 111, allocated bytes for code 444 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
; ============================================================ Unwind Info: @@ -197,7 +200,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 105 (0x00069) Actual length = 420 (0x0001a4)
+ Function Length : 111 (0x0006f) Actual length = 444 (0x0001bc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -210,8 +213,8 @@ Unwind Info: ---- Epilog start at index 1 ---- E6 save_next E6 save_next
+ E6 save_next
C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
- 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]! - E4 end
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end

+24 (+5.83%) : 497102.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

@@ -12,23 +12,24 @@ ; V00 this [V00,T00] ( 11, 4.16) byref -> x19 this single-def ; V01 arg1 [V01,T01] ( 5, 2.87) int -> x1 single-def ; V02 loc0 [V02,T07] ( 3, 2.29) int -> x0
-; V03 loc1 [V03,T13] ( 5, 0.87) int -> x21 -; V04 loc2 [V04,T09] ( 5, 1.67) int -> x20 ld-addr-op -; V05 loc3 [V05,T03] ( 10, 3.20) int -> x22
+; V03 loc1 [V03,T14] ( 5, 0.87) int -> x21 +; V04 loc2 [V04,T11] ( 5, 1.34) int -> x20 ld-addr-op +; V05 loc3 [V05,T03] ( 12, 3.20) int -> x22
; V06 loc4 [V06,T02] ( 14, 3.56) int -> x23
-; V07 loc5 [V07,T15] ( 2, 0.58) int -> x0 -; V08 loc6 [V08,T10] ( 4, 1.60) int -> x1 -; V09 loc7 [V09,T06] ( 4, 2.40) int -> x2 -; V10 loc8 [V10,T11] ( 3, 1.60) int -> x3
+; V07 loc5 [V07,T16] ( 2, 0.58) int -> x0 +; V08 loc6 [V08,T09] ( 4, 1.60) int -> x1 +; V09 loc7 [V09,T06] ( 6, 2.40) int -> x2 +; V10 loc8 [V10,T10] ( 4, 1.60) int -> x3
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V14 tmp3 [V14,T04] ( 5, 2.89) long -> [fp+0x18] spill-single-def "Inlining Arg" ;* V15 tmp4 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V16 tmp5 [V16,T08] ( 3, 1.73) long -> x0 "Cast away GC"
-; V17 cse0 [V17,T12] ( 2, 1.09) int -> x0 hoist "CSE - moderate" -; V18 cse1 [V18,T14] ( 3, 0.87) int -> x0 "CSE - conservative" -; V19 cse2 [V19,T05] ( 10, 2.76) byref -> x24 hoist multi-def "CSE - aggressive"
+; V17 cse0 [V17,T13] ( 3, 1.09) int -> x0 "CSE - moderate" +; V18 cse1 [V18,T12] ( 4, 1.27) int -> x4 hoist multi-def "CSE - moderate" +; V19 cse2 [V19,T15] ( 3, 0.87) int -> x0 "CSE - conservative" +; V20 cse3 [V20,T05] ( 11, 2.76) byref -> x24 multi-def "CSE - aggressive"
; ; Lcl frame size = 16 @@ -43,7 +44,7 @@ G_M38441_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=24 bbWeight=1 PerfScore 5.00 G_M38441_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz ldr w0, [x19]
- cbnz w0, G_M38441_IG07
+ cbnz w0, G_M38441_IG08
;; size=8 bbWeight=1 PerfScore 4.00 G_M38441_IG03: ; bbWeight=0.71, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x19] @@ -53,47 +54,8 @@ G_M38441_IG03: ; bbWeight=0.71, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ldp fp, lr, [sp], #0x50 ret lr ;; size=20 bbWeight=0.71 PerfScore 3.56
-G_M38441_IG04: ; bbWeight=0.51, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, gcvars, byref - ; byrRegs +[x19 x24] - orr w1, w1, w3 - str w1, [x24, w23, SXTW #2] - lsl w1, w2, w20 - sub w22, w22, #1 - sub w23, w23, #1 - ;; size=20 bbWeight=0.51 PerfScore 1.54 -G_M38441_IG05: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - ldr w2, [x24, w22, SXTW #2] - lsr w3, w2, w0 - cmp w22, #0 - bgt G_M38441_IG04 - ;; size=16 bbWeight=0.80 PerfScore 4.00 -G_M38441_IG06: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3 - str w0, [x24, w23, SXTW #2] - sub w0, w23, #1 - lsl w1, w2, w20 - str w1, [x24, w0, SXTW #2] - mov x0, x24 - lsl w1, w21, #2 - mov w1, w1 - str x1, [fp, #0x18] // [V14 tmp3] - cbz x1, G_M38441_IG09 - cmp x1, #0xD1FFAB1E - bhi G_M38441_IG08 - mov w1, wzr - ldr w2, [fp, #0x18] // [V14 tmp3] - bl CORINFO_HELP_MEMSET - ; gcr arg pop 0 - b G_M38441_IG09 - ;; size=64 bbWeight=0.29 PerfScore 3.90 -G_M38441_IG07: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - ; byrRegs -[x24] - cbz w1, G_M38441_IG03 - and w20, w1, #31 - lsr w21, w1, #5 - sub w22, w0, #1 - add w23, w22, w21 - cbz w20, G_M38441_IG10
+G_M38441_IG04: ; bbWeight=0.29, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz + ; byrRegs +[x19]
add w23, w23, #1 cmp w23, #115 cset x0, lt @@ -110,10 +72,58 @@ G_M38441_IG07: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, mov w1, wzr add x24, x19, #4 ; byrRegs +[x24]
+ ldr w2, [x24, w22, SXTW #2]
and w0, w0, #31
- b G_M38441_IG05 - ;; size=88 bbWeight=0.29 PerfScore 4.77 -G_M38441_IG08: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ lsr w3, w2, w0 + cmp w22, #0 + ble G_M38441_IG07 + ;; size=76 bbWeight=0.29 PerfScore 4.62 +G_M38441_IG05: ; bbWeight=0.18, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref + and w4, w20, #31 + ;; size=4 bbWeight=0.18 PerfScore 0.09 +G_M38441_IG06: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w1, w1, w3 + str w1, [x24, w23, SXTW #2] + lsl w1, w2, w4 + sub w22, w22, #1 + sub w23, w23, #1 + ldr w2, [x24, w22, SXTW #2] + lsr w3, w2, w0 + cmp w22, #0 + bgt G_M38441_IG06 + ;; size=36 bbWeight=0.51 PerfScore 4.09 +G_M38441_IG07: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w4, w1, w3 + str w4, [x24, w23, SXTW #2] + sub w0, w23, #1 + and w4, w20, #31 + lsl w1, w2, w4 + str w1, [x24, w0, SXTW #2] + mov x0, x24 + lsl w1, w21, #2 + mov w1, w1 + str x1, [fp, #0x18] // [V14 tmp3] + cbz x1, G_M38441_IG10 + cmp x1, #0xD1FFAB1E + bhi G_M38441_IG09 + mov w1, wzr + ldr w2, [fp, #0x18] // [V14 tmp3] + bl CORINFO_HELP_MEMSET + ; gcr arg pop 0 + b G_M38441_IG10 + ;; size=68 bbWeight=0.29 PerfScore 4.04 +G_M38441_IG08: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz + ; byrRegs -[x24] + cbz w1, G_M38441_IG03 + and w20, w1, #31 + lsr w21, w1, #5 + sub w22, w0, #1 + add w23, w22, w21 + cbz w20, G_M38441_IG11 + b G_M38441_IG04 + ;; size=28 bbWeight=0.29 PerfScore 1.59 +G_M38441_IG09: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref + ; byrRegs +[x24]
ldr x1, [fp, #0x18] // [V14 tmp3] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -122,7 +132,7 @@ G_M38441_IG08: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 blr x2 ; gcr arg pop 0 ;; size=24 bbWeight=0.29 PerfScore 2.17
-G_M38441_IG09: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M38441_IG10: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w0, [x19] sub w0, w0, #1 ldr w1, [x24, w0, SXTW #2] @@ -130,7 +140,7 @@ G_M38441_IG09: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 str w0, [x19] b G_M38441_IG03 ;; size=24 bbWeight=0.29 PerfScore 2.74
-G_M38441_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
; byrRegs -[x24] cmp w23, #115 cset x0, lt @@ -140,9 +150,9 @@ G_M38441_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ldr x1, [x1] blr x1 ; gcr arg pop 0
- b G_M38441_IG12
+ b G_M38441_IG13
;; size=32 bbWeight=0 PerfScore 0.00
-G_M38441_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
add x24, x19, #4 ; byrRegs +[x24] sbfiz x0, x23, #2, #32 @@ -153,9 +163,9 @@ G_M38441_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by sub w22, w22, #1 sub w23, w23, #1 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M38441_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M38441_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs -[x0 x24]
- tbz w22, #31, G_M38441_IG11
+ tbz w22, #31, G_M38441_IG12
ldr w0, [x19] add w0, w0, w21 str w0, [x19] @@ -170,7 +180,7 @@ G_M38441_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; byrRegs -[x0 x19] ; gcr arg pop 0 ;; size=44 bbWeight=0 PerfScore 0.00
-G_M38441_IG13: ; bbWeight=0, epilog, nogc, extend
+G_M38441_IG14: ; bbWeight=0, epilog, nogc, extend
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20] @@ -178,7 +188,7 @@ G_M38441_IG13: ; bbWeight=0, epilog, nogc, extend ret lr ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 412, prolog size 24, PerfScore 31.67, instruction count 103, allocated bytes for code 412 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
+; Total bytes of code 436, prolog size 24, PerfScore 31.91, instruction count 109, allocated bytes for code 436 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
; ============================================================ Unwind Info: @@ -189,7 +199,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 103 (0x00067) Actual length = 412 (0x00019c)
+ Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+5.83%) : 358387.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

@@ -12,23 +12,24 @@ ; V00 this [V00,T00] ( 11, 5.01) byref -> x19 this single-def ; V01 arg1 [V01,T01] ( 5, 3.51) int -> x1 single-def ; V02 loc0 [V02,T08] ( 3, 2.50) int -> x0
-; V03 loc1 [V03,T12] ( 5, 1.51) int -> x21 -; V04 loc2 [V04,T09] ( 5, 2.44) int -> x20 ld-addr-op -; V05 loc3 [V05,T05] ( 10, 3.74) int -> x22
+; V03 loc1 [V03,T13] ( 5, 1.51) int -> x21 +; V04 loc2 [V04,T09] ( 5, 2.24) int -> x20 ld-addr-op +; V05 loc3 [V05,T05] ( 12, 3.74) int -> x22
; V06 loc4 [V06,T03] ( 14, 4.81) int -> x23
-; V07 loc5 [V07,T15] ( 2, 1.00) int -> x0
+; V07 loc5 [V07,T16] ( 2, 1.00) int -> x0
; V08 loc6 [V08,T10] ( 4, 1.87) int -> x1
-; V09 loc7 [V09,T07] ( 4, 2.80) int -> x2 -; V10 loc8 [V10,T11] ( 3, 1.87) int -> x3
+; V09 loc7 [V09,T07] ( 6, 2.80) int -> x2 +; V10 loc8 [V10,T11] ( 4, 1.87) int -> x3
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V14 tmp3 [V14,T02] ( 5, 5.02) long -> [fp+0x18] spill-single-def "Inlining Arg" ;* V15 tmp4 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V16 tmp5 [V16,T06] ( 3, 3.01) long -> x0 "Cast away GC"
-; V17 cse0 [V17,T14] ( 2, 1.44) int -> x0 hoist "CSE - moderate" -; V18 cse1 [V18,T13] ( 3, 1.51) int -> x0 "CSE - moderate" -; V19 cse2 [V19,T04] ( 10, 3.88) byref -> x24 hoist multi-def "CSE - aggressive"
+; V17 cse0 [V17,T15] ( 3, 1.44) int -> x0 "CSE - moderate" +; V18 cse1 [V18,T14] ( 3, 1.51) int -> x0 "CSE - moderate" +; V19 cse2 [V19,T12] ( 4, 1.67) int -> x4 hoist multi-def "CSE - moderate" +; V20 cse3 [V20,T04] ( 11, 3.88) byref -> x24 multi-def "CSE - aggressive"
; ; Lcl frame size = 16 @@ -46,7 +47,7 @@ G_M38441_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by cbz w0, G_M38441_IG04 ;; size=8 bbWeight=1 PerfScore 4.00 G_M38441_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- cbnz w1, G_M38441_IG08
+ cbnz w1, G_M38441_IG09
;; size=4 bbWeight=0.50 PerfScore 0.50 G_M38441_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x19] @@ -56,46 +57,8 @@ G_M38441_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ldp fp, lr, [sp], #0x50 ret lr ;; size=20 bbWeight=0.50 PerfScore 2.49
-G_M38441_IG05: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, gcvars, byref - ; byrRegs +[x19 x24] - orr w1, w1, w3 - str w1, [x24, w23, SXTW #2] - lsl w1, w2, w20 - sub w22, w22, #1 - sub w23, w23, #1 - ;; size=20 bbWeight=0.43 PerfScore 1.30 -G_M38441_IG06: ; bbWeight=0.93, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - ldr w2, [x24, w22, SXTW #2] - lsr w3, w2, w0 - cmp w22, #0 - bgt G_M38441_IG05 - ;; size=16 bbWeight=0.93 PerfScore 4.67 -G_M38441_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3 - str w0, [x24, w23, SXTW #2] - sub w0, w23, #1 - lsl w1, w2, w20 - str w1, [x24, w0, SXTW #2] - mov x0, x24 - lsl w1, w21, #2 - mov w1, w1 - str x1, [fp, #0x18] // [V14 tmp3] - cbz x1, G_M38441_IG10 - cmp x1, #0xD1FFAB1E - bhi G_M38441_IG09 - mov w1, wzr - ldr w2, [fp, #0x18] // [V14 tmp3] - bl CORINFO_HELP_MEMSET - ; gcr arg pop 0 - b G_M38441_IG10 - ;; size=64 bbWeight=0.50 PerfScore 6.78 -G_M38441_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - ; byrRegs -[x24] - and w20, w1, #31 - lsr w21, w1, #5 - sub w22, w0, #1 - add w23, w22, w21 - cbz w20, G_M38441_IG11
+G_M38441_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz + ; byrRegs +[x19]
add w23, w23, #1 cmp w23, #115 cset x0, lt @@ -112,10 +75,57 @@ G_M38441_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, mov w1, wzr add x24, x19, #4 ; byrRegs +[x24]
+ ldr w2, [x24, w22, SXTW #2]
and w0, w0, #31
- b G_M38441_IG06 - ;; size=84 bbWeight=0.50 PerfScore 7.79 -G_M38441_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ lsr w3, w2, w0 + cmp w22, #0 + ble G_M38441_IG08 + ;; size=76 bbWeight=0.50 PerfScore 8.04 +G_M38441_IG06: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref + and w4, w20, #31 + ;; size=4 bbWeight=0.23 PerfScore 0.12 +G_M38441_IG07: ; bbWeight=0.43, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w1, w1, w3 + str w1, [x24, w23, SXTW #2] + lsl w1, w2, w4 + sub w22, w22, #1 + sub w23, w23, #1 + ldr w2, [x24, w22, SXTW #2] + lsr w3, w2, w0 + cmp w22, #0 + bgt G_M38441_IG07 + ;; size=36 bbWeight=0.43 PerfScore 3.46 +G_M38441_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w4, w1, w3 + str w4, [x24, w23, SXTW #2] + sub w0, w23, #1 + and w4, w20, #31 + lsl w1, w2, w4 + str w1, [x24, w0, SXTW #2] + mov x0, x24 + lsl w1, w21, #2 + mov w1, w1 + str x1, [fp, #0x18] // [V14 tmp3] + cbz x1, G_M38441_IG11 + cmp x1, #0xD1FFAB1E + bhi G_M38441_IG10 + mov w1, wzr + ldr w2, [fp, #0x18] // [V14 tmp3] + bl CORINFO_HELP_MEMSET + ; gcr arg pop 0 + b G_M38441_IG11 + ;; size=68 bbWeight=0.50 PerfScore 7.03 +G_M38441_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz + ; byrRegs -[x24] + and w20, w1, #31 + lsr w21, w1, #5 + sub w22, w0, #1 + add w23, w22, w21 + cbz w20, G_M38441_IG12 + b G_M38441_IG05 + ;; size=24 bbWeight=0.50 PerfScore 2.26 +G_M38441_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref + ; byrRegs +[x24]
ldr x1, [fp, #0x18] // [V14 tmp3] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -124,7 +134,7 @@ G_M38441_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 blr x2 ; gcr arg pop 0 ;; size=24 bbWeight=0.50 PerfScore 3.77
-G_M38441_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w0, [x19] sub w0, w0, #1 ldr w1, [x24, w0, SXTW #2] @@ -132,7 +142,7 @@ G_M38441_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 str w0, [x19] b G_M38441_IG04 ;; size=24 bbWeight=0.50 PerfScore 4.77
-G_M38441_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
; byrRegs -[x24] cmp w23, #115 cset x0, lt @@ -142,9 +152,9 @@ G_M38441_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ldr x1, [x1] blr x1 ; gcr arg pop 0
- b G_M38441_IG13
+ b G_M38441_IG14
;; size=32 bbWeight=0 PerfScore 0.00
-G_M38441_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
add x24, x19, #4 ; byrRegs +[x24] sbfiz x0, x23, #2, #32 @@ -155,9 +165,9 @@ G_M38441_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by sub w22, w22, #1 sub w23, w23, #1 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M38441_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M38441_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs -[x0 x24]
- tbz w22, #31, G_M38441_IG12
+ tbz w22, #31, G_M38441_IG13
ldr w0, [x19] add w0, w0, w21 str w0, [x19] @@ -172,7 +182,7 @@ G_M38441_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; byrRegs -[x0 x19] ; gcr arg pop 0 ;; size=44 bbWeight=0 PerfScore 0.00
-G_M38441_IG14: ; bbWeight=0, epilog, nogc, extend
+G_M38441_IG15: ; bbWeight=0, epilog, nogc, extend
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20] @@ -180,7 +190,7 @@ G_M38441_IG14: ; bbWeight=0, epilog, nogc, extend ret lr ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 412, prolog size 24, PerfScore 41.07, instruction count 103, allocated bytes for code 412 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
+; Total bytes of code 436, prolog size 24, PerfScore 41.44, instruction count 109, allocated bytes for code 436 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
; ============================================================ Unwind Info: @@ -191,7 +201,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 103 (0x00067) Actual length = 412 (0x00019c)
+ Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
---- 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

-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

-24 (-10.91%) : 11125.dasm - System.Collections.Generic.GenericArraySortHelper2[uint,System.__Canon]:InsertionSort(System.Span1[uint],System.Span`1[System.__Canon]) (FullOpts)

@@ -45,26 +45,22 @@ G_M65147_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=000A {x1 x3}, b G_M65147_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=000A {x1 x3}, byref, isz add w6, w0, #1 mov w14, w6
- lsl x15, x14, #2 - ldr w7, [x1, x15]
+ ldr w7, [x1, x14, LSL #2]
cmp w6, w4 bhs G_M65147_IG09
- lsl x14, x14, #3 - ldr x8, [x3, x14]
+ ldr x8, [x3, x14, LSL #3]
; gcrRegs +[x8] b G_M65147_IG05
- ;; size=36 bbWeight=4 PerfScore 46.00
+ ;; size=28 bbWeight=4 PerfScore 38.00
G_M65147_IG04: ; bbWeight=8, gcrefRegs=0100 {x8}, byrefRegs=000A {x1 x3}, byref, isz add w9, w0, #1 cmp w9, w2 bhs G_M65147_IG09 mov w10, w9
- lsl x15, x10, #2 - str w14, [x1, x15]
+ str w14, [x1, x10, LSL #2]
cmp w9, w4 bhs G_M65147_IG09
- lsl x14, x10, #3 - add x14, x3, x14
+ add x14, x3, x10, LSL #3
; byrRegs +[x14] cmp w0, w4 bhs G_M65147_IG09 @@ -74,7 +70,7 @@ G_M65147_IG04: ; bbWeight=8, gcrefRegs=0100 {x8}, byrefRegs=000A {x1 x3}, ; gcrRegs -[x15] ; byrRegs -[x14] sub w0, w0, #1
- ;; size=60 bbWeight=8 PerfScore 108.00
+ ;; size=52 bbWeight=8 PerfScore 96.00
G_M65147_IG05: ; bbWeight=32, gcrefRegs=0100 {x8}, byrefRegs=000A {x1 x3}, byref, isz tbnz w0, #31, G_M65147_IG07 ;; size=4 bbWeight=32 PerfScore 32.00 @@ -90,12 +86,10 @@ G_M65147_IG07: ; bbWeight=4, gcrefRegs=0100 {x8}, byrefRegs=000A {x1 x3}, cmp w9, w2 bhs G_M65147_IG09 mov w10, w9
- lsl x14, x10, #2 - str w7, [x1, x14]
+ str w7, [x1, x10, LSL #2]
cmp w9, w4 bhs G_M65147_IG09
- lsl x14, x10, #3 - add x14, x3, x14
+ add x14, x3, x10, LSL #3
; byrRegs +[x14] mov x15, x8 ; gcrRegs +[x15] @@ -105,7 +99,7 @@ G_M65147_IG07: ; bbWeight=4, gcrefRegs=0100 {x8}, byrefRegs=000A {x1 x3}, sxtw w0, w6 cmp w0, w5 blt G_M65147_IG03
- ;; size=60 bbWeight=4 PerfScore 44.00
+ ;; size=52 bbWeight=4 PerfScore 38.00
G_M65147_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x1 x3] ldp fp, lr, [sp], #0x10 @@ -117,7 +111,7 @@ G_M65147_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 8, PerfScore 332.00, instruction count 55, allocated bytes for code 220 (MethodHash=3deb0184) for method System.Collections.Generic.GenericArraySortHelper`2[uint,System.__Canon]:InsertionSort(System.Span`1[uint],System.Span`1[System.__Canon]) (FullOpts)
+; Total bytes of code 196, prolog size 8, PerfScore 306.00, instruction count 49, allocated bytes for code 196 (MethodHash=3deb0184) for method System.Collections.Generic.GenericArraySortHelper`2[uint,System.__Canon]:InsertionSort(System.Span`1[uint],System.Span`1[System.__Canon]) (FullOpts)
; ============================================================ Unwind Info: @@ -128,7 +122,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

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

+44 (+4.38%) : 190098.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512UInt32ShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)

@@ -9,9 +9,9 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests>
-; V01 loc0 [V01,T18] ( 3, 9 ) struct (64) [fp+0x150] HFA(simd16) do-not-enreg[S] <System.Runtime.Intrinsics.Vector512`1[uint]> -; V02 loc1 [V02,T04] ( 9, 31.15) int -> x19 -; V03 loc2 [V03,T05] ( 9, 31.15) int -> x19
+; V01 loc0 [V01,T18] ( 3, 9 ) struct (64) [fp+0x158] HFA(simd16) do-not-enreg[S] <System.Runtime.Intrinsics.Vector512`1[uint]> +; V02 loc1 [V02,T05] ( 9, 31.15) int -> x19 +; V03 loc2 [V03,T06] ( 9, 31.15) int -> x19
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (64) zero-ref HFA(simd16) do-not-enreg[S] "impAppendStmt" <System.Runtime.Intrinsics.Vector512`1[uint]> ;* V06 tmp2 [V06 ] ( 0, 0 ) struct (64) zero-ref HFA(simd16) do-not-enreg[S] "spilled call-like call argument" <System.Runtime.Intrinsics.Vector512`1[uint]> @@ -29,12 +29,12 @@ ;* V18 tmp14 [V18 ] ( 0, 0 ) struct (32) zero-ref HFA(simd16) "Inline return value spill temp" <System.Runtime.Intrinsics.Vector256`1[uint]> ;* V19 tmp15 [V19 ] ( 0, 0 ) struct (32) zero-ref HFA(simd16) ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.Intrinsics.Vector256`1[uint]> ;* V20 tmp16 [V20 ] ( 0, 0 ) struct (64) zero-ref HFA(simd16) do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.Intrinsics.Vector512`1[uint]>
-; V21 tmp17 [V21 ] ( 2, 5 ) struct (64) [fp+0x110] HFA(simd16) do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.Intrinsics.Vector512`1[uint]> -; V22 tmp18 [V22,T07] ( 9, 29 ) int -> x19 "Inline stloc first use temp" -; V23 tmp19 [V23 ] ( 5, 16 ) struct (64) [fp+0xD0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector512`1[uint]> -; V24 tmp20 [V24,T11] ( 5, 14 ) int -> x21 "Inline stloc first use temp" -; V25 tmp21 [V25,T17] ( 3, 10 ) int -> x22 "Inline stloc first use temp" -; V26 tmp22 [V26 ] ( 5, 12 ) struct (64) [fp+0x90] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector512`1[uint]>
+; V21 tmp17 [V21 ] ( 2, 5 ) struct (64) [fp+0x118] HFA(simd16) do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.Intrinsics.Vector512`1[uint]> +; V22 tmp18 [V22,T00] ( 10, 33 ) int -> x19 "Inline stloc first use temp" +; V23 tmp19 [V23 ] ( 5, 16 ) struct (64) [fp+0xD8] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector512`1[uint]> +; V24 tmp20 [V24,T11] ( 5, 14 ) int -> x20 "Inline stloc first use temp" +; V25 tmp21 [V25,T17] ( 3, 10 ) int -> x21 "Inline stloc first use temp" +; V26 tmp22 [V26 ] ( 5, 12 ) struct (64) [fp+0x98] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector512`1[uint]>
;* V27 tmp23 [V27 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ; V28 tmp24 [V28,T21] ( 2, 4 ) int -> x0 ;* V29 tmp25 [V29 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" @@ -49,7 +49,7 @@ ;* V38 tmp34 [V38 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V39 tmp35 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V40 tmp36 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V41 tmp37 [V41 ] ( 2, 16.06) struct (64) [fp+0x50] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector512`1[uint]>
+; V41 tmp37 [V41 ] ( 2, 16.06) struct (64) [fp+0x58] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector512`1[uint]>
; V42 tmp38 [V42,T19] ( 2, 8.06) int -> x20 "Inline return value spill temp" ; V43 tmp39 [V43,T24] ( 2, 4 ) int -> x0 ;* V44 tmp40 [V44 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" @@ -59,9 +59,9 @@ ; V48 tmp44 [V48,T08] ( 3, 24.18) ref -> x22 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[uint]> ;* V49 tmp45 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[uint]> ; V50 tmp46 [V50,T12] ( 3, 12.09) ref -> x24 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[uint]>
-; V51 tmp47 [V51,T00] ( 4, 32.24) ref -> x26 class-hnd exact "NewObj constructor temp" <<unknown class>> -; V52 tmp48 [V52,T01] ( 4, 32.24) ref -> x24 class-hnd exact "NewObj constructor temp" <<unknown class>> -; V53 tmp49 [V53 ] ( 2, 16.06) struct (64) [fp+0x10] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector512`1[uint]>
+; V51 tmp47 [V51,T01] ( 4, 32.24) ref -> x26 class-hnd exact "NewObj constructor temp" <<unknown class>> +; V52 tmp48 [V52,T02] ( 4, 32.24) ref -> x27 class-hnd exact "NewObj constructor temp" <<unknown class>> +; V53 tmp49 [V53 ] ( 2, 16.06) struct (64) [fp+0x18] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector512`1[uint]>
; V54 tmp50 [V54,T20] ( 2, 8.06) int -> x20 "Inline return value spill temp" ; V55 tmp51 [V55,T25] ( 2, 4 ) int -> x0 ;* V56 tmp52 [V56 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" @@ -70,9 +70,9 @@ ;* V59 tmp55 [V59 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V60 tmp56 [V60,T09] ( 3, 24.18) ref -> x22 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[uint]> ;* V61 tmp57 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[uint]>
-; V62 tmp58 [V62,T13] ( 3, 12.09) ref -> x24 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[uint]> -; V63 tmp59 [V63,T02] ( 4, 32.24) ref -> x26 class-hnd exact "NewObj constructor temp" <<unknown class>> -; V64 tmp60 [V64,T03] ( 4, 32.24) ref -> x24 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V62 tmp58 [V62,T13] ( 3, 12.09) ref -> x26 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[uint]> +; V63 tmp59 [V63,T03] ( 4, 32.24) ref -> x27 class-hnd exact "NewObj constructor temp" <<unknown class>> +; V64 tmp60 [V64,T04] ( 4, 32.24) ref -> x26 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V65 tmp61 [V65 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "field V07._lower (fldOffset=0x0)" P-INDEP ;* V66 tmp62 [V66 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "field V07._upper (fldOffset=0x10)" P-INDEP ;* V67 tmp63 [V67 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "field V08._lower (fldOffset=0x0)" P-INDEP @@ -113,13 +113,13 @@ ;* V102 tmp98 [V102 ] ( 0, 0 ) simd16 -> zero-ref "V06.[016..032)" ;* V103 tmp99 [V103 ] ( 0, 0 ) simd16 -> zero-ref "V06.[032..048)" ;* V104 tmp100 [V104 ] ( 0, 0 ) simd16 -> zero-ref "V06.[048..064)"
-; V105 cse0 [V105,T16] ( 3, 12 ) long -> x20 "CSE - aggressive" -; V106 cse1 [V106,T10] ( 5, 20.15) long -> x25 "CSE - aggressive" -; V107 cse2 [V107,T06] ( 15, 30 ) ref -> x1 multi-def "CSE - aggressive" -; V108 cse3 [V108,T14] ( 3, 12.09) long -> x21 "CSE - aggressive" -; V109 cse4 [V109,T15] ( 3, 12.09) long -> x23 "CSE - aggressive"
+; V105 cse0 [V105,T10] ( 5, 20.15) long -> x25 "CSE - aggressive" +; V106 cse1 [V106,T07] ( 15, 30 ) ref -> x1 multi-def "CSE - aggressive" +; V107 cse2 [V107,T14] ( 3, 12.09) long -> x21 "CSE - aggressive" +; V108 cse3 [V108,T15] ( 3, 12.09) long -> x23 "CSE - aggressive" +; V109 cse4 [V109,T16] ( 3, 12.09) long -> x24 "CSE - aggressive"
;
-; Lcl frame size = 384
+; Lcl frame size = 392
G_M47106_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #0xD1FFAB1E]! @@ -127,31 +127,33 @@ G_M47106_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp x21, x22, [sp, #0xD1FFAB1E] stp x23, x24, [sp, #0xD1FFAB1E] stp x25, x26, [sp, #0xD1FFAB1E]
+ str x27, [sp, #0xD1FFAB1E]
mov fp, sp add x9, fp, #0xD1FFAB1E movi v16.16b, #0 stp q16, q16, [x9] stp q16, q16, [x9, #0x20]
- ;; size=40 bbWeight=1 PerfScore 8.50
+ ;; size=44 bbWeight=1 PerfScore 9.50
G_M47106_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldr q16, [@RWD00]
- str q16, [fp, #0x90] // [V26 tmp22]
+ str q16, [fp, #0x98] // [V26 tmp22]
ldr q16, [@RWD16]
- str q16, [fp, #0xA0] // [V26 tmp22+0x10]
+ str q16, [fp, #0xA8] // [V26 tmp22+0x10]
ldr q16, [@RWD32]
- str q16, [fp, #0xB0] // [V26 tmp22+0x20]
+ str q16, [fp, #0xB8] // [V26 tmp22+0x20]
ldr q16, [@RWD48]
- str q16, [fp, #0xC0] // [V26 tmp22+0x30]
+ str q16, [fp, #0xC8] // [V26 tmp22+0x30]
ldr q16, [@RWD64]
- str q16, [fp, #0xD0] // [V23 tmp19]
+ str q16, [fp, #0xD8] // [V23 tmp19]
ldr q16, [@RWD80]
- str q16, [fp, #0xE0] // [V23 tmp19+0x10]
+ str q16, [fp, #0xE8] // [V23 tmp19+0x10]
ldr q16, [@RWD96]
- str q16, [fp, #0xF0] // [V23 tmp19+0x20]
+ str q16, [fp, #0xF8] // [V23 tmp19+0x20]
ldr q16, [@RWD112]
- str q16, [fp, #0xD1FFAB1E] // [V23 tmp19+0x30]
+ mov xip1, #0xD1FFAB1E + str q16, [fp, xip1] // [V23 tmp19+0x30]
mov w19, wzr
- ;; size=68 bbWeight=1 PerfScore 24.50
+ ;; size=72 bbWeight=1 PerfScore 25.00
G_M47106_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz tbnz w19, #31, G_M47106_IG05 ;; size=4 bbWeight=4 PerfScore 4.00 @@ -176,18 +178,17 @@ G_M47106_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 ;; size=36 bbWeight=2 PerfScore 15.00 G_M47106_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add x0, fp, #208 // [V23 tmp19]
+ add x0, fp, #216 // [V23 tmp19]
; byrRegs +[x0]
- sbfiz x20, x19, #2, #32 - ldr w21, [x0, x20] - mov w22, wzr - cmp w21, #16
+ ldr w20, [x0, w19, SXTW #2] + mov w21, wzr + cmp w20, #16
bhs G_M47106_IG10
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=20 bbWeight=4 PerfScore 22.00
G_M47106_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x0]
- tbnz w21, #31, G_M47106_IG08 - cmp w21, #16
+ tbnz w20, #31, G_M47106_IG08 + cmp w20, #16
cset x0, lt tst w0, #255 bne G_M47106_IG09 @@ -207,9 +208,9 @@ G_M47106_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 ;; size=36 bbWeight=2 PerfScore 15.00 G_M47106_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x0, fp, #144 // [V26 tmp22]
+ add x0, fp, #152 // [V26 tmp22]
; byrRegs +[x0]
- ldr w22, [x0, w21, SXTW #2]
+ ldr w21, [x0, w20, SXTW #2]
;; size=8 bbWeight=2 PerfScore 7.00 G_M47106_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x0] @@ -238,28 +239,36 @@ G_M47106_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M47106_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz add x0, fp, #0xD1FFAB1E // [V21 tmp17] ; byrRegs +[x0]
- str w22, [x0, x20]
+ str w21, [x0, w19, SXTW #2]
add w19, w19, #1 cmp w19, #16 blt G_M47106_IG03 ;; size=20 bbWeight=4 PerfScore 14.00 G_M47106_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0]
- ldp q16, q17, [fp, #0xD1FFAB1E] - stp q16, q17, [fp, #0xD1FFAB1E] - ldp q16, q17, [fp, #0xD1FFAB1E] - stp q16, q17, [fp, #0xD1FFAB1E]
+ ldp x0, x1, [fp, #0xD1FFAB1E] + stp x0, x1, [fp, #0xD1FFAB1E] + ldp x0, x1, [fp, #0xD1FFAB1E] + stp x0, x1, [fp, #0xD1FFAB1E] + ldp x0, x1, [fp, #0xD1FFAB1E] + stp x0, x1, [fp, #0xD1FFAB1E] + ldp x0, x1, [fp, #0xD1FFAB1E] + stp x0, x1, [fp, #0xD1FFAB1E]
mov w19, wzr
- ;; size=20 bbWeight=1 PerfScore 6.50
+ ;; size=36 bbWeight=1 PerfScore 16.50
G_M47106_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldp q16, q17, [fp, #0xD1FFAB1E] - stp q16, q17, [fp, #0x50] - ldp q16, q17, [fp, #0xD1FFAB1E] - stp q16, q17, [fp, #0x70]
+ ldp x0, x1, [fp, #0xD1FFAB1E] + stp x0, x1, [fp, #0x58] + ldp x0, x1, [fp, #0xD1FFAB1E] + stp x0, x1, [fp, #0x68] + ldp x0, x1, [fp, #0xD1FFAB1E] + stp x0, x1, [fp, #0x78] + ldp x0, x1, [fp, #0xD1FFAB1E] + stp x0, x1, [fp, #0x88]
cmp w19, #16 bhs G_M47106_IG25 tbnz w19, #31, G_M47106_IG17
- ;; size=28 bbWeight=4 PerfScore 34.00
+ ;; size=44 bbWeight=4 PerfScore 74.00
G_M47106_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz cmp w19, #16 cset x0, lt @@ -281,7 +290,7 @@ G_M47106_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 ;; size=36 bbWeight=2 PerfScore 15.00 G_M47106_IG18: ; bbWeight=4.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add x0, fp, #80 // [V41 tmp37]
+ add x0, fp, #88 // [V41 tmp37]
; byrRegs +[x0] ldr w20, [x0, w19, SXTW #2] movz x21, #0xD1FFAB1E @@ -322,17 +331,17 @@ G_M47106_IG18: ; bbWeight=4.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15 x24] ; byrRegs -[x14]
- movz x0, #0xD1FFAB1E // code for <unknown method> - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - str x0, [x26, #0x18]
+ movz x24, #0xD1FFAB1E // code for <unknown method> + movk x24, #0xD1FFAB1E LSL #16 + movk x24, #0xD1FFAB1E LSL #32 + str x24, [x26, #0x18]
add x0, x25, #0xD1FFAB1E bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0
- mov x24, x0 - ; gcrRegs +[x24] - add x14, x24, #16
+ mov x27, x0 + ; gcrRegs +[x27] + add x14, x27, #16
; byrRegs +[x14] mov x15, x26 ...

+32 (+7.84%) : 89903.dasm - System.Data.ExpressionParser:ScanNumeric():this (FullOpts)

@@ -7,25 +7,26 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 21, 41.50) ref -> x19 this class-hnd single-def <System.Data.ExpressionParser> -; V01 loc0 [V01,T06] ( 3, 10 ) ref -> x20 class-hnd single-def <<unknown class>> -; V02 loc1 [V02,T13] ( 3, 2 ) ubyte -> x21 -;* V03 loc2 [V03,T15] ( 0, 0 ) ubyte -> zero-ref
+; V00 this [V00,T01] ( 21, 38.50) ref -> x19 this class-hnd single-def <System.Data.ExpressionParser> +; V01 loc0 [V01,T10] ( 3, 3 ) ref -> x0 class-hnd single-def <<unknown class>> +; V02 loc1 [V02,T14] ( 3, 2 ) ubyte -> x20 +;* V03 loc2 [V03,T16] ( 0, 0 ) ubyte -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T00] ( 3, 48 ) int -> x0 "index expr"
+; V05 tmp1 [V05,T02] ( 6, 30 ) int -> x21 "index expr"
; V06 tmp2 [V06,T07] ( 3, 6 ) int -> x0 "index expr"
-; V07 tmp3 [V07,T01] ( 3, 48 ) int -> x0 "index expr"
+; V07 tmp3 [V07,T00] ( 3, 48 ) int -> x0 "index expr"
; V08 tmp4 [V08,T08] ( 3, 6 ) int -> x1 "index expr"
-;* V09 tmp5 [V09,T16] ( 0, 0 ) int -> zero-ref "index expr" -; V10 tmp6 [V10,T10] ( 3, 3 ) int -> x0 "index expr" -;* V11 tmp7 [V11,T17] ( 0, 0 ) int -> zero-ref "index expr" -; V12 tmp8 [V12,T04] ( 3, 24 ) int -> x0 "index expr" -; V13 cse0 [V13,T14] ( 3, 1.50) int -> x0 "CSE - moderate" -; V14 cse1 [V14,T11] ( 3, 2.50) int -> x1 "CSE - aggressive" -; V15 cse2 [V15,T12] ( 3, 1.50) int -> x0 "CSE - aggressive" -; V16 cse3 [V16,T09] ( 3, 2.50) int -> x0 "CSE - aggressive" -; V17 cse4 [V17,T05] ( 7, 23.50) byref -> x22 hoist "CSE - aggressive" -; V18 cse5 [V18,T03] ( 7, 30.50) int -> x23 "CSE - aggressive"
+;* V09 tmp5 [V09,T17] ( 0, 0 ) int -> zero-ref "index expr" +; V10 tmp6 [V10,T11] ( 3, 3 ) int -> x0 "index expr" +;* V11 tmp7 [V11,T18] ( 0, 0 ) int -> zero-ref "index expr" +; V12 tmp8 [V12,T03] ( 3, 24 ) int -> x0 "index expr" +; V13 cse0 [V13,T15] ( 3, 1.50) int -> x0 "CSE - moderate" +; V14 cse1 [V14,T12] ( 3, 2.50) int -> x1 "CSE - aggressive" +; V15 cse2 [V15,T06] ( 3, 12 ) int -> x21 "CSE - aggressive" +; V16 cse3 [V16,T13] ( 3, 1.50) int -> x0 "CSE - aggressive" +; V17 cse4 [V17,T09] ( 3, 2.50) int -> x0 "CSE - aggressive" +; V18 cse5 [V18,T04] ( 8, 20.50) byref -> x23 "CSE - aggressive" +; V19 cse6 [V19,T05] ( 8, 20.50) int -> x22 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -38,147 +39,153 @@ G_M57065_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x0 ; gcrRegs +[x19] ;; size=24 bbWeight=1 PerfScore 5.00
-G_M57065_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ldr x20, [x19, #0x08] - ; gcrRegs +[x20] - mov w21, wzr - add x22, x20, #16 - ; byrRegs +[x22] - b G_M57065_IG04 - ;; size=16 bbWeight=1 PerfScore 5.00 -G_M57065_IG03: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=400000 {x22}, byref
+G_M57065_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr x0, [x19, #0x08] + ; gcrRegs +[x0] + mov w20, wzr + ldr w21, [x19, #0x30] + ldr w22, [x0, #0x08] + cmp w21, w22 + bhs G_M57065_IG19 + add x23, x0, #16 + ; byrRegs +[x23] + ldrh w0, [x23, w21, UXTW #2] + ; gcrRegs -[x0] + movz x1, #0xD1FFAB1E // code for System.Data.ExpressionParser:IsDigit(ushort):ubyte + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + cbz w0, G_M57065_IG04 + ;; size=56 bbWeight=1 PerfScore 21.00 +G_M57065_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [x19, #0x30]
- add w0, w0, #1 - str w0, [x19, #0x30] - ;; size=12 bbWeight=2 PerfScore 9.00 -G_M57065_IG04: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=400000 {x22}, byref, isz - ldr w0, [x19, #0x30] - ldr w23, [x20, #0x08] - cmp w0, w23 - bhs G_M57065_IG20 - ldrh w0, [x22, w0, UXTW #2]
+ add w21, w0, #1 + str w21, [x19, #0x30] + cmp w21, w22 + bhs G_M57065_IG19 + ldrh w0, [x23, w21, UXTW #2]
movz x1, #0xD1FFAB1E // code for System.Data.ExpressionParser:IsDigit(ushort):ubyte movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 cbnz w0, G_M57065_IG03
- ;; size=44 bbWeight=8 PerfScore 136.00 -G_M57065_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz - ; gcrRegs -[x20]
+ ;; size=48 bbWeight=4 PerfScore 62.00 +G_M57065_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [x19, #0x30]
- cmp w0, w23 - bhs G_M57065_IG20 - ldrh w0, [x22, w0, UXTW #2]
+ cmp w0, w22 + bhs G_M57065_IG19 + ldrh w0, [x23, w0, UXTW #2]
ldrh w1, [x19, #0x4E] cmp w0, w1
- bne G_M57065_IG08
+ bne G_M57065_IG07
;; size=28 bbWeight=1 PerfScore 12.00
-G_M57065_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref - mov w21, #1
+G_M57065_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref + mov w20, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M57065_IG07: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
+G_M57065_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref
ldr w0, [x19, #0x30] add w0, w0, #1 str w0, [x19, #0x30] ;; size=12 bbWeight=2 PerfScore 9.00
-G_M57065_IG08: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M57065_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [x19, #0x30]
- cmp w0, w23 - bhs G_M57065_IG20 - ldrh w0, [x22, w0, UXTW #2]
+ cmp w0, w22 + bhs G_M57065_IG19 + ldrh w0, [x23, w0, UXTW #2]
movz x1, #0xD1FFAB1E // code for System.Data.ExpressionParser:IsDigit(ushort):ubyte movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- cbnz w0, G_M57065_IG07
+ cbnz w0, G_M57065_IG06
;; size=40 bbWeight=8 PerfScore 112.00
-G_M57065_IG09: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M57065_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [x19, #0x30] sxtw w1, w0
- cmp w1, w23 - bhs G_M57065_IG20 - ldrh w1, [x22, w1, UXTW #2]
+ cmp w1, w22 + bhs G_M57065_IG19 + ldrh w1, [x23, w1, UXTW #2]
ldrh w2, [x19, #0x52] cmp w1, w2
- beq G_M57065_IG11
+ beq G_M57065_IG10
;; size=32 bbWeight=1 PerfScore 12.50
-G_M57065_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M57065_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldrh w2, [x19, #0x54] cmp w1, w2
- bne G_M57065_IG16
+ bne G_M57065_IG15
;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M57065_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M57065_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
add w0, w0, #1 str w0, [x19, #0x30]
- cmp w0, w23 - bhs G_M57065_IG20 - ldrh w0, [x22, w0, UXTW #2]
+ cmp w0, w22 + bhs G_M57065_IG19 + ldrh w0, [x23, w0, UXTW #2]
cmp w0, #45
- beq G_M57065_IG12
+ beq G_M57065_IG11
cmp w0, #43
- bne G_M57065_IG13
+ bne G_M57065_IG12
;; size=36 bbWeight=0.50 PerfScore 4.50
-G_M57065_IG12: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
+G_M57065_IG11: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref
ldr w0, [x19, #0x30] add w0, w0, #1 str w0, [x19, #0x30] ;; size=12 bbWeight=2 PerfScore 9.00
-G_M57065_IG13: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M57065_IG12: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [x19, #0x30]
- cmp w0, w23 - bhs G_M57065_IG20 - ldrh w0, [x22, w0, UXTW #2]
+ cmp w0, w22 + bhs G_M57065_IG19 + ldrh w0, [x23, w0, UXTW #2]
movz x1, #0xD1FFAB1E // code for System.Data.ExpressionParser:IsDigit(ushort):ubyte movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- cbnz w0, G_M57065_IG12
+ cbnz w0, G_M57065_IG11
;; size=40 bbWeight=4 PerfScore 56.00
-G_M57065_IG14: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; byrRegs -[x22]
+G_M57065_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; byrRegs -[x23]
mov w0, #4 str w0, [x19, #0x38] ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M57065_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M57065_IG14: ; 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 ret lr ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M57065_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - cbz w21, G_M57065_IG18
+G_M57065_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz + cbz w20, G_M57065_IG17
mov w0, #3 str w0, [x19, #0x38] ;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M57065_IG17: ; bbWeight=0.50, epilog, nogc, extend
+G_M57065_IG16: ; 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 ret lr ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M57065_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M57065_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
mov w0, #2 str w0, [x19, #0x38] ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M57065_IG19: ; bbWeight=0.50, epilog, nogc, extend
+G_M57065_IG18: ; 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 ret lr ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M57065_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M57065_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19] ...

+32 (+26.67%) : 89896.dasm - System.Data.ExpressionParser:ScanName():this (FullOpts)

@@ -7,66 +7,74 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 7, 16 ) ref -> x19 this class-hnd single-def <System.Data.ExpressionParser> -; V01 loc0 [V01,T02] ( 3, 10 ) ref -> x20 class-hnd single-def <<unknown class>>
+; V00 this [V00,T01] ( 7, 13 ) ref -> x19 this class-hnd single-def <System.Data.ExpressionParser> +; V01 loc0 [V01,T05] ( 3, 3 ) ref -> x0 class-hnd single-def <<unknown class>>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 3, 48 ) int -> x0 "index expr" -; V04 cse0 [V04,T03] ( 2, 9 ) byref -> x21 hoist "CSE - aggressive"
+; V03 tmp1 [V03,T00] ( 6, 30 ) int -> x20 "index expr" +; V04 cse0 [V04,T02] ( 3, 12 ) int -> x20 "CSE - aggressive" +; V05 cse1 [V05,T03] ( 3, 6 ) byref -> x22 "CSE - aggressive" +; V06 cse2 [V06,T04] ( 3, 6 ) int -> x21 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M25477_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 x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M25477_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ldr x20, [x19, #0x08] - ; gcrRegs +[x20] - add x21, x20, #16 - ; byrRegs +[x21] - b G_M25477_IG04 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M25477_IG03: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
+G_M25477_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr x0, [x19, #0x08] + ; gcrRegs +[x0] + ldr w20, [x19, #0x30] + ldr w21, [x0, #0x08] + cmp w20, w21 + bhs G_M25477_IG06 + add x22, x0, #16 + ; byrRegs +[x22] + ldrh w0, [x22, w20, UXTW #2] + ; gcrRegs -[x0] + movz x1, #0xD1FFAB1E // code for <unknown method> + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + cbz w0, G_M25477_IG04 + ;; size=52 bbWeight=1 PerfScore 20.50 +G_M25477_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
ldr w0, [x19, #0x30]
- add w0, w0, #1 - str w0, [x19, #0x30] - ;; size=12 bbWeight=2 PerfScore 9.00 -G_M25477_IG04: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz - ldr w0, [x19, #0x30] - ldr w1, [x20, #0x08] - cmp w0, w1 - bhs G_M25477_IG07 - ldrh w0, [x21, w0, UXTW #2]
+ add w20, w0, #1 + str w20, [x19, #0x30] + cmp w20, w21 + bhs G_M25477_IG06 + ldrh w0, [x22, w20, UXTW #2]
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 cbnz w0, G_M25477_IG03
- ;; size=44 bbWeight=8 PerfScore 136.00 -G_M25477_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x20] - ; byrRegs -[x21]
+ ;; size=48 bbWeight=4 PerfScore 62.00 +G_M25477_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; byrRegs -[x22]
mov w0, #1 str w0, [x19, #0x38] ;; size=8 bbWeight=1 PerfScore 1.50
-G_M25477_IG06: ; bbWeight=1, epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+G_M25477_IG05: ; bbWeight=1, epilog, nogc, extend + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00 -G_M25477_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=1 PerfScore 4.00 +G_M25477_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19] bl CORINFO_HELP_RNGCHKFAIL brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 120, prolog size 16, PerfScore 160.00, instruction count 30, allocated bytes for code 120 (MethodHash=0db89c7a) for method System.Data.ExpressionParser:ScanName():this (FullOpts)
+; Total bytes of code 152, prolog size 16, PerfScore 92.00, instruction count 38, allocated bytes for code 152 (MethodHash=0db89c7a) for method System.Data.ExpressionParser:ScanName():this (FullOpts)
; ============================================================ Unwind Info: @@ -77,7 +85,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ 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) @@ -85,9 +93,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]
+ E6 save_next + 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

realworld.run.linux.arm64.checked.mch

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

@@ -44,34 +44,27 @@ 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]
b G_M33083_IG05
- ;; size=36 bbWeight=4 PerfScore 46.00
+ ;; size=28 bbWeight=4 PerfScore 38.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, w4, UXTW #2] + str w10, [x2, x11, LSL #2]
sub w4, w4, #1
- ;; size=60 bbWeight=8 PerfScore 108.00
+ ;; size=48 bbWeight=8 PerfScore 88.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 @@ -86,16 +79,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 +98,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 184, prolog size 8, PerfScore 292.00, instruction count 46, allocated bytes for code 184 (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 +109,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 53 (0x00035) Actual length = 212 (0x0000d4)
+ 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)

-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

-24 (-10.91%) : 3869.dasm - System.Collections.Generic.GenericArraySortHelper2[int,System.__Canon]:InsertionSort(System.Span1[int],System.Span`1[System.__Canon]) (FullOpts)

@@ -45,26 +45,22 @@ G_M63387_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=000A {x1 x3}, b G_M63387_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=000A {x1 x3}, byref, isz add w6, w0, #1 mov w14, w6
- lsl x15, x14, #2 - ldr w7, [x1, x15]
+ ldr w7, [x1, x14, LSL #2]
cmp w6, w4 bhs G_M63387_IG09
- lsl x14, x14, #3 - ldr x8, [x3, x14]
+ ldr x8, [x3, x14, LSL #3]
; gcrRegs +[x8] b G_M63387_IG05
- ;; size=36 bbWeight=4 PerfScore 46.00
+ ;; size=28 bbWeight=4 PerfScore 38.00
G_M63387_IG04: ; bbWeight=8, gcrefRegs=0100 {x8}, byrefRegs=000A {x1 x3}, byref, isz add w9, w0, #1 cmp w9, w2 bhs G_M63387_IG09 mov w10, w9
- lsl x15, x10, #2 - str w14, [x1, x15]
+ str w14, [x1, x10, LSL #2]
cmp w9, w4 bhs G_M63387_IG09
- lsl x14, x10, #3 - add x14, x3, x14
+ add x14, x3, x10, LSL #3
; byrRegs +[x14] cmp w0, w4 bhs G_M63387_IG09 @@ -74,7 +70,7 @@ G_M63387_IG04: ; bbWeight=8, gcrefRegs=0100 {x8}, byrefRegs=000A {x1 x3}, ; gcrRegs -[x15] ; byrRegs -[x14] sub w0, w0, #1
- ;; size=60 bbWeight=8 PerfScore 108.00
+ ;; size=52 bbWeight=8 PerfScore 96.00
G_M63387_IG05: ; bbWeight=32, gcrefRegs=0100 {x8}, byrefRegs=000A {x1 x3}, byref, isz tbnz w0, #31, G_M63387_IG07 ;; size=4 bbWeight=32 PerfScore 32.00 @@ -90,12 +86,10 @@ G_M63387_IG07: ; bbWeight=4, gcrefRegs=0100 {x8}, byrefRegs=000A {x1 x3}, cmp w9, w2 bhs G_M63387_IG09 mov w10, w9
- lsl x14, x10, #2 - str w7, [x1, x14]
+ str w7, [x1, x10, LSL #2]
cmp w9, w4 bhs G_M63387_IG09
- lsl x14, x10, #3 - add x14, x3, x14
+ add x14, x3, x10, LSL #3
; byrRegs +[x14] mov x15, x8 ; gcrRegs +[x15] @@ -105,7 +99,7 @@ G_M63387_IG07: ; bbWeight=4, gcrefRegs=0100 {x8}, byrefRegs=000A {x1 x3}, sxtw w0, w6 cmp w0, w5 blt G_M63387_IG03
- ;; size=60 bbWeight=4 PerfScore 44.00
+ ;; size=52 bbWeight=4 PerfScore 38.00
G_M63387_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x1 x3] ldp fp, lr, [sp], #0x10 @@ -117,7 +111,7 @@ G_M63387_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 8, PerfScore 332.00, instruction count 55, allocated bytes for code 220 (MethodHash=f6e30864) for method System.Collections.Generic.GenericArraySortHelper`2[int,System.__Canon]:InsertionSort(System.Span`1[int],System.Span`1[System.__Canon]) (FullOpts)
+; Total bytes of code 196, prolog size 8, PerfScore 306.00, instruction count 49, allocated bytes for code 196 (MethodHash=f6e30864) for method System.Collections.Generic.GenericArraySortHelper`2[int,System.__Canon]:InsertionSort(System.Span`1[int],System.Span`1[System.__Canon]) (FullOpts)
; ============================================================ Unwind Info: @@ -128,7 +122,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+4.11%) : 23727.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(int,byref):ubyte:this (FullOpts)

@@ -9,13 +9,13 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 10, 9 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer>
-; V01 arg1 [V01,T01] ( 10, 8.50) int -> x20 single-def
+; V01 arg1 [V01,T01] ( 9, 8 ) int -> x20 single-def
; V02 arg2 [V02,T07] ( 3, 3 ) byref -> x6 single-def ; V03 loc0 [V03,T09] ( 2, 2 ) ref -> x2 class-hnd single-def <<unknown class>> ; V04 loc1 [V04,T10] ( 2, 2 ) ref -> x3 class-hnd single-def <<unknown class>> ; V05 loc2 [V05,T11] ( 2, 2 ) ref -> x4 class-hnd single-def <<unknown class>> ; V06 loc3 [V06,T12] ( 2, 2 ) ref -> x5 class-hnd single-def <<unknown class>>
-; V07 loc4 [V07 ] ( 3, 2.50) struct (32) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte]>
+; V07 loc4 [V07 ] ( 3, 2.50) struct (32) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte]>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V10 tmp2 [V10,T02] ( 3, 6 ) ref -> x0 single-def "arr expr" @@ -23,22 +23,23 @@ ; V12 tmp4 [V12,T04] ( 3, 6 ) ref -> x0 single-def "arr expr" ; V13 tmp5 [V13,T05] ( 3, 6 ) ref -> x0 single-def "arr expr" ; V14 tmp6 [V14,T08] ( 3, 3 ) ref -> x14 single-def "arr expr"
-; V15 cse0 [V15,T06] ( 5, 5 ) long -> x1 "CSE - aggressive"
+; V15 cse0 [V15,T06] ( 6, 5.50) long -> x21 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M56432_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x30]
+ stp fp, lr, [sp, #-0x50]! + stp x19, x20, [sp, #0x38] + str x21, [sp, #0x48]
mov fp, sp
- stp xzr, xzr, [fp, #0x10] // [V07 loc4], [V07 loc4+0x08] - stp xzr, xzr, [fp, #0x20] // [V07 loc4+0x10], [V07 loc4+0x18]
+ stp xzr, xzr, [fp, #0x18] // [V07 loc4], [V07 loc4+0x08] + stp xzr, xzr, [fp, #0x28] // [V07 loc4+0x10], [V07 loc4+0x18]
mov x19, x0 ; gcrRegs +[x19] mov w20, w1 mov x6, x2 ; byrRegs +[x6]
- ;; size=32 bbWeight=1 PerfScore 6.00
+ ;; size=36 bbWeight=1 PerfScore 7.00
G_M56432_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0040 {x6}, byref, isz ldr x0, [x19, #0x60] ; gcrRegs +[x0] @@ -48,46 +49,46 @@ G_M56432_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0040 {x6}, add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ubfiz x1, x20, #3, #32 - ldr x2, [x0, x1]
+ mov w21, w20 + ldr x2, [x0, x21, LSL #3]
; gcrRegs +[x2] ldr x0, [x19, #0x30] ; gcrRegs +[x0] ; byrRegs -[x0]
- ldr w8, [x0, #0x08] - cmp w20, w8
+ ldr w1, [x0, #0x08] + cmp w20, w1
bhs G_M56432_IG07 add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ldr x3, [x0, x1]
+ ldr x3, [x0, x21, LSL #3]
; gcrRegs +[x3] ldr x0, [x19, #0x40] ; gcrRegs +[x0] ; byrRegs -[x0]
- ldr w8, [x0, #0x08] - cmp w20, w8
+ ldr w1, [x0, #0x08] + cmp w20, w1
bhs G_M56432_IG07 add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ldr x4, [x0, x1]
+ ldr x4, [x0, x21, LSL #3]
; gcrRegs +[x4] ldr x0, [x19, #0x38] ; gcrRegs +[x0] ; byrRegs -[x0]
- ldr w8, [x0, #0x08] - cmp w20, w8
+ ldr w1, [x0, #0x08] + cmp w20, w1
bhs G_M56432_IG07 add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ldr x5, [x0, x1]
+ ldr x5, [x0, x21, LSL #3]
; gcrRegs +[x5] ldp x0, x1, [x19, #0x08] ; gcrRegs +[x0-x1] ; byrRegs -[x0]
- add x8, fp, #16 // [V07 loc4]
+ add x8, fp, #24 // [V07 loc4]
movz x7, #0xD1FFAB1E // code for <unknown method> movk x7, #0xD1FFAB1E LSL #16 movk x7, #0xD1FFAB1E LSL #32 @@ -95,19 +96,20 @@ G_M56432_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0040 {x6}, blr x7 ; gcrRegs -[x0-x5] ; byrRegs -[x6]
- ldr x0, [fp, #0x18] // [V07 loc4+0x08]
+ ldr x0, [fp, #0x20] // [V07 loc4+0x08]
; gcrRegs +[x0] cbnz x0, G_M56432_IG05
- ;; size=136 bbWeight=1 PerfScore 58.00
+ ;; size=136 bbWeight=1 PerfScore 57.50
G_M56432_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0 x19] mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M56432_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x30] - ldp fp, lr, [sp], #0x40
+ ldr x21, [sp, #0x48] + ldp x19, x20, [sp, #0x38] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
G_M56432_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[x19] ldr x14, [x19, #0x28] @@ -115,12 +117,12 @@ G_M56432_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 ldr w13, [x14, #0x08] cmp w20, w13 bhs G_M56432_IG07
- ubfiz x13, x20, #5, #32
+ lsl x13, x21, #5
add x13, x13, #16 add x14, x14, x13 ; gcrRegs -[x14] ; byrRegs +[x14]
- add x13, fp, #16 // [V07 loc4]
+ add x13, fp, #24 // [V07 loc4]
; byrRegs +[x13] ldr x12, [x13], #0x08 str x12, [x14], #0x08 @@ -141,16 +143,17 @@ G_M56432_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 mov w0, #1 ;; size=88 bbWeight=0.50 PerfScore 13.50 G_M56432_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x30] - ldp fp, lr, [sp], #0x40
+ ldr x21, [sp, #0x48] + ldp x19, x20, [sp, #0x38] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
G_M56432_IG07: ; 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 292, prolog size 20, PerfScore 80.75, instruction count 73, allocated bytes for code 292 (MethodHash=1b1e238f) for method Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(int,byref):ubyte:this (FullOpts)
+; Total bytes of code 304, prolog size 24, PerfScore 83.25, instruction count 76, allocated bytes for code 304 (MethodHash=1b1e238f) for method Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(int,byref):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -161,7 +164,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 73 (0x00049) Actual length = 292 (0x000124)
+ Function Length : 76 (0x0004c) Actual length = 304 (0x000130)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -172,10 +175,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 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
+ 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]!
E4 end E4 end

+20 (+4.24%) : 945.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)

@@ -9,35 +9,36 @@ ; Final local variable assignments ; ; V00 this [V00,T04] ( 11, 7 ) byref -> x19 this single-def
-; V01 arg1 [V01,T06] ( 5, 3.50) int -> x1 single-def -; V02 loc0 [V02,T16] ( 3, 2.50) int -> x0
+; V01 arg1 [V01,T07] ( 5, 3.50) int -> x1 single-def +; V02 loc0 [V02,T17] ( 3, 2.50) int -> x0
; V03 loc1 [V03,T15] ( 5, 2.50) int -> x21
-; V04 loc2 [V04,T11] ( 5, 4 ) int -> x20 ld-addr-op -; V05 loc3 [V05,T00] ( 11, 29.50) int -> x22 -; V06 loc4 [V06,T01] ( 14, 22 ) int -> x23 -; V07 loc5 [V07,T18] ( 2, 1 ) int -> x0 -; V08 loc6 [V08,T09] ( 4, 5 ) int -> x1 -; V09 loc7 [V09,T03] ( 4, 10.50) int -> x2 -; V10 loc8 [V10,T05] ( 3, 6.50) int -> x3
+; V04 loc2 [V04,T16] ( 5, 2.50) int -> x20 ld-addr-op +; V05 loc3 [V05,T00] ( 13, 34.50) int -> x22 +; V06 loc4 [V06,T01] ( 14, 28 ) int -> x23 +; V07 loc5 [V07,T19] ( 2, 1 ) int -> x0 +; V08 loc6 [V08,T05] ( 4, 9 ) int -> x1 +; V09 loc7 [V09,T03] ( 6, 13.50) int -> x2 +; V10 loc8 [V10,T06] ( 4, 9 ) int -> x3
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp3 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V15 tmp4 [V15 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V16 tmp5 [V16,T07] ( 5, 5 ) long -> [fp+0x18] "Inlining Arg"
+; V16 tmp5 [V16,T09] ( 5, 5 ) long -> [fp+0x18] "Inlining Arg"
;* V17 tmp6 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V18 tmp7 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp8 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp9 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V21 tmp10 [V21 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V22 tmp11 [V22,T08] ( 5, 5 ) long -> [fp+0x10] spill-single-def "Inlining Arg"
+; V22 tmp11 [V22,T10] ( 5, 5 ) long -> [fp+0x10] spill-single-def "Inlining Arg"
;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V24 tmp13 [V24,T13] ( 3, 3 ) long -> x0 "Cast away GC" ; V25 tmp14 [V25,T14] ( 3, 3 ) long -> x0 "Cast away GC"
-; V26 cse0 [V26,T17] ( 3, 1.50) int -> x0 "CSE - moderate" -; V27 cse1 [V27,T02] ( 12, 18 ) byref -> x24 hoist multi-def "CSE - aggressive" -; V28 cse2 [V28,T10] ( 2, 4.50) int -> x0 hoist "CSE - aggressive" -; V29 cse3 [V29,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
+; V26 cse0 [V26,T18] ( 3, 1.50) int -> x0 "CSE - moderate" +; V27 cse1 [V27,T02] ( 13, 20.50) byref -> x24 hoist multi-def "CSE - aggressive" +; V28 cse2 [V28,T11] ( 3, 5 ) int -> x0 "CSE - aggressive" +; V29 cse3 [V29,T08] ( 4, 5.50) int -> x4 hoist multi-def "CSE - aggressive" +; V30 cse4 [V30,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
; ; Lcl frame size = 16 @@ -151,7 +152,7 @@ G_M38441_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=48 bbWeight=0.50 PerfScore 4.75
-G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add w0, w23, #1 str w0, [x19] neg w0, w20 @@ -159,42 +160,45 @@ G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, mov w1, wzr add x24, x19, #4 ; byrRegs +[x24]
+ ldr w2, [x24, w22, SXTW #2]
and w0, w0, #31
- b G_M38441_IG13 - ;; size=32 bbWeight=0.50 PerfScore 2.50 -G_M38441_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ lsr w3, w2, w0 + cmp w22, #0 + ble G_M38441_IG13 + and w4, w20, #31 + ;; size=48 bbWeight=0.50 PerfScore 4.75 +G_M38441_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
orr w1, w1, w3 str w1, [x24, w23, SXTW #2]
- lsl w1, w2, w20
+ lsl w1, w2, w4
sub w22, w22, #1 sub w23, w23, #1
- ;; size=20 bbWeight=2 PerfScore 6.00 -G_M38441_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w2, [x24, w22, SXTW #2] lsr w3, w2, w0 cmp w22, #0 bgt G_M38441_IG12
- ;; size=16 bbWeight=4 PerfScore 20.00 -G_M38441_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3 - str w0, [x24, w23, SXTW #2]
+ ;; size=36 bbWeight=4 PerfScore 32.00 +G_M38441_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w4, w1, w3 + str w4, [x24, w23, SXTW #2]
sub w0, w23, #1
- lsl w1, w2, w20
+ and w4, w20, #31 + lsl w1, w2, w4
str w1, [x24, w0, SXTW #2] mov x0, x24 lsl w1, w21, #2 mov w1, w1 str x1, [fp, #0x10] // [V22 tmp11]
- cbz x1, G_M38441_IG16
+ cbz x1, G_M38441_IG15
cmp x1, #0xD1FFAB1E
- bhi G_M38441_IG15
+ bhi G_M38441_IG14
mov w1, wzr ldr w2, [fp, #0x10] // [V22 tmp11] bl CORINFO_HELP_MEMSET ; gcr arg pop 0
- b G_M38441_IG16 - ;; size=64 bbWeight=0.50 PerfScore 6.75 -G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ b G_M38441_IG15 + ;; size=68 bbWeight=0.50 PerfScore 7.00 +G_M38441_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
ldr x1, [fp, #0x10] // [V22 tmp11] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -203,7 +207,7 @@ G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 blr x2 ; gcr arg pop 0 ;; size=24 bbWeight=0.50 PerfScore 3.75
-G_M38441_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w0, [x19] sub w0, w0, #1 ldr w1, [x24, w0, SXTW #2] @@ -212,7 +216,7 @@ G_M38441_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 b G_M38441_IG04 ;; size=24 bbWeight=0.50 PerfScore 4.75
-; Total bytes of code 472, prolog size 24, PerfScore 111.75, instruction count 118, allocated bytes for code 472 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
+; Total bytes of code 492, prolog size 24, PerfScore 120.25, instruction count 123, allocated bytes for code 492 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
; ============================================================ Unwind Info: @@ -223,7 +227,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 118 (0x00076) Actual length = 472 (0x0001d8)
+ Function Length : 123 (0x0007b) Actual length = 492 (0x0001ec)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+5.41%) : 14315.dasm - Microsoft.ML.Trainers.KMeansLloydsYinYangTrain+SharedState:UpdateYinYangBounds(int):this (FullOpts)

@@ -35,8 +35,9 @@ G_M25866_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre add x2, x2, #16 ; gcrRegs -[x2] ; byrRegs +[x2]
- ubfiz x3, x1, #2, #32 - add x2, x2, x3
+ mov w3, w1 + lsl x4, x3, #2 + add x2, x2, x4
ldr s16, [x2] ldp x4, x5, [x0, #0x10] ; gcrRegs +[x4-x5] @@ -46,7 +47,7 @@ G_M25866_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre add x5, x5, #16 ; gcrRegs -[x5] ; byrRegs +[x5]
- ldr w5, [x5, x3]
+ ldr w5, [x5, x3, LSL #2]
; byrRegs -[x5] ldr w6, [x4, #0x08] cmp w5, w6 @@ -66,24 +67,26 @@ G_M25866_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre bhs G_M25866_IG04 add x1, x2, #16 ; byrRegs +[x1]
- add x1, x1, x3
+ lsl x2, x3, #2 + ; gcrRegs -[x2] + add x1, x1, x2
ldr s16, [x1] ldr s17, [x0, #0x34] fsub s16, s16, s17 str s16, [x1]
- ;; size=124 bbWeight=1 PerfScore 55.00
+ ;; size=132 bbWeight=1 PerfScore 56.50
G_M25866_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00 G_M25866_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x2]
+ ; gcrRegs -[x0]
; byrRegs -[x1] bl CORINFO_HELP_RNGCHKFAIL brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 148, prolog size 8, PerfScore 58.50, instruction count 37, allocated bytes for code 148 (MethodHash=0d9c9af5) for method Microsoft.ML.Trainers.KMeansLloydsYinYangTrain+SharedState:UpdateYinYangBounds(int):this (FullOpts)
+; Total bytes of code 156, prolog size 8, PerfScore 60.00, instruction count 39, allocated bytes for code 156 (MethodHash=0d9c9af5) for method Microsoft.ML.Trainers.KMeansLloydsYinYangTrain+SharedState:UpdateYinYangBounds(int):this (FullOpts)
; ============================================================ Unwind Info: @@ -94,7 +97,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
---- 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

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

@@ -7,40 +7,38 @@ ; 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,T07] ( 6, 19 ) int -> x24
;* 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 cse0 [V18,T08] ( 2, 17 ) byref -> x25 hoist "CSE - aggressive" +; V19 cse1 [V19,T05] ( 4, 22 ) int -> [fp+0x1C] spill-single-def "CSE - aggressive" +; V20 cse2 [V20,T14] ( 3, 7 ) byref -> x19 hoist "CSE - aggressive" +; V21 cse3 [V21,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 +46,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[] @@ -60,7 +58,7 @@ G_M8664_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {} mov w23, wzr mov w24, wzr cmp w21, #0
- ble G_M8664_IG09
+ ble G_M8664_IG08
add x19, x19, #16 ; gcrRegs -[x19] ; byrRegs +[x19] @@ -69,66 +67,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, w24, UXTW #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] // [V19 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] // [V19 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] // [V19 cse1] + cmp w14, w28 + bgt G_M8664_IG07 + ldr x15, [x19, w24, UXTW #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 +124,51 @@ 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
+ ;; size=44 bbWeight=2 PerfScore 28.00 +G_M8664_IG07: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=2080000 {x19 x25}, byref, isz
add w24, w24, #1 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
+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] cmp w0, #0
- bls G_M8664_IG18
+ bls G_M8664_IG15
ldr x0, [x22, #0x10] ; gcrRegs +[x0] ;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M8664_IG15: ; bbWeight=0.50, epilog, nogc, extend
...

-16 (-10.00%) : 8117.dasm - System.Dynamic.Utils.TypeExtensions:MatchesArgumentTypes(System.Reflection.MethodInfo,System.Type[]):ubyte (FullOpts)

@@ -7,30 +7,28 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 4, 3.50) ref -> x0 class-hnd single-def <System.Reflection.MethodInfo> -; V01 arg1 [V01,T06] ( 4, 3 ) ref -> x19 class-hnd single-def <System.Type[]> -; V02 loc0 [V02,T09] ( 3, 1.50) ref -> x0 class-hnd single-def <System.Reflection.ParameterInfo[]> -; V03 loc1 [V03,T01] ( 5, 16.34) int -> x21
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.Reflection.MethodInfo> +; V01 arg1 [V01,T05] ( 4, 3 ) ref -> x19 class-hnd single-def <System.Type[]> +; V02 loc0 [V02,T08] ( 3, 1.50) ref -> x0 class-hnd single-def <System.Reflection.ParameterInfo[]> +; V03 loc1 [V03,T01] ( 6, 20.30) int -> x21
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V06 tmp2 [V06,T00] ( 3, 23.76) ref -> x0 "argument with side effect" ; V07 tmp3 [V07,T02] ( 2, 15.84) ref -> x0 "argument with side effect"
-; V08 cse0 [V08,T03] ( 3, 11.88) long -> x23 "CSE - aggressive" -; V09 cse1 [V09,T04] ( 4, 5.46) int -> x20 "CSE - aggressive" -; V10 cse2 [V10,T07] ( 2, 4.46) byref -> x22 hoist multi-def "CSE - aggressive" -; V11 cse3 [V11,T08] ( 2, 4.46) byref -> x19 hoist multi-def "CSE - aggressive"
+; V08 cse0 [V08,T03] ( 4, 5.46) int -> x20 "CSE - aggressive" +; V09 cse1 [V09,T06] ( 2, 4.46) byref -> x22 hoist multi-def "CSE - aggressive" +; V10 cse2 [V10,T07] ( 2, 4.46) byref -> x19 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M36200_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, x1 ; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M36200_IG02: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] cbnz x0, G_M36200_IG05 @@ -40,12 +38,11 @@ G_M36200_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M36200_IG04: ; 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_M36200_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[x0 x19] bl System.Dynamic.Utils.TypeExtensions:GetParametersCached(System.Reflection.MethodBase):System.Reflection.ParameterInfo[] @@ -64,13 +61,12 @@ G_M36200_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 ;; size=40 bbWeight=0.50 PerfScore 5.75 G_M36200_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz ; gcrRegs -[x0]
- ubfiz x23, x21, #3, #32 - ldr x0, [x22, x23]
+ ldr x0, [x22, w21, UXTW #3]
; gcrRegs +[x0] ldr x1, [x0] ldr x1, [x1, #0x48] blr x1
- ldr x1, [x19, x23]
+ ldr x1, [x19, w21, UXTW #3]
; gcrRegs +[x1] bl System.Dynamic.Utils.TypeUtils:AreReferenceAssignable(System.Type,System.Type):ubyte ; gcrRegs -[x0-x1] @@ -78,31 +74,29 @@ G_M36200_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=480000 {x19 add w21, w21, #1 cmp w20, w21 bgt G_M36200_IG06
- ;; size=44 bbWeight=3.96 PerfScore 71.28
+ ;; size=40 bbWeight=3.96 PerfScore 67.32
G_M36200_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x19 x22] mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M36200_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
-; Total bytes of code 160, prolog size 20, PerfScore 89.53, instruction count 40, allocated bytes for code 160 (MethodHash=02b17297) for method System.Dynamic.Utils.TypeExtensions:MatchesArgumentTypes(System.Reflection.MethodInfo,System.Type[]):ubyte (FullOpts)
+; Total bytes of code 144, prolog size 16, PerfScore 82.57, instruction count 36, allocated bytes for code 144 (MethodHash=02b17297) for method System.Dynamic.Utils.TypeExtensions:MatchesArgumentTypes(System.Reflection.MethodInfo,System.Type[]):ubyte (FullOpts)
; ============================================================ Cfi Info: >> Start offset : 0x000000 >> End offset : 0xd1ffab1e
- CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x40
+ CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x30
CodeOffset: 0x04 Op: RelOffset DwarfReg:0x1d Offset:0x0 CodeOffset: 0x04 Op: RelOffset DwarfReg:0x1e Offset:0x8
- CodeOffset: 0x08 Op: RelOffset DwarfReg:0x13 Offset:0x18 - CodeOffset: 0x08 Op: RelOffset DwarfReg:0x14 Offset:0x20 - CodeOffset: 0x0C Op: RelOffset DwarfReg:0x15 Offset:0x28 - CodeOffset: 0x0C Op: RelOffset DwarfReg:0x16 Offset:0x30 - CodeOffset: 0x10 Op: RelOffset DwarfReg:0x17 Offset:0x38 - CodeOffset: 0x14 Op: DefCfaRegister DwarfReg:0x1D
+ CodeOffset: 0x08 Op: RelOffset DwarfReg:0x13 Offset:0x10 + CodeOffset: 0x08 Op: RelOffset DwarfReg:0x14 Offset:0x18 + CodeOffset: 0x0C Op: RelOffset DwarfReg:0x15 Offset:0x20 + CodeOffset: 0x0C Op: RelOffset DwarfReg:0x16 Offset:0x28 + CodeOffset: 0x10 Op: DefCfaRegister DwarfReg:0x1D

-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

+4 (+4.00%) : 8314.dasm - Internal.TypeSystem.LockFreeReaderHashtableOfPointers`2[System.__Canon,System.Runtime.InteropServices.GCHandle]:WaitForSentinelInHashtableToDisappear(long[],int):long (FullOpts)

@@ -15,9 +15,9 @@ ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp" ; V07 tmp2 [V07 ] ( 1, 4 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V03._count (fldOffset=0x0)" P-DEP
-; V08 cse0 [V08,T03] ( 2, 9 ) long -> x22 hoist "CSE - aggressive" -; V09 cse1 [V09,T04] ( 2, 9 ) int -> x20 hoist "CSE - aggressive" -; V10 cse2 [V10,T02] ( 2, 9 ) byref -> x21 hoist "CSE - aggressive"
+; V08 cse0 [V08,T03] ( 2, 9 ) int -> x20 hoist "CSE - aggressive" +; V09 cse1 [V09,T02] ( 2, 9 ) byref -> x21 hoist "CSE - aggressive" +; V10 cse2 [V10,T04] ( 2, 9 ) long -> x22 hoist "CSE - aggressive"
; ; Lcl frame size = 16 @@ -34,19 +34,20 @@ G_M50326_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byre ldr w20, [x1, #0x08] add x21, x1, #16 ; byrRegs +[x21]
- ubfiz x22, x19, #3, #32 - ;; size=12 bbWeight=1 PerfScore 4.50
+ mov w22, w19 + ;; size=12 bbWeight=1 PerfScore 4.00
G_M50326_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz ; gcrRegs -[x1] cmp w19, w20 bhs G_M50326_IG06
- add x0, x21, x22
+ lsl x0, x22, #3 + add x0, x21, x0
; byrRegs +[x0] ldar x0, [x0] ; byrRegs -[x0] cmp x0, #1 bne G_M50326_IG05
- ;; size=24 bbWeight=8 PerfScore 52.00
+ ;; size=28 bbWeight=8 PerfScore 60.00
G_M50326_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref add x0, fp, #24 // [V03 loc0] mov w1, #20 @@ -65,7 +66,7 @@ G_M50326_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 100, prolog size 20, PerfScore 77.50, instruction count 25, allocated bytes for code 100 (MethodHash=40d73b69) for method Internal.TypeSystem.LockFreeReaderHashtableOfPointers`2[System.__Canon,System.Runtime.InteropServices.GCHandle]:WaitForSentinelInHashtableToDisappear(long[],int):long (FullOpts)
+; Total bytes of code 104, prolog size 20, PerfScore 85.00, instruction count 26, allocated bytes for code 104 (MethodHash=40d73b69) for method Internal.TypeSystem.LockFreeReaderHashtableOfPointers`2[System.__Canon,System.Runtime.InteropServices.GCHandle]:WaitForSentinelInHashtableToDisappear(long[],int):long (FullOpts)
; ============================================================ Cfi Info:

+4 (+4.00%) : 8586.dasm - Internal.TypeSystem.LockFreeReaderHashtableOfPointers`2[Internal.TypeSystem.TypeSystemContext+FunctionPointerTypeKey,System.RuntimeTypeHandle]:WaitForSentinelInHashtableToDisappear(long[],int):long (FullOpts)

@@ -14,9 +14,9 @@ ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp" ; V06 tmp2 [V06 ] ( 1, 4 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V02._count (fldOffset=0x0)" P-DEP
-; V07 cse0 [V07,T03] ( 2, 9 ) long -> x22 hoist "CSE - aggressive" -; V08 cse1 [V08,T04] ( 2, 9 ) int -> x20 hoist "CSE - aggressive" -; V09 cse2 [V09,T02] ( 2, 9 ) byref -> x21 hoist "CSE - aggressive"
+; V07 cse0 [V07,T03] ( 2, 9 ) int -> x20 hoist "CSE - aggressive" +; V08 cse1 [V08,T02] ( 2, 9 ) byref -> x21 hoist "CSE - aggressive" +; V09 cse2 [V09,T04] ( 2, 9 ) long -> x22 hoist "CSE - aggressive"
; ; Lcl frame size = 16 @@ -33,19 +33,20 @@ G_M40860_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldr w20, [x0, #0x08] add x21, x0, #16 ; byrRegs +[x21]
- ubfiz x22, x19, #3, #32 - ;; size=12 bbWeight=1 PerfScore 4.50
+ mov w22, w19 + ;; size=12 bbWeight=1 PerfScore 4.00
G_M40860_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz ; gcrRegs -[x0] cmp w19, w20 bhs G_M40860_IG06
- add x0, x21, x22
+ lsl x0, x22, #3 + add x0, x21, x0
; byrRegs +[x0] ldar x0, [x0] ; byrRegs -[x0] cmp x0, #1 bne G_M40860_IG05
- ;; size=24 bbWeight=8 PerfScore 52.00
+ ;; size=28 bbWeight=8 PerfScore 60.00
G_M40860_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref add x0, fp, #24 // [V02 loc0] mov w1, #20 @@ -64,7 +65,7 @@ G_M40860_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 100, prolog size 20, PerfScore 77.50, instruction count 25, allocated bytes for code 100 (MethodHash=64456063) for method Internal.TypeSystem.LockFreeReaderHashtableOfPointers`2[Internal.TypeSystem.TypeSystemContext+FunctionPointerTypeKey,System.RuntimeTypeHandle]:WaitForSentinelInHashtableToDisappear(long[],int):long (FullOpts)
+; Total bytes of code 104, prolog size 20, PerfScore 85.00, instruction count 26, allocated bytes for code 104 (MethodHash=64456063) for method Internal.TypeSystem.LockFreeReaderHashtableOfPointers`2[Internal.TypeSystem.TypeSystemContext+FunctionPointerTypeKey,System.RuntimeTypeHandle]:WaitForSentinelInHashtableToDisappear(long[],int):long (FullOpts)
; ============================================================ Cfi Info:

+20 (+5.00%) : 3890.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)

@@ -8,35 +8,36 @@ ; Final local variable assignments ; ; V00 this [V00,T04] ( 11, 7 ) byref -> x19 this single-def
-; V01 arg1 [V01,T06] ( 5, 3.50) int -> x1 single-def -; V02 loc0 [V02,T16] ( 3, 2.50) int -> x0
+; V01 arg1 [V01,T07] ( 5, 3.50) int -> x1 single-def +; V02 loc0 [V02,T17] ( 3, 2.50) int -> x0
; V03 loc1 [V03,T15] ( 5, 2.50) int -> x21
-; V04 loc2 [V04,T11] ( 5, 4 ) int -> x20 ld-addr-op -; V05 loc3 [V05,T00] ( 11, 29.50) int -> x22 -; V06 loc4 [V06,T01] ( 14, 22 ) int -> x23 -; V07 loc5 [V07,T18] ( 2, 1 ) int -> x0 -; V08 loc6 [V08,T09] ( 4, 5 ) int -> x1 -; V09 loc7 [V09,T03] ( 4, 10.50) int -> x2 -; V10 loc8 [V10,T05] ( 3, 6.50) int -> x3
+; V04 loc2 [V04,T16] ( 5, 2.50) int -> x20 ld-addr-op +; V05 loc3 [V05,T00] ( 13, 34.50) int -> x22 +; V06 loc4 [V06,T01] ( 14, 28 ) int -> x23 +; V07 loc5 [V07,T19] ( 2, 1 ) int -> x0 +; V08 loc6 [V08,T05] ( 4, 9 ) int -> x1 +; V09 loc7 [V09,T03] ( 6, 13.50) int -> x2 +; V10 loc8 [V10,T06] ( 4, 9 ) int -> x3
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp3 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V15 tmp4 [V15 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V16 tmp5 [V16,T07] ( 5, 5 ) long -> [fp+0x18] "Inlining Arg"
+; V16 tmp5 [V16,T09] ( 5, 5 ) long -> [fp+0x18] "Inlining Arg"
;* V17 tmp6 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V18 tmp7 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp8 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp9 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V21 tmp10 [V21 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V22 tmp11 [V22,T08] ( 5, 5 ) long -> [fp+0x10] spill-single-def "Inlining Arg"
+; V22 tmp11 [V22,T10] ( 5, 5 ) long -> [fp+0x10] spill-single-def "Inlining Arg"
;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V24 tmp13 [V24,T13] ( 3, 3 ) long -> x0 "Cast away GC" ; V25 tmp14 [V25,T14] ( 3, 3 ) long -> x0 "Cast away GC"
-; V26 cse0 [V26,T17] ( 3, 1.50) int -> x0 "CSE - moderate" -; V27 cse1 [V27,T02] ( 12, 18 ) byref -> x24 hoist multi-def "CSE - aggressive" -; V28 cse2 [V28,T10] ( 2, 4.50) int -> x0 hoist "CSE - aggressive" -; V29 cse3 [V29,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
+; V26 cse0 [V26,T18] ( 3, 1.50) int -> x0 "CSE - moderate" +; V27 cse1 [V27,T02] ( 13, 20.50) byref -> x24 hoist multi-def "CSE - aggressive" +; V28 cse2 [V28,T11] ( 3, 5 ) int -> x0 "CSE - aggressive" +; V29 cse3 [V29,T08] ( 4, 5.50) int -> x4 hoist multi-def "CSE - aggressive" +; V30 cse4 [V30,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
; ; Lcl frame size = 16 @@ -138,7 +139,7 @@ G_M38441_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=28 bbWeight=0.50 PerfScore 2.25
-G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add w0, w23, #1 str w0, [x19] neg w0, w20 @@ -146,47 +147,50 @@ G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, mov w1, wzr add x24, x19, #4 ; byrRegs +[x24]
+ ldr w2, [x24, w22, SXTW #2]
and w0, w0, #31
- b G_M38441_IG13 - ;; size=32 bbWeight=0.50 PerfScore 2.50 -G_M38441_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ lsr w3, w2, w0 + cmp w22, #0 + ble G_M38441_IG13 + and w4, w20, #31 + ;; size=48 bbWeight=0.50 PerfScore 4.75 +G_M38441_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
orr w1, w1, w3 str w1, [x24, w23, SXTW #2]
- lsl w1, w2, w20
+ lsl w1, w2, w4
sub w22, w22, #1 sub w23, w23, #1
- ;; size=20 bbWeight=2 PerfScore 6.00 -G_M38441_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w2, [x24, w22, SXTW #2] lsr w3, w2, w0 cmp w22, #0 bgt G_M38441_IG12
- ;; size=16 bbWeight=4 PerfScore 20.00 -G_M38441_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3 - str w0, [x24, w23, SXTW #2]
+ ;; size=36 bbWeight=4 PerfScore 32.00 +G_M38441_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w4, w1, w3 + str w4, [x24, w23, SXTW #2]
sub w0, w23, #1
- lsl w1, w2, w20
+ and w4, w20, #31 + lsl w1, w2, w4
str w1, [x24, w0, SXTW #2] mov x0, x24 lsl w1, w21, #2 mov w1, w1 str x1, [fp, #0x10] // [V22 tmp11]
- cbz x1, G_M38441_IG16
+ cbz x1, G_M38441_IG15
cmp x1, #0xD1FFAB1E
- bhi G_M38441_IG15
+ bhi G_M38441_IG14
mov w1, wzr ldr w2, [fp, #0x10] // [V22 tmp11] bl CORINFO_HELP_MEMSET ; gcr arg pop 0
- b G_M38441_IG16 - ;; size=64 bbWeight=0.50 PerfScore 6.75 -G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ b G_M38441_IG15 + ;; size=68 bbWeight=0.50 PerfScore 7.00 +G_M38441_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
ldr x1, [fp, #0x10] // [V22 tmp11] bl <unknown method> ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M38441_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w0, [x19] sub w0, w0, #1 ldr w1, [x24, w0, SXTW #2] @@ -195,7 +199,7 @@ G_M38441_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 b G_M38441_IG04 ;; size=24 bbWeight=0.50 PerfScore 4.75
-; Total bytes of code 400, prolog size 24, PerfScore 102.25, instruction count 100, allocated bytes for code 400 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
+; Total bytes of code 420, prolog size 24, PerfScore 110.75, instruction count 105, allocated bytes for code 420 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (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 509 307 58 144 -3,796 +512
benchmarks.run_pgo.linux.arm64.checked.mch 2,609 1,950 182 477 -20,952 +1,096
benchmarks.run_tiered.linux.arm64.checked.mch 688 571 33 84 -6,384 +300
coreclr_tests.run.linux.arm64.checked.mch 6,008 4,516 200 1,292 -32,468 +2,768
libraries.crossgen2.linux.arm64.checked.mch 1,797 1,171 118 508 -12,384 +1,172
libraries.pmi.linux.arm64.checked.mch 1,873 1,223 142 508 -12,556 +3,884
libraries_tests.run.linux.arm64.Release.mch 15,454 12,653 356 2,445 -154,760 +4,148
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 2,709 1,770 133 806 -17,192 +1,212
realworld.run.linux.arm64.checked.mch 535 355 42 138 -4,008 +628
smoke_tests.nativeaot.linux.arm64.checked.mch 368 250 32 86 -1,960 +260
32,550 24,766 1,296 6,488 -266,460 +15,980

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,148 382,318 242,830 128 (0.02%) 128 (0.02%)
libraries.crossgen2.linux.arm64.checked.mch 234,494 15 234,479 0 (0.00%) 2 (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,882 1,007,092 1,498,790 1,433 (0.06%) 1,436 (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: 15541948 (overridden on cmd)
Total bytes of delta: -3284 (-0.02 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          72 : 10235.dasm (0.86 % of base)
          52 : 5681.dasm (5.22 % of base)
          36 : 28548.dasm (3.56 % of base)
          28 : 12252.dasm (1.56 % of base)
          20 : 945.dasm (4.24 % of base)
          20 : 3596.dasm (2.26 % of base)
          16 : 30836.dasm (2.33 % of base)
          12 : 12334.dasm (0.94 % of base)
          12 : 6607.dasm (1.19 % of base)
           8 : 13646.dasm (0.62 % of base)
           8 : 15666.dasm (1.18 % of base)
           8 : 18301.dasm (0.80 % of base)
           8 : 18378.dasm (2.11 % of base)
           8 : 23720.dasm (0.62 % of base)
           8 : 33370.dasm (4.55 % of base)
           8 : 1714.dasm (0.77 % of base)
           8 : 18377.dasm (2.25 % of base)
           8 : 32870.dasm (1.09 % of base)
           8 : 33655.dasm (1.96 % of base)
           8 : 33656.dasm (1.96 % of base)

Top file improvements (bytes):
        -168 : 28639.dasm (-1.55 % of base)
        -168 : 19297.dasm (-1.86 % of base)
        -104 : 18975.dasm (-3.33 % of base)
        -100 : 2276.dasm (-0.98 % of base)
        -100 : 28338.dasm (-6.23 % of base)
         -88 : 25101.dasm (-5.38 % of base)
         -76 : 1836.dasm (-4.05 % of base)
         -72 : 6541.dasm (-2.05 % of base)
         -68 : 11253.dasm (-0.21 % of base)
         -68 : 3113.dasm (-3.45 % of base)
         -64 : 18974.dasm (-5.05 % of base)
         -64 : 22663.dasm (-19.51 % of base)
         -56 : 20208.dasm (-1.33 % of base)
         -56 : 28124.dasm (-3.02 % of base)
         -52 : 7135.dasm (-1.43 % of base)
         -48 : 1864.dasm (-4.17 % of base)
         -48 : 15729.dasm (-4.18 % of base)
         -44 : 24387.dasm (-0.12 % of base)
         -40 : 27787.dasm (-7.94 % of base)
         -36 : 645.dasm (-3.42 % of base)

73 total files with Code Size differences (44 improved, 29 regressed), 20 unchanged.

Top method regressions (bytes):
          72 (0.86 % 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)
          52 (5.22 % of base) : 5681.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          36 (3.56 % of base) : 28548.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          28 (1.56 % of base) : 12252.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          20 (2.26 % of base) : 3596.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Span`1[System.__Canon]):int (FullOpts)
          20 (4.24 % of base) : 945.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
          16 (2.33 % of base) : 30836.dasm - SciMark2.FFT:transform_internal(double[],int) (FullOpts)
          12 (0.94 % of base) : 12334.dasm - EMFloat:AddSubInternalFPF(ubyte,byref,byref,byref) (FullOpts)
          12 (1.19 % of base) : 6607.dasm - System.Globalization.OrdinalCasing:ToUpperOrdinal(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]) (FullOpts)
           8 (4.55 % of base) : 33370.dasm - BenchmarksGame.ReverseComplement_1:InitComplements() (FullOpts)
           8 (1.96 % of base) : 33656.dasm - BenchmarksGame.SpectralNorm_1:MultiplyAtv(int,double[],double[]):this (FullOpts)
           8 (1.96 % of base) : 33655.dasm - BenchmarksGame.SpectralNorm_1:MultiplyAv(int,double[],double[]):this (FullOpts)
           8 (0.62 % of base) : 23720.dasm - Benchstone.BenchF.MatInv4:MinV1(float[],byref,byref,float[],float[]) (FullOpts)
           8 (1.09 % of base) : 32870.dasm - Burgers:GetCalculated3(int,int,double,double,double,double[]):double[] (FullOpts)
           8 (0.62 % of base) : 13646.dasm - EMFloatClass:AddSubInternalFPF(ubyte,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF) (FullOpts)
           8 (0.80 % of base) : 18301.dasm - IDEAEncryption:de_key_idea(ushort[],ushort[]) (FullOpts)
           8 (2.11 % of base) : 18378.dasm - NeuralJagged:adjust_mid_wts(int) (FullOpts)
           8 (2.25 % of base) : 18377.dasm - NeuralJagged:adjust_out_wts() (FullOpts)
           8 (0.77 % of base) : 1714.dasm - System.Collections.Frozen.FrozenHashTable:CalcNumBuckets(System.ReadOnlySpan`1[int],ubyte):int (FullOpts)
           8 (1.18 % of base) : 15666.dasm - System.Text.Json.JsonCamelCaseNamingPolicy:FixCasing(System.Span`1[ushort]) (FullOpts)

Top method improvements (bytes):
        -168 (-1.86 % of base) : 19297.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
        -168 (-1.55 % of base) : 28639.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
        -104 (-3.33 % of base) : 18975.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
        -100 (-6.23 % of base) : 28338.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (FullOpts)
        -100 (-0.98 % of base) : 2276.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         -88 (-5.38 % of base) : 25101.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (FullOpts)
         -76 (-4.05 % of base) : 1836.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -72 (-2.05 % of base) : 6541.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
         -68 (-0.21 % of base) : 11253.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
         -68 (-3.45 % of base) : 3113.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
         -64 (-5.05 % of base) : 18974.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (FullOpts)
         -64 (-19.51 % of base) : 22663.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
         -56 (-3.02 % of base) : 28124.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (FullOpts)
         -56 (-1.33 % of base) : 20208.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -52 (-1.43 % of base) : 7135.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -48 (-4.18 % of base) : 15729.dasm - AssignJagged:first_assignments(int[][],short[][]):int (FullOpts)
         -48 (-4.17 % of base) : 1864.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)
         -44 (-0.12 % of base) : 24387.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
         -40 (-7.94 % of base) : 27787.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (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)

Top method regressions (percentages):
          52 (5.22 % of base) : 5681.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
           8 (4.55 % of base) : 33370.dasm - BenchmarksGame.ReverseComplement_1:InitComplements() (FullOpts)
          20 (4.24 % of base) : 945.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
           4 (3.57 % of base) : 12157.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (FullOpts)
          36 (3.56 % of base) : 28548.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
           4 (3.03 % of base) : 23145.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder:ToArray():Microsoft.CodeAnalysis.GreenNode[]:this (FullOpts)
           4 (2.70 % of base) : 28680.dasm - BenchmarksGame.Fasta_2:SelectRandom(BenchmarksGame.Fasta_2+Frequency[]):ubyte (FullOpts)
          16 (2.33 % of base) : 30836.dasm - SciMark2.FFT:transform_internal(double[],int) (FullOpts)
          20 (2.26 % of base) : 3596.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Span`1[System.__Canon]):int (FullOpts)
           8 (2.25 % of base) : 18377.dasm - NeuralJagged:adjust_out_wts() (FullOpts)
           8 (2.11 % of base) : 18378.dasm - NeuralJagged:adjust_mid_wts(int) (FullOpts)
           8 (1.96 % of base) : 33656.dasm - BenchmarksGame.SpectralNorm_1:MultiplyAtv(int,double[],double[]):this (FullOpts)
           8 (1.96 % of base) : 33655.dasm - BenchmarksGame.SpectralNorm_1:MultiplyAv(int,double[],double[]):this (FullOpts)
           4 (1.85 % of base) : 23146.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList:List(Microsoft.CodeAnalysis.GreenNode[],int):Microsoft.CodeAnalysis.GreenNode (FullOpts)
           4 (1.85 % of base) : 13362.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,int]:SwapIfGreaterWithValues(System.Span`1[int],System.Span`1[int],int,int) (FullOpts)
           4 (1.72 % of base) : 17528.dasm - System.Number+BigInteger:Add(uint):this (FullOpts)
           4 (1.61 % of base) : 3193.dasm - System.UInt128:<op_Division>g__SubtractDivisor|111_3(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (FullOpts)
          28 (1.56 % of base) : 12252.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
           4 (1.52 % of base) : 12985.dasm - System.SpanHelpers:SequenceCompareTo[int](byref,int,byref,int):int (FullOpts)
           4 (1.52 % of base) : 10237.dasm - System.Text.RegularExpressions.Symbolic.CharSetSolver:CreateBDDFromChar(ushort):System.Text.RegularExpressions.Symbolic.BDD:this (FullOpts)

Top method improvements (percentages):
         -64 (-19.51 % of base) : 22663.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
          -8 (-8.70 % of base) : 6045.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
         -40 (-7.94 % of base) : 27787.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (FullOpts)
        -100 (-6.23 % of base) : 28338.dasm - Benchstone.BenchF.Romber:Test():ubyte: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)
         -16 (-5.56 % of base) : 18925.dasm - Benchstone.BenchI.NDhrystone:Proc8(int[],int[][],int,int) (FullOpts)
         -88 (-5.38 % of base) : 25101.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (FullOpts)
         -12 (-5.08 % of base) : 13208.dasm - System.Numerics.Tests.Perf_VectorOf`1[uint]:SquareRootBenchmark():System.Numerics.Vector`1[uint]:this (FullOpts)
         -64 (-5.05 % of base) : 18974.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (FullOpts)
          -8 (-5.00 % of base) : 15726.dasm - AssignJagged:CopyToAssign(int[][],int[][]) (FullOpts)
          -8 (-4.88 % of base) : 33110.dasm - NumericSortJagged:NumSift(int[],int,int) (FullOpts)
         -16 (-4.76 % of base) : 7176.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:HasCallbacks(int):ubyte:this (FullOpts)
          -4 (-4.76 % of base) : 22878.dasm - System.Collections.IndexerSet`1[System.__Canon]:Array():System.__Canon[]:this (FullOpts)
         -12 (-4.69 % of base) : 1287.dasm - System.Linq.OrderedEnumerable`1[double]:Fill(double[],System.Span`1[double]):this (FullOpts)
          -8 (-4.65 % of base) : 19438.dasm - System.Net.MultiArrayBuffer:Dispose():this (FullOpts)
          -4 (-4.55 % of base) : 16408.dasm - System.Collections.IndexerSetReverse`1[System.__Canon]:Array():System.__Canon[]:this (FullOpts)
          -8 (-4.55 % of base) : 29425.dasm - System.Globalization.GregorianCalendarHelper:get_Eras():int[]:this (FullOpts)
         -16 (-4.44 % of base) : 19129.dasm - System.Boolean:TrimWhiteSpaceAndNull(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
          -8 (-4.35 % of base) : 23001.dasm - Benchstone.BenchI.Puzzle:Fit(int,int):ubyte:this (FullOpts)
         -48 (-4.18 % of base) : 15729.dasm - AssignJagged:first_assignments(int[][],short[][]):int (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: 79716040 (overridden on cmd)
Total bytes of delta: -19856 (-0.02 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          68 : 117890.dasm (0.60 % of base)
          36 : 38915.dasm (2.00 % of base)
          32 : 36379.dasm (7.14 % of base)
          24 : 64456.dasm (1.34 % of base)
          24 : 64470.dasm (1.34 % of base)
          20 : 150043.dasm (1.28 % of base)
          16 : 134275.dasm (2.48 % of base)
          16 : 134257.dasm (2.50 % of base)
          16 : 134277.dasm (2.33 % of base)
          12 : 52318.dasm (2.40 % of base)
          12 : 50192.dasm (2.40 % of base)
          12 : 67422.dasm (2.40 % of base)
          12 : 78120.dasm (2.40 % of base)
          12 : 9695.dasm (2.13 % of base)
          12 : 101875.dasm (2.40 % of base)
          12 : 90486.dasm (0.93 % of base)
          12 : 23858.dasm (2.40 % of base)
          12 : 40856.dasm (2.40 % of base)
          12 : 88711.dasm (0.90 % of base)
           8 : 122576.dasm (1.08 % of base)

Top file improvements (bytes):
        -340 : 71882.dasm (-5.46 % of base)
        -204 : 143670.dasm (-10.83 % of base)
        -184 : 143669.dasm (-7.72 % of base)
        -164 : 117889.dasm (-1.51 % of base)
        -164 : 88715.dasm (-1.82 % of base)
        -128 : 91245.dasm (-2.13 % of base)
        -128 : 55350.dasm (-5.39 % of base)
        -116 : 113714.dasm (-6.58 % of base)
        -112 : 152197.dasm (-3.16 % of base)
        -112 : 49308.dasm (-3.98 % of base)
        -112 : 115275.dasm (-3.87 % of base)
        -112 : 144681.dasm (-3.16 % of base)
        -112 : 71884.dasm (-4.38 % of base)
        -108 : 128830.dasm (-3.21 % of base)
        -108 : 88192.dasm (-3.21 % of base)
        -108 : 91108.dasm (-3.21 % of base)
        -108 : 46770.dasm (-3.42 % of base)
        -108 : 72540.dasm (-3.21 % of base)
         -92 : 71875.dasm (-2.84 % of base)
         -80 : 117873.dasm (-0.70 % of base)

72 total files with Code Size differences (44 improved, 28 regressed), 20 unchanged.

Top method regressions (bytes):
          68 (0.60 % of base) : 117890.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
          36 (2.00 % of base) : 38915.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
          32 (7.14 % of base) : 36379.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          24 (1.34 % of base) : 64456.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
          24 (1.34 % of base) : 64470.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
          20 (1.28 % of base) : 150043.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1)
          16 (2.33 % of base) : 134277.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1)
          16 (2.48 % of base) : 134275.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1-OSR)
          16 (2.50 % of base) : 134257.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1-OSR)
          12 (0.90 % of base) : 88711.dasm - Benchstone.BenchF.LLoops:Init():this (Tier1-OSR)
          12 (2.40 % of base) : 52318.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.40 % of base) : 50192.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.40 % of base) : 67422.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.40 % of base) : 78120.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.13 % of base) : 9695.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.40 % of base) : 101875.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (0.93 % of base) : 90486.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.40 % of base) : 23858.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.40 % of base) : 40856.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
           8 (1.08 % of base) : 122576.dasm - Benchstone.BenchF.SqMtx:Inner(double[][],double[][],int) (Tier1)

Top method improvements (bytes):
        -340 (-5.46 % of base) : 71882.dasm - LUDecomp:Run():double:this (Tier1)
        -204 (-10.83 % of base) : 143670.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
        -184 (-7.72 % of base) : 143669.dasm - NumericSortJagged:Run():double:this (Tier1)
        -164 (-1.82 % of base) : 88715.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
        -164 (-1.51 % of base) : 117889.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
        -128 (-5.39 % of base) : 55350.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
        -128 (-2.13 % of base) : 91245.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
        -116 (-6.58 % of base) : 113714.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (Tier1-OSR)
        -112 (-4.38 % of base) : 71884.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (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.16 % of base) : 144681.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.42 % of base) : 46770.dasm - EMFloatClass:SetupCPUEmFloatArrays(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int) (Tier1-OSR)
        -108 (-3.21 % of base) : 128830.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) : 72540.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
         -92 (-2.84 % of base) : 71875.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
         -80 (-0.70 % of base) : 117873.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)

Top method regressions (percentages):
          32 (7.14 % of base) : 36379.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
           4 (3.57 % of base) : 130948.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
           4 (2.50 % of base) : 143640.dasm - NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
           4 (2.50 % of base) : 143667.dasm - NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
          16 (2.50 % of base) : 134257.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1-OSR)
           4 (2.50 % of base) : 130862.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1-OSR)
           4 (2.50 % of base) : 146078.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1-OSR)
           4 (2.50 % of base) : 40566.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1-OSR)
           4 (2.50 % of base) : 130904.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1-OSR)
          16 (2.48 % of base) : 134275.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1-OSR)
          12 (2.40 % of base) : 52318.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.40 % of base) : 50192.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.40 % of base) : 67422.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.40 % of base) : 78120.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.40 % of base) : 101875.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.40 % of base) : 23858.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.40 % of base) : 40856.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          16 (2.33 % of base) : 134277.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1)
           8 (2.25 % of base) : 65892.dasm - NeuralJagged:adjust_out_wts() (Tier1)
          12 (2.13 % of base) : 9695.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)

Top method improvements (percentages):
         -40 (-10.99 % of base) : 110250.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
        -204 (-10.83 % of base) : 143670.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
         -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)
         -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)
        -184 (-7.72 % of base) : 143669.dasm - NumericSortJagged:Run():double:this (Tier1)
         -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)
         -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)
        -116 (-6.58 % of base) : 113714.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (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)
         -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)
        -340 (-5.46 % of base) : 71882.dasm - LUDecomp:Run():double:this (Tier1)
         -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)
        -128 (-5.39 % of base) : 55350.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
         -28 (-5.22 % of base) : 42020.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (Instrumented Tier0)
         -28 (-5.22 % of base) : 42034.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (Instrumented Tier0)
          -8 (-5.00 % of base) : 55357.dasm - AssignJagged:CopyToAssign(int[][],int[][]) (Tier1)


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

Detail diffs



Top file regressions (bytes):
          52 : 31469.dasm (5.22 % of base)
          28 : 25426.dasm (1.56 % of base)
          24 : 46159.dasm (1.19 % of base)
          20 : 8432.dasm (4.24 % of base)
          16 : 56657.dasm (2.48 % of base)
          16 : 56661.dasm (2.33 % of base)
          12 : 26417.dasm (0.94 % of base)
           8 : 27119.dasm (0.62 % of base)
           8 : 20936.dasm (0.80 % of base)
           8 : 61096.dasm (1.39 % of base)
           8 : 33179.dasm (0.80 % of base)
           8 : 33434.dasm (2.25 % of base)
           8 : 33435.dasm (2.11 % of base)
           8 : 62189.dasm (0.87 % of base)
           4 : 29075.dasm (0.63 % of base)
           4 : 36326.dasm (1.32 % of base)
           4 : 61730.dasm (2.50 % of base)
           4 : 24771.dasm (2.08 % of base)
           4 : 26720.dasm (2.50 % of base)
           4 : 27115.dasm (0.32 % of base)

Top file improvements (bytes):
        -168 : 53971.dasm (-1.55 % of base)
        -168 : 36312.dasm (-1.86 % of base)
        -128 : 35208.dasm (-4.40 % of base)
        -112 : 53549.dasm (-4.83 % of base)
        -112 : 28079.dasm (-3.98 % of base)
        -104 : 35211.dasm (-3.33 % of base)
        -100 : 45769.dasm (-0.98 % of base)
         -96 : 52795.dasm (-5.48 % of base)
         -76 : 6290.dasm (-4.05 % of base)
         -68 : 23460.dasm (-0.21 % of base)
         -68 : 4220.dasm (-0.82 % of base)
         -64 : 35215.dasm (-5.05 % of base)
         -60 : 29066.dasm (-4.98 % of base)
         -56 : 48806.dasm (-3.74 % of base)
         -56 : 43271.dasm (-1.35 % of base)
         -52 : 50546.dasm (-3.23 % of base)
         -52 : 6708.dasm (-4.26 % of base)
         -52 : 17223.dasm (-1.40 % of base)
         -52 : 52372.dasm (-2.56 % of base)
         -52 : 62050.dasm (-3.28 % of base)

76 total files with Code Size differences (50 improved, 26 regressed), 20 unchanged.

Top method regressions (bytes):
          52 (5.22 % of base) : 31469.dasm - System.Uri:CreateUriInfo(ulong):this (Tier1)
          28 (1.56 % of base) : 25426.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
          24 (1.19 % of base) : 46159.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1-OSR)
          20 (4.24 % of base) : 8432.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          16 (2.33 % of base) : 56661.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1)
          16 (2.48 % of base) : 56657.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1-OSR)
          12 (0.94 % of base) : 26417.dasm - EMFloat:AddSubInternalFPF(ubyte,byref,byref,byref) (Tier1)
           8 (1.39 % of base) : 61096.dasm - Burgers:GetCalculated3(int,int,double,double,double,double[]):double[] (Tier1-OSR)
           8 (0.62 % of base) : 27119.dasm - EMFloatClass:AddSubInternalFPF(ubyte,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF) (Tier1)
           8 (0.80 % of base) : 33179.dasm - IDEAEncryption:de_key_idea(ushort[],ushort[]) (Tier1)
           8 (2.11 % of base) : 33435.dasm - NeuralJagged:adjust_mid_wts(int) (Tier1)
           8 (2.25 % of base) : 33434.dasm - NeuralJagged:adjust_out_wts() (Tier1)
           8 (0.87 % of base) : 62189.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
           8 (0.80 % of base) : 20936.dasm - System.Collections.Frozen.FrozenHashTable:CalcNumBuckets(System.ReadOnlySpan`1[int],ubyte):int (Tier1-OSR)
           4 (0.63 % of base) : 29075.dasm - AssignJagged:Run():double:this (Tier1)
           4 (1.32 % of base) : 36326.dasm - Benchstone.BenchI.Pi:ComputePi(int[]):int[] (Tier1-OSR)
           4 (0.32 % of base) : 27115.dasm - EMFloatClass:DivideInternalFPF(EMFloatClass+InternalFPF,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF) (Tier1)
           4 (2.50 % of base) : 61730.dasm - NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
           4 (0.26 % of base) : 62192.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1)
           4 (0.54 % of base) : 58783.dasm - System.Globalization.OrdinalCasing:ToUpperOrdinal(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]) (Tier1)

Top method improvements (bytes):
        -168 (-1.86 % of base) : 36312.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
        -168 (-1.55 % of base) : 53971.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
        -128 (-4.40 % of base) : 35208.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
        -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)
        -104 (-3.33 % of base) : 35211.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
        -100 (-0.98 % of base) : 45769.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         -96 (-5.48 % of base) : 52795.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (Tier1-OSR)
         -76 (-4.05 % of base) : 6290.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
         -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)
         -64 (-5.05 % of base) : 35215.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
         -60 (-4.98 % of base) : 29066.dasm - AssignJagged:first_assignments(int[][],short[][]):int (Tier1-OSR)
         -56 (-3.74 % of base) : 48806.dasm - Benchstone.BenchF.MatInv4:MinV2(float[],byref,byref,float[],float[]) (Tier1-OSR)
         -56 (-1.35 % of base) : 43271.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
         -52 (-1.40 % of base) : 17223.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier0-FullOpts)
         -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)

Top method regressions (percentages):
          52 (5.22 % of base) : 31469.dasm - System.Uri:CreateUriInfo(ulong):this (Tier1)
          20 (4.24 % of base) : 8432.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
           4 (3.57 % of base) : 55012.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
           4 (2.50 % of base) : 61730.dasm - NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
           4 (2.50 % of base) : 26720.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1-OSR)
          16 (2.48 % of base) : 56657.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1-OSR)
          16 (2.33 % of base) : 56661.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1)
           8 (2.25 % of base) : 33434.dasm - NeuralJagged:adjust_out_wts() (Tier1)
           8 (2.11 % of base) : 33435.dasm - NeuralJagged:adjust_mid_wts(int) (Tier1)
           4 (2.08 % of base) : 24771.dasm - System.Text.RegularExpressions.Symbolic.CharSetSolver:CreateBDDFromChar(ushort):System.Text.RegularExpressions.Symbolic.BDD:this (Tier1)
           4 (1.61 % of base) : 8650.dasm - System.UInt128:<op_Division>g__SubtractDivisor|111_3(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
          28 (1.56 % of base) : 25426.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
           8 (1.39 % of base) : 61096.dasm - Burgers:GetCalculated3(int,int,double,double,double,double[]):double[] (Tier1-OSR)
           4 (1.32 % of base) : 36326.dasm - Benchstone.BenchI.Pi:ComputePi(int[]):int[] (Tier1-OSR)
          24 (1.19 % of base) : 46159.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1-OSR)
           4 (1.05 % of base) : 9118.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:CreateEntryNoResize(System.__Canon,System.__Canon):this (Tier1)
           4 (1.02 % of base) : 7073.dasm - System.Random+CompatPrng:Initialize(int):this (Tier1)
          12 (0.94 % of base) : 26417.dasm - EMFloat:AddSubInternalFPF(ubyte,byref,byref,byref) (Tier1)
           8 (0.87 % of base) : 62189.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
           8 (0.80 % of base) : 33179.dasm - IDEAEncryption:de_key_idea(ushort[],ushort[]) (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)
         -36 (-9.57 % of base) : 51657.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
         -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)
         -16 (-5.56 % of base) : 34251.dasm - Benchstone.BenchI.NDhrystone:Proc8(int[],int[][],int,int) (Tier1)
         -24 (-5.56 % of base) : 2518.dasm - System.Collections.Generic.ArraySortHelper`1[int]:InsertionSort(System.Span`1[int],System.Comparison`1[int]) (Tier0)
         -96 (-5.48 % of base) : 52795.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (Tier1-OSR)
         -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)
         -20 (-5.21 % of base) : 51655.dasm - Benchstone.BenchI.XposMatrix:Test():ubyte:this (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)
         -64 (-5.05 % of base) : 35215.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
          -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)


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: 508527192 (overridden on cmd)
Total bytes of diff: 508497492 (overridden on cmd)
Total bytes of delta: -29700 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         268 : 152119.dasm (71.28 % of base)
         268 : 155789.dasm (71.28 % of base)
         232 : 175162.dasm (54.72 % of base)
          60 : 24990.dasm (5.77 % of base)
          60 : 318672.dasm (8.72 % of base)
          36 : 323465.dasm (8.49 % of base)
          36 : 494810.dasm (8.49 % of base)
          28 : 609020.dasm (6.60 % of base)
          28 : 237128.dasm (3.93 % of base)
          28 : 316911.dasm (1.64 % of base)
          24 : 236437.dasm (3.68 % of base)
          20 : 589392.dasm (4.72 % of base)
          20 : 601339.dasm (4.72 % of base)
          20 : 540924.dasm (4.72 % of base)
          20 : 600392.dasm (4.72 % of base)
          20 : 450244.dasm (4.72 % of base)
          20 : 523760.dasm (4.72 % of base)
          20 : 525180.dasm (4.72 % of base)
          20 : 623159.dasm (4.72 % of base)
          20 : 402672.dasm (4.72 % of base)

Top file improvements (bytes):
        -332 : 466656.dasm (-5.32 % of base)
        -208 : 466128.dasm (-4.19 % of base)
        -204 : 466118.dasm (-9.96 % of base)
        -168 : 203029.dasm (-1.86 % of base)
        -168 : 203087.dasm (-1.55 % of base)
        -128 : 21207.dasm (-8.12 % of base)
        -120 : 466356.dasm (-3.64 % of base)
        -112 : 466649.dasm (-4.38 % of base)
        -104 : 201577.dasm (-3.33 % of base)
         -92 : 185409.dasm (-3.10 % of base)
         -92 : 466647.dasm (-2.84 % of base)
         -84 : 611873.dasm (-0.75 % of base)
         -76 : 203357.dasm (-4.92 % of base)
         -64 : 201576.dasm (-5.05 % of base)
         -64 : 617571.dasm (-0.58 % of base)
         -64 : 466382.dasm (-2.81 % of base)
         -60 : 312821.dasm (-7.94 % of base)
         -56 : 614215.dasm (-1.44 % of base)
         -56 : 618061.dasm (-1.44 % of base)
         -56 : 342035.dasm (-2.90 % of base)

78 total files with Code Size differences (55 improved, 23 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)
          60 (8.72 % of base) : 318672.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Instrumented Tier1)
          60 (5.77 % of base) : 24990.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          36 (8.49 % of base) : 323465.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          36 (8.49 % of base) : 494810.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          28 (3.93 % of base) : 237128.dasm - struct1:ProcessJagged2DArray(byref) (FullOpts)
          28 (1.64 % of base) : 316911.dasm - System.IO.PathInternal:RemoveRelativeSegments(System.ReadOnlySpan`1[ushort],int,byref):ubyte (Instrumented Tier1)
          28 (6.60 % of base) : 609020.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          24 (3.68 % of base) : 236437.dasm - class1:ProcessJagged2DArray(byref) (FullOpts)
          20 (4.72 % of base) : 589392.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 601339.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 540924.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 600392.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 450244.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 523760.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 525180.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 623159.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 402672.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

Top method improvements (bytes):
        -332 (-5.32 % of base) : 466656.dasm - LUDecomp:Run():double:this (Tier1)
        -208 (-4.19 % of base) : 466128.dasm - NumericSortJagged:Run():double:this (Tier1)
        -204 (-9.96 % of base) : 466118.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
        -168 (-1.86 % of base) : 203029.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
        -168 (-1.55 % of base) : 203087.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
        -128 (-8.12 % of base) : 21207.dasm - Simple_Array_Test:TestEntryPoint():int (FullOpts)
        -120 (-3.64 % of base) : 466356.dasm - EMFloatClass:SetupCPUEmFloatArrays(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int) (Tier1)
        -112 (-4.38 % of base) : 466649.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
        -104 (-3.33 % of base) : 201577.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
         -92 (-2.84 % of base) : 466647.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
         -92 (-3.10 % of base) : 185409.dasm - Test:TestEntryPoint():int (FullOpts)
         -84 (-0.75 % of base) : 611873.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (Tier1)
         -76 (-4.92 % of base) : 203357.dasm - Benchstone.BenchF.Romber:Bench():ubyte (FullOpts)
         -64 (-2.81 % of base) : 466382.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
         -64 (-0.58 % of base) : 617571.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (Tier1)
         -64 (-5.05 % of base) : 201576.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (FullOpts)
         -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)
         -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.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 (-2.90 % 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)

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)
          60 (8.72 % of base) : 318672.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Instrumented Tier1)
          36 (8.49 % of base) : 323465.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          36 (8.49 % of base) : 494810.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          28 (6.60 % of base) : 609020.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          60 (5.77 % of base) : 24990.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          20 (4.72 % of base) : 589392.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 601339.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 540924.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 600392.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 450244.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 523760.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 525180.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 623159.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 402672.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 483388.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 489492.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 495388.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

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)
         -40 (-10.99 % of base) : 480339.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
         -24 (-10.91 % of base) : 234551.dasm - System.Collections.Generic.GenericArraySortHelper`2[uint,System.__Canon]:InsertionSort(System.Span`1[uint],System.Span`1[System.__Canon]) (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)
        -204 (-9.96 % of base) : 466118.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
         -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) : 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) : 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) : 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)


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: 55834472 (overridden on cmd)
Total bytes of diff: 55823260 (overridden on cmd)
Total bytes of delta: -11212 (-0.02 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          52 : 219598.dasm (5.22 % of base)
          52 : 227309.dasm (5.22 % of base)
          40 : 219560.dasm (2.08 % of base)
          36 : 43994.dasm (8.11 % of base)
          36 : 171391.dasm (2.18 % of base)
          36 : 110674.dasm (3.36 % of base)
          32 : 105286.dasm (1.14 % of base)
          32 : 40698.dasm (5.16 % of base)
          32 : 36393.dasm (3.16 % of base)
          28 : 37478.dasm (3.57 % of base)
          24 : 140399.dasm (0.54 % of base)
          24 : 174545.dasm (1.95 % of base)
          24 : 170534.dasm (1.52 % of base)
          20 : 23133.dasm (7.14 % of base)
          20 : 23131.dasm (7.25 % of base)
          20 : 23132.dasm (7.14 % of base)
          20 : 76503.dasm (1.69 % of base)
          20 : 169529.dasm (3.03 % of base)
          20 : 23130.dasm (7.25 % of base)
          20 : 23135.dasm (7.14 % of base)

Top file improvements (bytes):
        -376 : 177457.dasm (-1.38 % of base)
        -176 : 151640.dasm (-7.12 % of base)
        -112 : 45827.dasm (-5.92 % of base)
        -100 : 152047.dasm (-2.65 % of base)
        -100 : 232154.dasm (-2.59 % of base)
         -96 : 17191.dasm (-0.89 % of base)
         -92 : 33719.dasm (-79.31 % of base)
         -92 : 33374.dasm (-79.31 % of base)
         -92 : 33603.dasm (-79.31 % of base)
         -88 : 150236.dasm (-3.29 % of base)
         -88 : 161432.dasm (-3.35 % of base)
         -84 : 17194.dasm (-3.52 % of base)
         -80 : 55436.dasm (-1.41 % of base)
         -80 : 140765.dasm (-1.12 % of base)
         -76 : 179259.dasm (-1.20 % of base)
         -72 : 173898.dasm (-2.32 % of base)
         -64 : 141103.dasm (-1.59 % of base)
         -64 : 76502.dasm (-4.02 % of base)
         -64 : 173581.dasm (-1.77 % of base)
         -64 : 36575.dasm (-16.67 % of base)

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

Top method regressions (bytes):
          52 (5.22 % of base) : 219598.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          52 (5.22 % of base) : 227309.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          40 (2.08 % of base) : 219560.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          36 (3.36 % of base) : 110674.dasm - Microsoft.Diagnostics.Tracing.StackSources.StraceStackSource:ProcessRecord(System.Text.StringBuilder):this (FullOpts)
          36 (8.11 % of base) : 43994.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel+groupByRefTypeParallel@2301-1[System.__Canon,System.__Canon]:Invoke(int):this (FullOpts)
          36 (2.18 % of base) : 171391.dasm - System.Xml.XmlTextReaderImpl:ParseNumericCharRefInline(int,ubyte,System.Text.StringBuilder,byref,byref):int:this (FullOpts)
          32 (1.14 % of base) : 105286.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousTypeTemplateSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
          32 (5.16 % of base) : 40698.dasm - Microsoft.FSharp.Core.PrintfImpl+FormatString:findNextFormatSpecifier(System.String,byref):System.String (FullOpts)
          32 (3.16 % of base) : 36393.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Span`1[System.__Canon]):int (FullOpts)
          28 (3.57 % of base) : 37478.dasm - System.Resources.ResourceReader:UseReflectionToGetType(int):System.Type:this (FullOpts)
          24 (0.54 % of base) : 140399.dasm - System.Data.ExpressionParser:Parse():System.Data.ExpressionNode:this (FullOpts)
          24 (1.95 % of base) : 174545.dasm - System.Xml.Serialization.CodeGenerator:InitILGeneration(System.Type[],System.String[],ubyte):this (FullOpts)
          24 (1.52 % of base) : 170534.dasm - System.Xml.Serialization.XmlSerializer:FromMappings(System.Xml.Serialization.XmlMapping[],System.Type):System.Xml.Serialization.XmlSerializer[] (FullOpts)
          20 (1.69 % of base) : 76503.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)
          20 (4.10 % of base) : 37361.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
          20 (7.14 % of base) : 23132.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[int],System.Runtime.Intrinsics.Vector512`1[int]):System.Runtime.Intrinsics.Vector512`1[int] (FullOpts)
          20 (7.14 % of base) : 23135.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[long],System.Runtime.Intrinsics.Vector512`1[long]):System.Runtime.Intrinsics.Vector512`1[long] (FullOpts)
          20 (7.25 % of base) : 23130.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[short],System.Runtime.Intrinsics.Vector512`1[short]):System.Runtime.Intrinsics.Vector512`1[short] (FullOpts)
          20 (7.14 % of base) : 23133.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[uint],System.Runtime.Intrinsics.Vector512`1[uint]):System.Runtime.Intrinsics.Vector512`1[uint] (FullOpts)
          20 (7.14 % of base) : 23136.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[ulong],System.Runtime.Intrinsics.Vector512`1[ulong]):System.Runtime.Intrinsics.Vector512`1[ulong] (FullOpts)

Top method improvements (bytes):
        -376 (-1.38 % 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)
        -176 (-7.12 % of base) : 151640.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
        -112 (-5.92 % 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)
        -100 (-2.65 % of base) : 152047.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:Fix(int):ubyte:this (FullOpts)
        -100 (-2.59 % of base) : 232154.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,System.__Canon]:MergeSortCooperatively():this (FullOpts)
         -96 (-0.89 % of base) : 17191.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase: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 (-3.29 % of base) : 150236.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -88 (-3.35 % of base) : 161432.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -84 (-3.52 % of base) : 17194.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -80 (-1.41 % of base) : 55436.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)
         -80 (-1.12 % of base) : 140765.dasm - System.Data.RBTree`1[int]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
         -76 (-1.20 % of base) : 179259.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
         -72 (-2.32 % of base) : 173898.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
         -64 (-4.02 % of base) : 76502.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)
         -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 (-1.77 % of base) : 173581.dasm - System.Xml.Schema.XmlSchemaValidator:EndElementIdentityConstraints(System.Object,System.String,System.Xml.Schema.XmlSchemaDatatype):this (FullOpts)

Top method regressions (percentages):
          36 (8.11 % of base) : 43994.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel+groupByRefTypeParallel@2301-1[System.__Canon,System.__Canon]:Invoke(int):this (FullOpts)
          20 (7.25 % of base) : 23130.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[short],System.Runtime.Intrinsics.Vector512`1[short]):System.Runtime.Intrinsics.Vector512`1[short] (FullOpts)
          20 (7.25 % of base) : 23131.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[ushort],System.Runtime.Intrinsics.Vector512`1[ushort]):System.Runtime.Intrinsics.Vector512`1[ushort] (FullOpts)
          20 (7.14 % of base) : 23132.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[int],System.Runtime.Intrinsics.Vector512`1[int]):System.Runtime.Intrinsics.Vector512`1[int] (FullOpts)
          20 (7.14 % of base) : 23135.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[long],System.Runtime.Intrinsics.Vector512`1[long]):System.Runtime.Intrinsics.Vector512`1[long] (FullOpts)
          20 (7.14 % of base) : 23133.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[uint],System.Runtime.Intrinsics.Vector512`1[uint]):System.Runtime.Intrinsics.Vector512`1[uint] (FullOpts)
          20 (7.14 % of base) : 23136.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[ulong],System.Runtime.Intrinsics.Vector512`1[ulong]):System.Runtime.Intrinsics.Vector512`1[ulong] (FullOpts)
          52 (5.22 % of base) : 219598.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          52 (5.22 % of base) : 227309.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          32 (5.16 % of base) : 40698.dasm - Microsoft.FSharp.Core.PrintfImpl+FormatString:findNextFormatSpecifier(System.String,byref):System.String (FullOpts)
          12 (4.17 % of base) : 23137.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[double],System.Runtime.Intrinsics.Vector512`1[long]):System.Runtime.Intrinsics.Vector512`1[double] (FullOpts)
          12 (4.17 % of base) : 23134.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[float],System.Runtime.Intrinsics.Vector512`1[int]):System.Runtime.Intrinsics.Vector512`1[float] (FullOpts)
          20 (4.10 % of base) : 37361.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
           4 (3.70 % of base) : 212956.dasm - System.Numerics.BigIntegerCalculator:AddDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint]):uint (FullOpts)
          12 (3.57 % of base) : 49415.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(int,byref):ubyte:this (FullOpts)
          28 (3.57 % of base) : 37478.dasm - System.Resources.ResourceReader:UseReflectionToGetType(int):System.Type:this (FullOpts)
          36 (3.36 % of base) : 110674.dasm - Microsoft.Diagnostics.Tracing.StackSources.StraceStackSource:ProcessRecord(System.Text.StringBuilder):this (FullOpts)
           4 (3.23 % of base) : 212957.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (FullOpts)
          32 (3.16 % of base) : 36393.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Span`1[System.__Canon]):int (FullOpts)
           8 (3.03 % of base) : 22992.dasm - System.Runtime.Intrinsics.Vector256:Shuffle(System.Runtime.Intrinsics.Vector256`1[ushort],System.Runtime.Intrinsics.Vector256`1[ushort]):System.Runtime.Intrinsics.Vector256`1[ushort] (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)
         -56 (-8.81 % of base) : 30503.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -48 (-8.51 % of base) : 30502.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (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)
         -56 (-8.00 % of base) : 162119.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (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)
         -56 (-7.69 % of base) : 162118.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
         -56 (-7.69 % of base) : 150895.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase (FullOpts)
          -4 (-7.69 % of base) : 31123.dasm - System.Globalization.CharUnicodeInfo:GetNumericValueNoBoundsCheck(uint):double (FullOpts)
          -8 (-7.69 % of base) : 35348.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
         -56 (-7.53 % of base) : 150896.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo (FullOpts)
        -176 (-7.12 % of base) : 151640.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
         -16 (-6.56 % of base) : 149673.dasm - System.Dynamic.Utils.TypeExtensions:MatchesArgumentTypes(System.Reflection.MethodInfo,System.Type[]):ubyte (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: 76265736 (overridden on cmd)
Total bytes of delta: -8672 (-0.01 % 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)
         108 : 4344.dasm (65.85 % of base)
          52 : 253504.dasm (5.22 % of base)
          48 : 184543.dasm (1.58 % of base)
          36 : 253423.dasm (3.56 % of base)
          36 : 259067.dasm (3.56 % of base)
          32 : 114779.dasm (0.80 % of base)
          32 : 183351.dasm (7.84 % of base)
          32 : 183352.dasm (26.67 % of base)
          28 : 253428.dasm (1.56 % of base)
          20 : 173106.dasm (0.50 % of base)
          20 : 257821.dasm (1.55 % of base)
          12 : 11794.dasm (4.48 % of base)
          12 : 183260.dasm (1.15 % of base)
          12 : 11798.dasm (4.48 % of base)
          12 : 11803.dasm (3.66 % of base)
          12 : 11811.dasm (4.41 % of base)

Top file improvements (bytes):
        -412 : 211526.dasm (-1.42 % of base)
        -156 : 111337.dasm (-2.80 % of base)
        -132 : 55790.dasm (-3.09 % of base)
        -124 : 141653.dasm (-3.96 % of base)
        -120 : 55822.dasm (-1.92 % of base)
        -112 : 132877.dasm (-3.20 % of base)
         -96 : 180693.dasm (-0.98 % of base)
         -96 : 292395.dasm (-2.54 % of base)
         -88 : 40586.dasm (-6.29 % of base)
         -84 : 182908.dasm (-1.18 % of base)
         -84 : 292386.dasm (-2.18 % of base)
         -80 : 233614.dasm (-3.27 % of base)
         -80 : 287731.dasm (-3.20 % of base)
         -72 : 137405.dasm (-1.45 % of base)
         -72 : 167557.dasm (-1.95 % of base)
         -64 : 162720.dasm (-1.97 % of base)
         -64 : 167556.dasm (-1.37 % of base)
         -64 : 182852.dasm (-1.59 % of base)
         -60 : 176678.dasm (-1.03 % of base)
         -60 : 182913.dasm (-1.53 % of base)

75 total files with Code Size differences (45 improved, 30 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)
         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 (5.22 % of base) : 253504.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          48 (1.58 % of base) : 184543.dasm - System.Data.ProviderBase.SchemaMapping:SetupSchemaWithoutKeyInfo(int,int,ubyte,System.Data.DataColumn,System.Object):System.Object[]:this (FullOpts)
          36 (3.56 % of base) : 253423.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          36 (3.56 % of base) : 259067.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          32 (0.80 % of base) : 114779.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:Create(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,int,byref):Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol (FullOpts)
          32 (26.67 % of base) : 183352.dasm - System.Data.ExpressionParser:ScanName():this (FullOpts)
          32 (7.84 % of base) : 183351.dasm - System.Data.ExpressionParser:ScanNumeric():this (FullOpts)
          28 (1.56 % of base) : 253428.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          20 (0.50 % of base) : 173106.dasm - Microsoft.Build.BackEnd.Scheduler:WriteNodeUtilizationGraph(Microsoft.Build.BackEnd.Logging.ILoggingService,Microsoft.Build.Framework.BuildEventContext,ubyte):this (FullOpts)
          20 (1.55 % of base) : 257821.dasm - System.Net.Mail.Message:EncodeHeaders(System.Net.Mime.HeaderCollection,ubyte):this (FullOpts)
          12 (0.53 % of base) : 175300.dasm - Microsoft.Build.Shared.FileMatcher:GetLongPathName(System.String,Microsoft.Build.Shared.FileMatcher+GetFileSystemEntries):System.String (FullOpts)
          12 (4.11 % of base) : 49647.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(int,byref):ubyte:this (FullOpts)
          12 (0.53 % of base) : 77096.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)
          12 (3.70 % of base) : 11802.dasm - System.Collections.Generic.ObjectEqualityComparer`1[double]:IndexOf(double[],double,int,int):int:this (FullOpts)
          12 (3.66 % of base) : 11803.dasm - System.Collections.Generic.ObjectEqualityComparer`1[double]:LastIndexOf(double[],double,int,int):int:this (FullOpts)

Top method improvements (bytes):
        -412 (-1.42 % 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)
        -156 (-2.80 % 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)
        -132 (-3.09 % of base) : 55790.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitFixedStatement(Microsoft.CodeAnalysis.CSharp.BoundFixedStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
        -124 (-3.96 % of base) : 141653.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
        -120 (-1.92 % 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)
        -112 (-3.20 % of base) : 132877.dasm - Microsoft.CodeAnalysis.VisualBasic.ExpressionLambdaRewriter:VisitObjectInitializer(Microsoft.CodeAnalysis.VisualBasic.BoundObjectInitializerExpression):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
         -96 (-0.98 % of base) : 180693.dasm - System.Data.XmlTreeGen:SchemaTree(System.Xml.XmlDocument,System.Xml.XmlWriter,System.Data.DataSet,System.Data.DataTable,ubyte):this (FullOpts)
         -96 (-2.54 % of base) : 292395.dasm - System.Linq.Parallel.SortHelper`2[ubyte,System.Nullable`1[int]]:MergeSortCooperatively():this (FullOpts)
         -88 (-6.29 % 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)
         -84 (-1.18 % of base) : 182908.dasm - System.Data.RBTree`1[ubyte]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
         -84 (-2.18 % of base) : 292386.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,System.Nullable`1[int]]:MergeSortCooperatively():this (FullOpts)
         -80 (-3.27 % of base) : 233614.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -80 (-3.20 % of base) : 287731.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -72 (-1.45 % of base) : 137405.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousTypeTemplateSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
         -72 (-1.95 % of base) : 167557.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
         -64 (-1.59 % of base) : 182852.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -64 (-1.97 % of base) : 162720.dasm - System.Xml.Schema.XmlSchemaValidator:EndElementIdentityConstraints(System.Object,System.String,System.Xml.Schema.XmlSchemaDatatype):this (FullOpts)
         -64 (-1.37 % of base) : 167556.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)
         -60 (-1.03 % of base) : 176678.dasm - Microsoft.Build.BackEnd.MSBuild+<ExecuteTargets>d__80:MoveNext():this (FullOpts)
         -60 (-1.53 % of base) : 182913.dasm - System.Data.RBTree`1[ubyte]:RBDeleteFixup(int,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)
          32 (26.67 % of base) : 183352.dasm - System.Data.ExpressionParser:ScanName():this (FullOpts)
          32 (7.84 % of base) : 183351.dasm - System.Data.ExpressionParser:ScanNumeric():this (FullOpts)
          52 (5.22 % of base) : 253504.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          12 (4.48 % of base) : 11798.dasm - System.Collections.Generic.ObjectEqualityComparer`1[int]:IndexOf(int[],int,int,int):int:this (FullOpts)
          12 (4.48 % of base) : 11810.dasm - System.Collections.Generic.ObjectEqualityComparer`1[long]:IndexOf(long[],long,int,int):int:this (FullOpts)
          12 (4.48 % of base) : 11794.dasm - System.Collections.Generic.ObjectEqualityComparer`1[short]:IndexOf(short[],short,int,int):int:this (FullOpts)
          12 (4.41 % of base) : 11799.dasm - System.Collections.Generic.ObjectEqualityComparer`1[int]:LastIndexOf(int[],int,int,int):int:this (FullOpts)
          12 (4.41 % of base) : 11811.dasm - System.Collections.Generic.ObjectEqualityComparer`1[long]:LastIndexOf(long[],long,int,int):int:this (FullOpts)
          12 (4.41 % of base) : 11795.dasm - System.Collections.Generic.ObjectEqualityComparer`1[short]:LastIndexOf(short[],short,int,int):int:this (FullOpts)
           4 (4.17 % of base) : 265453.dasm - System.Numerics.BigIntegerCalculator:AddDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint]):uint (FullOpts)
          12 (4.11 % of base) : 49647.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(int,byref):ubyte:this (FullOpts)
           8 (3.92 % of base) : 11723.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,System.Nullable`1[int]]:Swap(System.Span`1[System.__Canon],System.Span`1[System.Nullable`1[int]],int,int) (FullOpts)
          12 (3.70 % of base) : 11802.dasm - System.Collections.Generic.ObjectEqualityComparer`1[double]:IndexOf(double[],double,int,int):int:this (FullOpts)
          12 (3.66 % of base) : 11803.dasm - System.Collections.Generic.ObjectEqualityComparer`1[double]:LastIndexOf(double[],double,int,int):int:this (FullOpts)
           4 (3.57 % of base) : 265454.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (FullOpts)

Top method improvements (percentages):
          -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)
         -12 (-7.69 % of base) : 86533.dasm - ILCompiler.IBC.WriterExtensions:WriteEncodedString(System.IO.BinaryWriter,System.String) (FullOpts)
         -12 (-6.52 % of base) : 229939.dasm - System.ComponentModel.PropertyDescriptorCollection:System.Collections.IDictionary.get_Keys():System.Collections.ICollection:this (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)
         -40 (-6.41 % of base) : 233617.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
         -40 (-6.41 % of base) : 287734.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase (FullOpts)
         -88 (-6.29 % 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)
         -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)


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

Detail diffs



Top file regressions (bytes):
         428 : 419329.dasm (13.58 % of base)
         156 : 647349.dasm (1.52 % of base)
         124 : 450368.dasm (3.29 % of base)
         104 : 570359.dasm (1.02 % of base)
         100 : 549320.dasm (1.11 % of base)
          84 : 451909.dasm (2.82 % of base)
          84 : 104995.dasm (4.20 % of base)
          84 : 450367.dasm (3.10 % of base)
          80 : 91481.dasm (5.35 % of base)
          80 : 736576.dasm (0.63 % of base)
          64 : 349965.dasm (0.52 % of base)
          60 : 189104.dasm (9.15 % of base)
          56 : 664451.dasm (2.72 % of base)
          52 : 132847.dasm (1.12 % of base)
          48 : 298304.dasm (0.34 % of base)
          48 : 327787.dasm (0.34 % of base)
          48 : 450402.dasm (2.42 % of base)
          48 : 728691.dasm (0.34 % of base)
          48 : 246472.dasm (0.34 % of base)
          48 : 283128.dasm (0.82 % of base)

Top file improvements (bytes):
        -540 : 692987.dasm (-0.27 % of base)
        -360 : 474633.dasm (-1.61 % of base)
        -296 : 500914.dasm (-2.22 % of base)
        -248 : 60492.dasm (-1.24 % of base)
        -248 : 641778.dasm (-3.87 % of base)
        -232 : 458013.dasm (-3.96 % of base)
        -228 : 269981.dasm (-1.77 % of base)
        -216 : 664626.dasm (-6.71 % of base)
        -208 : 172591.dasm (-1.63 % of base)
        -200 : 307859.dasm (-1.57 % of base)
        -180 : 339882.dasm (-3.08 % of base)
        -168 : 435433.dasm (-1.55 % of base)
        -168 : 416990.dasm (-1.56 % of base)
        -168 : 424090.dasm (-1.56 % of base)
        -168 : 424730.dasm (-1.57 % of base)
        -168 : 432925.dasm (-1.55 % of base)
        -168 : 435257.dasm (-1.63 % of base)
        -168 : 425176.dasm (-1.64 % of base)
        -168 : 432087.dasm (-1.63 % of base)
        -152 : 78115.dasm (-2.61 % of base)

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

Top method regressions (bytes):
         428 (13.58 % of base) : 419329.dasm - System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1+<>c__DisplayClass85_0[long]:<ScalarSpanDestination_InPlace>b__0(int):this (Tier1)
         156 (1.52 % of base) : 647349.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:WriteDateTimeOffsetsValue(System.Text.Json.JsonWriterOptions,System.String):this (Tier1-OSR)
         124 (3.29 % of base) : 450368.dasm - System.Xml.Serialization.XmlSerializationReader:GetNullAttr():ubyte:this (Tier1)
         104 (1.02 % of base) : 570359.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)
         100 (1.11 % of base) : 549320.dasm - System.Reflection.Emit.CustomAttributeBuilder:.ctor(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]):this (Tier1)
          84 (4.20 % of base) : 104995.dasm - Microsoft.CSharp.RuntimeBinder.RuntimeBinder:CreateArgumentArray(Microsoft.CSharp.RuntimeBinder.ICSharpBinder,System.Linq.Expressions.Expression[],System.Dynamic.DynamicMetaObject[]):Microsoft.CSharp.RuntimeBinder.ArgumentObject[]:this (Tier1)
          84 (2.82 % of base) : 451909.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteNullableMethod(System.Xml.Serialization.NullableMapping,System.String):System.Object:this (Tier1)
          84 (3.10 % of base) : 450367.dasm - System.Xml.Serialization.XmlSerializationReader:ReadNull():ubyte:this (Tier1)
          80 (0.63 % of base) : 736576.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
          80 (5.35 % of base) : 91481.dasm - System.IO.FileSystem:CreateParentsAndDirectory(System.String,int) (Instrumented Tier1)
          64 (0.52 % of base) : 349965.dasm - Xunit.Sdk.TypeUtility:ResolveGenericTypes(Xunit.Abstractions.IMethodInfo,System.Object[]):Xunit.Abstractions.ITypeInfo[] (Tier1)
          60 (9.15 % of base) : 189104.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Instrumented Tier1)
          56 (2.72 % of base) : 664451.dasm - Microsoft.CSharp.RuntimeBinder.RuntimeBinder:CreateArgumentArray(Microsoft.CSharp.RuntimeBinder.ICSharpBinder,System.Linq.Expressions.Expression[],System.Dynamic.DynamicMetaObject[]):Microsoft.CSharp.RuntimeBinder.ArgumentObject[]:this (Tier1)
          52 (1.12 % of base) : 132847.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateArgumentCallSites(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain,System.Reflection.ParameterInfo[],ubyte):Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite[]:this (Tier1)
          48 (0.82 % of base) : 283128.dasm - Microsoft.CSharp.RuntimeBinder.RuntimeBinder:Bind(Microsoft.CSharp.RuntimeBinder.ICSharpBinder,System.Linq.Expressions.Expression[],System.Dynamic.DynamicMetaObject[],byref):System.Linq.Expressions.Expression:this (Tier1)
          48 (0.34 % of base) : 298304.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
          48 (0.34 % of base) : 327787.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
          48 (0.34 % of base) : 728691.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
          48 (0.34 % of base) : 246472.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
          48 (2.42 % of base) : 450402.dasm - System.Xml.Serialization.XmlSerializationReader:GetXsiType():System.Xml.XmlQualifiedName: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)
        -360 (-1.61 % of base) : 474633.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (Tier1)
        -296 (-2.22 % 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)
        -248 (-1.24 % of base) : 60492.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)
        -248 (-3.87 % of base) : 641778.dasm - System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver:PopulateParameterInfoValues(System.Text.Json.Serialization.Metadata.JsonTypeInfo) (Tier1)
        -232 (-3.96 % of base) : 458013.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext:GetExtensionMethod(System.String,System.String,int[],byref):System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:this (Tier1)
        -228 (-1.77 % of base) : 269981.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -216 (-6.71 % of base) : 664626.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (Tier1)
        -208 (-1.63 % of base) : 172591.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -200 (-1.57 % of base) : 307859.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -180 (-3.08 % of base) : 339882.dasm - System.Linq.Parallel.SortHelper`2[int,System.Linq.Parallel.Pair`2[int,System.Linq.Parallel.Tests.NotComparable]]:MergeSortCooperatively():this (Tier1)
        -168 (-1.63 % of base) : 435257.dasm - System.Numerics.Tensors.Tests.GenericFloatingPointNumberTensorPrimitivesTests`1+<>c__DisplayClass59_0[double]:<SpanSpanSpanDestination_ThrowsForMismatchedLengths>b__0(int):this (Tier1)
        -168 (-1.64 % of base) : 425176.dasm - System.Numerics.Tensors.Tests.GenericFloatingPointNumberTensorPrimitivesTests`1+<>c__DisplayClass59_0[double]:<SpanSpanSpanDestination_ThrowsForMismatchedLengths>b__0(int):this (Tier1)
        -168 (-1.56 % of base) : 416990.dasm - System.Numerics.Tensors.Tests.GenericFloatingPointNumberTensorPrimitivesTests`1+<>c__DisplayClass59_0[float]:<SpanSpanSpanDestination_ThrowsForMismatchedLengths>b__0(int):this (Tier1)
        -168 (-1.63 % of base) : 432087.dasm - System.Numerics.Tensors.Tests.GenericFloatingPointNumberTensorPrimitivesTests`1+<>c__DisplayClass59_0[float]:<SpanSpanSpanDestination_ThrowsForMismatchedLengths>b__0(int):this (Tier1)
        -168 (-1.57 % of base) : 424730.dasm - System.Numerics.Tensors.Tests.GenericFloatingPointNumberTensorPrimitivesTests`1+<>c__DisplayClass59_0[System.Half]:<SpanSpanSpanDestination_ThrowsForMismatchedLengths>b__0(int):this (Tier1)
        -168 (-1.55 % of base) : 432925.dasm - System.Numerics.Tensors.Tests.GenericFloatingPointNumberTensorPrimitivesTests`1+<>c__DisplayClass59_0[System.Half]:<SpanSpanSpanDestination_ThrowsForMismatchedLengths>b__0(int):this (Tier1)
        -168 (-1.55 % of base) : 435433.dasm - System.Numerics.Tensors.Tests.GenericFloatingPointNumberTensorPrimitivesTests`1+<>c__DisplayClass59_0[System.Runtime.InteropServices.NFloat]:<SpanSpanSpanDestination_ThrowsForMismatchedLengths>b__0(int):this (Tier1)
        -168 (-1.56 % of base) : 424090.dasm - System.Numerics.Tensors.Tests.GenericFloatingPointNumberTensorPrimitivesTests`1+<>c__DisplayClass59_0[System.Runtime.InteropServices.NFloat]:<SpanSpanSpanDestination_ThrowsForMismatchedLengths>b__0(int):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)

Top method regressions (percentages):
         428 (13.58 % of base) : 419329.dasm - System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1+<>c__DisplayClass85_0[long]:<ScalarSpanDestination_InPlace>b__0(int):this (Tier1)
          60 (9.15 % of base) : 189104.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Instrumented Tier1)
          24 (5.83 % of base) : 358387.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          24 (5.83 % of base) : 497102.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          24 (5.71 % of base) : 629746.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          80 (5.35 % of base) : 91481.dasm - System.IO.FileSystem:CreateParentsAndDirectory(System.String,int) (Instrumented Tier1)
          20 (4.90 % of base) : 570462.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          16 (4.21 % of base) : 342831.dasm - System.Linq.Parallel.ConcatQueryOperator`1[int]:WrapHelper2[int,int](System.Linq.Parallel.PartitionedStream`2[int,int],System.Linq.Parallel.PartitionedStream`2[int,int],System.Linq.Parallel.IPartitionedStreamRecipient`1[int]):this (Tier1)
          84 (4.20 % of base) : 104995.dasm - Microsoft.CSharp.RuntimeBinder.RuntimeBinder:CreateArgumentArray(Microsoft.CSharp.RuntimeBinder.ICSharpBinder,System.Linq.Expressions.Expression[],System.Dynamic.DynamicMetaObject[]):Microsoft.CSharp.RuntimeBinder.ArgumentObject[]:this (Tier1)
          44 (4.15 % of base) : 450363.dasm - System.Xml.XmlTextReaderImpl:GetAttribute(System.String,System.String):System.String:this (Tier1)
          16 (3.77 % of base) : 533156.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
           4 (3.70 % of base) : 573607.dasm - System.Security.Cryptography.Tests.EccTestBase+<>c:<InvertStringCase>b__19_0(System.Span`1[ushort],System.String):this (Tier1)
           4 (3.70 % of base) : 557736.dasm - System.Security.Cryptography.Tests.EccTestBase+<>c:<InvertStringCase>b__19_0(System.Span`1[ushort],System.String):this (Tier1)
           4 (3.57 % of base) : 552808.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
           4 (3.57 % of base) : 570350.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
           4 (3.45 % of base) : 505497.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
           4 (3.45 % of base) : 557514.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
           4 (3.45 % of base) : 535785.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
         124 (3.29 % of base) : 450368.dasm - System.Xml.Serialization.XmlSerializationReader:GetNullAttr():ubyte:this (Tier1)
           8 (3.23 % of base) : 222302.dasm - System.Linq.Enumerable+SelectListIterator`2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (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) : 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) : 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) : 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: 164962312 (overridden on cmd)
Total bytes of delta: -15980 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          52 : 4043.dasm (5.22 % of base)
          44 : 190098.dasm (4.38 % of base)
          44 : 190522.dasm (4.37 % of base)
          44 : 190142.dasm (4.35 % of base)
          44 : 190225.dasm (4.35 % of base)
          44 : 230766.dasm (0.68 % of base)
          36 : 145550.dasm (3.56 % of base)
          36 : 145543.dasm (3.56 % of base)
          32 : 194393.dasm (1.24 % of base)
          32 : 195128.dasm (1.24 % of base)
          32 : 89896.dasm (26.67 % of base)
          32 : 89903.dasm (7.84 % of base)
          28 : 163888.dasm (1.54 % of base)
          28 : 145584.dasm (1.53 % of base)
          24 : 46211.dasm (1.05 % of base)
          24 : 51846.dasm (1.05 % of base)
          24 : 18240.dasm (0.17 % of base)
          20 : 148897.dasm (1.55 % of base)
          20 : 149527.dasm (1.55 % of base)
          16 : 44472.dasm (0.58 % of base)

Top file improvements (bytes):
        -540 : 276893.dasm (-0.27 % of base)
        -420 : 59123.dasm (-1.45 % of base)
        -336 : 91930.dasm (-2.63 % of base)
        -228 : 174556.dasm (-1.27 % of base)
        -164 : 299449.dasm (-2.70 % of base)
        -124 : 24560.dasm (-4.06 % of base)
        -104 : 185261.dasm (-1.89 % of base)
        -100 : 121590.dasm (-3.07 % of base)
         -96 : 91647.dasm (-1.01 % of base)
         -96 : 118331.dasm (-1.94 % of base)
         -96 : 130945.dasm (-2.56 % of base)
         -96 : 284386.dasm (-2.40 % of base)
         -88 : 204337.dasm (-2.27 % of base)
         -88 : 185302.dasm (-2.12 % of base)
         -84 : 131007.dasm (-2.20 % of base)
         -84 : 89935.dasm (-1.18 % of base)
         -84 : 268122.dasm (-1.70 % of base)
         -76 : 159586.dasm (-3.18 % of base)
         -72 : 90568.dasm (-1.98 % of base)
         -68 : 76379.dasm (-4.03 % of base)

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

Top method regressions (bytes):
          52 (5.22 % of base) : 4043.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          44 (4.37 % of base) : 190522.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512Int16ShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
          44 (4.35 % of base) : 190225.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512Int64ShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
          44 (4.38 % of base) : 190098.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512UInt32ShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
          44 (4.35 % of base) : 190142.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512UInt64ShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
          44 (0.68 % of base) : 230766.dasm - System.Text.Encodings.Web.Tests.InboxEncoderCommonTestBase:_RunEncodeUtf16_Battery(System.String[],System.String[]):this (FullOpts)
          36 (3.56 % of base) : 145550.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          36 (3.56 % of base) : 145543.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          32 (26.67 % of base) : 89896.dasm - System.Data.ExpressionParser:ScanName():this (FullOpts)
          32 (7.84 % of base) : 89903.dasm - System.Data.ExpressionParser:ScanNumeric():this (FullOpts)
          32 (1.24 % of base) : 194393.dasm - System.Runtime.Serialization.Tests.Utils:CompareXElements(System.Xml.Linq.XElement,System.Xml.Linq.XElement):ubyte (FullOpts)
          32 (1.24 % of base) : 195128.dasm - System.Runtime.Serialization.Tests.Utils:CompareXElements(System.Xml.Linq.XElement,System.Xml.Linq.XElement):ubyte (FullOpts)
          28 (1.54 % of base) : 163888.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          28 (1.53 % of base) : 145584.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          24 (1.05 % of base) : 46211.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)
          24 (1.05 % of base) : 51846.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)
          24 (0.17 % of base) : 18240.dasm - Microsoft.Interop.JavaScript.JSGeneratorResolver:Create(Microsoft.Interop.TypePositionInfo,ubyte,int,int[],int,int[],System.Func`2[System.String,Microsoft.Interop.ResolvedGenerator]):Microsoft.Interop.ResolvedGenerator (FullOpts)
          20 (1.55 % of base) : 148897.dasm - System.Net.Mail.Message:EncodeHeaders(System.Net.Mime.HeaderCollection,ubyte):this (FullOpts)
          20 (1.55 % of base) : 149527.dasm - System.Net.Mail.Message:EncodeHeaders(System.Net.Mime.HeaderCollection,ubyte):this (FullOpts)
          16 (0.58 % of base) : 44472.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbolBase:MethodChecks(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)

Top method improvements (bytes):
        -540 (-0.27 % of base) : 276893.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2451_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (Tier0-MinOpts)
        -420 (-1.45 % 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)
        -336 (-2.63 % of base) : 91930.dasm - System.Data.Tests.DataTableTest2:GetChanges_ByDataRowState():this (FullOpts)
        -228 (-1.27 % of base) : 174556.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (FullOpts)
        -164 (-2.70 % of base) : 299449.dasm - System.Threading.Tasks.Tests.TaskRtTests:RunFromResult() (FullOpts)
        -124 (-4.06 % of base) : 24560.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
        -104 (-1.89 % of base) : 185261.dasm - System.Reflection.Tests.ConstructorInfoInvokeArrayTests:Invoke_2DArrayConstructor():this (FullOpts)
        -100 (-3.07 % of base) : 121590.dasm - System.IO.Compression.Tests.ZipFile_Unix:CreateFiles(System.String,System.String[]):System.String[] (FullOpts)
         -96 (-1.01 % of base) : 91647.dasm - System.Data.XmlTreeGen:SchemaTree(System.Xml.XmlDocument,System.Xml.XmlWriter,System.Data.DataSet,System.Data.DataTable,ubyte):this (FullOpts)
         -96 (-1.94 % of base) : 118331.dasm - System.Formats.Tar.Tests.TarFile_ExtractToDirectoryAsync_File_Tests+<SetsLastModifiedTimeOnExtractedDirectories>d__5:MoveNext():this (FullOpts)
         -96 (-2.56 % of base) : 130945.dasm - System.Linq.Parallel.SortHelper`2[double,int]:MergeSortCooperatively():this (FullOpts)
         -96 (-2.40 % of base) : 284386.dasm - System.Text.RegularExpressions.Tests.GetGroupNamesTests:GroupNamesAndNumbers(System.String,System.String,System.String[],int[],System.String[],int):this (FullOpts)
         -88 (-2.12 % of base) : 185302.dasm - System.Reflection.Tests.ConstructorInfoInvokeArrayTests:Invoke_JaggedArrayConstructor():this (FullOpts)
         -88 (-2.27 % of base) : 204337.dasm - System.Tests.ArraySegment_Tests:GetSetItem_InRange(System.ArraySegment`1[int]) (FullOpts)
         -84 (-1.18 % of base) : 89935.dasm - System.Data.RBTree`1[int]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
         -84 (-2.20 % of base) : 131007.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,int]:MergeSortCooperatively():this (FullOpts)
         -84 (-1.70 % of base) : 268122.dasm - System.Text.RegularExpressions.Tests.RegexMatchTests:<Match_Advanced>g__VerifyMatch|21_0(System.Text.RegularExpressions.Match,byref) (FullOpts)
         -76 (-3.18 % of base) : 159586.dasm - System.Numerics.Tests.Matrix4x4Tests:DecomposeScaleTest(float,float,float):this (FullOpts)
         -72 (-1.98 % of base) : 90568.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
         -68 (-4.03 % of base) : 76379.dasm - System.Collections.Tests.LinkedList_Generic_Tests`1[int]:AddFirst_LinkedListNode():this (FullOpts)

Top method regressions (percentages):
          32 (26.67 % of base) : 89896.dasm - System.Data.ExpressionParser:ScanName():this (FullOpts)
          32 (7.84 % of base) : 89903.dasm - System.Data.ExpressionParser:ScanNumeric():this (FullOpts)
          52 (5.22 % of base) : 4043.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          44 (4.38 % of base) : 190098.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512UInt32ShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
          44 (4.37 % of base) : 190522.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512Int16ShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
          44 (4.35 % of base) : 190225.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512Int64ShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
          44 (4.35 % of base) : 190142.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512UInt64ShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
           4 (4.17 % of base) : 191532.dasm - System.Numerics.BigIntegerCalculator:AddDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint]):uint (FullOpts)
          12 (4.11 % of base) : 11920.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(int,byref):ubyte:this (FullOpts)
           4 (3.70 % of base) : 216706.dasm - System.Security.Cryptography.Tests.EccTestBase+<>c:<InvertStringCase>b__19_0(System.Span`1[ushort],System.String):this (FullOpts)
           4 (3.70 % of base) : 222348.dasm - System.Security.Cryptography.Tests.EccTestBase+<>c:<InvertStringCase>b__19_0(System.Span`1[ushort],System.String):this (FullOpts)
           4 (3.57 % of base) : 31506.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (FullOpts)
          36 (3.56 % of base) : 145550.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          36 (3.56 % of base) : 145543.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
           4 (3.03 % of base) : 46040.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder:ToArray():Microsoft.CodeAnalysis.GreenNode[]:this (FullOpts)
           4 (3.03 % of base) : 51500.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder:ToArray():Microsoft.CodeAnalysis.GreenNode[]:this (FullOpts)
           4 (3.03 % of base) : 8903.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder:ToArray():Microsoft.CodeAnalysis.GreenNode[]:this (FullOpts)
           4 (2.27 % of base) : 79027.dasm - Microsoft.Internal.Collections.CollectionServices:IsArrayEqual[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
           4 (2.27 % of base) : 177190.dasm - System.Reflection.Context.CollectionServices:CompareArrays[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
           4 (2.27 % of base) : 178533.dasm - System.Reflection.TypeLoading.GetTypeCoreCache+Container:Add(int,System.Reflection.TypeLoading.RoDefinitionType):this (FullOpts)

Top method improvements (percentages):
         -16 (-11.43 % of base) : 130665.dasm - System.Linq.Parallel.OrderPreservingPipeliningMergeHelper`2+OrderedPipeliningMergeEnumerator[int,int]:TryGetPrivateElement(int,byref):ubyte:this (FullOpts)
         -24 (-10.91 % of base) : 11125.dasm - System.Collections.Generic.GenericArraySortHelper`2[uint,System.__Canon]:InsertionSort(System.Span`1[uint],System.Span`1[System.__Canon]) (FullOpts)
          -8 (-9.09 % of base) : 85524.dasm - System.Drawing.KnownColorTable:KnownColorToArgb(int):uint (FullOpts)
         -12 (-7.69 % of base) : 200433.dasm - System.Collections.Generic.SortUtils:MoveNansToFront[float,System.__Canon](System.Span`1[float],System.Span`1[System.__Canon]):int (FullOpts)
         -12 (-7.32 % of base) : 39980.dasm - Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter:<GetClosedParameterType>g__CloseGenericParametersIfAny|44_0(System.Type[]):ubyte:this (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)
         -40 (-6.41 % of base) : 178815.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (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) : 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)
          -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)
         -24 (-6.19 % of base) : 297798.dasm - System.Threading.Tasks.Tests.ParallelForTest:InvokeZetaWorkload(int):this (FullOpts)
         -16 (-6.06 % of base) : 53621.dasm - Castle.DynamicProxy.Generators.MethodSignatureComparer:EqualParameters(System.Reflection.MethodInfo,System.Reflection.MethodInfo):ubyte:this (FullOpts)
         -24 (-5.88 % of base) : 144101.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,ubyte]:InsertionSort(System.Span`1[System.__Canon],System.Span`1[ubyte],System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
         -12 (-5.66 % of base) : 159731.dasm - System.Numerics.Tests.GenericVectorTests+<>c__DisplayClass403_0`1[short]:<TestDivisionWithScalarByZeroException>b__0():this (FullOpts)
         -16 (-5.63 % of base) : 226282.dasm - System.Security.Cryptography.Xml.Transform:AcceptsType(System.Type):ubyte:this (FullOpts)
          -8 (-5.56 % of base) : 114369.dasm - System.Numerics.NumericsHelpers:DangerousMakeTwosComplement(System.Span`1[uint]) (FullOpts)
          -8 (-5.56 % of base) : 267069.dasm - System.Text.RegularExpressions.Match:MatchIndex(int):int:this (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: 15896628 (overridden on cmd)
Total bytes of delta: -3380 (-0.02 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         204 : 1847.dasm (5.59 % of base)
         116 : 1809.dasm (8.63 % of base)
          52 : 2326.dasm (5.22 % of base)
          36 : 13696.dasm (0.63 % of base)
          20 : 945.dasm (4.24 % of base)
          12 : 23727.dasm (4.11 % of base)
          12 : 14370.dasm (0.34 % of base)
          12 : 21162.dasm (0.54 % of base)
           8 : 1387.dasm (0.47 % of base)
           8 : 14315.dasm (5.41 % of base)
           8 : 23724.dasm (1.90 % of base)
           8 : 14207.dasm (1.15 % of base)
           8 : 16041.dasm (0.81 % of base)
           8 : 11626.dasm (0.58 % of base)
           8 : 1410.dasm (0.96 % of base)
           4 : 14316.dasm (0.61 % of base)
           4 : 15212.dasm (0.36 % of base)
           4 : 15859.dasm (1.92 % of base)
           4 : 25092.dasm (1.28 % of base)
           4 : 958.dasm (1.02 % of base)

Top file improvements (bytes):
        -140 : 16015.dasm (-2.50 % of base)
        -120 : 14198.dasm (-3.11 % of base)
        -100 : 32747.dasm (-0.98 % of base)
         -96 : 5905.dasm (-1.64 % of base)
         -76 : 2760.dasm (-4.05 % of base)
         -68 : 5532.dasm (-7.39 % of base)
         -68 : 14482.dasm (-0.77 % of base)
         -60 : 28291.dasm (-1.47 % of base)
         -60 : 3867.dasm (-7.94 % of base)
         -60 : 6433.dasm (-8.47 % of base)
         -56 : 19184.dasm (-1.34 % of base)
         -52 : 13410.dasm (-1.40 % of base)
         -52 : 1817.dasm (-6.74 % of base)
         -48 : 18922.dasm (-4.17 % of base)
         -44 : 14375.dasm (-1.37 % of base)
         -44 : 1912.dasm (-5.76 % of base)
         -40 : 5094.dasm (-12.35 % of base)
         -40 : 5534.dasm (-10.00 % of base)
         -40 : 13548.dasm (-0.46 % of base)
         -36 : 645.dasm (-3.42 % of base)

62 total files with Code Size differences (34 improved, 28 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)
         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)
          52 (5.22 % of base) : 2326.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          36 (0.63 % 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)
          20 (4.24 % of base) : 945.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
          12 (4.11 % of base) : 23727.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(int,byref):ubyte:this (FullOpts)
          12 (0.54 % of base) : 21162.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)
          12 (0.34 % 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)
           8 (0.47 % of base) : 1387.dasm - BepuPhysics.Collidables.ConvexHullHelper:ReduceFace(byref,byref,System.Span`1[System.Numerics.Vector3],float,byref,byref,byref) (FullOpts)
           8 (0.96 % of base) : 1410.dasm - BepuUtilities.Collections.QuickSort:Sort[int,BepuPhysics.Trees.Tree+IndexMapComparer](byref,int,int,byref) (FullOpts)
           8 (1.90 % of base) : 23724.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:FixParameters(System.Func`3[Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer,int,ubyte],byref):int:this (FullOpts)
           8 (5.41 % of base) : 14315.dasm - Microsoft.ML.Trainers.KMeansLloydsYinYangTrain+SharedState:UpdateYinYangBounds(int):this (FullOpts)
           8 (1.15 % of base) : 14207.dasm - Microsoft.ML.Transforms.NormalizeTransform+Sng+MinMaxVecColumnFunctionBuilder:CreateColumnFunction():Microsoft.ML.Data.IColumnFunction:this (FullOpts)
           8 (0.81 % of base) : 16041.dasm - Microsoft.ML.Transforms.Text.NgramExtractingTransformer+Mapper:.ctor(Microsoft.ML.Transforms.Text.NgramExtractingTransformer,Microsoft.ML.DataViewSchema):this (FullOpts)
           8 (0.58 % of base) : 11626.dasm - System.Diagnostics.StackFrameHelper:InitializeSourceInfo(int,ubyte,System.Exception):this (FullOpts)
           4 (1.28 % of base) : 25092.dasm - Microsoft.CodeAnalysis.BitVector:UnionWith(byref):ubyte:this (FullOpts)
           4 (1.85 % of base) : 17177.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList:List(Microsoft.CodeAnalysis.GreenNode[],int):Microsoft.CodeAnalysis.GreenNode (FullOpts)
           4 (3.03 % of base) : 17176.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder:ToArray():Microsoft.CodeAnalysis.GreenNode[]:this (FullOpts)
           4 (0.97 % of base) : 14347.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:Apply[float](byref,Microsoft.ML.Internal.Utilities.VBufferUtils+SlotValueManipulator`1[float]) (FullOpts)
           4 (0.57 % of base) : 14308.dasm - Microsoft.ML.Numeric.VectorUtils:Add(byref,byref) (FullOpts)

Top method improvements (bytes):
        -140 (-2.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)
        -120 (-3.11 % of base) : 14198.dasm - Microsoft.ML.Transforms.NormalizingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.IDataView,Microsoft.ML.Transforms.NormalizingEstimator+ColumnOptionsBase[]):Microsoft.ML.Transforms.NormalizingTransformer (FullOpts)
        -100 (-0.98 % of base) : 32747.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         -96 (-1.64 % of base) : 5905.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)
         -76 (-4.05 % of base) : 2760.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -68 (-0.77 % of base) : 14482.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (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)
         -60 (-1.47 % of base) : 28291.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitFixedStatement(Microsoft.CodeAnalysis.CSharp.BoundFixedStatement):Microsoft.CodeAnalysis.CSharp.BoundNode: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)
         -52 (-1.40 % of base) : 13410.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -48 (-4.17 % of base) : 18922.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)
         -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 (-1.37 % of base) : 14375.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyInto[float,float,float](byref,byref,byref,System.Func`4[int,float,float,float]) (FullOpts)
         -40 (-12.35 % of base) : 5094.dasm - Internal.Utilities.Text.Parsing.Implementation+AssocTable:Read(int,int):int:this (FullOpts)
         -40 (-0.46 % of base) : 13548.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)
         -40 (-10.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)
         -36 (-3.42 % of base) : 645.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)

Top method regressions (percentages):
         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)
         204 (5.59 % of base) : 1847.dasm - BepuPhysics.CollisionDetection.CollisionTasks.CapsuleConvexHullTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
           8 (5.41 % of base) : 14315.dasm - Microsoft.ML.Trainers.KMeansLloydsYinYangTrain+SharedState:UpdateYinYangBounds(int):this (FullOpts)
          52 (5.22 % of base) : 2326.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          20 (4.24 % of base) : 945.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
          12 (4.11 % of base) : 23727.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(int,byref):ubyte:this (FullOpts)
           4 (3.03 % of base) : 17176.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder:ToArray():Microsoft.CodeAnalysis.GreenNode[]:this (FullOpts)
           4 (1.92 % of base) : 15859.dasm - System.Collections.Generic.GenericEqualityComparer`1[float]:IndexOf(float[],float,int,int):int:this (FullOpts)
           8 (1.90 % of base) : 23724.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:FixParameters(System.Func`3[Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer,int,ubyte],byref):int:this (FullOpts)
           4 (1.85 % of base) : 17177.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList:List(Microsoft.CodeAnalysis.GreenNode[],int):Microsoft.CodeAnalysis.GreenNode (FullOpts)
           4 (1.67 % of base) : 14292.dasm - Microsoft.ML.Trainers.KMeansBarBarInitialization+<>c__DisplayClass3_0:<Initialize>b__3(float[][],System.Random,byref):this (FullOpts)
           4 (1.28 % of base) : 25092.dasm - Microsoft.CodeAnalysis.BitVector:UnionWith(byref):ubyte:this (FullOpts)
           8 (1.15 % of base) : 14207.dasm - Microsoft.ML.Transforms.NormalizeTransform+Sng+MinMaxVecColumnFunctionBuilder:CreateColumnFunction():Microsoft.ML.Data.IColumnFunction:this (FullOpts)
           4 (1.05 % of base) : 287.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:CreateEntryNoResize(System.__Canon,System.__Canon):this (FullOpts)
           4 (1.02 % of base) : 958.dasm - System.Random+CompatPrng:Initialize(int):this (FullOpts)
           4 (0.98 % of base) : 13710.dasm - Microsoft.ML.Numeric.VectorUtils:AddMult(byref,System.Span`1[float],float) (FullOpts)
           4 (0.97 % of base) : 14347.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:Apply[float](byref,Microsoft.ML.Internal.Utilities.VBufferUtils+SlotValueManipulator`1[float]) (FullOpts)
           8 (0.96 % of base) : 1410.dasm - BepuUtilities.Collections.QuickSort:Sort[int,BepuPhysics.Trees.Tree+IndexMapComparer](byref,int,int,byref) (FullOpts)
           8 (0.81 % of base) : 16041.dasm - Microsoft.ML.Transforms.Text.NgramExtractingTransformer+Mapper:.ctor(Microsoft.ML.Transforms.Text.NgramExtractingTransformer,Microsoft.ML.DataViewSchema):this (FullOpts)
           4 (0.78 % of base) : 12098.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree:BuildCodes():this (FullOpts)

Top method improvements (percentages):
         -28 (-13.21 % of base) : 6431.dasm - System.Collections.Generic.GenericArraySortHelper`2[ushort,int]:InsertionSort(System.Span`1[ushort],System.Span`1[int]) (FullOpts)
         -40 (-12.35 % of base) : 5094.dasm - Internal.Utilities.Text.Parsing.Implementation+AssocTable:Read(int,int):int:this (FullOpts)
         -24 (-10.91 % of base) : 3869.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,System.__Canon]:InsertionSort(System.Span`1[int],System.Span`1[System.__Canon]) (FullOpts)
         -40 (-10.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)
         -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)
         -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)
         -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)
         -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)
          -8 (-6.06 % of base) : 16982.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (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)
         -12 (-4.69 % of base) : 1290.dasm - System.Linq.OrderedEnumerable`1[double]:Fill(double[],System.Span`1[double]):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)
          -4 (-4.17 % of base) : 18452.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
         -48 (-4.17 % of base) : 18922.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)
         -76 (-4.05 % of base) : 2760.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase: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)
         -12 (-3.41 % of base) : 23771.dasm - Microsoft.CodeAnalysis.BitVector:IntersectWith(byref):ubyte:this (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: 2827964 (overridden on cmd)
Total bytes of delta: -1700 (-0.06 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          36 : 3823.dasm (2.52 % of base)
          36 : 3987.dasm (3.85 % of base)
          36 : 4394.dasm (3.81 % of base)
          20 : 3890.dasm (5.00 % of base)
          16 : 4523.dasm (0.78 % of base)
          12 : 1868.dasm (1.52 % of base)
           4 : 1254.dasm (1.49 % of base)
           4 : 1298.dasm (1.43 % of base)
           4 : 16908.dasm (0.49 % of base)
           4 : 1748.dasm (1.54 % of base)
           4 : 1766.dasm (1.56 % of base)
           4 : 1889.dasm (1.37 % of base)
           4 : 3913.dasm (1.85 % of base)
           4 : 3928.dasm (0.89 % of base)
           4 : 7455.dasm (1.05 % of base)
           4 : 8266.dasm (0.97 % of base)
           4 : 8314.dasm (4.00 % of base)
           4 : 8586.dasm (4.00 % of base)
           4 : 18472.dasm (0.48 % of base)
           4 : 1940.dasm (1.23 % of base)

Top file improvements (bytes):
        -120 : 6545.dasm (-1.36 % of base)
         -80 : 18613.dasm (-4.26 % of base)
         -80 : 6494.dasm (-4.27 % of base)
         -60 : 6872.dasm (-12.71 % of base)
         -48 : 6880.dasm (-10.71 % of base)
         -48 : 7546.dasm (-4.48 % of base)
         -40 : 7497.dasm (-3.94 % of base)
         -32 : 1240.dasm (-4.60 % of base)
         -32 : 1190.dasm (-7.21 % of base)
         -32 : 1295.dasm (-4.60 % of base)
         -28 : 6710.dasm (-2.24 % of base)
         -24 : 18443.dasm (-2.43 % of base)
         -24 : 6290.dasm (-2.42 % of base)
         -20 : 17255.dasm (-0.70 % of base)
         -20 : 17260.dasm (-1.01 % of base)
         -16 : 12795.dasm (-9.09 % of base)
         -16 : 15683.dasm (-9.09 % of base)
         -16 : 1694.dasm (-6.06 % of base)
         -16 : 2102.dasm (-2.20 % of base)
         -16 : 7499.dasm (-7.69 % of base)

67 total files with Code Size differences (41 improved, 26 regressed), 20 unchanged.

Top method regressions (bytes):
          36 (3.81 % of base) : 4394.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          36 (2.52 % of base) : 3823.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          36 (3.85 % of base) : 3987.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          20 (5.00 % of base) : 3890.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
          16 (0.78 % of base) : 4523.dasm - System.Globalization.IdnMapping:PunycodeEncode(System.String):System.String (FullOpts)
          12 (1.52 % of base) : 1868.dasm - System.Globalization.OrdinalCasing:ToUpperOrdinal(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]) (FullOpts)
           4 (0.49 % of base) : 16908.dasm - Internal.Reflection.Execution.ExecutionEnvironmentImplementation:GetInterfaceMap(System.Type,System.Type,byref,byref):this (FullOpts)
           4 (0.48 % of base) : 18472.dasm - Internal.Reflection.Execution.ExecutionEnvironmentImplementation:GetInterfaceMap(System.Type,System.Type,byref,byref):this (FullOpts)
           4 (1.05 % of base) : 7455.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment+GenericTypeLookupData:MatchGenericTypeEntry(Internal.Runtime.TypeLoader.TypeLoaderEnvironment+GenericTypeEntry):ubyte:this (FullOpts)
           4 (2.78 % of base) : 2196.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[long,System.__Canon]:WaitForSentinelInHashtableToDisappear(System.__Canon[],int):System.__Canon:this (FullOpts)
           4 (4.00 % of base) : 8586.dasm - Internal.TypeSystem.LockFreeReaderHashtableOfPointers`2[Internal.TypeSystem.TypeSystemContext+FunctionPointerTypeKey,System.RuntimeTypeHandle]:WaitForSentinelInHashtableToDisappear(long[],int):long (FullOpts)
           4 (4.00 % of base) : 8314.dasm - Internal.TypeSystem.LockFreeReaderHashtableOfPointers`2[System.__Canon,System.Runtime.InteropServices.GCHandle]:WaitForSentinelInHashtableToDisappear(long[],int):long (FullOpts)
           4 (1.54 % of base) : 1748.dasm - System.Collections.Concurrent.ConcurrentUnifier`2+Container[int,System.__Canon]:Add(int,int,System.__Canon):this (FullOpts)
           4 (1.49 % of base) : 1254.dasm - System.Collections.Concurrent.ConcurrentUnifier`2+Container[System.__Canon,System.__Canon]:Add(System.__Canon,int,System.__Canon):this (FullOpts)
           4 (1.43 % of base) : 1298.dasm - System.Collections.Concurrent.ConcurrentUnifier`2+Container[System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly+RuntimeAssemblyKey,System.__Canon]:Add(System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly+RuntimeAssemblyKey,int,System.__Canon):this (FullOpts)
           4 (1.23 % of base) : 1940.dasm - System.Collections.Concurrent.ConcurrentUnifierWKeyed`2+Container[System.Reflection.Runtime.TypeInfos.RuntimeHasElementTypeInfo+UnificationKey,System.__Canon]:Add(int,System.__Canon):this (FullOpts)
           4 (1.56 % of base) : 1766.dasm - System.Diagnostics.DebugProvider:WriteToStderr(System.String) (FullOpts)
           4 (0.34 % of base) : 504.dasm - System.Enum:FormatFlagNames[uint](System.Reflection.EnumInfo`1[uint],uint):System.String (FullOpts)
           4 (0.27 % of base) : 915.dasm - System.Enum:TryFormatFlagNames[uint](System.Reflection.EnumInfo`1[uint],uint,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
           4 (0.27 % of base) : 920.dasm - System.Enum:TryFormatFlagNames[ulong](System.Reflection.EnumInfo`1[ulong],ulong,System.Span`1[ushort],byref,byref):ubyte (FullOpts)

Top method improvements (bytes):
        -120 (-1.36 % 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)
         -80 (-4.26 % of base) : 18613.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -80 (-4.27 % of base) : 6494.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -60 (-12.71 % of base) : 6872.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -48 (-10.71 % of base) : 6880.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
         -48 (-4.48 % of base) : 7546.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)
         -40 (-3.94 % of base) : 7497.dasm - System.Type:GetEnumData(byref,byref):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 (-2.24 % of base) : 6710.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)
         -24 (-2.43 % of base) : 18443.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:MakeGenericType(System.Type[]):System.Type:this (FullOpts)
         -24 (-2.42 % of base) : 6290.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:MakeGenericType(System.Type[]):System.Type:this (FullOpts)
         -20 (-1.01 % of base) : 17260.dasm - WaitSubsystemTests:AutoResetEventTest() (FullOpts)
         -20 (-0.70 % of base) : 17255.dasm - WaitSubsystemTests:SemaphoreTest() (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 (-6.90 % of base) : 6669.dasm - System.DefaultBinder:CompareMethodSig(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte (FullOpts)
         -16 (-10.00 % of base) : 8117.dasm - System.Dynamic.Utils.TypeExtensions:MatchesArgumentTypes(System.Reflection.MethodInfo,System.Type[]):ubyte (FullOpts)
         -16 (-3.81 % of base) : 656.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)

Top method regressions (percentages):
          20 (5.00 % of base) : 3890.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
           4 (4.00 % of base) : 8586.dasm - Internal.TypeSystem.LockFreeReaderHashtableOfPointers`2[Internal.TypeSystem.TypeSystemContext+FunctionPointerTypeKey,System.RuntimeTypeHandle]:WaitForSentinelInHashtableToDisappear(long[],int):long (FullOpts)
           4 (4.00 % of base) : 8314.dasm - Internal.TypeSystem.LockFreeReaderHashtableOfPointers`2[System.__Canon,System.Runtime.InteropServices.GCHandle]:WaitForSentinelInHashtableToDisappear(long[],int):long (FullOpts)
          36 (3.85 % of base) : 3987.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          36 (3.81 % of base) : 4394.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
           4 (2.78 % of base) : 2196.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[long,System.__Canon]:WaitForSentinelInHashtableToDisappear(System.__Canon[],int):System.__Canon:this (FullOpts)
          36 (2.52 % of base) : 3823.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
           4 (1.85 % of base) : 3913.dasm - System.Number+BigInteger:Add(uint):this (FullOpts)
           4 (1.56 % of base) : 1766.dasm - System.Diagnostics.DebugProvider:WriteToStderr(System.String) (FullOpts)
           4 (1.54 % of base) : 1748.dasm - System.Collections.Concurrent.ConcurrentUnifier`2+Container[int,System.__Canon]:Add(int,int,System.__Canon):this (FullOpts)
          12 (1.52 % of base) : 1868.dasm - System.Globalization.OrdinalCasing:ToUpperOrdinal(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]) (FullOpts)
           4 (1.49 % of base) : 1254.dasm - System.Collections.Concurrent.ConcurrentUnifier`2+Container[System.__Canon,System.__Canon]:Add(System.__Canon,int,System.__Canon):this (FullOpts)
           4 (1.43 % of base) : 1298.dasm - System.Collections.Concurrent.ConcurrentUnifier`2+Container[System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly+RuntimeAssemblyKey,System.__Canon]:Add(System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly+RuntimeAssemblyKey,int,System.__Canon):this (FullOpts)
           4 (1.37 % of base) : 1889.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:CreateEntryNoResize(System.__Canon,System.__Canon):this (FullOpts)
           4 (1.23 % of base) : 1940.dasm - System.Collections.Concurrent.ConcurrentUnifierWKeyed`2+Container[System.Reflection.Runtime.TypeInfos.RuntimeHasElementTypeInfo+UnificationKey,System.__Canon]:Add(int,System.__Canon):this (FullOpts)
           4 (1.12 % of base) : 1149.dasm - System.Random+CompatPrng:Initialize(int):this (FullOpts)
           4 (1.10 % of base) : 7582.dasm - System.Reflection.Runtime.TypeInfos.RuntimeConstructedGenericTypeInfo:GetRuntimeTypeHandleIfAny(System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo,System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo[],System.Reflection.Runtime.TypeInfos.RuntimeConstructedGenericTypeInfo+TryGetConstructedGenericTypeDelegate):System.RuntimeTypeHandle (FullOpts)
           4 (1.05 % of base) : 7455.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment+GenericTypeLookupData:MatchGenericTypeEntry(Internal.Runtime.TypeLoader.TypeLoaderEnvironment+GenericTypeEntry):ubyte:this (FullOpts)
           4 (0.97 % of base) : 8266.dasm - System.Reflection.Runtime.TypeInfos.RuntimeFunctionPointerTypeInfo:GetRuntimeTypeHandleIfAny(System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo,System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo[],ubyte):System.RuntimeTypeHandle (FullOpts)
           4 (0.89 % of base) : 3928.dasm - System.Threading.ThreadPoolWorkQueue:UnassignWorkItemQueue(System.Threading.ThreadPoolWorkQueueThreadLocals):this (FullOpts)

Top method improvements (percentages):
         -60 (-12.71 % of base) : 6872.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -48 (-10.71 % of base) : 6880.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
         -16 (-10.00 % of base) : 8117.dasm - System.Dynamic.Utils.TypeExtensions:MatchesArgumentTypes(System.Reflection.MethodInfo,System.Type[]):ubyte (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)
          -8 (-8.70 % of base) : 2090.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
         -16 (-7.69 % of base) : 7499.dasm - System.Type:ImplementInterface(System.Type):ubyte:this (FullOpts)
         -32 (-7.21 % of base) : 1190.dasm - System.Text.EncodingTable:GetCodePageDataItem(int):System.Text.CodePageDataItem (FullOpts)
         -16 (-6.90 % of base) : 6669.dasm - System.DefaultBinder:CompareMethodSig(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte (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.35 % of base) : 8246.dasm - System.Reflection.TypeNameParser+GenericTypeName:ResolveType(byref,System.String):System.Type:this (FullOpts)
         -16 (-6.06 % of base) : 1694.dasm - System.Boolean:TrimWhiteSpaceAndNull(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
         -12 (-4.84 % of base) : 6487.dasm - Internal.TypeSystem.TypeSystemContext:GetArrayTypesCache(ubyte,int):Internal.TypeSystem.TypeSystemContext+RuntimeTypeHandleToParameterTypeRuntimeTypeHandleHashtable (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%)

No diffs found.

Details

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


osx arm64

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

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

Overall (-177,740 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,173,700 -3,300
benchmarks.run_pgo.osx.arm64.checked.mch 34,346,112 -16,604
benchmarks.run_tiered.osx.arm64.checked.mch 15,512,636 -5,860
coreclr_tests.run.osx.arm64.checked.mch 486,273,168 -26,920
libraries.crossgen2.osx.arm64.checked.mch 55,715,976 -11,204
libraries.pmi.osx.arm64.checked.mch 80,194,908 -4,428
libraries_tests.run.osx.arm64.Release.mch 323,385,308 -90,324
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 162,548,024 -15,812
realworld.run.osx.arm64.checked.mch 15,058,824 -3,288

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 (-155,928 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,173,164 -3,300
benchmarks.run_pgo.osx.arm64.checked.mch 18,044,812 -11,736
benchmarks.run_tiered.osx.arm64.checked.mch 4,008,152 -2,224
coreclr_tests.run.osx.arm64.checked.mch 153,660,244 -24,844
libraries.crossgen2.osx.arm64.checked.mch 55,714,348 -11,204
libraries.pmi.osx.arm64.checked.mch 80,073,780 -4,428
libraries_tests.run.osx.arm64.Release.mch 119,669,460 -79,684
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 149,394,296 -15,220
realworld.run.osx.arm64.checked.mch 14,494,868 -3,288

Example diffs

benchmarks.run.osx.arm64.checked.mch

-8 (-8.70%) : 5296.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)

@@ -50,23 +50,20 @@ G_M6504_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, by ;; size=28 bbWeight=1 PerfScore 7.00 G_M6504_IG03: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=100002 {x1 x20}, byref, isz mov w3, w2
- lsl x4, x3, #1 - add x4, x1, x4 - ; byrRegs +[x4] - ldrb w3, [x20, x3] - strh w3, [x4]
+ ldrb w4, [x20, x3] + strh w4, [x1, x3, LSL #2]
add w2, w2, #1 cmp w2, w19 blt G_M6504_IG03
- ;; size=32 bbWeight=4 PerfScore 32.00
+ ;; size=24 bbWeight=4 PerfScore 26.00
G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[x1 x4 x20]
+ ; byrRegs -[x1 x20]
ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 92, prolog size 20, PerfScore 45.50, instruction count 23, allocated bytes for code 92 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
+; Total bytes of code 84, prolog size 20, PerfScore 39.50, instruction count 21, allocated bytes for code 84 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -77,7 +74,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)

-40 (-7.94%) : 22387.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (FullOpts)

@@ -7,36 +7,30 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 7, 5.08) ref -> x0 class-hnd single-def <int[][]> -; V01 arg1 [V01,T16] ( 11, 26.98) int -> x1 single-def -; V02 loc0 [V02,T11] ( 18, 35.40) int -> x2 -; V03 loc1 [V03,T01] ( 23, 84.96) int -> x5 -; V04 loc2 [V04,T14] ( 6, 32.00) int -> x10
+; V00 arg0 [V00,T17] ( 7, 5.08) ref -> x0 class-hnd single-def <int[][]> +; V01 arg1 [V01,T15] ( 11, 26.98) int -> x1 single-def +; V02 loc0 [V02,T11] ( 17, 35.48) int -> x2 +; V03 loc1 [V03,T01] ( 25, 85.27) int -> x5 +; V04 loc2 [V04,T13] ( 6, 32.00) int -> x9
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T03] ( 7, 64.32) ref -> x11 class-hnd "Strict ordering of exceptions for Array store" <int[]>
+; V06 tmp1 [V06,T03] ( 7, 64.32) ref -> x10 class-hnd "Strict ordering of exceptions for Array store" <int[]>
; V07 tmp2 [V07,T04] ( 6, 64.00) int -> x13 "Strict ordering of exceptions for Array store"
-; V08 tmp3 [V08,T02] ( 8, 64.64) ref -> x8 "arr expr" -; V09 tmp4 [V09,T00] ( 9, 96.00) ref -> registers "arr expr" -; V10 tmp5 [V10,T13] ( 6, 1.91) ref -> registers "arr expr" -; V11 cse0 [V11,T26] ( 3, 0.36) ref -> x6 hoist "CSE - conservative" -; V12 cse1 [V12,T22] ( 3, 0.48) ref -> x8 "CSE - conservative" -; V13 cse2 [V13,T24] ( 3, 0.48) ref -> x0 "CSE - conservative" -; V14 cse3 [V14,T10] ( 8, 37.64) ref -> x7 hoist multi-def "CSE - aggressive" -; V15 cse4 [V15,T06] ( 2, 31.36) ref -> x0 "CSE - aggressive" -; V16 cse5 [V16,T21] ( 4, 4.00) long -> x6 hoist multi-def "CSE - aggressive" -; V17 cse6 [V17,T12] ( 6, 33.68) long -> x6 hoist multi-def "CSE - aggressive" -; V18 cse7 [V18,T08] ( 3, 47.04) long -> x8 "CSE - aggressive" -; V19 cse8 [V19,T28] ( 2, 0.08) long -> x10 hoist "CSE - conservative" -; V20 cse9 [V20,T27] ( 3, 0.36) long -> x7 hoist "CSE - conservative" -; V21 cse10 [V21,T23] ( 3, 0.48) long -> x9 "CSE - conservative" -; V22 cse11 [V22,T25] ( 3, 0.48) long -> x8 "CSE - conservative" -; V23 cse12 [V23,T17] ( 8, 19.08) byref -> x4 hoist multi-def "CSE - aggressive" -; V24 cse13 [V24,T05] ( 6, 47.52) byref -> x9 multi-def "CSE - aggressive" -; V25 cse14 [V25,T15] ( 2, 31.36) int -> x13 "CSE - aggressive" -; V26 cse15 [V26,T07] ( 3, 47.04) byref -> x0 "CSE - aggressive" -; V27 cse16 [V27,T19] ( 7, 6.36) int -> x3 hoist multi-def "CSE - aggressive" -; V28 cse17 [V28,T20] ( 6, 6.00) long -> x0 multi-def "CSE - aggressive" -; V29 cse18 [V29,T09] ( 3, 47.04) long -> x0 "CSE - aggressive"
+; V08 tmp3 [V08,T02] ( 8, 64.64) ref -> registers "arr expr" +; V09 tmp4 [V09,T00] ( 9, 96.00) ref -> x11 "arr expr" +; V10 tmp5 [V10,T12] ( 6, 1.91) ref -> x6 "arr expr" +; V11 cse0 [V11,T20] ( 3, 0.48) ref -> x10 "CSE - conservative" +; V12 cse1 [V12,T21] ( 3, 0.48) ref -> x6 "CSE - conservative" +; V13 cse2 [V13,T22] ( 3, 0.48) ref -> x6 "CSE - conservative" +; V14 cse3 [V14,T09] ( 8, 37.78) ref -> x6 multi-def "CSE - aggressive" +; V15 cse4 [V15,T07] ( 2, 31.36) ref -> x11 "CSE - aggressive" +; V16 cse5 [V16,T16] ( 8, 19.34) byref -> x4 hoist multi-def "CSE - aggressive" +; V17 cse6 [V17,T06] ( 6, 47.52) byref -> x8 multi-def "CSE - aggressive" +; V18 cse7 [V18,T14] ( 2, 31.36) int -> x13 "CSE - aggressive" +; V19 cse8 [V19,T08] ( 3, 47.04) byref -> x11 "CSE - aggressive" +; V20 cse9 [V20,T18] ( 7, 6.48) int -> x3 hoist multi-def "CSE - aggressive" +; V21 cse10 [V21,T10] ( 8, 35.82) long -> x0 hoist multi-def "CSE - aggressive" +; V22 cse11 [V22,T05] ( 4, 62.73) long -> x7 "CSE - aggressive" +; V23 cse12 [V23,T19] ( 4, 0.52) long -> x7 hoist "CSE - conservative"
; ; Lcl frame size = 0 @@ -65,103 +59,94 @@ G_M43574_IG03: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, b ;; size=12 bbWeight=3.96 PerfScore 7.92 G_M43574_IG04: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz mov w0, w2
- lsl x6, x0, #3 - ldr x7, [x4, x6] - ; gcrRegs +[x7] - cbz x7, G_M43574_IG07 - ldr w6, [x7, #0x08] - cmp w6, w1
+ ldr x6, [x4, x0, LSL #3] + ; gcrRegs +[x6] + cbz x6, G_M43574_IG07 + ldr w7, [x6, #0x08] + cmp w7, w1
ble G_M43574_IG07
- lsl x6, x0, #2 - ;; size=32 bbWeight=1.98 PerfScore 21.78 -G_M43574_IG05: ; bbWeight=15.68, gcrefRegs=0080 {x7}, byrefRegs=0010 {x4}, byref, isz - mov x8, x7 - ; gcrRegs +[x8] - add x9, x8, #16 - ; byrRegs +[x9] - mov w0, w5 - lsl x8, x0, #2 - ; gcrRegs -[x8] - ldr w10, [x9, x8] - mov x11, x7
+ ;; size=24 bbWeight=1.98 PerfScore 17.82 +G_M43574_IG05: ; bbWeight=15.68, gcrefRegs=0040 {x6}, byrefRegs=0010 {x4}, byref, isz + mov x7, x6 + ; gcrRegs +[x7] + add x8, x7, #16 + ; byrRegs +[x8] + mov w7, w5 + ; gcrRegs -[x7] + ldr w9, [x8, x7, LSL #2] + mov x10, x6 + ; gcrRegs +[x10] + ldr x11, [x4, x7, LSL #3]
; gcrRegs +[x11]
- lsl x0, x0, #3 - ldr x0, [x4, x0] - ; gcrRegs +[x0] - ldr w13, [x0, #0x08]
+ ldr w13, [x11, #0x08]
cmp w2, w13 bhs G_M43574_IG15
- add x0, x0, #16 - ; gcrRegs -[x0] - ; byrRegs +[x0] - ldr w13, [x0, x6] - ldr w11, [x11, #0x08]
+ add x11, x11, #16
; gcrRegs -[x11]
- cmp w5, w11
+ ; byrRegs +[x11] + ldr w13, [x11, x0, LSL #2] + ldr w10, [x10, #0x08] + ; gcrRegs -[x10] + cmp w5, w10
bhs G_M43574_IG15
- str w13, [x9, x8] - str w10, [x0, x6]
+ str w13, [x8, x7, LSL #2] + str w9, [x11, x0, LSL #2]
add w5, w5, #1 cmp w5, w1 ble G_M43574_IG05
- ;; size=84 bbWeight=15.68 PerfScore 415.56
+ ;; size=76 bbWeight=15.68 PerfScore 384.20
G_M43574_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref
- ; gcrRegs -[x7] - ; byrRegs -[x0 x9]
+ ; gcrRegs -[x6] + ; byrRegs -[x8 x11]
b G_M43574_IG09 ;; size=4 bbWeight=3.96 PerfScore 3.96 G_M43574_IG07: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref mov w0, w2
- lsl x6, x0, #3 - ldr x7, [x4, x6]
+ ;; size=4 bbWeight=0.02 PerfScore 0.01 +G_M43574_IG08: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz + ldr x6, [x4, x0, LSL #3] + ; gcrRegs +[x6] + mov x7, x6
; gcrRegs +[x7]
- lsl x6, x0, #2 - ;; size=16 bbWeight=0.02 PerfScore 0.11 -G_M43574_IG08: ; bbWeight=0.16, gcrefRegs=0080 {x7}, byrefRegs=0010 {x4}, byref, isz - mov x8, x7 - ; gcrRegs +[x8] - ldr w9, [x8, #0x08] - cmp w5, w9
+ ldr w8, [x7, #0x08] + cmp w5, w8
bhs G_M43574_IG15
- add x9, x8, #16 - ; byrRegs +[x9] - ubfiz x8, x5, #2, #32 - ; gcrRegs -[x8] - ldr w10, [x9, x8] - mov x11, x7 - ; gcrRegs +[x11]
+ add x8, x7, #16 + ; byrRegs +[x8] + ldr w9, [x8, w5, UXTW #2] + mov x10, x6 + ; gcrRegs +[x10]
cmp w5, w3 bhs G_M43574_IG15
- ldr x0, [x4, w5, UXTW #3] - ; gcrRegs +[x0] - mov x14, x0 - ; gcrRegs +[x14] - ldr w13, [x14, #0x08]
+ ldr x6, [x4, w5, UXTW #3] + mov x11, x6 + ; gcrRegs +[x11] + ldr w13, [x11, #0x08]
cmp w2, w13 bhs G_M43574_IG15
- add x14, x14, #16 - ; gcrRegs -[x14] - ; byrRegs +[x14] - ldr w13, [x14, x6] - ldr w11, [x11, #0x08]
+ add x7, x11, #16 + ; gcrRegs -[x7] + ; byrRegs +[x7] + ldr w13, [x7, x0, LSL #2] + ldr w10, [x10, #0x08] + ; gcrRegs -[x10] + cmp w5, w10 + bhs G_M43574_IG15 + str w13, [x8, w5, UXTW #2] + ldr w11, [x6, #0x08]
; gcrRegs -[x11]
- cmp w5, w11
+ cmp w2, w11
bhs G_M43574_IG15
- str w13, [x9, x8] - ldr w13, [x0, #0x08] - cmp w2, w13 - bhs G_M43574_IG15 - add x0, x0, #16 - ; gcrRegs -[x0] - ; byrRegs +[x0] - str w10, [x0, x6]
+ add x13, x6, #16 + ; byrRegs +[x13] + str w9, [x13, x0, LSL #2]
add w5, w5, #1 cmp w5, w1 ble G_M43574_IG08
- ;; size=116 bbWeight=0.16 PerfScore 5.78
+ ;; size=116 bbWeight=0.16 PerfScore 6.10
G_M43574_IG09: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
- ; gcrRegs -[x7] - ; byrRegs -[x0 x9 x14]
+ ; gcrRegs -[x6] + ; byrRegs -[x7-x8 x13]
add w2, w2, #1 cmp w2, w1 ble G_M43574_IG03 @@ -170,68 +155,63 @@ G_M43574_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x4] b G_M43574_IG14 ;; size=4 bbWeight=1 PerfScore 1.00
-G_M43574_IG11: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M43574_IG11: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x0] mov w5, #1 ldr w3, [x0, #0x08] add x4, x0, #16 ; byrRegs +[x4]
- ubfiz x10, x2, #3, #32
+ mov w7, w2 + ;; size=16 bbWeight=0.04 PerfScore 0.18 +G_M43574_IG12: ; bbWeight=0.16, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref, isz
cmp w2, w3 bhs G_M43574_IG15
- ldr x6, [x4, x10] - ; gcrRegs +[x6] - ubfiz x7, x2, #2, #32 - ;; size=32 bbWeight=0.04 PerfScore 0.42 -G_M43574_IG12: ; bbWeight=0.16, gcrefRegs=0041 {x0 x6}, byrefRegs=0010 {x4}, byref, isz - mov x8, x6 - ; gcrRegs +[x8] - ldr w9, [x8, #0x08]
...

-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 (+3.57%) : 9993.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span1[uint],System.ReadOnlySpan1[uint],ulong):uint (FullOpts)

@@ -19,8 +19,8 @@ ; V09 tmp2 [V09,T10] ( 2, 5 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V10 tmp3 [V10,T09] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP ; V11 tmp4 [V11,T07] ( 3, 6 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V12 cse0 [V12,T04] ( 3, 12 ) long -> x7 "CSE - aggressive" -; V13 cse1 [V13,T05] ( 3, 12 ) int -> x9 "CSE - aggressive"
+; V12 cse0 [V12,T04] ( 3, 12 ) int -> x9 "CSE - aggressive" +; V13 cse1 [V13,T05] ( 3, 12 ) long -> x7 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -36,19 +36,20 @@ G_M60135_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, b ble G_M60135_IG06 ;; size=16 bbWeight=1 PerfScore 2.50 G_M60135_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- ubfiz x7, x6, #2, #32 - ldr w8, [x2, x7]
+ mov w7, w6 + ldr w8, [x2, x7, LSL #2]
madd x5, x8, x4, x5 sxtw w8, w5 lsr x5, x5, #32 cmp w6, w1 bhs G_M60135_IG08
+ lsl x7, x7, #2
add x7, x0, x7 ; byrRegs +[x7] ldr w9, [x7] cmp w9, w8 bhs G_M60135_IG05
- ;; size=44 bbWeight=4 PerfScore 68.00
+ ;; size=48 bbWeight=4 PerfScore 70.00
G_M60135_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0085 {x0 x2 x7}, byref add x5, x5, #1 ;; size=4 bbWeight=2 PerfScore 1.00 @@ -73,7 +74,7 @@ G_M60135_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 112, prolog size 8, PerfScore 89.50, instruction count 28, allocated bytes for code 112 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (FullOpts)
+; Total bytes of code 116, prolog size 8, PerfScore 91.50, instruction count 29, allocated bytes for code 116 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (FullOpts)
; ============================================================ Unwind Info: @@ -84,7 +85,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ 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 (+4.24%) : 821.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)

@@ -9,35 +9,36 @@ ; Final local variable assignments ; ; V00 this [V00,T04] ( 11, 7 ) byref -> x19 this single-def
-; V01 arg1 [V01,T06] ( 5, 3.50) int -> x1 single-def -; V02 loc0 [V02,T16] ( 3, 2.50) int -> x0
+; V01 arg1 [V01,T07] ( 5, 3.50) int -> x1 single-def +; V02 loc0 [V02,T17] ( 3, 2.50) int -> x0
; V03 loc1 [V03,T15] ( 5, 2.50) int -> x21
-; V04 loc2 [V04,T11] ( 5, 4 ) int -> x20 ld-addr-op -; V05 loc3 [V05,T00] ( 11, 29.50) int -> x22 -; V06 loc4 [V06,T01] ( 14, 22 ) int -> x23 -; V07 loc5 [V07,T18] ( 2, 1 ) int -> x0 -; V08 loc6 [V08,T09] ( 4, 5 ) int -> x1 -; V09 loc7 [V09,T03] ( 4, 10.50) int -> x2 -; V10 loc8 [V10,T05] ( 3, 6.50) int -> x3
+; V04 loc2 [V04,T16] ( 5, 2.50) int -> x20 ld-addr-op +; V05 loc3 [V05,T00] ( 13, 34.50) int -> x22 +; V06 loc4 [V06,T01] ( 14, 28 ) int -> x23 +; V07 loc5 [V07,T19] ( 2, 1 ) int -> x0 +; V08 loc6 [V08,T05] ( 4, 9 ) int -> x1 +; V09 loc7 [V09,T03] ( 6, 13.50) int -> x2 +; V10 loc8 [V10,T06] ( 4, 9 ) int -> x3
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp3 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V15 tmp4 [V15 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V16 tmp5 [V16,T07] ( 5, 5 ) long -> [fp+0x18] "Inlining Arg"
+; V16 tmp5 [V16,T09] ( 5, 5 ) long -> [fp+0x18] "Inlining Arg"
;* V17 tmp6 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V18 tmp7 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp8 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp9 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V21 tmp10 [V21 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V22 tmp11 [V22,T08] ( 5, 5 ) long -> [fp+0x10] spill-single-def "Inlining Arg"
+; V22 tmp11 [V22,T10] ( 5, 5 ) long -> [fp+0x10] spill-single-def "Inlining Arg"
;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V24 tmp13 [V24,T13] ( 3, 3 ) long -> x0 "Cast away GC" ; V25 tmp14 [V25,T14] ( 3, 3 ) long -> x0 "Cast away GC"
-; V26 cse0 [V26,T17] ( 3, 1.50) int -> x0 "CSE - moderate" -; V27 cse1 [V27,T02] ( 12, 18 ) byref -> x24 hoist multi-def "CSE - aggressive" -; V28 cse2 [V28,T10] ( 2, 4.50) int -> x0 hoist "CSE - aggressive" -; V29 cse3 [V29,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
+; V26 cse0 [V26,T18] ( 3, 1.50) int -> x0 "CSE - moderate" +; V27 cse1 [V27,T02] ( 13, 20.50) byref -> x24 hoist multi-def "CSE - aggressive" +; V28 cse2 [V28,T11] ( 3, 5 ) int -> x0 "CSE - aggressive" +; V29 cse3 [V29,T08] ( 4, 5.50) int -> x4 hoist multi-def "CSE - aggressive" +; V30 cse4 [V30,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
; ; Lcl frame size = 16 @@ -151,7 +152,7 @@ G_M38441_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=48 bbWeight=0.50 PerfScore 4.75
-G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add w0, w23, #1 str w0, [x19] neg w0, w20 @@ -159,42 +160,45 @@ G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, mov w1, wzr add x24, x19, #4 ; byrRegs +[x24]
+ ldr w2, [x24, w22, SXTW #2]
and w0, w0, #31
- b G_M38441_IG13 - ;; size=32 bbWeight=0.50 PerfScore 2.50 -G_M38441_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ lsr w3, w2, w0 + cmp w22, #0 + ble G_M38441_IG13 + and w4, w20, #31 + ;; size=48 bbWeight=0.50 PerfScore 4.75 +G_M38441_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
orr w1, w1, w3 str w1, [x24, w23, SXTW #2]
- lsl w1, w2, w20
+ lsl w1, w2, w4
sub w22, w22, #1 sub w23, w23, #1
- ;; size=20 bbWeight=2 PerfScore 6.00 -G_M38441_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w2, [x24, w22, SXTW #2] lsr w3, w2, w0 cmp w22, #0 bgt G_M38441_IG12
- ;; size=16 bbWeight=4 PerfScore 20.00 -G_M38441_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3 - str w0, [x24, w23, SXTW #2]
+ ;; size=36 bbWeight=4 PerfScore 32.00 +G_M38441_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w4, w1, w3 + str w4, [x24, w23, SXTW #2]
sub w0, w23, #1
- lsl w1, w2, w20
+ and w4, w20, #31 + lsl w1, w2, w4
str w1, [x24, w0, SXTW #2] mov x0, x24 lsl w1, w21, #2 mov w1, w1 str x1, [fp, #0x10] // [V22 tmp11]
- cbz x1, G_M38441_IG16
+ cbz x1, G_M38441_IG15
cmp x1, #0xD1FFAB1E
- bhi G_M38441_IG15
+ bhi G_M38441_IG14
mov w1, wzr ldr w2, [fp, #0x10] // [V22 tmp11] bl CORINFO_HELP_MEMSET ; gcr arg pop 0
- b G_M38441_IG16 - ;; size=64 bbWeight=0.50 PerfScore 6.75 -G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ b G_M38441_IG15 + ;; size=68 bbWeight=0.50 PerfScore 7.00 +G_M38441_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
ldr x1, [fp, #0x10] // [V22 tmp11] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -203,7 +207,7 @@ G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 blr x2 ; gcr arg pop 0 ;; size=24 bbWeight=0.50 PerfScore 3.75
-G_M38441_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w0, [x19] sub w0, w0, #1 ldr w1, [x24, w0, SXTW #2] @@ -212,7 +216,7 @@ G_M38441_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 b G_M38441_IG04 ;; size=24 bbWeight=0.50 PerfScore 4.75
-; Total bytes of code 472, prolog size 24, PerfScore 111.75, instruction count 118, allocated bytes for code 472 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
+; Total bytes of code 492, prolog size 24, PerfScore 120.25, instruction count 123, allocated bytes for code 492 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
; ============================================================ Unwind Info: @@ -223,7 +227,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 118 (0x00076) Actual length = 472 (0x0001d8)
+ Function Length : 123 (0x0007b) Actual length = 492 (0x0001ec)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+4.55%) : 24361.dasm - BenchmarksGame.ReverseComplement_1:InitComplements() (FullOpts)

@@ -19,9 +19,9 @@ ; V09 cse0 [V09,T08] ( 4, 7 ) ref -> x1 hoist "CSE - aggressive" ; V10 cse1 [V10,T10] ( 2, 5 ) byref -> x4 hoist "CSE - aggressive" ; V11 cse2 [V11,T11] ( 2, 5 ) byref -> x5 hoist "CSE - aggressive"
-; V12 cse3 [V12,T07] ( 3, 12 ) long -> x6 "CSE - aggressive" -; V13 cse4 [V13,T05] ( 5, 14 ) int -> x3 "CSE - aggressive" -; V14 cse5 [V14,T06] ( 3, 12 ) byref -> x2 "CSE - aggressive"
+; V12 cse3 [V12,T05] ( 5, 14 ) int -> x3 "CSE - aggressive" +; V13 cse4 [V13,T06] ( 3, 12 ) byref -> x2 "CSE - aggressive" +; V14 cse5 [V14,T07] ( 3, 12 ) long -> x6 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -63,8 +63,10 @@ G_M12226_IG04: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0004 {x2}, by ;; size=28 bbWeight=1 PerfScore 3.50 G_M12226_IG05: ; bbWeight=4, gcrefRegs=0002 {x1}, byrefRegs=0034 {x2 x4 x5}, byref, isz ; byrRegs +[x4-x5]
- ubfiz x6, x0, #1, #32 - ldrb w7, [x4, x6]
+ mov w6, w0 + lsl x7, x6, #1 + ldrb w7, [x4, x7] + lsl x6, x6, #1
ldrb w6, [x5, x6] cmp w7, w3 bhs G_M12226_IG08 @@ -72,7 +74,7 @@ G_M12226_IG05: ; bbWeight=4, gcrefRegs=0002 {x1}, byrefRegs=0034 {x2 x4 x add w0, w0, #1 cmp w0, #24 blt G_M12226_IG05
- ;; size=36 bbWeight=4 PerfScore 46.00
+ ;; size=44 bbWeight=4 PerfScore 52.00
G_M12226_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x2 x4-x5] mov x0, x1 @@ -95,7 +97,7 @@ G_M12226_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 8, PerfScore 99.50, instruction count 44, allocated bytes for code 176 (MethodHash=c680d03d) for method BenchmarksGame.ReverseComplement_1:InitComplements() (FullOpts)
+; Total bytes of code 184, prolog size 8, PerfScore 105.50, instruction count 46, allocated bytes for code 184 (MethodHash=c680d03d) for method BenchmarksGame.ReverseComplement_1:InitComplements() (FullOpts)
; ============================================================ Unwind Info: @@ -106,7 +108,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
+ 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)

benchmarks.run_pgo.osx.arm64.checked.mch

-40 (-10.99%) : 69153.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)

@@ -9,35 +9,30 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 99.43 ; Final local variable assignments ;
-; V00 arg0 [V00,T19] ( 6, 4.98) ref -> x0 class-hnd single-def <int[][]>
+; V00 arg0 [V00,T17] ( 6, 4.98) ref -> x0 class-hnd single-def <int[][]>
; V01 arg1 [V01,T14] ( 9,105.95) int -> x1 single-def
-; V02 loc0 [V02,T15] ( 9,103.98) int -> x3
+; V02 loc0 [V02,T15] ( 9,104.96) int -> x3
; V03 loc1 [V03,T01] ( 15,499.98) int -> x2
-; V04 loc2 [V04,T11] ( 4,198.01) int -> x13
+; V04 loc2 [V04,T11] ( 4,198.01) int -> x10
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T03] ( 4,396.02) ref -> x14 class-hnd "Strict ordering of exceptions for Array store" <int[]> -; V07 tmp2 [V07,T04] ( 4,396.02) int -> x10 "Strict ordering of exceptions for Array store" -; V08 tmp3 [V08,T02] ( 5,398.00) ref -> x10 "arr expr" -; V09 tmp4 [V09,T00] ( 6,594.03) ref -> registers "arr expr"
+; V06 tmp1 [V06,T03] ( 4,396.02) ref -> x11 class-hnd "Strict ordering of exceptions for Array store" <int[]> +; V07 tmp2 [V07,T04] ( 4,396.02) int -> registers "Strict ordering of exceptions for Array store" +; V08 tmp3 [V08,T02] ( 5,398.00) ref -> x8 "arr expr" +; V09 tmp4 [V09,T00] ( 6,594.03) ref -> x13 "arr expr"
;* V10 tmp5 [V10,T12] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V11 cse0 [V11,T18] ( 5,100.99) ref -> x7 hoist multi-def "CSE - aggressive" -; V12 cse1 [V12,T22] ( 2, 1.98) ref -> x6 "CSE - aggressive" -; V13 cse2 [V13,T16] ( 7,101.98) ref -> x8 multi-def "CSE - aggressive" -; V14 cse3 [V14,T06] ( 2,196.03) ref -> x5 "CSE - aggressive" -; V15 cse4 [V15,T26] ( 4, 1.99) long -> x7 hoist multi-def "CSE - aggressive" -; V16 cse5 [V16,T10] ( 6,199.00) long -> x9 hoist multi-def "CSE - aggressive" -; V17 cse6 [V17,T08] ( 3,294.04) long -> x6 "CSE - aggressive" -; V18 cse7 [V18,T24] ( 3, 2.97) long -> x8 "CSE - aggressive" -; V19 cse8 [V19,T17] ( 5,101.00) byref -> x4 hoist "CSE - aggressive" -; V20 cse9 [V20,T20] ( 6, 3.97) int -> x5 hoist multi-def "CSE - aggressive" -; V21 cse10 [V21,T05] ( 6,297.01) byref -> x11 multi-def "CSE - aggressive" -; V22 cse11 [V22,T13] ( 2,196.03) int -> x10 "CSE - aggressive" -; V23 cse12 [V23,T07] ( 3,294.04) byref -> x5 "CSE - aggressive" -; V24 cse13 [V24,T27] ( 2, 1.98) int -> x10 "CSE - aggressive" -; V25 cse14 [V25,T23] ( 3, 2.97) byref -> x6 "CSE - aggressive" -; V26 cse15 [V26,T21] ( 6, 2.99) long -> x6 multi-def "CSE - aggressive" -; V27 cse16 [V27,T09] ( 3,294.04) long -> x5 "CSE - aggressive" -; V28 cse17 [V28,T25] ( 3, 2.97) long -> x6 "CSE - aggressive"
+; V11 cse0 [V11,T20] ( 2, 1.98) ref -> x13 "CSE - aggressive" +; V12 cse1 [V12,T09] ( 8,201.96) ref -> x7 multi-def "CSE - aggressive" +; V13 cse2 [V13,T07] ( 2,196.03) ref -> x13 "CSE - aggressive" +; V14 cse3 [V14,T16] ( 5,101.98) byref -> x4 hoist "CSE - aggressive" +; V15 cse4 [V15,T18] ( 6, 4.95) int -> x5 hoist multi-def "CSE - aggressive" +; V16 cse5 [V16,T06] ( 6,297.01) byref -> x9 multi-def "CSE - aggressive" +; V17 cse6 [V17,T13] ( 2,196.03) int -> x8 "CSE - aggressive" +; V18 cse7 [V18,T08] ( 3,294.04) byref -> x13 "CSE - aggressive" +; V19 cse8 [V19,T22] ( 2, 1.98) int -> x7 "CSE - aggressive" +; V20 cse9 [V20,T21] ( 3, 2.97) byref -> x7 "CSE - aggressive" +; V21 cse10 [V21,T10] ( 8,200.98) long -> x6 hoist multi-def "CSE - aggressive" +; V22 cse11 [V22,T05] ( 4,392.06) long -> x5 "CSE - aggressive" +; V23 cse12 [V23,T19] ( 4, 3.96) long -> x8 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -67,109 +62,96 @@ G_M43574_IG05: ; bbWeight=0.99, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, cmp w5, w3 bls G_M43574_IG08 mov w6, w3
- lsl x7, x6, #3 - ldr x8, [x4, x7] - ; gcrRegs +[x8] - cbz x8, G_M43574_IG08 - orr w7, w2, w1 - tbnz w7, #31, G_M43574_IG08 - ldr w7, [x8, #0x08] - cmp w7, w1
+ ldr x7, [x4, x6, LSL #3] + ; gcrRegs +[x7] + cbz x7, G_M43574_IG08 + orr w8, w2, w1 + tbnz w8, #31, G_M43574_IG08 + ldr w8, [x7, #0x08] + cmp w8, w1
ble G_M43574_IG08 cmp w5, w1 ble G_M43574_IG08
- mov x7, x8 - ; gcrRegs +[x7] - lsl x9, x6, #2 - ;; size=68 bbWeight=0.99 PerfScore 19.72 -G_M43574_IG06: ; bbWeight=98.01, gcrefRegs=0181 {x0 x7 x8}, byrefRegs=0010 {x4}, byref, isz - mov x10, x8 - ; gcrRegs +[x10] - add x11, x10, #16 - ; byrRegs +[x11]
+ ;; size=56 bbWeight=0.99 PerfScore 17.25 +G_M43574_IG06: ; bbWeight=98.01, gcrefRegs=0081 {x0 x7}, byrefRegs=0010 {x4}, byref, isz + mov x8, x7 + ; gcrRegs +[x8] + add x9, x8, #16 + ; byrRegs +[x9]
mov w5, w2
- lsl x6, x5, #2 - ldr w13, [x11, x6] - mov x14, x7 - ; gcrRegs +[x14] - lsl x10, x5, #3 - ; gcrRegs -[x10] - ldr x5, [x4, x10] - ; gcrRegs +[x5] - ldr w10, [x5, #0x08] - cmp w3, w10
+ ldr w10, [x9, x5, LSL #2] + mov x11, x7 + ; gcrRegs +[x11] + ldr x13, [x4, x5, LSL #3] + ; gcrRegs +[x13] + ldr w8, [x13, #0x08] + ; gcrRegs -[x8] + cmp w3, w8
bhs G_M43574_IG11
- add x5, x5, #16 - ; gcrRegs -[x5] - ; byrRegs +[x5] - ldr w10, [x5, x9] - ldr w14, [x14, #0x08] - ; gcrRegs -[x14] - cmp w2, w14
+ add x13, x13, #16 + ; gcrRegs -[x13] + ; byrRegs +[x13] + ldr w8, [x13, x6, LSL #2] + ldr w11, [x11, #0x08] + ; gcrRegs -[x11] + cmp w2, w11
bhs G_M43574_IG11
- str w10, [x11, x6] - str w13, [x5, x9]
+ str w8, [x9, x5, LSL #2] + str w10, [x13, x6, LSL #2]
add w2, w2, #1 cmp w2, w1 ble G_M43574_IG06
- ;; size=84 bbWeight=98.01 PerfScore 2597.38
+ ;; size=76 bbWeight=98.01 PerfScore 2401.35
G_M43574_IG07: ; bbWeight=0.99, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref
- ; gcrRegs -[x7-x8] - ; byrRegs -[x5 x11]
+ ; gcrRegs -[x7] + ; byrRegs -[x9 x13]
b G_M43574_IG10 ;; size=4 bbWeight=0.99 PerfScore 0.99
-G_M43574_IG08: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref, isz
+G_M43574_IG08: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref
ldr w5, [x0, #0x08] mov w6, w3
- lsl x7, x6, #3
+ ;; size=8 bbWeight=0.01 PerfScore 0.03 +G_M43574_IG09: ; bbWeight=0.99, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref, isz
cmp w3, w5 bhs G_M43574_IG11
- ldr x8, [x4, x7] - ; gcrRegs +[x8] - mov x7, x8
+ ldr x7, [x4, x6, LSL #3]
; gcrRegs +[x7]
- lsl x9, x6, #2 - ;; size=32 bbWeight=0.01 PerfScore 0.10 -G_M43574_IG09: ; bbWeight=0.99, gcrefRegs=0081 {x0 x7}, byrefRegs=0010 {x4}, byref, isz - ; gcrRegs -[x8] - mov x10, x7 - ; gcrRegs +[x10] - ldr w11, [x10, #0x08] - cmp w2, w11
+ mov x8, x7 + ; gcrRegs +[x8] + ldr w9, [x8, #0x08] + cmp w2, w9
bhs G_M43574_IG11
- add x11, x10, #16 - ; byrRegs +[x11] - mov w6, w2 - lsl x8, x6, #2 - ldr w13, [x11, x8] - mov x14, x7 - ; gcrRegs +[x14]
+ add x9, x8, #16 + ; byrRegs +[x9] + mov w8, w2 + ; gcrRegs -[x8] + ldr w10, [x9, x8, LSL #2] + mov x11, x7 + ; gcrRegs +[x11]
cmp w2, w5 bhs G_M43574_IG11
- lsl x6, x6, #3 - ldr x6, [x4, x6] - ; gcrRegs +[x6] - ldr w10, [x6, #0x08] - ; gcrRegs -[x10] - cmp w3, w10
+ ldr x13, [x4, x8, LSL #3] + ; gcrRegs +[x13] + ldr w7, [x13, #0x08] + ; gcrRegs -[x7] + cmp w3, w7
bhs G_M43574_IG11
- add x6, x6, #16 - ; gcrRegs -[x6] - ; byrRegs +[x6] - ldr w10, [x6, x9] - ldr w14, [x14, #0x08] - ; gcrRegs -[x14] - cmp w2, w14
+ add x7, x13, #16 + ; byrRegs +[x7] + ldr w13, [x7, x6, LSL #2] + ; gcrRegs -[x13] + ldr w11, [x11, #0x08] + ; gcrRegs -[x11] + cmp w2, w11
bhs G_M43574_IG11
- str w10, [x11, x8] - str w13, [x6, x9]
+ str w13, [x9, x8, LSL #2] + str w10, [x7, x6, LSL #2]
add w2, w2, #1 cmp w2, w1 ble G_M43574_IG09
- ;; size=104 bbWeight=0.99 PerfScore 32.18
+ ;; size=108 bbWeight=0.99 PerfScore 34.65
G_M43574_IG10: ; bbWeight=1.00, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref, isz
- ; gcrRegs -[x7] - ; byrRegs -[x6 x11]
+ ; byrRegs -[x7 x9]
add w3, w3, #1 cmp w3, w1 bgt G_M43574_IG12 @@ -187,7 +169,7 @@ G_M43574_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 364, prolog size 20, PerfScore 2664.34, instruction count 91, allocated bytes for code 364 (MethodHash=d41955c9) for method Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
+; Total bytes of code 324, prolog size 20, PerfScore 2468.25, instruction count 81, allocated bytes for code 324 (MethodHash=d41955c9) for method Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
; ============================================================ Unwind Info: @@ -198,7 +180,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 91 (0x0005b) Actual length = 364 (0x00016c)
+ Function Length : 81 (0x00051) Actual length = 324 (0x000144)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

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

+4 (+2.50%) : 59800.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span1[uint],System.ReadOnlySpan1[uint],ulong):uint (Tier1-OSR)

@@ -21,8 +21,8 @@ ; V09 tmp2 [V09,T10] ( 2,100.90) int -> x1 "V00.[008..012)" ; V10 tmp3 [V10,T09] ( 2,100.90) byref -> x2 single-def "V01.[000..008)" ; V11 tmp4 [V11,T06] ( 4,200.90) int -> x3 "V01.[008..012)"
-; V12 cse0 [V12,T04] ( 3,299.71) long -> x6 "CSE - aggressive" -; V13 cse1 [V13,T05] ( 3,299.71) int -> x9 "CSE - aggressive"
+; V12 cse0 [V12,T04] ( 3,299.71) int -> x9 "CSE - aggressive" +; V13 cse1 [V13,T05] ( 3,299.71) long -> x6 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -45,20 +45,21 @@ G_M60135_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M60135_IG03: ; bbWeight=99.90, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz cmp w5, w3 bhs G_M60135_IG10
- ubfiz x6, x5, #2, #32 - ldr w7, [x2, x6]
+ mov w6, w5 + ldr w7, [x2, x6, LSL #2]
ldr x8, [fp, #0x40] // [V03 loc0] madd x8, x7, x4, x8 sxtw w7, w8 lsr x8, x8, #32 cmp w5, w1 bhs G_M60135_IG10
+ lsl x6, x6, #2
add x6, x0, x6 ; byrRegs +[x6] ldr w9, [x6] cmp w9, w7 bhs G_M60135_IG05
- ;; size=56 bbWeight=99.90 PerfScore 2047.99
+ ;; size=60 bbWeight=99.90 PerfScore 2097.95
G_M60135_IG04: ; bbWeight=50.39, gcrefRegs=0000 {}, byrefRegs=0045 {x0 x2 x6}, byref add x8, x8, #1 ;; size=4 bbWeight=50.39 PerfScore 25.20 @@ -94,7 +95,7 @@ G_M60135_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 160, prolog size 12, PerfScore 2538.16, instruction count 40, allocated bytes for code 160 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1-OSR)
+; Total bytes of code 164, prolog size 12, PerfScore 2588.11, instruction count 41, allocated bytes for code 164 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1-OSR)
; ============================================================ Unwind Info: @@ -105,7 +106,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+2.50%) : 79460.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span1[uint],System.ReadOnlySpan1[uint],ulong):uint (Tier1-OSR)

@@ -21,8 +21,8 @@ ; V09 tmp2 [V09,T10] ( 2,100.90) int -> x1 "V00.[008..012)" ; V10 tmp3 [V10,T09] ( 2,100.90) byref -> x2 single-def "V01.[000..008)" ; V11 tmp4 [V11,T06] ( 4,200.90) int -> x3 "V01.[008..012)"
-; V12 cse0 [V12,T04] ( 3,299.71) long -> x6 "CSE - aggressive" -; V13 cse1 [V13,T05] ( 3,299.71) int -> x9 "CSE - aggressive"
+; V12 cse0 [V12,T04] ( 3,299.71) int -> x9 "CSE - aggressive" +; V13 cse1 [V13,T05] ( 3,299.71) long -> x6 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -45,20 +45,21 @@ G_M60135_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M60135_IG03: ; bbWeight=99.90, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz cmp w5, w3 bhs G_M60135_IG10
- ubfiz x6, x5, #2, #32 - ldr w7, [x2, x6]
+ mov w6, w5 + ldr w7, [x2, x6, LSL #2]
ldr x8, [fp, #0x40] // [V03 loc0] madd x8, x7, x4, x8 sxtw w7, w8 lsr x8, x8, #32 cmp w5, w1 bhs G_M60135_IG10
+ lsl x6, x6, #2
add x6, x0, x6 ; byrRegs +[x6] ldr w9, [x6] cmp w9, w7 bhs G_M60135_IG05
- ;; size=56 bbWeight=99.90 PerfScore 2047.99
+ ;; size=60 bbWeight=99.90 PerfScore 2097.94
G_M60135_IG04: ; bbWeight=50.50, gcrefRegs=0000 {}, byrefRegs=0045 {x0 x2 x6}, byref add x8, x8, #1 ;; size=4 bbWeight=50.50 PerfScore 25.25 @@ -94,7 +95,7 @@ G_M60135_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 160, prolog size 12, PerfScore 2538.21, instruction count 40, allocated bytes for code 160 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1-OSR)
+; Total bytes of code 164, prolog size 12, PerfScore 2588.16, instruction count 41, allocated bytes for code 164 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1-OSR)
; ============================================================ Unwind Info: @@ -105,7 +106,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+3.57%) : 77490.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span1[uint],System.ReadOnlySpan1[uint],ulong):uint (Tier1)

@@ -20,8 +20,8 @@ ; V09 tmp2 [V09,T10] ( 2, 513 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V10 tmp3 [V10,T09] ( 2, 513 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP ; V11 tmp4 [V11,T07] ( 3, 514 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V12 cse0 [V12,T04] ( 3,1536 ) long -> x7 "CSE - aggressive" -; V13 cse1 [V13,T05] ( 3,1536 ) int -> x9 "CSE - aggressive"
+; V12 cse0 [V12,T04] ( 3,1536 ) int -> x9 "CSE - aggressive" +; V13 cse1 [V13,T05] ( 3,1536 ) long -> x7 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -37,19 +37,20 @@ G_M60135_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, b ble G_M60135_IG06 ;; size=16 bbWeight=1 PerfScore 2.50 G_M60135_IG03: ; bbWeight=512, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- ubfiz x7, x6, #2, #32 - ldr w8, [x2, x7]
+ mov w7, w6 + ldr w8, [x2, x7, LSL #2]
madd x5, x8, x4, x5 sxtw w8, w5 lsr x5, x5, #32 cmp w6, w1 bhs G_M60135_IG08
+ lsl x7, x7, #2
add x7, x0, x7 ; byrRegs +[x7] ldr w9, [x7] cmp w9, w8 bhs G_M60135_IG05
- ;; size=44 bbWeight=512 PerfScore 8704.00
+ ;; size=48 bbWeight=512 PerfScore 8960.00
G_M60135_IG04: ; bbWeight=259.41, gcrefRegs=0000 {}, byrefRegs=0085 {x0 x2 x7}, byref add x5, x5, #1 ;; size=4 bbWeight=259.41 PerfScore 129.70 @@ -74,7 +75,7 @@ G_M60135_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 112, prolog size 8, PerfScore 10632.20, instruction count 28, allocated bytes for code 112 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
+; Total bytes of code 116, prolog size 8, PerfScore 10888.20, instruction count 29, allocated bytes for code 116 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
; ============================================================ Unwind Info: @@ -85,7 +86,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ 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)

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)

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

@@ -8,32 +8,27 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T21] ( 6, 10.05) ref -> x0 class-hnd single-def <int[][]> -; V01 arg1 [V01,T06] ( 9, 46 ) int -> x1 single-def -; V02 loc0 [V02,T05] ( 10, 48.24) int -> x3 -; V03 loc1 [V03,T01] ( 16, 94.48) int -> x2 -; V04 loc2 [V04,T14] ( 4, 32 ) int -> x13
+; V00 arg0 [V00,T18] ( 6, 10.05) ref -> x0 class-hnd single-def <int[][]> +; V01 arg1 [V01,T07] ( 9, 46 ) int -> x1 single-def +; V02 loc0 [V02,T06] ( 10, 48.36) int -> x3 +; V03 loc1 [V03,T01] ( 17, 94.64) int -> x2 +; V04 loc2 [V04,T14] ( 4, 32 ) int -> x10
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T03] ( 4, 64 ) ref -> x14 class-hnd "Strict ordering of exceptions for Array store" <int[]> -; V07 tmp2 [V07,T04] ( 4, 64 ) int -> x10 "Strict ordering of exceptions for Array store" -; V08 tmp3 [V08,T02] ( 5, 64.32) ref -> x10 "arr expr" -; V09 tmp4 [V09,T00] ( 6, 96 ) ref -> registers "arr expr" -; V10 tmp5 [V10,T13] ( 3, 0.96) ref -> x8 "arr expr" -; V11 cse0 [V11,T17] ( 5, 20.20) ref -> x7 hoist multi-def "CSE - aggressive" -; V12 cse1 [V12,T23] ( 3, 0.48) ref -> x8 "CSE - conservative" -; V13 cse2 [V13,T15] ( 7, 31.92) ref -> x8 multi-def "CSE - aggressive" -; V14 cse3 [V14,T08] ( 2, 31.68) ref -> x5 "CSE - aggressive" -; V15 cse4 [V15,T22] ( 4, 8.08) long -> x7 hoist multi-def "CSE - aggressive" -; V16 cse5 [V16,T12] ( 6, 36.04) long -> x9 hoist multi-def "CSE - aggressive" -; V17 cse6 [V17,T10] ( 3, 47.52) long -> x6 "CSE - aggressive" -; V18 cse7 [V18,T24] ( 3, 0.48) long -> x6 "CSE - conservative" -; V19 cse8 [V19,T18] ( 5, 20.05) byref -> x4 hoist "CSE - aggressive" -; V20 cse9 [V20,T19] ( 6, 12.24) int -> x5 hoist multi-def "CSE - aggressive" -; V21 cse10 [V21,T07] ( 6, 48 ) byref -> x11 multi-def "CSE - aggressive" -; V22 cse11 [V22,T16] ( 2, 31.68) int -> x10 "CSE - aggressive" -; V23 cse12 [V23,T09] ( 3, 47.52) byref -> x5 "CSE - aggressive" -; V24 cse13 [V24,T20] ( 6, 12.12) long -> x6 multi-def "CSE - aggressive" -; V25 cse14 [V25,T11] ( 3, 47.52) long -> x5 "CSE - aggressive"
+; V06 tmp1 [V06,T03] ( 4, 64 ) ref -> x11 class-hnd "Strict ordering of exceptions for Array store" <int[]> +; V07 tmp2 [V07,T04] ( 4, 64 ) int -> x8 "Strict ordering of exceptions for Array store" +; V08 tmp3 [V08,T02] ( 5, 64.32) ref -> x8 "arr expr" +; V09 tmp4 [V09,T00] ( 6, 96 ) ref -> x13 "arr expr" +; V10 tmp5 [V10,T13] ( 3, 0.96) ref -> x7 "arr expr" +; V11 cse0 [V11,T19] ( 3, 0.48) ref -> x7 "CSE - conservative" +; V12 cse1 [V12,T11] ( 8, 44.16) ref -> x7 multi-def "CSE - aggressive" +; V13 cse2 [V13,T09] ( 2, 31.68) ref -> x13 "CSE - aggressive" +; V14 cse3 [V14,T16] ( 5, 20.17) byref -> x4 hoist "CSE - aggressive" +; V15 cse4 [V15,T17] ( 6, 12.36) int -> x5 hoist multi-def "CSE - aggressive" +; V16 cse5 [V16,T08] ( 6, 48 ) byref -> x9 multi-def "CSE - aggressive" +; V17 cse6 [V17,T15] ( 2, 31.68) int -> x8 "CSE - aggressive" +; V18 cse7 [V18,T10] ( 3, 47.52) byref -> x13 "CSE - aggressive" +; V19 cse8 [V19,T12] ( 8, 40.20) long -> x6 hoist multi-def "CSE - aggressive" +; V20 cse9 [V20,T05] ( 4, 63.36) long -> x5 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -63,113 +58,102 @@ G_M43574_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, by cmp w5, w3 bls G_M43574_IG08 mov w6, w3
- lsl x7, x6, #3 - ldr x8, [x4, x7] - ; gcrRegs +[x8] - cbz x8, G_M43574_IG08 - orr w7, w2, w1 - tbnz w7, #31, G_M43574_IG08 - ldr w7, [x8, #0x08] - cmp w7, w1
+ ldr x7, [x4, x6, LSL #3] + ; gcrRegs +[x7] + cbz x7, G_M43574_IG08 + orr w8, w2, w1 + tbnz w8, #31, G_M43574_IG08 + ldr w8, [x7, #0x08] + cmp w8, w1
ble G_M43574_IG08 cmp w5, w1 ble G_M43574_IG08
- mov x7, x8 - ; gcrRegs +[x7] - lsl x9, x6, #2 - ;; size=68 bbWeight=4 PerfScore 80.00 -G_M43574_IG06: ; bbWeight=15.84, gcrefRegs=0181 {x0 x7 x8}, byrefRegs=0010 {x4}, byref, isz - mov x10, x8 - ; gcrRegs +[x10] - add x11, x10, #16 - ; byrRegs +[x11]
+ ;; size=56 bbWeight=4 PerfScore 70.00 +G_M43574_IG06: ; bbWeight=15.84, gcrefRegs=0081 {x0 x7}, byrefRegs=0010 {x4}, byref, isz + mov x8, x7 + ; gcrRegs +[x8] + add x9, x8, #16 + ; byrRegs +[x9]
mov w5, w2
- lsl x6, x5, #2 - ldr w13, [x11, x6] - mov x14, x7 - ; gcrRegs +[x14] - lsl x10, x5, #3 - ; gcrRegs -[x10] - ldr x5, [x4, x10] - ; gcrRegs +[x5] - ldr w10, [x5, #0x08] - cmp w3, w10
+ ldr w10, [x9, x5, LSL #2] + mov x11, x7 + ; gcrRegs +[x11] + ldr x13, [x4, x5, LSL #3] + ; gcrRegs +[x13] + ldr w8, [x13, #0x08] + ; gcrRegs -[x8] + cmp w3, w8
bhs G_M43574_IG12
- add x5, x5, #16 - ; gcrRegs -[x5] - ; byrRegs +[x5] - ldr w10, [x5, x9] - ldr w14, [x14, #0x08] - ; gcrRegs -[x14] - cmp w2, w14
+ add x13, x13, #16 + ; gcrRegs -[x13] + ; byrRegs +[x13] + ldr w8, [x13, x6, LSL #2] + ldr w11, [x11, #0x08] + ; gcrRegs -[x11] + cmp w2, w11
bhs G_M43574_IG12
- str w10, [x11, x6] - str w13, [x5, x9]
+ str w8, [x9, x5, LSL #2] + str w10, [x13, x6, LSL #2]
add w2, w2, #1 cmp w2, w1 ble G_M43574_IG06
- ;; size=84 bbWeight=15.84 PerfScore 419.76
+ ;; size=76 bbWeight=15.84 PerfScore 388.08
G_M43574_IG07: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref
- ; gcrRegs -[x7-x8] - ; byrRegs -[x5 x11]
+ ; gcrRegs -[x7] + ; byrRegs -[x9 x13]
b G_M43574_IG10 ;; size=4 bbWeight=8 PerfScore 8.00
-G_M43574_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref, isz
+G_M43574_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref
ldr w5, [x0, #0x08] mov w6, w3
- lsl x7, x6, #3
+ ;; size=8 bbWeight=0.04 PerfScore 0.14 +G_M43574_IG09: ; bbWeight=0.16, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref, isz
cmp w3, w5 bhs G_M43574_IG12
- ldr x8, [x4, x7] - ; gcrRegs +[x8] - mov x7, x8
+ ldr x7, [x4, x6, LSL #3]
; gcrRegs +[x7]
- lsl x9, x6, #2 - ;; size=32 bbWeight=0.04 PerfScore 0.42 -G_M43574_IG09: ; bbWeight=0.16, gcrefRegs=0081 {x0 x7}, byrefRegs=0010 {x4}, byref, isz - ; gcrRegs -[x8] - mov x10, x7 - ; gcrRegs +[x10] - ldr w11, [x10, #0x08] - cmp w2, w11
+ mov x8, x7 + ; gcrRegs +[x8] + ldr w9, [x8, #0x08] + cmp w2, w9
bhs G_M43574_IG12
- add x11, x10, #16 - ; byrRegs +[x11] - ubfiz x6, x2, #2, #32 - ldr w13, [x11, x6] - mov x14, x7 - ; gcrRegs +[x14]
+ add x9, x8, #16 + ; byrRegs +[x9] + ldr w10, [x9, w2, UXTW #2] + mov x11, x7 + ; gcrRegs +[x11]
cmp w2, w5 bhs G_M43574_IG12
- ldr x8, [x4, w2, UXTW #3] - ; gcrRegs +[x8] - mov x10, x8 - ldr w12, [x10, #0x08] - cmp w3, w12
+ ldr x7, [x4, w2, UXTW #3] + mov x13, x7 + ; gcrRegs +[x13] + ldr w8, [x13, #0x08] + ; gcrRegs -[x8] + cmp w3, w8
bhs G_M43574_IG12
- add x10, x10, #16 - ; gcrRegs -[x10] - ; byrRegs +[x10] - ldr w10, [x10, x9] - ; byrRegs -[x10] - ldr w14, [x14, #0x08] - ; gcrRegs -[x14] - cmp w2, w14
+ add x8, x13, #16 + ; byrRegs +[x8] + ldr w8, [x8, x6, LSL #2] + ; byrRegs -[x8] + ldr w11, [x11, #0x08] + ; gcrRegs -[x11] + cmp w2, w11
bhs G_M43574_IG12
- str w10, [x11, x6] - ldr w6, [x8, #0x08] - cmp w3, w6
+ str w8, [x9, w2, UXTW #2] + ldr w8, [x7, #0x08] + cmp w3, w8
bhs G_M43574_IG12
- add x6, x8, #16 - ; byrRegs +[x6] - str w13, [x6, x9]
+ add x7, x7, #16 + ; gcrRegs -[x7] + ; byrRegs +[x7] + str w10, [x7, x6, LSL #2]
add w2, w2, #1 cmp w2, w1 ble G_M43574_IG09
- ;; size=116 bbWeight=0.16 PerfScore 5.84
+ ;; size=124 bbWeight=0.16 PerfScore 6.40
G_M43574_IG10: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref, isz
- ; gcrRegs -[x7-x8] - ; byrRegs -[x6 x11]
+ ; gcrRegs -[x13] + ; byrRegs -[x7 x9]
add w3, w3, #1 cmp w3, w1 ble G_M43574_IG03 @@ -187,7 +171,7 @@ G_M43574_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 376, prolog size 20, PerfScore 545.61, instruction count 94, allocated bytes for code 376 (MethodHash=d41955c9) for method Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
+; Total bytes of code 340, prolog size 20, PerfScore 504.21, instruction count 85, allocated bytes for code 340 (MethodHash=d41955c9) for method Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
; ============================================================ Unwind Info: @@ -198,7 +182,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 94 (0x0005e) Actual length = 376 (0x000178)
...

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

+4 (+2.50%) : 39951.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span1[uint],System.ReadOnlySpan1[uint],ulong):uint (Tier1-OSR)

@@ -20,8 +20,8 @@ ; V09 tmp2 [V09,T12] ( 2, 4.01) int -> x1 "V00.[008..012)" ; V10 tmp3 [V10,T11] ( 2, 4.01) byref -> x2 single-def "V01.[000..008)" ; V11 tmp4 [V11,T06] ( 4, 9.01) int -> x3 "V01.[008..012)"
-; V12 cse0 [V12,T04] ( 3, 12 ) long -> x6 "CSE - aggressive" -; V13 cse1 [V13,T05] ( 3, 12 ) int -> x9 "CSE - aggressive"
+; V12 cse0 [V12,T04] ( 3, 12 ) int -> x9 "CSE - aggressive" +; V13 cse1 [V13,T05] ( 3, 12 ) long -> x6 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -44,20 +44,21 @@ G_M60135_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M60135_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz cmp w5, w3 bhs G_M60135_IG10
- ubfiz x6, x5, #2, #32 - ldr w7, [x2, x6]
+ mov w6, w5 + ldr w7, [x2, x6, LSL #2]
ldr x8, [fp, #0x40] // [V03 loc0] madd x8, x7, x4, x8 sxtw w7, w8 lsr x8, x8, #32 cmp w5, w1 bhs G_M60135_IG10
+ lsl x6, x6, #2
add x6, x0, x6 ; byrRegs +[x6] ldr w9, [x6] cmp w9, w7 bhs G_M60135_IG05
- ;; size=56 bbWeight=4 PerfScore 82.00
+ ;; size=60 bbWeight=4 PerfScore 84.00
G_M60135_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0045 {x0 x2 x6}, byref add x8, x8, #1 ;; size=4 bbWeight=2 PerfScore 1.00 @@ -93,7 +94,7 @@ G_M60135_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 160, prolog size 12, PerfScore 105.65, instruction count 40, allocated bytes for code 160 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1-OSR)
+; Total bytes of code 164, prolog size 12, PerfScore 107.65, instruction count 41, allocated bytes for code 164 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1-OSR)
; ============================================================ Unwind Info: @@ -104,7 +105,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+3.57%) : 46272.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span1[uint],System.ReadOnlySpan1[uint],ulong):uint (Tier1)

@@ -19,8 +19,8 @@ ; V09 tmp2 [V09,T10] ( 2, 5 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V10 tmp3 [V10,T09] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP ; V11 tmp4 [V11,T07] ( 3, 6 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V12 cse0 [V12,T04] ( 3, 12 ) long -> x7 "CSE - aggressive" -; V13 cse1 [V13,T05] ( 3, 12 ) int -> x9 "CSE - aggressive"
+; V12 cse0 [V12,T04] ( 3, 12 ) int -> x9 "CSE - aggressive" +; V13 cse1 [V13,T05] ( 3, 12 ) long -> x7 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -36,19 +36,20 @@ G_M60135_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, b ble G_M60135_IG06 ;; size=16 bbWeight=1 PerfScore 2.50 G_M60135_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- ubfiz x7, x6, #2, #32 - ldr w8, [x2, x7]
+ mov w7, w6 + ldr w8, [x2, x7, LSL #2]
madd x5, x8, x4, x5 sxtw w8, w5 lsr x5, x5, #32 cmp w6, w1 bhs G_M60135_IG08
+ lsl x7, x7, #2
add x7, x0, x7 ; byrRegs +[x7] ldr w9, [x7] cmp w9, w8 bhs G_M60135_IG05
- ;; size=44 bbWeight=4 PerfScore 68.00
+ ;; size=48 bbWeight=4 PerfScore 70.00
G_M60135_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0085 {x0 x2 x7}, byref add x5, x5, #1 ;; size=4 bbWeight=2 PerfScore 1.00 @@ -73,7 +74,7 @@ G_M60135_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 112, prolog size 8, PerfScore 89.50, instruction count 28, allocated bytes for code 112 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
+; Total bytes of code 116, prolog size 8, PerfScore 91.50, instruction count 29, allocated bytes for code 116 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
; ============================================================ Unwind Info: @@ -84,7 +85,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ 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 (+4.24%) : 8226.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

@@ -9,35 +9,36 @@ ; Final local variable assignments ; ; V00 this [V00,T04] ( 11, 7 ) byref -> x19 this single-def
-; V01 arg1 [V01,T06] ( 5, 3.50) int -> x1 single-def -; V02 loc0 [V02,T16] ( 3, 2.50) int -> x0
+; V01 arg1 [V01,T07] ( 5, 3.50) int -> x1 single-def +; V02 loc0 [V02,T17] ( 3, 2.50) int -> x0
; V03 loc1 [V03,T15] ( 5, 2.50) int -> x21
-; V04 loc2 [V04,T11] ( 5, 4 ) int -> x20 ld-addr-op -; V05 loc3 [V05,T00] ( 11, 29.50) int -> x22 -; V06 loc4 [V06,T01] ( 14, 22 ) int -> x23 -; V07 loc5 [V07,T18] ( 2, 1 ) int -> x0 -; V08 loc6 [V08,T09] ( 4, 5 ) int -> x1 -; V09 loc7 [V09,T03] ( 4, 10.50) int -> x2 -; V10 loc8 [V10,T05] ( 3, 6.50) int -> x3
+; V04 loc2 [V04,T16] ( 5, 2.50) int -> x20 ld-addr-op +; V05 loc3 [V05,T00] ( 13, 34.50) int -> x22 +; V06 loc4 [V06,T01] ( 14, 28 ) int -> x23 +; V07 loc5 [V07,T19] ( 2, 1 ) int -> x0 +; V08 loc6 [V08,T05] ( 4, 9 ) int -> x1 +; V09 loc7 [V09,T03] ( 6, 13.50) int -> x2 +; V10 loc8 [V10,T06] ( 4, 9 ) int -> x3
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp3 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V15 tmp4 [V15 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V16 tmp5 [V16,T07] ( 5, 5 ) long -> [fp+0x18] "Inlining Arg"
+; V16 tmp5 [V16,T09] ( 5, 5 ) long -> [fp+0x18] "Inlining Arg"
;* V17 tmp6 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V18 tmp7 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp8 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp9 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V21 tmp10 [V21 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V22 tmp11 [V22,T08] ( 5, 5 ) long -> [fp+0x10] spill-single-def "Inlining Arg"
+; V22 tmp11 [V22,T10] ( 5, 5 ) long -> [fp+0x10] spill-single-def "Inlining Arg"
;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V24 tmp13 [V24,T13] ( 3, 3 ) long -> x0 "Cast away GC" ; V25 tmp14 [V25,T14] ( 3, 3 ) long -> x0 "Cast away GC"
-; V26 cse0 [V26,T17] ( 3, 1.50) int -> x0 "CSE - moderate" -; V27 cse1 [V27,T02] ( 12, 18 ) byref -> x24 hoist multi-def "CSE - aggressive" -; V28 cse2 [V28,T10] ( 2, 4.50) int -> x0 hoist "CSE - aggressive" -; V29 cse3 [V29,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
+; V26 cse0 [V26,T18] ( 3, 1.50) int -> x0 "CSE - moderate" +; V27 cse1 [V27,T02] ( 13, 20.50) byref -> x24 hoist multi-def "CSE - aggressive" +; V28 cse2 [V28,T11] ( 3, 5 ) int -> x0 "CSE - aggressive" +; V29 cse3 [V29,T08] ( 4, 5.50) int -> x4 hoist multi-def "CSE - aggressive" +; V30 cse4 [V30,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
; ; Lcl frame size = 16 @@ -151,7 +152,7 @@ G_M38441_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=48 bbWeight=0.50 PerfScore 4.75
-G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add w0, w23, #1 str w0, [x19] neg w0, w20 @@ -159,42 +160,45 @@ G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, mov w1, wzr add x24, x19, #4 ; byrRegs +[x24]
+ ldr w2, [x24, w22, SXTW #2]
and w0, w0, #31
- b G_M38441_IG13 - ;; size=32 bbWeight=0.50 PerfScore 2.50 -G_M38441_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ lsr w3, w2, w0 + cmp w22, #0 + ble G_M38441_IG13 + and w4, w20, #31 + ;; size=48 bbWeight=0.50 PerfScore 4.75 +G_M38441_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
orr w1, w1, w3 str w1, [x24, w23, SXTW #2]
- lsl w1, w2, w20
+ lsl w1, w2, w4
sub w22, w22, #1 sub w23, w23, #1
- ;; size=20 bbWeight=2 PerfScore 6.00 -G_M38441_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w2, [x24, w22, SXTW #2] lsr w3, w2, w0 cmp w22, #0 bgt G_M38441_IG12
- ;; size=16 bbWeight=4 PerfScore 20.00 -G_M38441_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3 - str w0, [x24, w23, SXTW #2]
+ ;; size=36 bbWeight=4 PerfScore 32.00 +G_M38441_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w4, w1, w3 + str w4, [x24, w23, SXTW #2]
sub w0, w23, #1
- lsl w1, w2, w20
+ and w4, w20, #31 + lsl w1, w2, w4
str w1, [x24, w0, SXTW #2] mov x0, x24 lsl w1, w21, #2 mov w1, w1 str x1, [fp, #0x10] // [V22 tmp11]
- cbz x1, G_M38441_IG16
+ cbz x1, G_M38441_IG15
cmp x1, #0xD1FFAB1E
- bhi G_M38441_IG15
+ bhi G_M38441_IG14
mov w1, wzr ldr w2, [fp, #0x10] // [V22 tmp11] bl CORINFO_HELP_MEMSET ; gcr arg pop 0
- b G_M38441_IG16 - ;; size=64 bbWeight=0.50 PerfScore 6.75 -G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ b G_M38441_IG15 + ;; size=68 bbWeight=0.50 PerfScore 7.00 +G_M38441_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
ldr x1, [fp, #0x10] // [V22 tmp11] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -203,7 +207,7 @@ G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 blr x2 ; gcr arg pop 0 ;; size=24 bbWeight=0.50 PerfScore 3.75
-G_M38441_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w0, [x19] sub w0, w0, #1 ldr w1, [x24, w0, SXTW #2] @@ -212,7 +216,7 @@ G_M38441_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 b G_M38441_IG04 ;; size=24 bbWeight=0.50 PerfScore 4.75
-; Total bytes of code 472, prolog size 24, PerfScore 111.75, instruction count 118, allocated bytes for code 472 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
+; Total bytes of code 492, prolog size 24, PerfScore 120.25, instruction count 123, allocated bytes for code 492 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
; ============================================================ Unwind Info: @@ -223,7 +227,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 118 (0x00076) Actual length = 472 (0x0001d8)
+ Function Length : 123 (0x0007b) Actual length = 492 (0x0001ec)
---- 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)

+28 (+6.60%) : 364552.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

@@ -11,15 +11,15 @@ ; ; V00 this [V00,T00] ( 11, 7 ) byref -> x19 this single-def ; V01 arg1 [V01,T04] ( 5, 5 ) int -> x1 single-def
-; V02 loc0 [V02,T12] ( 3, 3 ) int -> x0
+; V02 loc0 [V02,T13] ( 3, 3 ) int -> x0
; V03 loc1 [V03,T09] ( 5, 3 ) int -> x21
-; V04 loc2 [V04,T06] ( 5, 4.50) int -> x20 ld-addr-op -; V05 loc3 [V05,T05] ( 10, 6 ) int -> x22
+; V04 loc2 [V04,T07] ( 5, 4.50) int -> x20 ld-addr-op +; V05 loc3 [V05,T05] ( 12, 6 ) int -> x22
; V06 loc4 [V06,T01] ( 14, 8.50) int -> x23 ; V07 loc5 [V07,T16] ( 2, 2 ) int -> x0
-; V08 loc6 [V08,T10] ( 4, 3 ) int -> x1 -; V09 loc7 [V09,T07] ( 4, 4.50) int -> x2 -; V10 loc8 [V10,T13] ( 3, 3 ) int -> x3
+; V08 loc6 [V08,T10] ( 4, 3 ) int -> x3 +; V09 loc7 [V09,T06] ( 6, 4.50) int -> x25 +; V10 loc8 [V10,T11] ( 4, 3 ) int -> x26
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -28,31 +28,32 @@ ; V16 tmp5 [V16,T02] ( 5, 8.00) long -> [fp+0x18] spill-single-def "Inlining Arg" ;* V17 tmp6 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V18 tmp7 [V18,T08] ( 3, 4.00) long -> x0 "Cast away GC"
-; V19 cse0 [V19,T15] ( 2, 2.50) int -> x0 hoist "CSE - aggressive" -; V20 cse1 [V20,T14] ( 3, 3 ) int -> x0 "CSE - aggressive" -; V21 cse2 [V21,T03] ( 10, 7 ) byref -> x24 hoist multi-def "CSE - aggressive" -; V22 cse3 [V22,T11] ( 3, 3 ) ref -> x1 "CSE - aggressive"
+; V19 cse0 [V19,T14] ( 3, 3 ) int -> x0 "CSE - aggressive" +; V20 cse1 [V20,T15] ( 3, 2.50) int -> x0 "CSE - aggressive" +; V21 cse2 [V21,T03] ( 11, 7 ) byref -> x24 multi-def "CSE - aggressive" +; V22 cse3 [V22,T12] ( 3, 3 ) ref -> x1 "CSE - aggressive"
; ; Lcl frame size = 16 G_M38441_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] stp x23, x24, [sp, #0x40]
+ stp x25, x26, [sp, #0x50]
mov fp, sp mov x19, x0 ; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=28 bbWeight=1 PerfScore 6.00
G_M38441_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz ldr w0, [x19]
- cbz w0, G_M38441_IG11 - cbz w1, G_M38441_IG11
+ cbz w0, G_M38441_IG10 + cbz w1, G_M38441_IG10
and w20, w1, #31 lsr w21, w1, #5 sub w22, w0, #1 add w23, w22, w21
- cbz w20, G_M38441_IG12
+ cbz w20, G_M38441_IG11
add w23, w23, #1 cmp w23, #115 blt G_M38441_IG03 @@ -69,54 +70,56 @@ G_M38441_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=80 bbWeight=1 PerfScore 18.00
-G_M38441_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add w0, w23, #1 str w0, [x19] neg w0, w20 add w0, w0, #32
- mov w1, wzr
+ mov w3, wzr
add x24, x19, #4 ; byrRegs +[x24]
+ ldr w25, [x24, w22, SXTW #2]
and w0, w0, #31
- ;; size=28 bbWeight=1 PerfScore 4.00 -G_M38441_IG04: ; bbWeight=1.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - ldr w2, [x24, w22, SXTW #2] - lsr w3, w2, w0
+ lsr w26, w25, w0
cmp w22, #0
- bgt G_M38441_IG08 - ;; size=16 bbWeight=1.50 PerfScore 7.50 -G_M38441_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3
+ bgt G_M38441_IG07 + ;; size=44 bbWeight=1 PerfScore 9.00 +G_M38441_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w0, w3, w26
str w0, [x24, w23, SXTW #2] sub w0, w23, #1
- lsl w1, w2, w20
+ lsl w1, w25, w20
str w1, [x24, w0, SXTW #2] mov x0, x24 lsl w1, w21, #2 mov w1, w1 str x1, [fp, #0x18] // [V16 tmp5]
- cbz x1, G_M38441_IG10
+ cbz x1, G_M38441_IG09
;; size=40 bbWeight=1 PerfScore 7.50
-G_M38441_IG06: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M38441_IG05: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
cmp x1, #0xD1FFAB1E
- bhi G_M38441_IG09
+ bhi G_M38441_IG08
;; size=8 bbWeight=1.00 PerfScore 1.50
-G_M38441_IG07: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+G_M38441_IG06: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
mov w1, wzr ldr w2, [fp, #0x18] // [V16 tmp5] bl CORINFO_HELP_MEMSET ; gcr arg pop 0
- b G_M38441_IG10
+ b G_M38441_IG09
;; size=16 bbWeight=0.98 PerfScore 4.42
-G_M38441_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref - orr w1, w1, w3 - str w1, [x24, w23, SXTW #2] - lsl w1, w2, w20
+G_M38441_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w3, w3, w26 + str w3, [x24, w23, SXTW #2] + lsl w3, w25, w20
sub w22, w22, #1 sub w23, w23, #1
+ ldr w25, [x24, w22, SXTW #2] + lsr w26, w25, w0 + cmp w22, #0 + bgt G_M38441_IG07
b G_M38441_IG04
- ;; size=24 bbWeight=0.50 PerfScore 2.00 -G_M38441_IG09: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ ;; size=40 bbWeight=0.50 PerfScore 4.50 +G_M38441_IG08: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
ldr x1, [fp, #0x18] // [V16 tmp5] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -125,22 +128,23 @@ G_M38441_IG09: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 blr x2 ; gcr arg pop 0 ;; size=24 bbWeight=0.02 PerfScore 0.12
-G_M38441_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M38441_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w0, [x19] sub w0, w0, #1 ldr w1, [x24, w0, SXTW #2]
- cbnz w1, G_M38441_IG11
+ cbnz w1, G_M38441_IG10
str w0, [x19] ;; size=20 bbWeight=1 PerfScore 8.50
-G_M38441_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M38441_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x19 x24]
+ ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00 -G_M38441_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref
+ ;; size=24 bbWeight=0 PerfScore 0.00 +G_M38441_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref
; byrRegs +[x19] cmp w23, #115 cset x0, lt @@ -150,9 +154,9 @@ G_M38441_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ldr x1, [x1] blr x1 ; gcr arg pop 0
- b G_M38441_IG14
+ b G_M38441_IG13
;; size=32 bbWeight=0 PerfScore 0.00
-G_M38441_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
add x24, x19, #4 ; byrRegs +[x24] sbfiz x0, x23, #2, #32 @@ -163,9 +167,9 @@ G_M38441_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by sub w22, w22, #1 sub w23, w23, #1 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M38441_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M38441_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs -[x0 x24]
- tbz w22, #31, G_M38441_IG13
+ tbz w22, #31, G_M38441_IG12
ldr w0, [x19] add w0, w0, w21 str w0, [x19] @@ -180,15 +184,16 @@ G_M38441_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; byrRegs -[x0 x19] ; gcr arg pop 0 ;; size=44 bbWeight=0 PerfScore 0.00
-G_M38441_IG15: ; bbWeight=0, epilog, nogc, extend
+G_M38441_IG14: ; bbWeight=0, epilog, nogc, extend + ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 424, prolog size 24, PerfScore 58.54, instruction count 106, allocated bytes for code 424 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
+; Total bytes of code 452, prolog size 28, PerfScore 59.54, instruction count 113, allocated bytes for code 452 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
; ============================================================ Unwind Info: @@ -199,7 +204,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 106 (0x0006a) Actual length = 424 (0x0001a8)
+ 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) @@ -212,8 +217,8 @@ Unwind Info: ---- Epilog start at index 1 ---- E6 save_next E6 save_next
+ E6 save_next
C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
- 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]! - E4 end
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end

+36 (+8.49%) : 6127.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

@@ -11,15 +11,15 @@ ; ; V00 this [V00,T01] ( 11, 7 ) byref -> x19 this single-def ; V01 arg1 [V01,T05] ( 5, 5 ) int -> x1 single-def
-; V02 loc0 [V02,T13] ( 3, 3 ) int -> x0 -; V03 loc1 [V03,T11] ( 5, 3 ) int -> x21 -; V04 loc2 [V04,T07] ( 5, 5 ) int -> x20 ld-addr-op -; V05 loc3 [V05,T03] ( 10, 8 ) int -> x22
+; V02 loc0 [V02,T14] ( 3, 3 ) int -> x0 +; V03 loc1 [V03,T12] ( 5, 3 ) int -> x21 +; V04 loc2 [V04,T07] ( 5, 4.50) int -> x20 ld-addr-op +; V05 loc3 [V05,T02] ( 12, 8 ) int -> x22
; V06 loc4 [V06,T00] ( 14, 10 ) int -> x23
-; V07 loc5 [V07,T16] ( 2, 2 ) int -> x0 -; V08 loc6 [V08,T08] ( 4, 4 ) int -> x1 -; V09 loc7 [V09,T06] ( 4, 6 ) int -> x2 -; V10 loc8 [V10,T09] ( 3, 4 ) int -> x3
+; V07 loc5 [V07,T17] ( 2, 2 ) int -> x0 +; V08 loc6 [V08,T08] ( 4, 4 ) int -> x3 +; V09 loc7 [V09,T06] ( 6, 6 ) int -> x25 +; V10 loc8 [V10,T09] ( 4, 4 ) int -> x26
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -28,22 +28,24 @@ ; V16 tmp5 [V16,T04] ( 5, 8.00) long -> [fp+0x18] spill-single-def "Inlining Arg" ;* V17 tmp6 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V18 tmp7 [V18,T10] ( 3, 4.00) long -> x0 "Cast away GC"
-; V19 cse0 [V19,T14] ( 3, 3 ) int -> x0 "CSE - aggressive" -; V20 cse1 [V20,T02] ( 10, 8 ) byref -> x24 hoist multi-def "CSE - aggressive" -; V21 cse2 [V21,T15] ( 2, 3 ) int -> x0 hoist "CSE - aggressive" -; V22 cse3 [V22,T12] ( 3, 3 ) ref -> x1 "CSE - aggressive"
+; V19 cse0 [V19,T15] ( 3, 3 ) int -> x0 "CSE - aggressive" +; V20 cse1 [V20,T03] ( 11, 8 ) byref -> x24 multi-def "CSE - aggressive" +; V21 cse2 [V21,T16] ( 3, 3 ) int -> x0 "CSE - aggressive" +; V22 cse3 [V22,T13] ( 3, 3 ) ref -> x1 "CSE - aggressive" +; V23 cse4 [V23,T11] ( 4, 3.50) int -> x1 hoist multi-def "CSE - aggressive"
; ; Lcl frame size = 16 G_M38441_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] stp x23, x24, [sp, #0x40]
+ stp x25, x26, [sp, #0x50]
mov fp, sp mov x19, x0 ; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=28 bbWeight=1 PerfScore 6.00
G_M38441_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz ldr w0, [x19] cbz w0, G_M38441_IG11 @@ -69,53 +71,59 @@ G_M38441_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=80 bbWeight=1 PerfScore 18.00
-G_M38441_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add w0, w23, #1 str w0, [x19] neg w0, w20 add w0, w0, #32
- mov w1, wzr
+ mov w3, wzr
add x24, x19, #4 ; byrRegs +[x24]
+ ldr w25, [x24, w22, SXTW #2]
and w0, w0, #31
- b G_M38441_IG05 - ;; size=32 bbWeight=1 PerfScore 5.00 -G_M38441_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref - orr w1, w1, w3 - str w1, [x24, w23, SXTW #2] - lsl w1, w2, w20 - sub w22, w22, #1 - sub w23, w23, #1 - ;; size=20 bbWeight=1 PerfScore 3.00 -G_M38441_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - ldr w2, [x24, w22, SXTW #2] - lsr w3, w2, w0
+ lsr w26, w25, w0
cmp w22, #0
- bgt G_M38441_IG04 - ;; size=16 bbWeight=2 PerfScore 10.00 -G_M38441_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3 - str w0, [x24, w23, SXTW #2]
+ bgt G_M38441_IG07 + ;; size=44 bbWeight=1 PerfScore 9.00 +G_M38441_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w1, w3, w26 + str w1, [x24, w23, SXTW #2]
sub w0, w23, #1
- lsl w1, w2, w20
+ and w1, w20, #31 + lsl w1, w25, w1
str w1, [x24, w0, SXTW #2] mov x0, x24 lsl w1, w21, #2 mov w1, w1 str x1, [fp, #0x18] // [V16 tmp5] cbz x1, G_M38441_IG10
- ;; size=40 bbWeight=1 PerfScore 7.50 -G_M38441_IG07: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+ ;; size=44 bbWeight=1 PerfScore 8.00 +G_M38441_IG05: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
cmp x1, #0xD1FFAB1E bhi G_M38441_IG09 ;; size=8 bbWeight=1.00 PerfScore 1.50
-G_M38441_IG08: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+G_M38441_IG06: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
mov w1, wzr ldr w2, [fp, #0x18] // [V16 tmp5] bl CORINFO_HELP_MEMSET ; gcr arg pop 0 b G_M38441_IG10 ;; size=16 bbWeight=0.98 PerfScore 4.42
+G_M38441_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref + and w1, w20, #31 + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M38441_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w3, w3, w26 + str w3, [x24, w23, SXTW #2] + lsl w3, w25, w1 + sub w22, w22, #1 + sub w23, w23, #1 + ldr w25, [x24, w22, SXTW #2] + lsr w26, w25, w0 + cmp w22, #0 + bgt G_M38441_IG08 + b G_M38441_IG04 + ;; size=40 bbWeight=1 PerfScore 9.00
G_M38441_IG09: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref ldr x1, [fp, #0x18] // [V16 tmp5] movz x2, #0xD1FFAB1E // code for <unknown method> @@ -134,12 +142,13 @@ G_M38441_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x2 ;; size=20 bbWeight=1 PerfScore 8.50 G_M38441_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x19 x24]
+ ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
G_M38441_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref ; byrRegs +[x19] cmp w23, #115 @@ -181,14 +190,15 @@ G_M38441_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; gcr arg pop 0 ;; size=44 bbWeight=0 PerfScore 0.00 G_M38441_IG15: ; bbWeight=0, epilog, nogc, extend
+ ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 424, prolog size 24, PerfScore 63.04, instruction count 106, allocated bytes for code 424 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
+; Total bytes of code 460, prolog size 28, PerfScore 64.79, instruction count 115, allocated bytes for code 460 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
; ============================================================ Unwind Info: @@ -199,7 +209,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 106 (0x0006a) Actual length = 424 (0x0001a8)
+ Function Length : 115 (0x00073) Actual length = 460 (0x0001cc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -212,8 +222,8 @@ Unwind Info: ---- Epilog start at index 1 ---- E6 save_next E6 save_next
+ E6 save_next
C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
- 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]! - E4 end
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end

+36 (+8.49%) : 252536.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

@@ -11,15 +11,15 @@ ; ; V00 this [V00,T01] ( 11, 7 ) byref -> x19 this single-def ; V01 arg1 [V01,T05] ( 5, 5 ) int -> x1 single-def
-; V02 loc0 [V02,T13] ( 3, 3 ) int -> x0 -; V03 loc1 [V03,T11] ( 5, 3 ) int -> x21 -; V04 loc2 [V04,T07] ( 5, 4.80) int -> x20 ld-addr-op -; V05 loc3 [V05,T04] ( 10, 7.20) int -> x22
+; V02 loc0 [V02,T14] ( 3, 3 ) int -> x0 +; V03 loc1 [V03,T12] ( 5, 3 ) int -> x21 +; V04 loc2 [V04,T07] ( 5, 4.44) int -> x20 ld-addr-op +; V05 loc3 [V05,T04] ( 12, 7.20) int -> x22
; V06 loc4 [V06,T00] ( 14, 9.40) int -> x23
-; V07 loc5 [V07,T16] ( 2, 2 ) int -> x0 -; V08 loc6 [V08,T09] ( 4, 3.60) int -> x1 -; V09 loc7 [V09,T06] ( 4, 5.40) int -> x2 -; V10 loc8 [V10,T10] ( 3, 3.60) int -> x3
+; V07 loc5 [V07,T17] ( 2, 2 ) int -> x0 +; V08 loc6 [V08,T09] ( 4, 3.60) int -> x3 +; V09 loc7 [V09,T06] ( 6, 5.40) int -> x25 +; V10 loc8 [V10,T10] ( 4, 3.60) int -> x26
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -28,22 +28,24 @@ ; V16 tmp5 [V16,T02] ( 5, 8.00) long -> [fp+0x18] spill-single-def "Inlining Arg" ;* V17 tmp6 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V18 tmp7 [V18,T08] ( 3, 4.00) long -> x0 "Cast away GC"
-; V19 cse0 [V19,T15] ( 2, 2.80) int -> x0 hoist "CSE - aggressive" -; V20 cse1 [V20,T14] ( 3, 3 ) int -> x0 "CSE - aggressive" -; V21 cse2 [V21,T03] ( 10, 7.60) byref -> x24 hoist multi-def "CSE - aggressive" -; V22 cse3 [V22,T12] ( 3, 3 ) ref -> x1 "CSE - aggressive"
+; V19 cse0 [V19,T16] ( 3, 2.80) int -> x0 "CSE - aggressive" +; V20 cse1 [V20,T15] ( 3, 3 ) int -> x0 "CSE - aggressive" +; V21 cse2 [V21,T03] ( 11, 7.60) byref -> x24 multi-def "CSE - aggressive" +; V22 cse3 [V22,T13] ( 3, 3 ) ref -> x1 "CSE - aggressive" +; V23 cse4 [V23,T11] ( 4, 3.24) int -> x1 hoist multi-def "CSE - aggressive"
; ; Lcl frame size = 16 G_M38441_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] stp x23, x24, [sp, #0x40]
+ stp x25, x26, [sp, #0x50]
mov fp, sp mov x19, x0 ; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=28 bbWeight=1 PerfScore 6.00
G_M38441_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz ldr w0, [x19] cbz w0, G_M38441_IG11 @@ -69,53 +71,59 @@ G_M38441_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=80 bbWeight=1 PerfScore 18.00
-G_M38441_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add w0, w23, #1 str w0, [x19] neg w0, w20 add w0, w0, #32
- mov w1, wzr
+ mov w3, wzr
add x24, x19, #4 ; byrRegs +[x24]
+ ldr w25, [x24, w22, SXTW #2]
and w0, w0, #31
- ;; size=28 bbWeight=1 PerfScore 4.00 -G_M38441_IG04: ; bbWeight=1.80, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - ldr w2, [x24, w22, SXTW #2] - lsr w3, w2, w0
+ lsr w26, w25, w0
cmp w22, #0
- bgt G_M38441_IG08 - ;; size=16 bbWeight=1.80 PerfScore 9.00 -G_M38441_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3 - str w0, [x24, w23, SXTW #2]
+ bgt G_M38441_IG07 + ;; size=44 bbWeight=1 PerfScore 9.00 +G_M38441_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w1, w3, w26 + str w1, [x24, w23, SXTW #2]
sub w0, w23, #1
- lsl w1, w2, w20
+ and w1, w20, #31 + lsl w1, w25, w1
str w1, [x24, w0, SXTW #2] mov x0, x24 lsl w1, w21, #2 mov w1, w1 str x1, [fp, #0x18] // [V16 tmp5] cbz x1, G_M38441_IG10
- ;; size=40 bbWeight=1 PerfScore 7.50 -G_M38441_IG06: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+ ;; size=44 bbWeight=1 PerfScore 8.00 +G_M38441_IG05: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
cmp x1, #0xD1FFAB1E bhi G_M38441_IG09 ;; size=8 bbWeight=1.00 PerfScore 1.50
-G_M38441_IG07: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+G_M38441_IG06: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
mov w1, wzr ldr w2, [fp, #0x18] // [V16 tmp5] bl CORINFO_HELP_MEMSET ; gcr arg pop 0 b G_M38441_IG10 ;; size=16 bbWeight=0.98 PerfScore 4.42
-G_M38441_IG08: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref - orr w1, w1, w3 - str w1, [x24, w23, SXTW #2] - lsl w1, w2, w20
+G_M38441_IG07: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref + and w1, w20, #31 + ;; size=4 bbWeight=0.44 PerfScore 0.22 +G_M38441_IG08: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w3, w3, w26 + str w3, [x24, w23, SXTW #2] + lsl w3, w25, w1
sub w22, w22, #1 sub w23, w23, #1
+ ldr w25, [x24, w22, SXTW #2] + lsr w26, w25, w0 + cmp w22, #0 + bgt G_M38441_IG08
b G_M38441_IG04
- ;; size=24 bbWeight=0.80 PerfScore 3.20
+ ;; size=40 bbWeight=0.80 PerfScore 7.20
G_M38441_IG09: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref ldr x1, [fp, #0x18] // [V16 tmp5] movz x2, #0xD1FFAB1E // code for <unknown method> @@ -134,12 +142,13 @@ G_M38441_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x2 ;; size=20 bbWeight=1 PerfScore 8.50 G_M38441_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x19 x24]
+ ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
G_M38441_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref ; byrRegs +[x19] cmp w23, #115 @@ -181,14 +190,15 @@ G_M38441_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; gcr arg pop 0 ;; size=44 bbWeight=0 PerfScore 0.00 G_M38441_IG15: ; bbWeight=0, epilog, nogc, extend
+ ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 424, prolog size 24, PerfScore 61.24, instruction count 106, allocated bytes for code 424 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
+; Total bytes of code 460, prolog size 28, PerfScore 62.96, instruction count 115, allocated bytes for code 460 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
; ============================================================ Unwind Info: @@ -199,7 +209,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 106 (0x0006a) Actual length = 424 (0x0001a8)
+ Function Length : 115 (0x00073) Actual length = 460 (0x0001cc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -212,8 +222,8 @@ Unwind Info: ---- Epilog start at index 1 ---- E6 save_next E6 save_next
+ E6 save_next
C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
- 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]! - E4 end
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end

libraries.crossgen2.osx.arm64.checked.mch

-48 (-8.51%) : 15592.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)

@@ -9,41 +9,39 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T14] ( 5, 5 ) ref -> x20 class-hnd single-def <System.Reflection.MethodBase[]> -; V01 arg1 [V01,T12] ( 4, 6 ) ref -> x19 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,T09] ( 5, 17 ) int -> x24
+; V00 arg0 [V00,T12] ( 5, 5 ) ref -> x20 class-hnd single-def <System.Reflection.MethodBase[]> +; V01 arg1 [V01,T10] ( 4, 6 ) ref -> x19 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,T05] ( 6, 19 ) int -> x24
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-; V06 loc4 [V06,T00] ( 7, 84 ) int -> [fp+0x3C]
+; 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,T13] ( 2, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase> -; V11 tmp3 [V11,T05] ( 2, 20 ) byref -> x27 "field V05._reference (fldOffset=0x0)" P-INDEP -; V12 tmp4 [V12,T03] ( 3, 24 ) int -> x28 "field V05._length (fldOffset=0x8)" P-INDEP
+; V10 tmp2 [V10,T11] ( 2, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase> +; V11 tmp3 [V11,T04] ( 2, 20 ) byref -> x26 "field V05._reference (fldOffset=0x0)" P-INDEP +; V12 tmp4 [V12,T02] ( 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,T01] ( 2, 64 ) ref -> x0 "argument with side effect"
-; V16 cse0 [V16,T02] ( 3, 48 ) long -> [fp+0x30] spill-single-def "CSE - aggressive" -; V17 cse1 [V17,T11] ( 3, 10 ) long -> x26 "CSE - aggressive" -; V18 cse2 [V18,T04] ( 4, 22 ) int -> [fp+0x2C] spill-single-def "CSE - aggressive" -; V19 cse3 [V19,T06] ( 2, 18 ) byref -> [fp+0x10] spill-single-def hoist "CSE - aggressive" -; V20 cse4 [V20,T16] ( 3, 7 ) byref -> x20 hoist "CSE - aggressive" -; V21 cse5 [V21,T15] ( 4, 7 ) int -> x21 "CSE - aggressive" -; V22 cse6 [V22,T07] ( 2, 18 ) long -> [fp+0x20] spill-single-def hoist "CSE - aggressive" -; V23 cse7 [V23,T08] ( 2, 18 ) long -> [fp+0x18] spill-single-def hoist "CSE - aggressive" -; V24 cse8 [V24,T18] ( 2, 5 ) long -> x25 hoist "CSE - moderate"
+; V16 cse0 [V16,T03] ( 4, 22 ) int -> [fp+0x2C] spill-single-def "CSE - aggressive" +; V17 cse1 [V17,T06] ( 2, 18 ) byref -> [fp+0x10] spill-single-def hoist "CSE - aggressive" +; V18 cse2 [V18,T14] ( 3, 7 ) byref -> x20 hoist "CSE - aggressive" +; V19 cse3 [V19,T13] ( 4, 7 ) int -> x21 "CSE - aggressive" +; V20 cse4 [V20,T07] ( 2, 18 ) long -> [fp+0x20] spill-single-def hoist "CSE - aggressive" +; V21 cse5 [V21,T08] ( 2, 18 ) long -> [fp+0x18] spill-single-def hoist "CSE - aggressive" +; V22 cse6 [V22,T16] ( 2, 5 ) long -> x25 hoist "CSE - moderate"
;
-; Lcl frame size = 48
+; Lcl frame size = 32
G_M8664_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x90]! - stp x19, x20, [sp, #0x40] - stp x21, x22, [sp, #0x50] - stp x23, x24, [sp, #0x60] - stp x25, x26, [sp, #0x70] - stp x27, x28, [sp, #0x80]
+ 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]
mov fp, sp mov x20, x0 ; gcrRegs +[x20] @@ -51,7 +49,7 @@ G_M8664_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19] ;; size=36 bbWeight=1 PerfScore 7.50 G_M8664_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M8664_IG19
+ cbz x20, G_M8664_IG16
ldr w21, [x20, #0x08] mov w0, w21 adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address @@ -64,7 +62,7 @@ G_M8664_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {} mov w23, wzr mov w24, wzr cmp w21, #0
- ble G_M8664_IG09
+ ble G_M8664_IG08
add x20, x20, #16 ; gcrRegs -[x20] ; byrRegs +[x20] @@ -73,8 +71,7 @@ G_M8664_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {} ;; size=60 bbWeight=1 PerfScore 14.00 G_M8664_IG03: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=100000 {x20}, byref, isz ; gcrRegs -[x0]
- ubfiz x26, x24, #3, #32 - ldr x0, [x20, x26]
+ ldr x0, [x20, w24, UXTW #3]
; gcrRegs +[x0] mov x11, x25 ldr wzr, [x0] @@ -82,76 +79,67 @@ G_M8664_IG03: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=100000 blr x1 ; gcrRegs -[x0] ; byrRegs +[x0]
- mov x27, x0 - ; byrRegs +[x27] - mov w28, w1 - cbz w28, G_M8664_IG08 - ;; size=36 bbWeight=4 PerfScore 54.00 -G_M8664_IG04: ; bbWeight=2, gcrefRegs=480000 {x19 x22}, byrefRegs=8100000 {x20 x27}, byref, isz
+ mov x26, x0 + ; byrRegs +[x26] + mov w27, w1 + cbz w27, G_M8664_IG07 + ;; size=32 bbWeight=4 PerfScore 50.00 +G_M8664_IG04: ; bbWeight=2, gcrefRegs=480000 {x19 x22}, byrefRegs=4100000 {x20 x26}, byref, isz
; byrRegs -[x0]
- mov w1, wzr - ldr w2, [x19, #0x08] - str w2, [fp, #0x2C] // [V18 cse2] - cmp w2, #0 - ble G_M8664_IG13 - adrp x3, [HIGH RELOC #0xD1FFAB1E] - add x3, x3, [LOW RELOC #0xD1FFAB1E] - str x3, [fp, #0x20] // [V22 cse6] - add x4, x19, #16 - ; byrRegs +[x4] - str x4, [fp, #0x10] // [V19 cse3] - ; GC ptr vars +{V19} - adrp x5, [HIGH RELOC #0xD1FFAB1E] - add x5, x5, [LOW RELOC #0xD1FFAB1E] - str x5, [fp, #0x18] // [V23 cse7]
+ mov w28, wzr + ldr w1, [x19, #0x08] + str w1, [fp, #0x2C] // [V16 cse0] + cmp w1, #0 + ble G_M8664_IG06 + adrp x2, [HIGH RELOC #0xD1FFAB1E] + add x2, x2, [LOW RELOC #0xD1FFAB1E] + str x2, [fp, #0x20] // [V20 cse4] + add x3, x19, #16 + ; byrRegs +[x3] + str x3, [fp, #0x10] // [V17 cse1] + ; GC ptr vars +{V17} + adrp x4, [HIGH RELOC #0xD1FFAB1E] + add x4, x4, [LOW RELOC #0xD1FFAB1E] + str x4, [fp, #0x18] // [V21 cse5]
;; size=52 bbWeight=2 PerfScore 23.00
-G_M8664_IG05: ; bbWeight=16, gcVars=0000000000000040 {V19}, gcrefRegs=480000 {x19 x22}, byrefRegs=8100000 {x20 x27}, gcvars, byref, isz - ; byrRegs -[x4] - cmp w1, w28 - bhs G_M8664_IG18 - str w1, [fp, #0x3C] // [V06 loc4] - ubfiz x6, x1, #3, #32 - str x6, [fp, #0x30] // [V16 cse0] - ldr x0, [x27, x6]
+G_M8664_IG05: ; bbWeight=16, gcVars=0000000000000040 {V17}, gcrefRegs=480000 {x19 x22}, byrefRegs=4100000 {x20 x26}, gcvars, byref, isz + ; byrRegs -[x3] + cmp w28, w27 + bhs G_M8664_IG15 + ldr x0, [x26, w28, UXTW #3]
; gcrRegs +[x0]
- mov x11, x3
+ mov x11, x2
ldr wzr, [x0]
- ldr x7, [x11] - blr x7 - ldr x2, [fp, #0x10] // [V19 cse3]
+ ldr x5, [x11] + blr x5 + ldr x2, [fp, #0x10] // [V17 cse1]
; byrRegs +[x2]
- ldr x1, [fp, #0x30] // [V16 cse0] - ldr x1, [x2, x1]
+ ldr x1, [x2, w28, UXTW #3]
; gcrRegs +[x1]
- ldr x11, [fp, #0x18] // [V23 cse7]
+ ldr x11, [fp, #0x18] // [V21 cse5]
ldr wzr, [x0] ldr x3, [x11] blr x3 ; gcrRegs -[x0-x1] ; byrRegs -[x2]
- cbz w0, G_M8664_IG07 - ldr w14, [fp, #0x3C] // [V06 loc4] - add w14, w14, #1 - ldr w15, [fp, #0x2C] // [V18 cse2] - cmp w15, w14 - ldr x3, [fp, #0x20] // [V22 cse6] - bgt G_M8664_IG12 - ;; size=96 bbWeight=16 PerfScore 640.00 -G_M8664_IG06: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=100000 {x20}, gcvars, byref - ; byrRegs -[x27] - ; GC ptr vars -{V19} - str w14, [fp, #0x3C] // [V06 loc4] - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M8664_IG07: ; bbWeight=2, gcrefRegs=480000 {x19 x22}, byrefRegs=100000 {x20}, byref, isz - ldr w15, [fp, #0x2C] // [V18 cse2] - ldr w14, [fp, #0x3C] // [V06 loc4] - cmp w15, w14 - bgt G_M8664_IG08 - ldr x15, [x20, x26]
+ cbz w0, G_M8664_IG06 + add w28, w28, #1 + ldr w14, [fp, #0x2C] // [V16 cse0] + cmp w14, w28 + ldr x2, [fp, #0x20] // [V20 cse4] + bgt G_M8664_IG05 + ;; size=76 bbWeight=16 PerfScore 528.00 +G_M8664_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=100000 {x20}, gcvars, byref, isz + ; byrRegs -[x26] + ; GC ptr vars -{V17} + ldr w14, [fp, #0x2C] // [V16 cse0] + cmp w14, w28 + bgt G_M8664_IG07 + ldr x15, [x20, w24, UXTW #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 @@ -162,65 +150,51 @@ G_M8664_IG07: ; bbWeight=2, gcrefRegs=480000 {x19 x22}, byrefRegs=100000 ; gcrRegs -[x15] ; byrRegs -[x14] add w23, w23, #1
- ;; size=60 bbWeight=2 PerfScore 40.00 -G_M8664_IG08: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=100000 {x20}, byref, isz
+ ;; size=56 bbWeight=2 PerfScore 36.00 +G_M8664_IG07: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=100000 {x20}, byref, isz
add w24, w24, #1 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
+G_M8664_IG08: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19] ; byrRegs -[x20]
- 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, #0x80] - ldp x25, x26, [sp, #0x70] - ldp x23, x24, [sp, #0x60] - ldp x21, x22, [sp, #0x50] - ldp x19, x20, [sp, #0x40] - ldp fp, lr, [sp], #0x90
+G_M8664_IG10: ; bbWeight=0.50, epilog, nogc, extend
...

-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

+20 (+7.25%) : 8181.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector5121[short],System.Runtime.Intrinsics.Vector5121[short]):System.Runtime.Intrinsics.Vector512`1short

@@ -9,42 +9,45 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00 ] ( 3, 4 ) struct (64) [fp+0x90] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[short]> -; V01 arg1 [V01 ] ( 3, 6 ) struct (64) [fp+0x50] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[short]> -; V02 loc0 [V02 ] ( 2, 5 ) struct (64) [fp+0x10] HFA(simd16) do-not-enreg[XSR] multireg-ret addr-exposed ld-addr-op <System.Runtime.Intrinsics.Vector512`1[short]> -; V03 loc1 [V03,T00] ( 9, 29 ) int -> x19 -; V04 loc2 [V04,T02] ( 4, 12 ) ushort -> x21 -; V05 loc3 [V05,T04] ( 3, 10 ) short -> x22
+; V00 arg0 [V00 ] ( 3, 4 ) struct (64) [fp+0x98] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[short]> +; V01 arg1 [V01 ] ( 3, 6 ) struct (64) [fp+0x58] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[short]> +; V02 loc0 [V02 ] ( 2, 5 ) struct (64) [fp+0x18] HFA(simd16) do-not-enreg[XSR] multireg-ret addr-exposed ld-addr-op <System.Runtime.Intrinsics.Vector512`1[short]> +; V03 loc1 [V03,T00] ( 10, 33 ) int -> x19 +; V04 loc2 [V04,T02] ( 4, 12 ) ushort -> x20 +; V05 loc3 [V05,T03] ( 3, 10 ) short -> x21
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) short -> zero-ref "Inline return value spill temp"
-; V08 tmp2 [V08,T05] ( 2, 4 ) int -> x1
+; V08 tmp2 [V08,T04] ( 2, 4 ) int -> x1
;* V09 tmp3 [V09 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V10 tmp4 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V11 tmp5 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp6 [V12 ] ( 0, 0 ) short -> zero-ref "Inline return value spill temp"
-; V13 tmp7 [V13,T07] ( 2, 4 ) int -> x1
+; V13 tmp7 [V13,T06] ( 2, 4 ) int -> x1
;* V14 tmp8 [V14 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V15 tmp9 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp10 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp11 [V17,T06] ( 2, 4 ) int -> x1
+; V17 tmp11 [V17,T05] ( 2, 4 ) int -> x1
;* V18 tmp12 [V18 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V19 tmp13 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp14 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 cse0 [V21,T01] ( 9, 18 ) ref -> x0 multi-def "CSE - aggressive"
-; V22 cse1 [V22,T03] ( 3, 12 ) long -> x20 "CSE - aggressive"
;
-; Lcl frame size = 192
+; Lcl frame size = 200
G_M11381_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0xF0]!
- stp x19, x20, [sp, #0xD0] - stp x21, x22, [sp, #0xE0]
+ stp x19, x20, [sp, #0xD8] + str x21, [sp, #0xE8]
mov fp, sp
- stp q0, q1, [fp, #0x90] // [V00 arg0], [V00 arg0+0x10] - stp q2, q3, [fp, #0xB0] // [V00 arg0+0x20], [V00 arg0+0x30] - stp q4, q5, [fp, #0x50] // [V01 arg1], [V01 arg1+0x10] - stp q6, q7, [fp, #0x70] // [V01 arg1+0x20], [V01 arg1+0x30] - ;; size=32 bbWeight=1 PerfScore 7.50
+ str q0, [fp, #0x98] // [V00 arg0] + str q1, [fp, #0xA8] // [V00 arg0+0x10] + str q2, [fp, #0xB8] // [V00 arg0+0x20] + str q3, [fp, #0xC8] // [V00 arg0+0x30] + str q4, [fp, #0x58] // [V01 arg1] + str q5, [fp, #0x68] // [V01 arg1+0x10] + str q6, [fp, #0x78] // [V01 arg1+0x20] + str q7, [fp, #0x88] // [V01 arg1+0x30] + ;; size=48 bbWeight=1 PerfScore 11.50
G_M11381_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w19, wzr ;; size=4 bbWeight=1 PerfScore 0.50 @@ -73,17 +76,16 @@ G_M11381_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 ;; size=36 bbWeight=2 PerfScore 25.00 G_M11381_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add x1, fp, #80 // [V01 arg1]
+ add x1, fp, #88 // [V01 arg1]
; byrRegs +[x1]
- sbfiz x20, x19, #1, #32 - ldrh w21, [x1, x20] - mov w22, wzr - cmp w21, #32
+ ldrh w20, [x1, w19, SXTW #2] + mov w21, wzr + cmp w20, #32
bge G_M11381_IG09
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=20 bbWeight=4 PerfScore 22.00
G_M11381_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x1]
- cmp w21, #32
+ cmp w20, #32
cset x1, lt tst w1, #255 bne G_M11381_IG08 @@ -102,9 +104,9 @@ G_M11381_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 ;; size=52 bbWeight=2 PerfScore 30.00 G_M11381_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x1, fp, #144 // [V00 arg0]
+ add x1, fp, #152 // [V00 arg0]
; byrRegs +[x1]
- ldrsh w22, [x1, w21, UXTW #2]
+ ldrsh w21, [x1, w20, UXTW #2]
;; size=8 bbWeight=2 PerfScore 7.00 G_M11381_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x1] @@ -132,26 +134,28 @@ G_M11381_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 ;; size=36 bbWeight=2 PerfScore 25.00 G_M11381_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add x0, fp, #16 // [V02 loc0]
+ add x0, fp, #24 // [V02 loc0]
; byrRegs +[x0]
- strh w22, [x0, x20]
+ strh w21, [x0, w19, SXTW #2]
add w19, w19, #1 cmp w19, #32 blt G_M11381_IG03 ;; size=20 bbWeight=4 PerfScore 14.00 G_M11381_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0]
- ldp q0, q1, [fp, #0x10] // [V02 loc0], [V02 loc0+0x10] - ldp q2, q3, [fp, #0x30] // [V02 loc0+0x20], [V02 loc0+0x30] - ;; size=8 bbWeight=1 PerfScore 4.00
+ ldr q0, [fp, #0x18] // [V02 loc0] + ldr q1, [fp, #0x28] // [V02 loc0+0x10] + ldr q2, [fp, #0x38] // [V02 loc0+0x20] + ldr q3, [fp, #0x48] // [V02 loc0+0x30] + ;; size=16 bbWeight=1 PerfScore 8.00
G_M11381_IG14: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0xE0] - ldp x19, x20, [sp, #0xD0]
+ ldr x21, [sp, #0xE8] + ldp x19, x20, [sp, #0xD8]
ldp fp, lr, [sp], #0xF0 ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 276, prolog size 32, PerfScore 161.00, instruction count 69, allocated bytes for code 276 (MethodHash=30e4d38a) for method System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[short],System.Runtime.Intrinsics.Vector512`1[short]):System.Runtime.Intrinsics.Vector512`1[short] (FullOpts)
+; Total bytes of code 296, prolog size 48, PerfScore 166.00, instruction count 74, allocated bytes for code 296 (MethodHash=30e4d38a) for method System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[short],System.Runtime.Intrinsics.Vector512`1[short]):System.Runtime.Intrinsics.Vector512`1[short] (FullOpts)
; ============================================================ Unwind Info: @@ -162,7 +166,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 69 (0x00045) Actual length = 276 (0x000114)
+ Function Length : 74 (0x0004a) Actual length = 296 (0x000128)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -170,10 +174,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next - C8 1A save_regp X#0 Z#26 (0x1A); stp x19, x20, [sp, #208]
+ D0 9D save_reg X#2 Z#29 (0x1D); str x21, [sp, #232] + C8 1B save_regp X#0 Z#27 (0x1B); stp x19, x20, [sp, #216]
9D save_fplr_x #29 (0x1D); stp fp, lr, [sp, #-240]! E4 end E4 end
- E4 end

+20 (+7.25%) : 8182.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector5121[ushort],System.Runtime.Intrinsics.Vector5121[ushort]):System.Runtime.Intrinsics.Vector512`1ushort

@@ -9,42 +9,45 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00 ] ( 3, 4 ) struct (64) [fp+0x90] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[ushort]> -; V01 arg1 [V01 ] ( 3, 6 ) struct (64) [fp+0x50] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[ushort]> -; V02 loc0 [V02 ] ( 2, 5 ) struct (64) [fp+0x10] HFA(simd16) do-not-enreg[XSR] multireg-ret addr-exposed ld-addr-op <System.Runtime.Intrinsics.Vector512`1[ushort]> -; V03 loc1 [V03,T00] ( 9, 29 ) int -> x19 -; V04 loc2 [V04,T02] ( 4, 12 ) ushort -> x21 -; V05 loc3 [V05,T04] ( 3, 10 ) ushort -> x22
+; V00 arg0 [V00 ] ( 3, 4 ) struct (64) [fp+0x98] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[ushort]> +; V01 arg1 [V01 ] ( 3, 6 ) struct (64) [fp+0x58] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[ushort]> +; V02 loc0 [V02 ] ( 2, 5 ) struct (64) [fp+0x18] HFA(simd16) do-not-enreg[XSR] multireg-ret addr-exposed ld-addr-op <System.Runtime.Intrinsics.Vector512`1[ushort]> +; V03 loc1 [V03,T00] ( 10, 33 ) int -> x19 +; V04 loc2 [V04,T02] ( 4, 12 ) ushort -> x20 +; V05 loc3 [V05,T03] ( 3, 10 ) ushort -> x21
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp"
-; V08 tmp2 [V08,T05] ( 2, 4 ) int -> x1
+; V08 tmp2 [V08,T04] ( 2, 4 ) int -> x1
;* V09 tmp3 [V09 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V10 tmp4 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V11 tmp5 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp6 [V12 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp"
-; V13 tmp7 [V13,T07] ( 2, 4 ) int -> x1
+; V13 tmp7 [V13,T06] ( 2, 4 ) int -> x1
;* V14 tmp8 [V14 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V15 tmp9 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp10 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp11 [V17,T06] ( 2, 4 ) int -> x1
+; V17 tmp11 [V17,T05] ( 2, 4 ) int -> x1
;* V18 tmp12 [V18 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V19 tmp13 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp14 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 cse0 [V21,T01] ( 9, 18 ) ref -> x0 multi-def "CSE - aggressive"
-; V22 cse1 [V22,T03] ( 3, 12 ) long -> x20 "CSE - aggressive"
;
-; Lcl frame size = 192
+; Lcl frame size = 200
G_M32000_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0xF0]!
- stp x19, x20, [sp, #0xD0] - stp x21, x22, [sp, #0xE0]
+ stp x19, x20, [sp, #0xD8] + str x21, [sp, #0xE8]
mov fp, sp
- stp q0, q1, [fp, #0x90] // [V00 arg0], [V00 arg0+0x10] - stp q2, q3, [fp, #0xB0] // [V00 arg0+0x20], [V00 arg0+0x30] - stp q4, q5, [fp, #0x50] // [V01 arg1], [V01 arg1+0x10] - stp q6, q7, [fp, #0x70] // [V01 arg1+0x20], [V01 arg1+0x30] - ;; size=32 bbWeight=1 PerfScore 7.50
+ str q0, [fp, #0x98] // [V00 arg0] + str q1, [fp, #0xA8] // [V00 arg0+0x10] + str q2, [fp, #0xB8] // [V00 arg0+0x20] + str q3, [fp, #0xC8] // [V00 arg0+0x30] + str q4, [fp, #0x58] // [V01 arg1] + str q5, [fp, #0x68] // [V01 arg1+0x10] + str q6, [fp, #0x78] // [V01 arg1+0x20] + str q7, [fp, #0x88] // [V01 arg1+0x30] + ;; size=48 bbWeight=1 PerfScore 11.50
G_M32000_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w19, wzr ;; size=4 bbWeight=1 PerfScore 0.50 @@ -73,17 +76,16 @@ G_M32000_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 ;; size=36 bbWeight=2 PerfScore 25.00 G_M32000_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add x1, fp, #80 // [V01 arg1]
+ add x1, fp, #88 // [V01 arg1]
; byrRegs +[x1]
- sbfiz x20, x19, #1, #32 - ldrh w21, [x1, x20] - mov w22, wzr - cmp w21, #32
+ ldrh w20, [x1, w19, SXTW #2] + mov w21, wzr + cmp w20, #32
bge G_M32000_IG09
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=20 bbWeight=4 PerfScore 22.00
G_M32000_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x1]
- cmp w21, #32
+ cmp w20, #32
cset x1, lt tst w1, #255 bne G_M32000_IG08 @@ -102,9 +104,9 @@ G_M32000_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 ;; size=52 bbWeight=2 PerfScore 30.00 G_M32000_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x1, fp, #144 // [V00 arg0]
+ add x1, fp, #152 // [V00 arg0]
; byrRegs +[x1]
- ldrh w22, [x1, w21, UXTW #2]
+ ldrh w21, [x1, w20, UXTW #2]
;; size=8 bbWeight=2 PerfScore 7.00 G_M32000_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x1] @@ -132,26 +134,28 @@ G_M32000_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 ;; size=36 bbWeight=2 PerfScore 25.00 G_M32000_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add x0, fp, #16 // [V02 loc0]
+ add x0, fp, #24 // [V02 loc0]
; byrRegs +[x0]
- strh w22, [x0, x20]
+ strh w21, [x0, w19, SXTW #2]
add w19, w19, #1 cmp w19, #32 blt G_M32000_IG03 ;; size=20 bbWeight=4 PerfScore 14.00 G_M32000_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0]
- ldp q0, q1, [fp, #0x10] // [V02 loc0], [V02 loc0+0x10] - ldp q2, q3, [fp, #0x30] // [V02 loc0+0x20], [V02 loc0+0x30] - ;; size=8 bbWeight=1 PerfScore 4.00
+ ldr q0, [fp, #0x18] // [V02 loc0] + ldr q1, [fp, #0x28] // [V02 loc0+0x10] + ldr q2, [fp, #0x38] // [V02 loc0+0x20] + ldr q3, [fp, #0x48] // [V02 loc0+0x30] + ;; size=16 bbWeight=1 PerfScore 8.00
G_M32000_IG14: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0xE0] - ldp x19, x20, [sp, #0xD0]
+ ldr x21, [sp, #0xE8] + ldp x19, x20, [sp, #0xD8]
ldp fp, lr, [sp], #0xF0 ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 276, prolog size 32, PerfScore 161.00, instruction count 69, allocated bytes for code 276 (MethodHash=070182ff) for method System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[ushort],System.Runtime.Intrinsics.Vector512`1[ushort]):System.Runtime.Intrinsics.Vector512`1[ushort] (FullOpts)
+; Total bytes of code 296, prolog size 48, PerfScore 166.00, instruction count 74, allocated bytes for code 296 (MethodHash=070182ff) for method System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[ushort],System.Runtime.Intrinsics.Vector512`1[ushort]):System.Runtime.Intrinsics.Vector512`1[ushort] (FullOpts)
; ============================================================ Unwind Info: @@ -162,7 +166,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 69 (0x00045) Actual length = 276 (0x000114)
+ Function Length : 74 (0x0004a) Actual length = 296 (0x000128)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -170,10 +174,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next - C8 1A save_regp X#0 Z#26 (0x1A); stp x19, x20, [sp, #208]
+ D0 9D save_reg X#2 Z#29 (0x1D); str x21, [sp, #232] + C8 1B save_regp X#0 Z#27 (0x1B); stp x19, x20, [sp, #216]
9D save_fplr_x #29 (0x1D); stp fp, lr, [sp, #-240]! E4 end E4 end
- E4 end

+36 (+8.11%) : 78084.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel+groupByRefTypeParallel@2301-1[System.Canon,System.Canon]:Invoke(int):this (FullOpts)

@@ -12,7 +12,7 @@ ; V00 this [V00,T03] ( 9, 21 ) ref -> x19 this class-hnd single-def <Microsoft.FSharp.Collections.ArrayModule+Parallel+groupByRefTypeParallel@2301-1[System.__Canon,System.__Canon]> ; V01 arg1 [V01,T12] ( 4, 4 ) int -> x1 single-def ; V02 loc0 [V02 ] ( 4, 4 ) struct (16) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op <System.ArraySegment`1[System.__Canon]>
-; V03 loc1 [V03,T20] ( 3, 3 ) int -> x20 single-def
+; V03 loc1 [V03,T24] ( 3, 3 ) int -> x20 single-def
; V04 loc2 [V04,T00] ( 8, 26 ) int -> x21 ;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon]> ; V06 loc4 [V06,T11] ( 2, 8 ) ref -> x1 class-hnd <System.__Canon> @@ -27,35 +27,41 @@ ; V15 tmp6 [V15 ] ( 4, 4 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._offset (fldOffset=0x8)" P-DEP ; V16 tmp7 [V16 ] ( 4, 4 ) int -> [fp+0x24] do-not-enreg[X] addr-exposed "field V02._count (fldOffset=0xc)" P-DEP ;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref "field V05.value (fldOffset=0x0)" P-INDEP
-; V18 tmp9 [V18,T08] ( 3, 12 ) ref -> x24 "field V11.value (fldOffset=0x0)" P-INDEP
+; V18 tmp9 [V18,T08] ( 3, 12 ) ref -> x28 "field V11.value (fldOffset=0x0)" P-INDEP
; V19 tmp10 [V19,T13] ( 3, 6 ) ref -> x0 single-def "arr expr"
-; V20 tmp11 [V20,T17] ( 2, 4 ) long -> x1 "argument with side effect" -; V21 tmp12 [V21,T18] ( 2, 4 ) long -> x1 "argument with side effect" -; V22 tmp13 [V22,T19] ( 2, 4 ) long -> x1 "argument with side effect"
+; V20 tmp11 [V20,T21] ( 2, 4 ) long -> x1 "argument with side effect" +; V21 tmp12 [V21,T22] ( 2, 4 ) long -> x1 "argument with side effect" +; V22 tmp13 [V22,T23] ( 2, 4 ) long -> x1 "argument with side effect"
; V23 tmp14 [V23,T01] ( 3, 24 ) ref -> x0 "arr expr" ; V24 tmp15 [V24,T02] ( 3, 24 ) ref -> x14 "arr expr" ; V25 tmp16 [V25,T09] ( 3, 12 ) ref -> x0 "Field obj" ; V26 tmp17 [V26,T07] ( 2, 16 ) long -> x0 "argument with side effect" ; V27 tmp18 [V27,T04] ( 2, 16 ) ref -> x2 "argument with side effect"
-; V28 tmp19 [V28,T05] ( 2, 16 ) ref -> x23 "argument with side effect"
+; V28 tmp19 [V28,T05] ( 2, 16 ) ref -> x27 "argument with side effect"
; V29 tmp20 [V29,T06] ( 2, 16 ) byref -> x0 "argument with side effect"
-; V30 cse0 [V30,T14] ( 2, 5 ) long -> x22 hoist "CSE - aggressive" -; V31 cse1 [V31,T16] ( 4, 4 ) long -> x20 "CSE - moderate" -; V32 cse2 [V32,T10] ( 3, 12 ) long -> x23 "CSE - aggressive" -; V33 cse3 [V33,T15] ( 2, 5 ) int -> x20 hoist "CSE - moderate"
+; V30 cse0 [V30,T14] ( 2, 5 ) long -> x23 hoist "CSE - aggressive" +; V31 cse1 [V31,T20] ( 4, 4 ) long -> x20 "CSE - moderate" +; V32 cse2 [V32,T15] ( 2, 5 ) int -> x20 hoist "CSE - aggressive" +; V33 cse3 [V33,T16] ( 2, 5 ) long -> x22 hoist "CSE - aggressive" +; V34 cse4 [V34,T17] ( 2, 5 ) long -> x24 hoist "CSE - aggressive" +; V35 cse5 [V35,T18] ( 2, 5 ) long -> x25 hoist "CSE - aggressive" +; V36 cse6 [V36,T19] ( 2, 5 ) long -> x26 hoist "CSE - aggressive" +; V37 cse7 [V37,T10] ( 3, 12 ) long -> x27 "CSE - aggressive"
; ; Lcl frame size = 32 G_M55655_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]!
+ 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]
mov fp, sp str x0, [fp, #0x28] mov x19, x0 ; gcrRegs +[x19]
- ;; size=28 bbWeight=1 PerfScore 6.00
+ ;; size=36 bbWeight=1 PerfScore 8.00
G_M55655_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x0, [x19, #0x28] ; gcrRegs +[x0] @@ -104,14 +110,22 @@ G_M55655_IG04: ; bbWeight=1, isz, extend sub w20, w0, #1 cmp w20, w21 blt G_M55655_IG06
+ adrp x22, [HIGH RELOC #0xD1FFAB1E] + add x22, x22, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x19] adrp x11, [HIGH RELOC #0xD1FFAB1E] add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] blr x1
- mov x22, x0
+ mov x23, x0 + adrp x24, [HIGH RELOC #0xD1FFAB1E] + add x24, x24, [LOW RELOC #0xD1FFAB1E] + adrp x25, [HIGH RELOC #0xD1FFAB1E] + add x25, x25, [LOW RELOC #0xD1FFAB1E] + adrp x26, [HIGH RELOC #0xD1FFAB1E] + add x26, x26, [LOW RELOC #0xD1FFAB1E]
add w20, w20, #1
- ;; size=148 bbWeight=1 PerfScore 39.00
+ ;; size=180 bbWeight=1 PerfScore 43.00
G_M55655_IG05: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x0, [x19, #0x10] ; gcrRegs +[x0] @@ -121,30 +135,30 @@ G_M55655_IG05: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ubfiz x23, x21, #3, #32 - ldr x1, [x0, x23]
+ mov w27, w21 + ldr x1, [x0, x27, LSL #3]
; gcrRegs +[x1] ldr x0, [x19, #0x08] ; gcrRegs +[x0] ; byrRegs -[x0]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E]
+ mov x11, x22
ldr wzr, [x0] ldr x2, [x11] blr x2 ; gcrRegs -[x1]
- mov x24, x0 - ; gcrRegs +[x24]
+ mov x28, x0 + ; gcrRegs +[x28]
ldr x14, [x19, #0x20] ; gcrRegs +[x14] ldr w15, [x14, #0x08] cmp w21, w15 bhs G_M55655_IG07
- add x15, x23, #16
+ lsl x15, x27, #3 + add x15, x15, #16
add x14, x14, x15 ; gcrRegs -[x14] ; byrRegs +[x14]
- mov x15, x24
+ mov x15, x28
; gcrRegs +[x15] adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_ASSIGN_REF add x12, x12, [LOW RELOC #0xD1FFAB1E] @@ -152,45 +166,44 @@ G_M55655_IG05: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by blr x12 ; gcrRegs -[x0 x15] ; byrRegs -[x14]
- ldr x23, [x19, #0x18] - ; gcrRegs +[x23] - mov x0, x22 - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E]
+ ldr x27, [x19, #0x18] + ; gcrRegs +[x27] + mov x0, x23 + mov x11, x24
ldr x1, [x11] blr x1 ; gcrRegs +[x0] mov x2, x0 ; gcrRegs +[x2]
- mov x0, x23 - mov x1, x24
+ mov x0, x27 + mov x1, x28
; gcrRegs +[x1]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E]
+ mov x11, x25
ldr wzr, [x0] ldr x3, [x11] blr x3
- ; gcrRegs -[x1-x2 x23-x24]
+ ; gcrRegs -[x1-x2 x27-x28]
ldrsb wzr, [x0] add x0, x0, #8 ; gcrRegs -[x0] ; byrRegs +[x0]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E]
+ mov x11, x26
ldr x1, [x11] blr x1 ; byrRegs -[x0] add w21, w21, #1 cmp w21, w20 bne G_M55655_IG05
- ;; size=192 bbWeight=4 PerfScore 264.00
+ ;; size=180 bbWeight=4 PerfScore 258.00
G_M55655_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc
+ 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], #0x60
+ ldp fp, lr, [sp], #0x80
ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00
+ ;; size=28 bbWeight=1 PerfScore 7.00
G_M55655_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address add x0, x0, [LOW RELOC #0xD1FFAB1E] @@ -199,18 +212,18 @@ G_M55655_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 brk_unix #0 ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 444, prolog size 24, PerfScore 328.50, instruction count 111, allocated bytes for code 444 (MethodHash=9a9c2698) for method Microsoft.FSharp.Collections.ArrayModule+Parallel+groupByRefTypeParallel@2301-1[System.__Canon,System.__Canon]:Invoke(int):this (FullOpts)
+; Total bytes of code 480, prolog size 32, PerfScore 330.50, instruction count 120, allocated bytes for code 480 (MethodHash=9a9c2698) for method Microsoft.FSharp.Collections.ArrayModule+Parallel+groupByRefTypeParallel@2301-1[System.__Canon,System.__Canon]:Invoke(int):this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 3
Epilog Count : 1 E bit : 0 X bit : 0 Vers : 0
- Function Length : 111 (0x0006f) Actual length = 444 (0x0001bc)
+ Function Length : 120 (0x00078) Actual length = 480 (0x0001e0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -220,8 +233,12 @@ Unwind Info: ---- Epilog start at index 1 ---- E6 save_next E6 save_next
+ E6 save_next + E6 save_next
C8 06 save_regp X#0 Z#6 (0x06); stp x19, x20, [sp, #48]
- 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
+ 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]! + E4 end + E4 end
E4 end E4 end

libraries.pmi.osx.arm64.checked.mch

-48 (-9.60%) : 5220.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)

@@ -7,40 +7,38 @@ ; No matching PGO data ; 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,T07] ( 6, 19 ) int -> x24
;* 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 cse0 [V18,T08] ( 2, 17 ) byref -> x25 hoist "CSE - aggressive" +; V19 cse1 [V19,T05] ( 4, 22 ) int -> [fp+0x1C] spill-single-def "CSE - aggressive" +; V20 cse2 [V20,T14] ( 3, 7 ) byref -> x19 hoist "CSE - aggressive" +; V21 cse3 [V21,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] @@ -71,7 +69,7 @@ G_M8664_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {} mov w23, wzr mov w24, wzr cmp w21, #0
- ble G_M8664_IG09
+ ble G_M8664_IG08
add x19, x19, #16 ; gcrRegs -[x19] ; byrRegs +[x19] @@ -80,8 +78,7 @@ G_M8664_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {} ;; size=88 bbWeight=1 PerfScore 17.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, w24, UXTW #3]
; gcrRegs +[x0] ldr x1, [x0] ldr x1, [x1, #0x58] @@ -89,60 +86,51 @@ G_M8664_IG03: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=2080000 blr x1 ; gcrRegs -[x0] ; byrRegs +[x0]
- mov x27, x0 - ; byrRegs +[x27] - mov w28, w1 - cbz w28, G_M8664_IG08 - ;; size=36 bbWeight=4 PerfScore 64.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=32 bbWeight=4 PerfScore 60.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] // [V19 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] - ldr x4, [x4, #0x38] - blr x4 - ldr x1, [fp, #0x20] // [V18 cse0] - ldr x1, [x25, x1]
+ ldr x2, [x0] + ldr x2, [x2, #0x48] + ldr x2, [x2, #0x38] + blr x2 + ldr x1, [x25, w28, UXTW #3]
; gcrRegs +[x1] ldr x2, [x0] ldr x2, [x2, #0xB0] ldr x2, [x2, #0x18] 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=88 bbWeight=16 PerfScore 632.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] // [V19 cse1] + cmp w14, w28 + bgt G_M8664_IG05 + ;; size=68 bbWeight=16 PerfScore 520.00 +G_M8664_IG06: ; bbWeight=2, gcrefRegs=500000 {x20 x22}, byrefRegs=2080000 {x19 x25}, byref, isz + ; byrRegs -[x26] + ldr w14, [fp, #0x1C] // [V19 cse1] + cmp w14, w28 + bgt G_M8664_IG07 + ldr x15, [x19, w24, UXTW #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 @@ -150,62 +138,50 @@ 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
+ ;; size=44 bbWeight=2 PerfScore 28.00 +G_M8664_IG07: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=2080000 {x19 x25}, byref, isz
add w24, w24, #1 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
+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 ;; 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 +[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 +[x22]
cmp w23, #1
- bne G_M8664_IG16
+ bne G_M8664_IG13
ldr w0, [x22, #0x08] cmp w0, #0
- bls G_M8664_IG18
+ bls G_M8664_IG15
ldr x0, [x22, #0x10] ; gcrRegs +[x0] ;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M8664_IG15: ; 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
...

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

-8 (-8.70%) : 263277.dasm - System.Collections.Generic.SegmentedList`1[System.Canon]:get_Item(long):System.Canon:this (FullOpts)

@@ -33,8 +33,7 @@ G_M62105_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre add x2, x2, #16 ; gcrRegs -[x2] ; byrRegs +[x2]
- lsl x3, x3, #3 - ldr x2, [x2, x3]
+ ldr x2, [x2, x3, LSL #3]
; gcrRegs +[x2] ; byrRegs -[x2] ldrsw x0, [x0, #0x28] @@ -45,10 +44,9 @@ G_M62105_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre bhs G_M62105_IG04 add x1, x2, #16 ; byrRegs +[x1]
- lsl x0, x0, #3 - ldr x0, [x1, x0]
+ ldr x0, [x1, x0, LSL #3]
; gcrRegs +[x0]
- ;; size=68 bbWeight=1 PerfScore 28.00
+ ;; size=60 bbWeight=1 PerfScore 26.00
G_M62105_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr @@ -60,7 +58,7 @@ G_M62105_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 92, prolog size 8, PerfScore 31.50, instruction count 23, allocated bytes for code 92 (MethodHash=588e0d66) for method System.Collections.Generic.SegmentedList`1[System.__Canon]:get_Item(long):System.__Canon:this (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 29.50, instruction count 21, allocated bytes for code 84 (MethodHash=588e0d66) for method System.Collections.Generic.SegmentedList`1[System.__Canon]:get_Item(long):System.__Canon: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 (+9.09%) : 21021.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector5121[ushort],System.Runtime.Intrinsics.Vector5121[ushort]):System.Runtime.Intrinsics.Vector512`1ushort

@@ -8,35 +8,38 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00 ] ( 3, 4 ) struct (64) [fp+0x90] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[ushort]> -; V01 arg1 [V01 ] ( 3, 6 ) struct (64) [fp+0x50] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[ushort]> -; V02 loc0 [V02 ] ( 2, 5 ) struct (64) [fp+0x10] HFA(simd16) do-not-enreg[XSR] multireg-ret addr-exposed ld-addr-op <System.Runtime.Intrinsics.Vector512`1[ushort]> -; V03 loc1 [V03,T00] ( 9, 29 ) int -> x19 -; V04 loc2 [V04,T01] ( 4, 12 ) ushort -> x21 -; V05 loc3 [V05,T03] ( 3, 10 ) ushort -> x22
+; V00 arg0 [V00 ] ( 3, 4 ) struct (64) [fp+0x98] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[ushort]> +; V01 arg1 [V01 ] ( 3, 6 ) struct (64) [fp+0x58] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[ushort]> +; V02 loc0 [V02 ] ( 2, 5 ) struct (64) [fp+0x18] HFA(simd16) do-not-enreg[XSR] multireg-ret addr-exposed ld-addr-op <System.Runtime.Intrinsics.Vector512`1[ushort]> +; V03 loc1 [V03,T00] ( 10, 33 ) int -> x19 +; V04 loc2 [V04,T01] ( 4, 12 ) ushort -> x20 +; V05 loc3 [V05,T02] ( 3, 10 ) ushort -> x21
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp"
-; V08 tmp2 [V08,T04] ( 3, 8 ) int -> x0
+; V08 tmp2 [V08,T03] ( 3, 8 ) int -> x0
;* V09 tmp3 [V09 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V10 tmp4 [V10 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp"
-; V11 tmp5 [V11,T06] ( 2, 4 ) int -> x0
+; V11 tmp5 [V11,T05] ( 2, 4 ) int -> x0
;* V12 tmp6 [V12 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
-; V13 tmp7 [V13,T05] ( 3, 8 ) int -> x0
+; V13 tmp7 [V13,T04] ( 3, 8 ) int -> x0
;* V14 tmp8 [V14 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
-; V15 cse0 [V15,T02] ( 3, 12 ) long -> x20 "CSE - aggressive"
;
-; Lcl frame size = 192
+; Lcl frame size = 200
G_M32000_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0xF0]!
- stp x19, x20, [sp, #0xD0] - stp x21, x22, [sp, #0xE0]
+ stp x19, x20, [sp, #0xD8] + str x21, [sp, #0xE8]
mov fp, sp
- stp q0, q1, [fp, #0x90] // [V00 arg0], [V00 arg0+0x10] - stp q2, q3, [fp, #0xB0] // [V00 arg0+0x20], [V00 arg0+0x30] - stp q4, q5, [fp, #0x50] // [V01 arg1], [V01 arg1+0x10] - stp q6, q7, [fp, #0x70] // [V01 arg1+0x20], [V01 arg1+0x30] - ;; size=32 bbWeight=1 PerfScore 7.50
+ str q0, [fp, #0x98] // [V00 arg0] + str q1, [fp, #0xA8] // [V00 arg0+0x10] + str q2, [fp, #0xB8] // [V00 arg0+0x20] + str q3, [fp, #0xC8] // [V00 arg0+0x30] + str q4, [fp, #0x58] // [V01 arg1] + str q5, [fp, #0x68] // [V01 arg1+0x10] + str q6, [fp, #0x78] // [V01 arg1+0x20] + str q7, [fp, #0x88] // [V01 arg1+0x30] + ;; size=48 bbWeight=1 PerfScore 11.50
G_M32000_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w19, wzr ;; size=4 bbWeight=1 PerfScore 0.50 @@ -57,26 +60,25 @@ G_M32000_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x1, #1 LSL #32 ldr x1, [x1] blr x1
- add x0, fp, #80 // [V01 arg1]
+ add x0, fp, #88 // [V01 arg1]
; byrRegs +[x0]
- sbfiz x20, x19, #1, #32 - ldrh w21, [x0, x20] - mov w22, wzr - cmp w21, #32
+ ldrh w20, [x0, w19, SXTW #2] + mov w21, wzr + cmp w20, #32
bge G_M32000_IG08
- ;; size=44 bbWeight=4 PerfScore 48.00
+ ;; size=40 bbWeight=4 PerfScore 44.00
G_M32000_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0]
- cmp w21, #32
+ cmp w20, #32
cset x0, lt movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 ldr x1, [x1] blr x1
- add x0, fp, #144 // [V00 arg0]
+ add x0, fp, #152 // [V00 arg0]
; byrRegs +[x0]
- ldrh w22, [x0, w21, UXTW #2]
+ ldrh w21, [x0, w20, UXTW #2]
;; size=36 bbWeight=2 PerfScore 20.00 G_M32000_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x0] @@ -96,26 +98,28 @@ G_M32000_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x1, #1 LSL #32 ldr x1, [x1] blr x1
- add x0, fp, #16 // [V02 loc0]
+ add x0, fp, #24 // [V02 loc0]
; byrRegs +[x0]
- strh w22, [x0, x20]
+ strh w21, [x0, w19, SXTW #2]
add w19, w19, #1 cmp w19, #32 blt G_M32000_IG03 ;; size=40 bbWeight=4 PerfScore 36.00 G_M32000_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0]
- ldp q0, q1, [fp, #0x10] // [V02 loc0], [V02 loc0+0x10] - ldp q2, q3, [fp, #0x30] // [V02 loc0+0x20], [V02 loc0+0x30] - ;; size=8 bbWeight=1 PerfScore 4.00
+ ldr q0, [fp, #0x18] // [V02 loc0] + ldr q1, [fp, #0x28] // [V02 loc0+0x10] + ldr q2, [fp, #0x38] // [V02 loc0+0x20] + ldr q3, [fp, #0x48] // [V02 loc0+0x30] + ;; size=16 bbWeight=1 PerfScore 8.00
G_M32000_IG13: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0xE0] - ldp x19, x20, [sp, #0xD0]
+ ldr x21, [sp, #0xE8] + ldp x19, x20, [sp, #0xD8]
ldp fp, lr, [sp], #0xF0 ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 220, prolog size 16, PerfScore 138.00, instruction count 55, allocated bytes for code 220 (MethodHash=070182ff) for method System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[ushort],System.Runtime.Intrinsics.Vector512`1[ushort]):System.Runtime.Intrinsics.Vector512`1[ushort] (FullOpts)
+; Total bytes of code 240, prolog size 16, PerfScore 143.00, instruction count 60, allocated bytes for code 240 (MethodHash=070182ff) for method System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[ushort],System.Runtime.Intrinsics.Vector512`1[ushort]):System.Runtime.Intrinsics.Vector512`1[ushort] (FullOpts)
; ============================================================ Unwind Info: @@ -126,7 +130,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -134,10 +138,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next - C8 1A save_regp X#0 Z#26 (0x1A); stp x19, x20, [sp, #208]
+ D0 9D save_reg X#2 Z#29 (0x1D); str x21, [sp, #232] + C8 1B save_regp X#0 Z#27 (0x1B); stp x19, x20, [sp, #216]
9D save_fplr_x #29 (0x1D); stp fp, lr, [sp, #-240]! E4 end E4 end
- E4 end

+20 (+9.09%) : 21020.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector5121[short],System.Runtime.Intrinsics.Vector5121[short]):System.Runtime.Intrinsics.Vector512`1short

@@ -8,35 +8,38 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00 ] ( 3, 4 ) struct (64) [fp+0x90] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[short]> -; V01 arg1 [V01 ] ( 3, 6 ) struct (64) [fp+0x50] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[short]> -; V02 loc0 [V02 ] ( 2, 5 ) struct (64) [fp+0x10] HFA(simd16) do-not-enreg[XSR] multireg-ret addr-exposed ld-addr-op <System.Runtime.Intrinsics.Vector512`1[short]> -; V03 loc1 [V03,T00] ( 9, 29 ) int -> x19 -; V04 loc2 [V04,T01] ( 4, 12 ) ushort -> x21 -; V05 loc3 [V05,T03] ( 3, 10 ) short -> x22
+; V00 arg0 [V00 ] ( 3, 4 ) struct (64) [fp+0x98] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[short]> +; V01 arg1 [V01 ] ( 3, 6 ) struct (64) [fp+0x58] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[short]> +; V02 loc0 [V02 ] ( 2, 5 ) struct (64) [fp+0x18] HFA(simd16) do-not-enreg[XSR] multireg-ret addr-exposed ld-addr-op <System.Runtime.Intrinsics.Vector512`1[short]> +; V03 loc1 [V03,T00] ( 10, 33 ) int -> x19 +; V04 loc2 [V04,T01] ( 4, 12 ) ushort -> x20 +; V05 loc3 [V05,T02] ( 3, 10 ) short -> x21
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) short -> zero-ref "Inline return value spill temp"
-; V08 tmp2 [V08,T04] ( 3, 8 ) int -> x0
+; V08 tmp2 [V08,T03] ( 3, 8 ) int -> x0
;* V09 tmp3 [V09 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V10 tmp4 [V10 ] ( 0, 0 ) short -> zero-ref "Inline return value spill temp"
-; V11 tmp5 [V11,T06] ( 2, 4 ) int -> x0
+; V11 tmp5 [V11,T05] ( 2, 4 ) int -> x0
;* V12 tmp6 [V12 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
-; V13 tmp7 [V13,T05] ( 3, 8 ) int -> x0
+; V13 tmp7 [V13,T04] ( 3, 8 ) int -> x0
;* V14 tmp8 [V14 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
-; V15 cse0 [V15,T02] ( 3, 12 ) long -> x20 "CSE - aggressive"
;
-; Lcl frame size = 192
+; Lcl frame size = 200
G_M11381_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0xF0]!
- stp x19, x20, [sp, #0xD0] - stp x21, x22, [sp, #0xE0]
+ stp x19, x20, [sp, #0xD8] + str x21, [sp, #0xE8]
mov fp, sp
- stp q0, q1, [fp, #0x90] // [V00 arg0], [V00 arg0+0x10] - stp q2, q3, [fp, #0xB0] // [V00 arg0+0x20], [V00 arg0+0x30] - stp q4, q5, [fp, #0x50] // [V01 arg1], [V01 arg1+0x10] - stp q6, q7, [fp, #0x70] // [V01 arg1+0x20], [V01 arg1+0x30] - ;; size=32 bbWeight=1 PerfScore 7.50
+ str q0, [fp, #0x98] // [V00 arg0] + str q1, [fp, #0xA8] // [V00 arg0+0x10] + str q2, [fp, #0xB8] // [V00 arg0+0x20] + str q3, [fp, #0xC8] // [V00 arg0+0x30] + str q4, [fp, #0x58] // [V01 arg1] + str q5, [fp, #0x68] // [V01 arg1+0x10] + str q6, [fp, #0x78] // [V01 arg1+0x20] + str q7, [fp, #0x88] // [V01 arg1+0x30] + ;; size=48 bbWeight=1 PerfScore 11.50
G_M11381_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w19, wzr ;; size=4 bbWeight=1 PerfScore 0.50 @@ -57,26 +60,25 @@ G_M11381_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x1, #1 LSL #32 ldr x1, [x1] blr x1
- add x0, fp, #80 // [V01 arg1]
+ add x0, fp, #88 // [V01 arg1]
; byrRegs +[x0]
- sbfiz x20, x19, #1, #32 - ldrh w21, [x0, x20] - mov w22, wzr - cmp w21, #32
+ ldrh w20, [x0, w19, SXTW #2] + mov w21, wzr + cmp w20, #32
bge G_M11381_IG08
- ;; size=44 bbWeight=4 PerfScore 48.00
+ ;; size=40 bbWeight=4 PerfScore 44.00
G_M11381_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0]
- cmp w21, #32
+ cmp w20, #32
cset x0, lt movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 ldr x1, [x1] blr x1
- add x0, fp, #144 // [V00 arg0]
+ add x0, fp, #152 // [V00 arg0]
; byrRegs +[x0]
- ldrsh w22, [x0, w21, UXTW #2]
+ ldrsh w21, [x0, w20, UXTW #2]
;; size=36 bbWeight=2 PerfScore 20.00 G_M11381_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x0] @@ -96,26 +98,28 @@ G_M11381_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x1, #1 LSL #32 ldr x1, [x1] blr x1
- add x0, fp, #16 // [V02 loc0]
+ add x0, fp, #24 // [V02 loc0]
; byrRegs +[x0]
- strh w22, [x0, x20]
+ strh w21, [x0, w19, SXTW #2]
add w19, w19, #1 cmp w19, #32 blt G_M11381_IG03 ;; size=40 bbWeight=4 PerfScore 36.00 G_M11381_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0]
- ldp q0, q1, [fp, #0x10] // [V02 loc0], [V02 loc0+0x10] - ldp q2, q3, [fp, #0x30] // [V02 loc0+0x20], [V02 loc0+0x30] - ;; size=8 bbWeight=1 PerfScore 4.00
+ ldr q0, [fp, #0x18] // [V02 loc0] + ldr q1, [fp, #0x28] // [V02 loc0+0x10] + ldr q2, [fp, #0x38] // [V02 loc0+0x20] + ldr q3, [fp, #0x48] // [V02 loc0+0x30] + ;; size=16 bbWeight=1 PerfScore 8.00
G_M11381_IG13: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0xE0] - ldp x19, x20, [sp, #0xD0]
+ ldr x21, [sp, #0xE8] + ldp x19, x20, [sp, #0xD8]
ldp fp, lr, [sp], #0xF0 ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 220, prolog size 16, PerfScore 138.00, instruction count 55, allocated bytes for code 220 (MethodHash=30e4d38a) for method System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[short],System.Runtime.Intrinsics.Vector512`1[short]):System.Runtime.Intrinsics.Vector512`1[short] (FullOpts)
+; Total bytes of code 240, prolog size 16, PerfScore 143.00, instruction count 60, allocated bytes for code 240 (MethodHash=30e4d38a) for method System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[short],System.Runtime.Intrinsics.Vector512`1[short]):System.Runtime.Intrinsics.Vector512`1[short] (FullOpts)
; ============================================================ Unwind Info: @@ -126,7 +130,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -134,10 +138,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next - C8 1A save_regp X#0 Z#26 (0x1A); stp x19, x20, [sp, #208]
+ D0 9D save_reg X#2 Z#29 (0x1D); str x21, [sp, #232] + C8 1B save_regp X#0 Z#27 (0x1B); stp x19, x20, [sp, #216]
9D save_fplr_x #29 (0x1D); stp fp, lr, [sp, #-240]! E4 end E4 end
- E4 end

+32 (+26.67%) : 214160.dasm - System.Data.ExpressionParser:ScanName():this (FullOpts)

@@ -7,66 +7,74 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 7, 16 ) ref -> x19 this class-hnd single-def <System.Data.ExpressionParser> -; V01 loc0 [V01,T02] ( 3, 10 ) ref -> x20 class-hnd single-def <<unknown class>>
+; V00 this [V00,T01] ( 7, 13 ) ref -> x19 this class-hnd single-def <System.Data.ExpressionParser> +; V01 loc0 [V01,T05] ( 3, 3 ) ref -> x0 class-hnd single-def <<unknown class>>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 3, 48 ) int -> x0 "index expr" -; V04 cse0 [V04,T03] ( 2, 9 ) byref -> x21 hoist "CSE - aggressive"
+; V03 tmp1 [V03,T00] ( 6, 30 ) int -> x20 "index expr" +; V04 cse0 [V04,T02] ( 3, 12 ) int -> x20 "CSE - aggressive" +; V05 cse1 [V05,T03] ( 3, 6 ) byref -> x22 "CSE - aggressive" +; V06 cse2 [V06,T04] ( 3, 6 ) int -> x21 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M25477_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 x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M25477_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ldr x20, [x19, #0x08] - ; gcrRegs +[x20] - add x21, x20, #16 - ; byrRegs +[x21] - b G_M25477_IG04 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M25477_IG03: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
+G_M25477_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr x0, [x19, #0x08] + ; gcrRegs +[x0] + ldr w20, [x19, #0x30] + ldr w21, [x0, #0x08] + cmp w20, w21 + bhs G_M25477_IG06 + add x22, x0, #16 + ; byrRegs +[x22] + ldrh w0, [x22, w20, UXTW #2] + ; gcrRegs -[x0] + movz x1, #0xD1FFAB1E // code for <unknown method> + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + ldr x1, [x1] + blr x1 + cbz w0, G_M25477_IG04 + ;; size=52 bbWeight=1 PerfScore 20.50 +G_M25477_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
ldr w0, [x19, #0x30]
- add w0, w0, #1 - str w0, [x19, #0x30] - ;; size=12 bbWeight=2 PerfScore 9.00 -G_M25477_IG04: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz - ldr w0, [x19, #0x30] - ldr w1, [x20, #0x08] - cmp w0, w1 - bhs G_M25477_IG07 - ldrh w0, [x21, w0, UXTW #2]
+ add w20, w0, #1 + str w20, [x19, #0x30] + cmp w20, w21 + bhs G_M25477_IG06 + ldrh w0, [x22, w20, UXTW #2]
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 ldr x1, [x1] blr x1 cbnz w0, G_M25477_IG03
- ;; size=44 bbWeight=8 PerfScore 136.00 -G_M25477_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x20] - ; byrRegs -[x21]
+ ;; size=48 bbWeight=4 PerfScore 62.00 +G_M25477_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; byrRegs -[x22]
mov w0, #1 str w0, [x19, #0x38] ;; size=8 bbWeight=1 PerfScore 1.50
-G_M25477_IG06: ; bbWeight=1, epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+G_M25477_IG05: ; bbWeight=1, epilog, nogc, extend + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00 -G_M25477_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=1 PerfScore 4.00 +G_M25477_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19] bl CORINFO_HELP_RNGCHKFAIL brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 120, prolog size 16, PerfScore 160.00, instruction count 30, allocated bytes for code 120 (MethodHash=0db89c7a) for method System.Data.ExpressionParser:ScanName():this (FullOpts)
+; Total bytes of code 152, prolog size 16, PerfScore 92.00, instruction count 38, allocated bytes for code 152 (MethodHash=0db89c7a) for method System.Data.ExpressionParser:ScanName():this (FullOpts)
; ============================================================ Unwind Info: @@ -77,7 +85,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ 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) @@ -85,9 +93,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]
+ E6 save_next + 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

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

+24 (+5.66%) : 542902.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

@@ -14,12 +14,12 @@ ; V02 loc0 [V02,T08] ( 3, 2.97) int -> x0 ; V03 loc1 [V03,T09] ( 5, 2.92) int -> x21 ; V04 loc2 [V04,T06] ( 5, 3.93) int -> x20 ld-addr-op
-; V05 loc3 [V05,T05] ( 11, 4.12) int -> x22
+; V05 loc3 [V05,T05] ( 13, 4.12) int -> x22
; V06 loc4 [V06,T01] ( 14, 6.95) int -> x23
-; V07 loc5 [V07,T15] ( 2, 1.93) int -> x0 -; V08 loc6 [V08,T12] ( 4, 2.04) int -> x1 -; V09 loc7 [V09,T07] ( 4, 3.06) int -> x2 -; V10 loc8 [V10,T13] ( 3, 2.04) int -> x3
+; V07 loc5 [V07,T14] ( 3, 1.99) int -> x0 +; V08 loc6 [V08,T12] ( 4, 2.04) int -> x3 +; V09 loc7 [V09,T07] ( 6, 3.06) int -> x25 +; V10 loc8 [V10,T13] ( 4, 2.04) int -> x26
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" @@ -28,36 +28,36 @@ ; V16 tmp5 [V16,T04] ( 5, 5.15) long -> [fp+0x18] spill-single-def "Inlining Arg" ;* V17 tmp6 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V18 tmp7 [V18,T11] ( 3, 2.58) long -> x0 "Cast away GC"
-; V19 tmp8 [V19,T16] ( 2, 0.02) long -> x0 "Cast away GC" -; V20 tmp9 [V20,T17] ( 2, 0.02) long -> x0 "argument with side effect" -; V21 cse0 [V21,T14] ( 2, 1.99) int -> x0 hoist "CSE - aggressive" -; V22 cse1 [V22,T10] ( 3, 2.90) int -> x0 "CSE - aggressive" -; V23 cse2 [V23,T03] ( 12, 5.93) byref -> x24 hoist multi-def "CSE - aggressive"
+; V19 tmp8 [V19,T15] ( 2, 0.02) long -> x0 "Cast away GC" +; V20 tmp9 [V20,T16] ( 2, 0.02) long -> x0 "argument with side effect" +; V21 cse0 [V21,T10] ( 3, 2.90) int -> x0 "CSE - aggressive" +; V22 cse1 [V22,T03] ( 13, 5.93) byref -> x24 multi-def "CSE - aggressive"
; ; Lcl frame size = 16
-G_M38441_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - stp fp, lr, [sp, #-0x50]!
+G_M38441_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + stp fp, lr, [sp, #-0x60]!
stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] stp x23, x24, [sp, #0x40]
+ stp x25, x26, [sp, #0x50]
mov fp, sp mov x19, x0 ; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=28 bbWeight=1 PerfScore 6.00
G_M38441_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz ldr w0, [x19]
- cbz w0, G_M38441_IG12
+ cbz w0, G_M38441_IG15
;; size=8 bbWeight=1 PerfScore 4.00 G_M38441_IG03: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- cbz w1, G_M38441_IG12
+ cbz w1, G_M38441_IG15
and w20, w1, #31 lsr w21, w1, #5 sub w22, w0, #1 add w23, w22, w21
- cbz w20, G_M38441_IG13
+ cbz w20, G_M38441_IG11
;; size=24 bbWeight=0.97 PerfScore 4.37
-G_M38441_IG04: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG04: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add w23, w23, #1 cmp w23, #115 cset x0, lt @@ -71,49 +71,46 @@ G_M38441_IG04: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, str w0, [x19] neg w0, w20 add w0, w0, #32
- mov w1, wzr
+ mov w3, wzr
add x24, x19, #4 ; byrRegs +[x24]
- and w0, w0, #31 - ;; size=60 bbWeight=0.97 PerfScore 10.62 -G_M38441_IG05: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - ldr w2, [x24, w22, SXTW #2] - lsr w3, w2, w0
+ ldr w25, [x24, w22, SXTW #2] + lsr w26, w25, w0
cmp w22, #0
- bgt G_M38441_IG11 - ;; size=16 bbWeight=1.02 PerfScore 5.11 -G_M38441_IG06: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3
+ bgt G_M38441_IG10 + ;; size=72 bbWeight=0.97 PerfScore 14.97 +G_M38441_IG05: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w0, w3, w26
str w0, [x24, w23, SXTW #2] sub w0, w23, #1
- lsl w1, w2, w20
+ lsl w1, w25, w20
str w1, [x24, w0, SXTW #2] mov x0, x24 lsl w1, w21, #2 mov w1, w1 str x1, [fp, #0x18] // [V16 tmp5]
- cbnz x1, G_M38441_IG08
+ cbnz x1, G_M38441_IG07
;; size=40 bbWeight=0.97 PerfScore 7.24
-G_M38441_IG07: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M38441_IG06: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w0, [x19] sub w0, w0, #1 ldr w1, [x24, w0, SXTW #2]
- cbnz w1, G_M38441_IG12
+ cbnz w1, G_M38441_IG15
str w0, [x19]
- b G_M38441_IG12
+ b G_M38441_IG15
;; size=24 bbWeight=0.97 PerfScore 9.18
-G_M38441_IG08: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M38441_IG07: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
cmp x1, #0xD1FFAB1E
- bhi G_M38441_IG10
+ bhi G_M38441_IG09
;; size=8 bbWeight=0.32 PerfScore 0.48
-G_M38441_IG09: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+G_M38441_IG08: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
mov w1, wzr ldr w2, [fp, #0x18] // [V16 tmp5] bl CORINFO_HELP_MEMSET ; gcr arg pop 0
- b G_M38441_IG07
+ b G_M38441_IG06
;; size=16 bbWeight=0.16 PerfScore 0.72
-G_M38441_IG10: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+G_M38441_IG09: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
ldr x1, [fp, #0x18] // [V16 tmp5] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -121,26 +118,22 @@ G_M38441_IG10: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 ldr x2, [x2] blr x2 ; gcr arg pop 0
- b G_M38441_IG07
+ b G_M38441_IG06
;; size=28 bbWeight=0.16 PerfScore 1.37
-G_M38441_IG11: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref - orr w1, w1, w3 - str w1, [x24, w23, SXTW #2] - lsl w1, w2, w20
+G_M38441_IG10: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w3, w3, w26 + str w3, [x24, w23, SXTW #2] + lsl w3, w25, w20
sub w22, w22, #1 sub w23, w23, #1
+ ldr w25, [x24, w22, SXTW #2] + lsr w26, w25, w0 + cmp w22, #0 + bgt G_M38441_IG10
b G_M38441_IG05
- ;; size=24 bbWeight=0.06 PerfScore 0.22 -G_M38441_IG12: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; byrRegs -[x19 x24] - ldp x23, x24, [sp, #0x40] - ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x50 - ret lr - ;; size=20 bbWeight=0.03 PerfScore 0.15 -G_M38441_IG13: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz - ; byrRegs +[x19]
+ ;; size=40 bbWeight=0.06 PerfScore 0.50 +G_M38441_IG11: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz + ; byrRegs -[x24]
cmp w23, #115 cset x0, lt movz x1, #0xD1FFAB1E // code for <unknown method> @@ -149,9 +142,9 @@ G_M38441_IG13: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=000 ldr x1, [x1] blr x1 ; gcr arg pop 0
- tbnz w22, #31, G_M38441_IG15
+ tbnz w22, #31, G_M38441_IG13
;; size=32 bbWeight=0.00 PerfScore 0.03
-G_M38441_IG14: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M38441_IG12: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add x24, x19, #4 ; byrRegs +[x24] sbfiz x0, x23, #2, #32 @@ -161,9 +154,9 @@ G_M38441_IG14: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, str w1, [x0] sub w22, w22, #1 sub w23, w23, #1
- tbz w22, #31, G_M38441_IG14
+ tbz w22, #31, G_M38441_IG12
;; size=32 bbWeight=0.00 PerfScore 0.04
-G_M38441_IG15: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG13: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
; byrRegs -[x0 x24] ldr w0, [x19] add w0, w0, w21 @@ -181,15 +174,24 @@ G_M38441_IG15: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ; byrRegs -[x19 x24] ; gcr arg pop 0 ;; size=48 bbWeight=0.00 PerfScore 0.06
-G_M38441_IG16: ; bbWeight=0.00, epilog, nogc, extend
+G_M38441_IG14: ; bbWeight=0.00, epilog, nogc, extend + ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0.00 PerfScore 0.02
+ ;; size=24 bbWeight=0.00 PerfScore 0.03 +G_M38441_IG15: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x25, x26, [sp, #0x50] + ldp x23, x24, [sp, #0x40] + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x60 + ret lr + ;; size=24 bbWeight=0.03 PerfScore 0.18
-; Total bytes of code 424, prolog size 24, PerfScore 48.61, instruction count 106, allocated bytes for code 424 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
+; Total bytes of code 448, prolog size 28, PerfScore 49.16, instruction count 112, allocated bytes for code 448 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
; ============================================================ Unwind Info: @@ -200,7 +202,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 106 (0x0006a) Actual length = 424 (0x0001a8)
+ Function Length : 112 (0x00070) Actual length = 448 (0x0001c0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -213,8 +215,8 @@ Unwind Info: ---- Epilog start at index 1 ---- E6 save_next E6 save_next
+ E6 save_next
C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
- 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]! - E4 end
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end

+24 (+5.77%) : 570116.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

@@ -14,12 +14,12 @@ ; V02 loc0 [V02,T09] ( 3, 2.97) int -> x0 ; V03 loc1 [V03,T10] ( 5, 2.91) int -> x21 ; V04 loc2 [V04,T07] ( 5, 3.92) int -> x20 ld-addr-op
-; V05 loc3 [V05,T06] ( 11, 4.12) int -> x22
+; V05 loc3 [V05,T06] ( 13, 4.12) int -> x22
; V06 loc4 [V06,T02] ( 14, 6.94) int -> x23
-; V07 loc5 [V07,T15] ( 2, 1.93) int -> x0 -; V08 loc6 [V08,T12] ( 4, 2.04) int -> x1 -; V09 loc7 [V09,T08] ( 4, 3.06) int -> x2 -; V10 loc8 [V10,T13] ( 3, 2.04) int -> x3
+; V07 loc5 [V07,T14] ( 3, 1.99) int -> x0 +; V08 loc6 [V08,T12] ( 4, 2.04) int -> x3 +; V09 loc7 [V09,T08] ( 6, 3.06) int -> x25 +; V10 loc8 [V10,T13] ( 4, 2.04) int -> x26
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" @@ -28,23 +28,23 @@ ; V16 tmp5 [V16,T00] ( 5, 9.65) long -> [fp+0x18] spill-single-def "Inlining Arg" ;* V17 tmp6 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V18 tmp7 [V18,T05] ( 3, 5.79) long -> x0 "Cast away GC"
-; V19 tmp8 [V19,T16] ( 2, 0.02) long -> x0 "Cast away GC" -; V20 tmp9 [V20,T17] ( 2, 0.02) long -> x0 "argument with side effect" -; V21 cse0 [V21,T14] ( 2, 1.99) int -> x0 hoist "CSE - aggressive" -; V22 cse1 [V22,T11] ( 3, 2.89) int -> x0 "CSE - aggressive" -; V23 cse2 [V23,T04] ( 12, 5.92) byref -> x24 hoist multi-def "CSE - aggressive"
+; V19 tmp8 [V19,T15] ( 2, 0.02) long -> x0 "Cast away GC" +; V20 tmp9 [V20,T16] ( 2, 0.02) long -> x0 "argument with side effect" +; V21 cse0 [V21,T11] ( 3, 2.89) int -> x0 "CSE - aggressive" +; V22 cse1 [V22,T04] ( 13, 5.92) byref -> x24 multi-def "CSE - aggressive"
; ; Lcl frame size = 16 G_M38441_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] stp x23, x24, [sp, #0x40]
+ stp x25, x26, [sp, #0x50]
mov fp, sp mov x19, x0 ; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=28 bbWeight=1 PerfScore 6.00
G_M38441_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz ldr w0, [x19] cbz w0, G_M38441_IG13 @@ -57,7 +57,7 @@ G_M38441_IG03: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, add w23, w22, w21 cbz w20, G_M38441_IG07 ;; size=24 bbWeight=0.97 PerfScore 4.36
-G_M38441_IG04: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG04: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add w23, w23, #1 cmp w23, #115 cset x0, lt @@ -71,22 +71,19 @@ G_M38441_IG04: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, str w0, [x19] neg w0, w20 add w0, w0, #32
- mov w1, wzr
+ mov w3, wzr
add x24, x19, #4 ; byrRegs +[x24]
- and w0, w0, #31 - ;; size=60 bbWeight=0.96 PerfScore 10.61 -G_M38441_IG05: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - ldr w2, [x24, w22, SXTW #2] - lsr w3, w2, w0
+ ldr w25, [x24, w22, SXTW #2] + lsr w26, w25, w0
cmp w22, #0
- bgt G_M38441_IG14 - ;; size=16 bbWeight=1.02 PerfScore 5.10 -G_M38441_IG06: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3
+ bgt G_M38441_IG06 + ;; size=72 bbWeight=0.96 PerfScore 14.95 +G_M38441_IG05: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w0, w3, w26
str w0, [x24, w23, SXTW #2] sub w0, w23, #1
- lsl w1, w2, w20
+ lsl w1, w25, w20
str w1, [x24, w0, SXTW #2] mov x0, x24 lsl w1, w21, #2 @@ -101,6 +98,18 @@ G_M38441_IG06: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 ; gcr arg pop 0 b G_M38441_IG12 ;; size=64 bbWeight=0.96 PerfScore 13.02
+G_M38441_IG06: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w3, w3, w26 + str w3, [x24, w23, SXTW #2] + lsl w3, w25, w20 + sub w22, w22, #1 + sub w23, w23, #1 + ldr w25, [x24, w22, SXTW #2] + lsr w26, w25, w0 + cmp w22, #0 + bgt G_M38441_IG06 + b G_M38441_IG05 + ;; size=40 bbWeight=0.06 PerfScore 0.50
G_M38441_IG07: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz ; byrRegs -[x24] cmp w23, #115 @@ -144,12 +153,13 @@ G_M38441_IG09: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ; gcr arg pop 0 ;; size=48 bbWeight=0.00 PerfScore 0.06 G_M38441_IG10: ; bbWeight=0.00, epilog, nogc, extend
+ ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0.00 PerfScore 0.02
+ ;; size=24 bbWeight=0.00 PerfScore 0.03
G_M38441_IG11: ; bbWeight=0.96, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, gcvars, byref ; byrRegs +[x19 x24] ldr x1, [fp, #0x18] // [V16 tmp5] @@ -169,23 +179,15 @@ G_M38441_IG12: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 ;; size=20 bbWeight=0.96 PerfScore 8.20 G_M38441_IG13: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x19 x24]
+ ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0.03 PerfScore 0.15 -G_M38441_IG14: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, gcvars, byref - ; byrRegs +[x19 x24] - orr w1, w1, w3 - str w1, [x24, w23, SXTW #2] - lsl w1, w2, w20 - sub w22, w22, #1 - sub w23, w23, #1 - b G_M38441_IG05 - ;; size=24 bbWeight=0.06 PerfScore 0.22
+ ;; size=24 bbWeight=0.03 PerfScore 0.18
-; Total bytes of code 416, prolog size 24, PerfScore 58.07, instruction count 104, allocated bytes for code 416 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
+; Total bytes of code 440, prolog size 28, PerfScore 58.62, instruction count 110, allocated bytes for code 440 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
; ============================================================ Unwind Info: @@ -196,7 +198,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 104 (0x00068) Actual length = 416 (0x0001a0)
+ Function Length : 110 (0x0006e) Actual length = 440 (0x0001b8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -209,8 +211,8 @@ Unwind Info: ---- Epilog start at index 1 ---- E6 save_next E6 save_next
+ E6 save_next
C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
- 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]! - E4 end
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end

+24 (+5.83%) : 316984.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

@@ -11,24 +11,25 @@ ; ; V00 this [V00,T01] ( 11, 4.08) byref -> x19 this single-def ; V01 arg1 [V01,T03] ( 5, 2.81) int -> x1 single-def
-; V02 loc0 [V02,T10] ( 3, 2.27) int -> x0 -; V03 loc1 [V03,T13] ( 5, 0.81) int -> x21 -; V04 loc2 [V04,T09] ( 5, 2.37) int -> x20 ld-addr-op -; V05 loc3 [V05,T00] ( 10, 6.23) int -> x22
+; V02 loc0 [V02,T09] ( 3, 2.27) int -> x0 +; V03 loc1 [V03,T14] ( 5, 0.81) int -> x21 +; V04 loc2 [V04,T13] ( 5, 1.31) int -> x20 ld-addr-op +; V05 loc3 [V05,T00] ( 12, 6.23) int -> x22
; V06 loc4 [V06,T02] ( 14, 5.76) int -> x23
-; V07 loc5 [V07,T15] ( 2, 0.54) int -> x0
+; V07 loc5 [V07,T16] ( 2, 0.54) int -> x0
; V08 loc6 [V08,T06] ( 4, 3.11) int -> x1
-; V09 loc7 [V09,T04] ( 4, 4.67) int -> x2 -; V10 loc8 [V10,T07] ( 3, 3.11) int -> x3
+; V09 loc7 [V09,T04] ( 6, 4.67) int -> x2 +; V10 loc8 [V10,T07] ( 4, 3.11) int -> x3
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V14 tmp3 [V14,T08] ( 5, 2.71) long -> [fp+0x18] spill-single-def "Inlining Arg" ;* V15 tmp4 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V16 tmp5 [V16,T12] ( 3, 1.63) long -> x0 "Cast away GC"
-; V17 cse0 [V17,T11] ( 2, 1.83) int -> x0 hoist "CSE - aggressive" -; V18 cse1 [V18,T14] ( 3, 0.81) int -> x0 "CSE - conservative" -; V19 cse2 [V19,T05] ( 10, 4.20) byref -> x24 hoist multi-def "CSE - aggressive"
+; V17 cse0 [V17,T11] ( 3, 1.83) int -> x0 "CSE - aggressive" +; V18 cse1 [V18,T10] ( 4, 2.05) int -> x4 hoist multi-def "CSE - aggressive" +; V19 cse2 [V19,T15] ( 3, 0.81) int -> x0 "CSE - conservative" +; V20 cse3 [V20,T05] ( 11, 4.20) byref -> x24 multi-def "CSE - aggressive"
; ; Lcl frame size = 16 @@ -43,7 +44,7 @@ G_M38441_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=24 bbWeight=1 PerfScore 5.00 G_M38441_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz ldr w0, [x19]
- cbnz w0, G_M38441_IG07
+ cbnz w0, G_M38441_IG08
;; size=8 bbWeight=1 PerfScore 4.00 G_M38441_IG03: ; bbWeight=0.73, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x19] @@ -53,47 +54,8 @@ G_M38441_IG03: ; bbWeight=0.73, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ldp fp, lr, [sp], #0x50 ret lr ;; size=20 bbWeight=0.73 PerfScore 3.65
-G_M38441_IG04: ; bbWeight=1.29, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, gcvars, byref - ; byrRegs +[x19 x24] - orr w1, w1, w3 - str w1, [x24, w23, SXTW #2] - lsl w1, w2, w20 - sub w22, w22, #1 - sub w23, w23, #1 - ;; size=20 bbWeight=1.29 PerfScore 3.86 -G_M38441_IG05: ; bbWeight=1.56, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - ldr w2, [x24, w22, SXTW #2] - lsr w3, w2, w0 - cmp w22, #0 - bgt G_M38441_IG04 - ;; size=16 bbWeight=1.56 PerfScore 7.79 -G_M38441_IG06: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3 - str w0, [x24, w23, SXTW #2] - sub w0, w23, #1 - lsl w1, w2, w20 - str w1, [x24, w0, SXTW #2] - mov x0, x24 - lsl w1, w21, #2 - mov w1, w1 - str x1, [fp, #0x18] // [V14 tmp3] - cbz x1, G_M38441_IG09 - cmp x1, #0xD1FFAB1E - bhi G_M38441_IG08 - mov w1, wzr - ldr w2, [fp, #0x18] // [V14 tmp3] - bl CORINFO_HELP_MEMSET - ; gcr arg pop 0 - b G_M38441_IG09 - ;; size=64 bbWeight=0.27 PerfScore 3.66 -G_M38441_IG07: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - ; byrRegs -[x24] - cbz w1, G_M38441_IG03 - and w20, w1, #31 - lsr w21, w1, #5 - sub w22, w0, #1 - add w23, w22, w21 - cbz w20, G_M38441_IG10
+G_M38441_IG04: ; bbWeight=0.27, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz + ; byrRegs +[x19]
add w23, w23, #1 cmp w23, #115 cset x0, lt @@ -110,10 +72,58 @@ G_M38441_IG07: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, mov w1, wzr add x24, x19, #4 ; byrRegs +[x24]
+ ldr w2, [x24, w22, SXTW #2]
and w0, w0, #31
- b G_M38441_IG05 - ;; size=88 bbWeight=0.27 PerfScore 4.47 -G_M38441_IG08: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ lsr w3, w2, w0 + cmp w22, #0 + ble G_M38441_IG07 + ;; size=76 bbWeight=0.27 PerfScore 4.33 +G_M38441_IG05: ; bbWeight=0.22, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref + and w4, w20, #31 + ;; size=4 bbWeight=0.22 PerfScore 0.11 +G_M38441_IG06: ; bbWeight=1.29, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w1, w1, w3 + str w1, [x24, w23, SXTW #2] + lsl w1, w2, w4 + sub w22, w22, #1 + sub w23, w23, #1 + ldr w2, [x24, w22, SXTW #2] + lsr w3, w2, w0 + cmp w22, #0 + bgt G_M38441_IG06 + ;; size=36 bbWeight=1.29 PerfScore 10.29 +G_M38441_IG07: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w4, w1, w3 + str w4, [x24, w23, SXTW #2] + sub w0, w23, #1 + and w4, w20, #31 + lsl w1, w2, w4 + str w1, [x24, w0, SXTW #2] + mov x0, x24 + lsl w1, w21, #2 + mov w1, w1 + str x1, [fp, #0x18] // [V14 tmp3] + cbz x1, G_M38441_IG10 + cmp x1, #0xD1FFAB1E + bhi G_M38441_IG09 + mov w1, wzr + ldr w2, [fp, #0x18] // [V14 tmp3] + bl CORINFO_HELP_MEMSET + ; gcr arg pop 0 + b G_M38441_IG10 + ;; size=68 bbWeight=0.27 PerfScore 3.79 +G_M38441_IG08: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz + ; byrRegs -[x24] + cbz w1, G_M38441_IG03 + and w20, w1, #31 + lsr w21, w1, #5 + sub w22, w0, #1 + add w23, w22, w21 + cbz w20, G_M38441_IG11 + b G_M38441_IG04 + ;; size=28 bbWeight=0.27 PerfScore 1.49 +G_M38441_IG09: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref + ; byrRegs +[x24]
ldr x1, [fp, #0x18] // [V14 tmp3] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -122,7 +132,7 @@ G_M38441_IG08: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 blr x2 ; gcr arg pop 0 ;; size=24 bbWeight=0.27 PerfScore 2.03
-G_M38441_IG09: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M38441_IG10: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w0, [x19] sub w0, w0, #1 ldr w1, [x24, w0, SXTW #2] @@ -130,7 +140,7 @@ G_M38441_IG09: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 str w0, [x19] b G_M38441_IG03 ;; size=24 bbWeight=0.27 PerfScore 2.57
-G_M38441_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
; byrRegs -[x24] cmp w23, #115 cset x0, lt @@ -140,9 +150,9 @@ G_M38441_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ldr x1, [x1] blr x1 ; gcr arg pop 0
- b G_M38441_IG12
+ b G_M38441_IG13
;; size=32 bbWeight=0 PerfScore 0.00
-G_M38441_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
add x24, x19, #4 ; byrRegs +[x24] sbfiz x0, x23, #2, #32 @@ -153,9 +163,9 @@ G_M38441_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by sub w22, w22, #1 sub w23, w23, #1 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M38441_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M38441_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs -[x0 x24]
- tbz w22, #31, G_M38441_IG11
+ tbz w22, #31, G_M38441_IG12
ldr w0, [x19] add w0, w0, w21 str w0, [x19] @@ -170,7 +180,7 @@ G_M38441_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; byrRegs -[x0 x19] ; gcr arg pop 0 ;; size=44 bbWeight=0 PerfScore 0.00
-G_M38441_IG13: ; bbWeight=0, epilog, nogc, extend
+G_M38441_IG14: ; bbWeight=0, epilog, nogc, extend
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20] @@ -178,7 +188,7 @@ G_M38441_IG13: ; bbWeight=0, epilog, nogc, extend ret lr ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 412, prolog size 24, PerfScore 37.02, instruction count 103, allocated bytes for code 412 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
+; Total bytes of code 436, prolog size 24, PerfScore 37.27, instruction count 109, allocated bytes for code 436 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
; ============================================================ Unwind Info: @@ -189,7 +199,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 103 (0x00067) Actual length = 412 (0x00019c)
+ Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
---- 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

-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

-24 (-10.91%) : 9849.dasm - System.Collections.Generic.GenericArraySortHelper2[uint,System.__Canon]:InsertionSort(System.Span1[uint],System.Span`1[System.__Canon]) (FullOpts)

@@ -45,26 +45,22 @@ G_M65147_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=000A {x1 x3}, b G_M65147_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=000A {x1 x3}, byref, isz add w6, w0, #1 mov w14, w6
- lsl x15, x14, #2 - ldr w7, [x1, x15]
+ ldr w7, [x1, x14, LSL #2]
cmp w6, w4 bhs G_M65147_IG09
- lsl x14, x14, #3 - ldr x8, [x3, x14]
+ ldr x8, [x3, x14, LSL #3]
; gcrRegs +[x8] b G_M65147_IG05
- ;; size=36 bbWeight=4 PerfScore 46.00
+ ;; size=28 bbWeight=4 PerfScore 38.00
G_M65147_IG04: ; bbWeight=8, gcrefRegs=0100 {x8}, byrefRegs=000A {x1 x3}, byref, isz add w9, w0, #1 cmp w9, w2 bhs G_M65147_IG09 mov w10, w9
- lsl x15, x10, #2 - str w14, [x1, x15]
+ str w14, [x1, x10, LSL #2]
cmp w9, w4 bhs G_M65147_IG09
- lsl x14, x10, #3 - add x14, x3, x14
+ add x14, x3, x10, LSL #3
; byrRegs +[x14] cmp w0, w4 bhs G_M65147_IG09 @@ -74,7 +70,7 @@ G_M65147_IG04: ; bbWeight=8, gcrefRegs=0100 {x8}, byrefRegs=000A {x1 x3}, ; gcrRegs -[x15] ; byrRegs -[x14] sub w0, w0, #1
- ;; size=60 bbWeight=8 PerfScore 108.00
+ ;; size=52 bbWeight=8 PerfScore 96.00
G_M65147_IG05: ; bbWeight=32, gcrefRegs=0100 {x8}, byrefRegs=000A {x1 x3}, byref, isz tbnz w0, #31, G_M65147_IG07 ;; size=4 bbWeight=32 PerfScore 32.00 @@ -90,12 +86,10 @@ G_M65147_IG07: ; bbWeight=4, gcrefRegs=0100 {x8}, byrefRegs=000A {x1 x3}, cmp w9, w2 bhs G_M65147_IG09 mov w10, w9
- lsl x14, x10, #2 - str w7, [x1, x14]
+ str w7, [x1, x10, LSL #2]
cmp w9, w4 bhs G_M65147_IG09
- lsl x14, x10, #3 - add x14, x3, x14
+ add x14, x3, x10, LSL #3
; byrRegs +[x14] mov x15, x8 ; gcrRegs +[x15] @@ -105,7 +99,7 @@ G_M65147_IG07: ; bbWeight=4, gcrefRegs=0100 {x8}, byrefRegs=000A {x1 x3}, sxtw w0, w6 cmp w0, w5 blt G_M65147_IG03
- ;; size=60 bbWeight=4 PerfScore 44.00
+ ;; size=52 bbWeight=4 PerfScore 38.00
G_M65147_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x1 x3] ldp fp, lr, [sp], #0x10 @@ -117,7 +111,7 @@ G_M65147_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 8, PerfScore 332.00, instruction count 55, allocated bytes for code 220 (MethodHash=3deb0184) for method System.Collections.Generic.GenericArraySortHelper`2[uint,System.__Canon]:InsertionSort(System.Span`1[uint],System.Span`1[System.__Canon]) (FullOpts)
+; Total bytes of code 196, prolog size 8, PerfScore 306.00, instruction count 49, allocated bytes for code 196 (MethodHash=3deb0184) for method System.Collections.Generic.GenericArraySortHelper`2[uint,System.__Canon]:InsertionSort(System.Span`1[uint],System.Span`1[System.__Canon]) (FullOpts)
; ============================================================ Unwind Info: @@ -128,7 +122,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

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

+44 (+4.35%) : 187322.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512DoubleShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)

@@ -9,9 +9,9 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests>
-; V01 loc0 [V01,T18] ( 3, 9 ) struct (64) [fp+0x150] HFA(simd16) do-not-enreg[S] <System.Runtime.Intrinsics.Vector512`1[double]> -; V02 loc1 [V02,T04] ( 9, 31.03) int -> x19 -; V03 loc2 [V03,T05] ( 9, 31.03) int -> x19
+; V01 loc0 [V01,T18] ( 3, 9 ) struct (64) [fp+0x158] HFA(simd16) do-not-enreg[S] <System.Runtime.Intrinsics.Vector512`1[double]> +; V02 loc1 [V02,T05] ( 9, 31.03) int -> x19 +; V03 loc2 [V03,T06] ( 9, 31.03) int -> x19
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (64) zero-ref HFA(simd16) do-not-enreg[S] "impAppendStmt" <System.Runtime.Intrinsics.Vector512`1[double]> ;* V06 tmp2 [V06 ] ( 0, 0 ) struct (64) zero-ref HFA(simd16) do-not-enreg[S] "spilled call-like call argument" <System.Runtime.Intrinsics.Vector512`1[long]> @@ -29,19 +29,19 @@ ;* V18 tmp14 [V18 ] ( 0, 0 ) struct (32) zero-ref HFA(simd16) "Inline return value spill temp" <System.Runtime.Intrinsics.Vector256`1[long]> ;* V19 tmp15 [V19 ] ( 0, 0 ) struct (32) zero-ref HFA(simd16) ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.Intrinsics.Vector256`1[long]> ;* V20 tmp16 [V20 ] ( 0, 0 ) struct (64) zero-ref HFA(simd16) do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.Intrinsics.Vector512`1[long]>
-; V21 tmp17 [V21 ] ( 2, 5 ) struct (64) [fp+0x110] HFA(simd16) do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.Intrinsics.Vector512`1[double]> -; V22 tmp18 [V22,T07] ( 9, 29 ) int -> x19 "Inline stloc first use temp" -; V23 tmp19 [V23 ] ( 5, 16 ) struct (64) [fp+0xD0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector512`1[long]> -; V24 tmp20 [V24,T17] ( 3, 10 ) long -> x21 "Inline stloc first use temp"
+; V21 tmp17 [V21 ] ( 2, 5 ) struct (64) [fp+0x118] HFA(simd16) do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.Intrinsics.Vector512`1[double]> +; V22 tmp18 [V22,T00] ( 10, 33 ) int -> x19 "Inline stloc first use temp" +; V23 tmp19 [V23 ] ( 5, 16 ) struct (64) [fp+0xD8] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector512`1[long]> +; V24 tmp20 [V24,T17] ( 3, 10 ) long -> x20 "Inline stloc first use temp"
; V25 tmp21 [V25,T24] ( 3, 10 ) double -> d8 "Inline stloc first use temp"
-; V26 tmp22 [V26 ] ( 5, 12 ) struct (64) [fp+0x90] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector512`1[double]>
+; V26 tmp22 [V26 ] ( 5, 12 ) struct (64) [fp+0x98] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector512`1[double]>
;* V27 tmp23 [V27 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp" ; V28 tmp24 [V28,T19] ( 2, 4 ) int -> x0 ;* V29 tmp25 [V29 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V30 tmp26 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V31 tmp27 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V32 tmp28 [V32 ] ( 0, 0 ) double -> zero-ref "Inline return value spill temp"
-; V33 tmp29 [V33,T11] ( 4, 16 ) int -> x21 "Inlining Arg"
+; V33 tmp29 [V33,T11] ( 4, 16 ) int -> x20 "Inlining Arg"
; V34 tmp30 [V34,T20] ( 2, 4 ) int -> x0 ;* V35 tmp31 [V35 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V36 tmp32 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -50,7 +50,7 @@ ;* V39 tmp35 [V39 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V40 tmp36 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V41 tmp37 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V42 tmp38 [V42 ] ( 2, 16.01) struct (64) [fp+0x50] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector512`1[double]>
+; V42 tmp38 [V42 ] ( 2, 16.01) struct (64) [fp+0x58] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector512`1[double]>
; V43 tmp39 [V43,T25] ( 2, 8.01) double -> d8 "Inline return value spill temp" ; V44 tmp40 [V44,T22] ( 2, 4 ) int -> x0 ;* V45 tmp41 [V45 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" @@ -60,9 +60,9 @@ ; V49 tmp45 [V49,T08] ( 3, 24.04) ref -> x21 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[double]> ;* V50 tmp46 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[double]> ; V51 tmp47 [V51,T12] ( 3, 12.02) ref -> x22 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[double]>
-; V52 tmp48 [V52,T00] ( 4, 32.05) ref -> x24 class-hnd exact "NewObj constructor temp" <<unknown class>> -; V53 tmp49 [V53,T01] ( 4, 32.05) ref -> x25 class-hnd exact "NewObj constructor temp" <<unknown class>> -; V54 tmp50 [V54 ] ( 2, 16.01) struct (64) [fp+0x10] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector512`1[double]>
+; V52 tmp48 [V52,T01] ( 4, 32.05) ref -> x24 class-hnd exact "NewObj constructor temp" <<unknown class>> +; V53 tmp49 [V53,T02] ( 4, 32.05) ref -> x26 class-hnd exact "NewObj constructor temp" <<unknown class>> +; V54 tmp50 [V54 ] ( 2, 16.01) struct (64) [fp+0x18] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector512`1[double]>
; V55 tmp51 [V55,T26] ( 2, 8.01) double -> d8 "Inline return value spill temp" ; V56 tmp52 [V56,T23] ( 2, 4 ) int -> x0 ;* V57 tmp53 [V57 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" @@ -72,8 +72,8 @@ ; V61 tmp57 [V61,T09] ( 3, 24.04) ref -> x21 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[double]> ;* V62 tmp58 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[double]> ; V63 tmp59 [V63,T13] ( 3, 12.02) ref -> x24 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[double]>
-; V64 tmp60 [V64,T02] ( 4, 32.05) ref -> x25 class-hnd exact "NewObj constructor temp" <<unknown class>> -; V65 tmp61 [V65,T03] ( 4, 32.05) ref -> x24 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V64 tmp60 [V64,T03] ( 4, 32.05) ref -> x26 class-hnd exact "NewObj constructor temp" <<unknown class>> +; V65 tmp61 [V65,T04] ( 4, 32.05) ref -> x24 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V66 tmp62 [V66 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "field V07._lower (fldOffset=0x0)" P-INDEP ;* V67 tmp63 [V67 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "field V07._upper (fldOffset=0x10)" P-INDEP ;* V68 tmp64 [V68 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "field V08._lower (fldOffset=0x0)" P-INDEP @@ -114,13 +114,13 @@ ;* V103 tmp99 [V103 ] ( 0, 0 ) simd16 -> zero-ref "V06.[016..032)" ;* V104 tmp100 [V104 ] ( 0, 0 ) simd16 -> zero-ref "V06.[032..048)" ;* V105 tmp101 [V105 ] ( 0, 0 ) simd16 -> zero-ref "V06.[048..064)"
-; V106 cse0 [V106,T16] ( 3, 12 ) long -> x20 "CSE - aggressive" -; V107 cse1 [V107,T10] ( 5, 20.03) long -> x20 "CSE - aggressive" -; V108 cse2 [V108,T06] ( 15, 30 ) ref -> x1 multi-def "CSE - aggressive" -; V109 cse3 [V109,T14] ( 3, 12.02) long -> x23 "CSE - aggressive" -; V110 cse4 [V110,T15] ( 3, 12.02) long -> x22 "CSE - aggressive"
+; V106 cse0 [V106,T10] ( 5, 20.03) long -> x20 "CSE - aggressive" +; V107 cse1 [V107,T07] ( 15, 30 ) ref -> x1 multi-def "CSE - aggressive" +; V108 cse2 [V108,T14] ( 3, 12.02) long -> x23 "CSE - aggressive" +; V109 cse3 [V109,T15] ( 3, 12.02) long -> x22 "CSE - aggressive" +; V110 cse4 [V110,T16] ( 3, 12.02) long -> x25 "CSE - aggressive"
;
-; Lcl frame size = 384
+; Lcl frame size = 392
G_M60880_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #0xD1FFAB1E]! @@ -128,7 +128,7 @@ G_M60880_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp x19, x20, [sp, #0xD1FFAB1E] stp x21, x22, [sp, #0xD1FFAB1E] stp x23, x24, [sp, #0xD1FFAB1E]
- str x25, [sp, #0xD1FFAB1E]
+ stp x25, x26, [sp, #0xD1FFAB1E]
mov fp, sp add x9, fp, #0xD1FFAB1E movi v16.16b, #0 @@ -137,23 +137,24 @@ G_M60880_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=44 bbWeight=1 PerfScore 9.50 G_M60880_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldr q16, [@RWD00]
- str q16, [fp, #0x90] // [V26 tmp22]
+ str q16, [fp, #0x98] // [V26 tmp22]
ldr q16, [@RWD16]
- str q16, [fp, #0xA0] // [V26 tmp22+0x10]
+ str q16, [fp, #0xA8] // [V26 tmp22+0x10]
ldr q16, [@RWD32]
- str q16, [fp, #0xB0] // [V26 tmp22+0x20]
+ str q16, [fp, #0xB8] // [V26 tmp22+0x20]
ldr q16, [@RWD48]
- str q16, [fp, #0xC0] // [V26 tmp22+0x30]
+ str q16, [fp, #0xC8] // [V26 tmp22+0x30]
ldr q16, [@RWD64]
- str q16, [fp, #0xD0] // [V23 tmp19]
+ str q16, [fp, #0xD8] // [V23 tmp19]
ldr q16, [@RWD80]
- str q16, [fp, #0xE0] // [V23 tmp19+0x10]
+ str q16, [fp, #0xE8] // [V23 tmp19+0x10]
ldr q16, [@RWD96]
- str q16, [fp, #0xF0] // [V23 tmp19+0x20]
+ str q16, [fp, #0xF8] // [V23 tmp19+0x20]
ldr q16, [@RWD112]
- str q16, [fp, #0xD1FFAB1E] // [V23 tmp19+0x30]
+ mov xip1, #0xD1FFAB1E + str q16, [fp, xip1] // [V23 tmp19+0x30]
mov w19, wzr
- ;; size=68 bbWeight=1 PerfScore 24.50
+ ;; size=72 bbWeight=1 PerfScore 25.00
G_M60880_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz tbnz w19, #31, G_M60880_IG05 ;; size=4 bbWeight=4 PerfScore 4.00 @@ -178,18 +179,17 @@ G_M60880_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 ;; size=36 bbWeight=2 PerfScore 15.00 G_M60880_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add x0, fp, #208 // [V23 tmp19]
+ add x0, fp, #216 // [V23 tmp19]
; byrRegs +[x0]
- sbfiz x20, x19, #3, #32 - ldr x21, [x0, x20]
+ ldr x20, [x0, w19, SXTW #3]
movi v8.16b, #0
- cmp x21, #8
+ cmp x20, #8
bhs G_M60880_IG10
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=20 bbWeight=4 PerfScore 22.00
G_M60880_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x0]
- tbnz w21, #31, G_M60880_IG08 - cmp w21, #8
+ tbnz w20, #31, G_M60880_IG08 + cmp w20, #8
cset x0, lt tst w0, #255 bne G_M60880_IG09 @@ -209,9 +209,9 @@ G_M60880_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 ;; size=36 bbWeight=2 PerfScore 15.00 G_M60880_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x0, fp, #144 // [V26 tmp22]
+ add x0, fp, #152 // [V26 tmp22]
; byrRegs +[x0]
- ldr d8, [x0, w21, SXTW #3]
+ ldr d8, [x0, w20, SXTW #3]
;; size=8 bbWeight=2 PerfScore 7.00 G_M60880_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x0] @@ -240,28 +240,36 @@ G_M60880_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M60880_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz add x0, fp, #0xD1FFAB1E // [V21 tmp17] ; byrRegs +[x0]
- str d8, [x0, x20]
+ str d8, [x0, w19, SXTW #3]
add w19, w19, #1 cmp w19, #8 blt G_M60880_IG03 ;; size=20 bbWeight=4 PerfScore 14.00 G_M60880_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0]
- ldp q16, q17, [fp, #0xD1FFAB1E] - stp q16, q17, [fp, #0xD1FFAB1E] - ldp q16, q17, [fp, #0xD1FFAB1E] - stp q16, q17, [fp, #0xD1FFAB1E]
+ ldp x0, x1, [fp, #0xD1FFAB1E] + stp x0, x1, [fp, #0xD1FFAB1E] + ldp x0, x1, [fp, #0xD1FFAB1E] + stp x0, x1, [fp, #0xD1FFAB1E] + ldp x0, x1, [fp, #0xD1FFAB1E] + stp x0, x1, [fp, #0xD1FFAB1E] + ldp x0, x1, [fp, #0xD1FFAB1E] + stp x0, x1, [fp, #0xD1FFAB1E]
mov w19, wzr
- ;; size=20 bbWeight=1 PerfScore 6.50
+ ;; size=36 bbWeight=1 PerfScore 16.50
G_M60880_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldp q16, q17, [fp, #0xD1FFAB1E] - stp q16, q17, [fp, #0x50] - ldp q16, q17, [fp, #0xD1FFAB1E] - stp q16, q17, [fp, #0x70]
+ ldp x0, x1, [fp, #0xD1FFAB1E] + stp x0, x1, [fp, #0x58] + ldp x0, x1, [fp, #0xD1FFAB1E] + stp x0, x1, [fp, #0x68] + ldp x0, x1, [fp, #0xD1FFAB1E] + stp x0, x1, [fp, #0x78] + ldp x0, x1, [fp, #0xD1FFAB1E] + stp x0, x1, [fp, #0x88]
cmp w19, #8 bhs G_M60880_IG25 tbnz w19, #31, G_M60880_IG17
- ;; size=28 bbWeight=4 PerfScore 34.00
+ ;; size=44 bbWeight=4 PerfScore 74.00
G_M60880_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz cmp w19, #8 cset x0, lt @@ -283,7 +291,7 @@ G_M60880_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 ;; size=36 bbWeight=2 PerfScore 15.00 G_M60880_IG18: ; bbWeight=4.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add x0, fp, #80 // [V42 tmp38]
+ add x0, fp, #88 // [V42 tmp38]
; byrRegs +[x0] ldr d8, [x0, w19, SXTW #3] movz x20, #0xD1FFAB1E @@ -325,15 +333,16 @@ G_M60880_IG18: ; bbWeight=4.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movk x22, #0xD1FFAB1E LSL #16 movk x22, #1 LSL #32 str x22, [x24, #0x18]
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32
+ movz x25, #0xD1FFAB1E + movk x25, #0xD1FFAB1E LSL #16 + movk x25, #1 LSL #32 + mov x0, x25
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0
- mov x25, x0 - ; gcrRegs +[x25] - add x14, x25, #16
+ mov x26, x0 + ; gcrRegs +[x26] + add x14, x26, #16
; byrRegs +[x14] ...

+32 (+7.84%) : 89369.dasm - System.Data.ExpressionParser:ScanNumeric():this (FullOpts)

@@ -7,25 +7,26 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 21, 41.50) ref -> x19 this class-hnd single-def <System.Data.ExpressionParser> -; V01 loc0 [V01,T06] ( 3, 10 ) ref -> x20 class-hnd single-def <<unknown class>> -; V02 loc1 [V02,T13] ( 3, 2 ) ubyte -> x21 -;* V03 loc2 [V03,T15] ( 0, 0 ) ubyte -> zero-ref
+; V00 this [V00,T01] ( 21, 38.50) ref -> x19 this class-hnd single-def <System.Data.ExpressionParser> +; V01 loc0 [V01,T10] ( 3, 3 ) ref -> x0 class-hnd single-def <<unknown class>> +; V02 loc1 [V02,T14] ( 3, 2 ) ubyte -> x20 +;* V03 loc2 [V03,T16] ( 0, 0 ) ubyte -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T00] ( 3, 48 ) int -> x0 "index expr"
+; V05 tmp1 [V05,T02] ( 6, 30 ) int -> x21 "index expr"
; V06 tmp2 [V06,T07] ( 3, 6 ) int -> x0 "index expr"
-; V07 tmp3 [V07,T01] ( 3, 48 ) int -> x0 "index expr"
+; V07 tmp3 [V07,T00] ( 3, 48 ) int -> x0 "index expr"
; V08 tmp4 [V08,T08] ( 3, 6 ) int -> x1 "index expr"
-;* V09 tmp5 [V09,T16] ( 0, 0 ) int -> zero-ref "index expr" -; V10 tmp6 [V10,T10] ( 3, 3 ) int -> x0 "index expr" -;* V11 tmp7 [V11,T17] ( 0, 0 ) int -> zero-ref "index expr" -; V12 tmp8 [V12,T04] ( 3, 24 ) int -> x0 "index expr" -; V13 cse0 [V13,T14] ( 3, 1.50) int -> x0 "CSE - moderate" -; V14 cse1 [V14,T11] ( 3, 2.50) int -> x1 "CSE - aggressive" -; V15 cse2 [V15,T12] ( 3, 1.50) int -> x0 "CSE - aggressive" -; V16 cse3 [V16,T09] ( 3, 2.50) int -> x0 "CSE - aggressive" -; V17 cse4 [V17,T05] ( 7, 23.50) byref -> x22 hoist "CSE - aggressive" -; V18 cse5 [V18,T03] ( 7, 30.50) int -> x23 "CSE - aggressive"
+;* V09 tmp5 [V09,T17] ( 0, 0 ) int -> zero-ref "index expr" +; V10 tmp6 [V10,T11] ( 3, 3 ) int -> x0 "index expr" +;* V11 tmp7 [V11,T18] ( 0, 0 ) int -> zero-ref "index expr" +; V12 tmp8 [V12,T03] ( 3, 24 ) int -> x0 "index expr" +; V13 cse0 [V13,T15] ( 3, 1.50) int -> x0 "CSE - moderate" +; V14 cse1 [V14,T12] ( 3, 2.50) int -> x1 "CSE - aggressive" +; V15 cse2 [V15,T06] ( 3, 12 ) int -> x21 "CSE - aggressive" +; V16 cse3 [V16,T13] ( 3, 1.50) int -> x0 "CSE - aggressive" +; V17 cse4 [V17,T09] ( 3, 2.50) int -> x0 "CSE - aggressive" +; V18 cse5 [V18,T04] ( 8, 20.50) byref -> x23 "CSE - aggressive" +; V19 cse6 [V19,T05] ( 8, 20.50) int -> x22 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -38,147 +39,153 @@ G_M57065_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x0 ; gcrRegs +[x19] ;; size=24 bbWeight=1 PerfScore 5.00
-G_M57065_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ldr x20, [x19, #0x08] - ; gcrRegs +[x20] - mov w21, wzr - add x22, x20, #16 - ; byrRegs +[x22] - b G_M57065_IG04 - ;; size=16 bbWeight=1 PerfScore 5.00 -G_M57065_IG03: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=400000 {x22}, byref
+G_M57065_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr x0, [x19, #0x08] + ; gcrRegs +[x0] + mov w20, wzr + ldr w21, [x19, #0x30] + ldr w22, [x0, #0x08] + cmp w21, w22 + bhs G_M57065_IG19 + add x23, x0, #16 + ; byrRegs +[x23] + ldrh w0, [x23, w21, UXTW #2] + ; gcrRegs -[x0] + movz x1, #0xD1FFAB1E // code for System.Data.ExpressionParser:IsDigit(ushort):ubyte + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + ldr x1, [x1] + blr x1 + cbz w0, G_M57065_IG04 + ;; size=56 bbWeight=1 PerfScore 21.00 +G_M57065_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [x19, #0x30]
- add w0, w0, #1 - str w0, [x19, #0x30] - ;; size=12 bbWeight=2 PerfScore 9.00 -G_M57065_IG04: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=400000 {x22}, byref, isz - ldr w0, [x19, #0x30] - ldr w23, [x20, #0x08] - cmp w0, w23 - bhs G_M57065_IG20 - ldrh w0, [x22, w0, UXTW #2]
+ add w21, w0, #1 + str w21, [x19, #0x30] + cmp w21, w22 + bhs G_M57065_IG19 + ldrh w0, [x23, w21, UXTW #2]
movz x1, #0xD1FFAB1E // code for System.Data.ExpressionParser:IsDigit(ushort):ubyte movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 ldr x1, [x1] blr x1 cbnz w0, G_M57065_IG03
- ;; size=44 bbWeight=8 PerfScore 136.00 -G_M57065_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz - ; gcrRegs -[x20]
+ ;; size=48 bbWeight=4 PerfScore 62.00 +G_M57065_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [x19, #0x30]
- cmp w0, w23 - bhs G_M57065_IG20 - ldrh w0, [x22, w0, UXTW #2]
+ cmp w0, w22 + bhs G_M57065_IG19 + ldrh w0, [x23, w0, UXTW #2]
ldrh w1, [x19, #0x4E] cmp w0, w1
- bne G_M57065_IG08
+ bne G_M57065_IG07
;; size=28 bbWeight=1 PerfScore 12.00
-G_M57065_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref - mov w21, #1
+G_M57065_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref + mov w20, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M57065_IG07: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
+G_M57065_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref
ldr w0, [x19, #0x30] add w0, w0, #1 str w0, [x19, #0x30] ;; size=12 bbWeight=2 PerfScore 9.00
-G_M57065_IG08: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M57065_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [x19, #0x30]
- cmp w0, w23 - bhs G_M57065_IG20 - ldrh w0, [x22, w0, UXTW #2]
+ cmp w0, w22 + bhs G_M57065_IG19 + ldrh w0, [x23, w0, UXTW #2]
movz x1, #0xD1FFAB1E // code for System.Data.ExpressionParser:IsDigit(ushort):ubyte movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 ldr x1, [x1] blr x1
- cbnz w0, G_M57065_IG07
+ cbnz w0, G_M57065_IG06
;; size=40 bbWeight=8 PerfScore 112.00
-G_M57065_IG09: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M57065_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [x19, #0x30] sxtw w1, w0
- cmp w1, w23 - bhs G_M57065_IG20 - ldrh w1, [x22, w1, UXTW #2]
+ cmp w1, w22 + bhs G_M57065_IG19 + ldrh w1, [x23, w1, UXTW #2]
ldrh w2, [x19, #0x52] cmp w1, w2
- beq G_M57065_IG11
+ beq G_M57065_IG10
;; size=32 bbWeight=1 PerfScore 12.50
-G_M57065_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M57065_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldrh w2, [x19, #0x54] cmp w1, w2
- bne G_M57065_IG16
+ bne G_M57065_IG15
;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M57065_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M57065_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
add w0, w0, #1 str w0, [x19, #0x30]
- cmp w0, w23 - bhs G_M57065_IG20 - ldrh w0, [x22, w0, UXTW #2]
+ cmp w0, w22 + bhs G_M57065_IG19 + ldrh w0, [x23, w0, UXTW #2]
cmp w0, #45
- beq G_M57065_IG12
+ beq G_M57065_IG11
cmp w0, #43
- bne G_M57065_IG13
+ bne G_M57065_IG12
;; size=36 bbWeight=0.50 PerfScore 4.50
-G_M57065_IG12: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
+G_M57065_IG11: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref
ldr w0, [x19, #0x30] add w0, w0, #1 str w0, [x19, #0x30] ;; size=12 bbWeight=2 PerfScore 9.00
-G_M57065_IG13: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M57065_IG12: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [x19, #0x30]
- cmp w0, w23 - bhs G_M57065_IG20 - ldrh w0, [x22, w0, UXTW #2]
+ cmp w0, w22 + bhs G_M57065_IG19 + ldrh w0, [x23, w0, UXTW #2]
movz x1, #0xD1FFAB1E // code for System.Data.ExpressionParser:IsDigit(ushort):ubyte movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 ldr x1, [x1] blr x1
- cbnz w0, G_M57065_IG12
+ cbnz w0, G_M57065_IG11
;; size=40 bbWeight=4 PerfScore 56.00
-G_M57065_IG14: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; byrRegs -[x22]
+G_M57065_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; byrRegs -[x23]
mov w0, #4 str w0, [x19, #0x38] ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M57065_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M57065_IG14: ; 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 ret lr ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M57065_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - cbz w21, G_M57065_IG18
+G_M57065_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz + cbz w20, G_M57065_IG17
mov w0, #3 str w0, [x19, #0x38] ;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M57065_IG17: ; bbWeight=0.50, epilog, nogc, extend
+G_M57065_IG16: ; 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 ret lr ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M57065_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M57065_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
mov w0, #2 str w0, [x19, #0x38] ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M57065_IG19: ; bbWeight=0.50, epilog, nogc, extend
+G_M57065_IG18: ; 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 ret lr ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M57065_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M57065_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19] ...

+32 (+26.67%) : 89349.dasm - System.Data.ExpressionParser:ScanName():this (FullOpts)

@@ -7,66 +7,74 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 7, 16 ) ref -> x19 this class-hnd single-def <System.Data.ExpressionParser> -; V01 loc0 [V01,T02] ( 3, 10 ) ref -> x20 class-hnd single-def <<unknown class>>
+; V00 this [V00,T01] ( 7, 13 ) ref -> x19 this class-hnd single-def <System.Data.ExpressionParser> +; V01 loc0 [V01,T05] ( 3, 3 ) ref -> x0 class-hnd single-def <<unknown class>>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 3, 48 ) int -> x0 "index expr" -; V04 cse0 [V04,T03] ( 2, 9 ) byref -> x21 hoist "CSE - aggressive"
+; V03 tmp1 [V03,T00] ( 6, 30 ) int -> x20 "index expr" +; V04 cse0 [V04,T02] ( 3, 12 ) int -> x20 "CSE - aggressive" +; V05 cse1 [V05,T03] ( 3, 6 ) byref -> x22 "CSE - aggressive" +; V06 cse2 [V06,T04] ( 3, 6 ) int -> x21 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M25477_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 x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M25477_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ldr x20, [x19, #0x08] - ; gcrRegs +[x20] - add x21, x20, #16 - ; byrRegs +[x21] - b G_M25477_IG04 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M25477_IG03: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
+G_M25477_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr x0, [x19, #0x08] + ; gcrRegs +[x0] + ldr w20, [x19, #0x30] + ldr w21, [x0, #0x08] + cmp w20, w21 + bhs G_M25477_IG06 + add x22, x0, #16 + ; byrRegs +[x22] + ldrh w0, [x22, w20, UXTW #2] + ; gcrRegs -[x0] + movz x1, #0xD1FFAB1E // code for <unknown method> + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + ldr x1, [x1] + blr x1 + cbz w0, G_M25477_IG04 + ;; size=52 bbWeight=1 PerfScore 20.50 +G_M25477_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
ldr w0, [x19, #0x30]
- add w0, w0, #1 - str w0, [x19, #0x30] - ;; size=12 bbWeight=2 PerfScore 9.00 -G_M25477_IG04: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz - ldr w0, [x19, #0x30] - ldr w1, [x20, #0x08] - cmp w0, w1 - bhs G_M25477_IG07 - ldrh w0, [x21, w0, UXTW #2]
+ add w20, w0, #1 + str w20, [x19, #0x30] + cmp w20, w21 + bhs G_M25477_IG06 + ldrh w0, [x22, w20, UXTW #2]
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 ldr x1, [x1] blr x1 cbnz w0, G_M25477_IG03
- ;; size=44 bbWeight=8 PerfScore 136.00 -G_M25477_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x20] - ; byrRegs -[x21]
+ ;; size=48 bbWeight=4 PerfScore 62.00 +G_M25477_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; byrRegs -[x22]
mov w0, #1 str w0, [x19, #0x38] ;; size=8 bbWeight=1 PerfScore 1.50
-G_M25477_IG06: ; bbWeight=1, epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+G_M25477_IG05: ; bbWeight=1, epilog, nogc, extend + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00 -G_M25477_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=1 PerfScore 4.00 +G_M25477_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19] bl CORINFO_HELP_RNGCHKFAIL brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 120, prolog size 16, PerfScore 160.00, instruction count 30, allocated bytes for code 120 (MethodHash=0db89c7a) for method System.Data.ExpressionParser:ScanName():this (FullOpts)
+; Total bytes of code 152, prolog size 16, PerfScore 92.00, instruction count 38, allocated bytes for code 152 (MethodHash=0db89c7a) for method System.Data.ExpressionParser:ScanName():this (FullOpts)
; ============================================================ Unwind Info: @@ -77,7 +85,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ 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) @@ -85,9 +93,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]
+ E6 save_next + 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

realworld.run.osx.arm64.checked.mch

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

@@ -44,34 +44,27 @@ 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]
b G_M33083_IG05
- ;; size=36 bbWeight=4 PerfScore 46.00
+ ;; size=28 bbWeight=4 PerfScore 38.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, w4, UXTW #2] + str w10, [x2, x11, LSL #2]
sub w4, w4, #1
- ;; size=60 bbWeight=8 PerfScore 108.00
+ ;; size=48 bbWeight=8 PerfScore 88.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 @@ -86,16 +79,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 +98,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 184, prolog size 8, PerfScore 292.00, instruction count 46, allocated bytes for code 184 (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 +109,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 53 (0x00035) Actual length = 212 (0x0000d4)
+ 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)

-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

-24 (-10.91%) : 3377.dasm - System.Collections.Generic.GenericArraySortHelper2[int,System.__Canon]:InsertionSort(System.Span1[int],System.Span`1[System.__Canon]) (FullOpts)

@@ -45,26 +45,22 @@ G_M63387_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=000A {x1 x3}, b G_M63387_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=000A {x1 x3}, byref, isz add w6, w0, #1 mov w14, w6
- lsl x15, x14, #2 - ldr w7, [x1, x15]
+ ldr w7, [x1, x14, LSL #2]
cmp w6, w4 bhs G_M63387_IG09
- lsl x14, x14, #3 - ldr x8, [x3, x14]
+ ldr x8, [x3, x14, LSL #3]
; gcrRegs +[x8] b G_M63387_IG05
- ;; size=36 bbWeight=4 PerfScore 46.00
+ ;; size=28 bbWeight=4 PerfScore 38.00
G_M63387_IG04: ; bbWeight=8, gcrefRegs=0100 {x8}, byrefRegs=000A {x1 x3}, byref, isz add w9, w0, #1 cmp w9, w2 bhs G_M63387_IG09 mov w10, w9
- lsl x15, x10, #2 - str w14, [x1, x15]
+ str w14, [x1, x10, LSL #2]
cmp w9, w4 bhs G_M63387_IG09
- lsl x14, x10, #3 - add x14, x3, x14
+ add x14, x3, x10, LSL #3
; byrRegs +[x14] cmp w0, w4 bhs G_M63387_IG09 @@ -74,7 +70,7 @@ G_M63387_IG04: ; bbWeight=8, gcrefRegs=0100 {x8}, byrefRegs=000A {x1 x3}, ; gcrRegs -[x15] ; byrRegs -[x14] sub w0, w0, #1
- ;; size=60 bbWeight=8 PerfScore 108.00
+ ;; size=52 bbWeight=8 PerfScore 96.00
G_M63387_IG05: ; bbWeight=32, gcrefRegs=0100 {x8}, byrefRegs=000A {x1 x3}, byref, isz tbnz w0, #31, G_M63387_IG07 ;; size=4 bbWeight=32 PerfScore 32.00 @@ -90,12 +86,10 @@ G_M63387_IG07: ; bbWeight=4, gcrefRegs=0100 {x8}, byrefRegs=000A {x1 x3}, cmp w9, w2 bhs G_M63387_IG09 mov w10, w9
- lsl x14, x10, #2 - str w7, [x1, x14]
+ str w7, [x1, x10, LSL #2]
cmp w9, w4 bhs G_M63387_IG09
- lsl x14, x10, #3 - add x14, x3, x14
+ add x14, x3, x10, LSL #3
; byrRegs +[x14] mov x15, x8 ; gcrRegs +[x15] @@ -105,7 +99,7 @@ G_M63387_IG07: ; bbWeight=4, gcrefRegs=0100 {x8}, byrefRegs=000A {x1 x3}, sxtw w0, w6 cmp w0, w5 blt G_M63387_IG03
- ;; size=60 bbWeight=4 PerfScore 44.00
+ ;; size=52 bbWeight=4 PerfScore 38.00
G_M63387_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x1 x3] ldp fp, lr, [sp], #0x10 @@ -117,7 +111,7 @@ G_M63387_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 8, PerfScore 332.00, instruction count 55, allocated bytes for code 220 (MethodHash=f6e30864) for method System.Collections.Generic.GenericArraySortHelper`2[int,System.__Canon]:InsertionSort(System.Span`1[int],System.Span`1[System.__Canon]) (FullOpts)
+; Total bytes of code 196, prolog size 8, PerfScore 306.00, instruction count 49, allocated bytes for code 196 (MethodHash=f6e30864) for method System.Collections.Generic.GenericArraySortHelper`2[int,System.__Canon]:InsertionSort(System.Span`1[int],System.Span`1[System.__Canon]) (FullOpts)
; ============================================================ Unwind Info: @@ -128,7 +122,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+4.11%) : 21743.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(int,byref):ubyte:this (FullOpts)

@@ -9,13 +9,13 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 10, 9 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer>
-; V01 arg1 [V01,T01] ( 10, 8.50) int -> x20 single-def
+; V01 arg1 [V01,T01] ( 9, 8 ) int -> x20 single-def
; V02 arg2 [V02,T07] ( 3, 3 ) byref -> x6 single-def ; V03 loc0 [V03,T09] ( 2, 2 ) ref -> x2 class-hnd single-def <<unknown class>> ; V04 loc1 [V04,T10] ( 2, 2 ) ref -> x3 class-hnd single-def <<unknown class>> ; V05 loc2 [V05,T11] ( 2, 2 ) ref -> x4 class-hnd single-def <<unknown class>> ; V06 loc3 [V06,T12] ( 2, 2 ) ref -> x5 class-hnd single-def <<unknown class>>
-; V07 loc4 [V07 ] ( 3, 2.50) struct (32) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte]>
+; V07 loc4 [V07 ] ( 3, 2.50) struct (32) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte]>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V10 tmp2 [V10,T02] ( 3, 6 ) ref -> x0 single-def "arr expr" @@ -23,22 +23,23 @@ ; V12 tmp4 [V12,T04] ( 3, 6 ) ref -> x0 single-def "arr expr" ; V13 tmp5 [V13,T05] ( 3, 6 ) ref -> x0 single-def "arr expr" ; V14 tmp6 [V14,T08] ( 3, 3 ) ref -> x14 single-def "arr expr"
-; V15 cse0 [V15,T06] ( 5, 5 ) long -> x1 "CSE - aggressive"
+; V15 cse0 [V15,T06] ( 6, 5.50) long -> x21 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M56432_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x30]
+ stp fp, lr, [sp, #-0x50]! + stp x19, x20, [sp, #0x38] + str x21, [sp, #0x48]
mov fp, sp
- stp xzr, xzr, [fp, #0x10] // [V07 loc4], [V07 loc4+0x08] - stp xzr, xzr, [fp, #0x20] // [V07 loc4+0x10], [V07 loc4+0x18]
+ stp xzr, xzr, [fp, #0x18] // [V07 loc4], [V07 loc4+0x08] + stp xzr, xzr, [fp, #0x28] // [V07 loc4+0x10], [V07 loc4+0x18]
mov x19, x0 ; gcrRegs +[x19] mov w20, w1 mov x6, x2 ; byrRegs +[x6]
- ;; size=32 bbWeight=1 PerfScore 6.00
+ ;; size=36 bbWeight=1 PerfScore 7.00
G_M56432_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0040 {x6}, byref, isz ldr x0, [x19, #0x60] ; gcrRegs +[x0] @@ -48,46 +49,46 @@ G_M56432_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0040 {x6}, add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ubfiz x1, x20, #3, #32 - ldr x2, [x0, x1]
+ mov w21, w20 + ldr x2, [x0, x21, LSL #3]
; gcrRegs +[x2] ldr x0, [x19, #0x30] ; gcrRegs +[x0] ; byrRegs -[x0]
- ldr w8, [x0, #0x08] - cmp w20, w8
+ ldr w1, [x0, #0x08] + cmp w20, w1
bhs G_M56432_IG07 add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ldr x3, [x0, x1]
+ ldr x3, [x0, x21, LSL #3]
; gcrRegs +[x3] ldr x0, [x19, #0x40] ; gcrRegs +[x0] ; byrRegs -[x0]
- ldr w8, [x0, #0x08] - cmp w20, w8
+ ldr w1, [x0, #0x08] + cmp w20, w1
bhs G_M56432_IG07 add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ldr x4, [x0, x1]
+ ldr x4, [x0, x21, LSL #3]
; gcrRegs +[x4] ldr x0, [x19, #0x38] ; gcrRegs +[x0] ; byrRegs -[x0]
- ldr w8, [x0, #0x08] - cmp w20, w8
+ ldr w1, [x0, #0x08] + cmp w20, w1
bhs G_M56432_IG07 add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ldr x5, [x0, x1]
+ ldr x5, [x0, x21, LSL #3]
; gcrRegs +[x5] ldp x0, x1, [x19, #0x08] ; gcrRegs +[x0-x1] ; byrRegs -[x0]
- add x8, fp, #16 // [V07 loc4]
+ add x8, fp, #24 // [V07 loc4]
movz x7, #0xD1FFAB1E // code for <unknown method> movk x7, #0xD1FFAB1E LSL #16 movk x7, #1 LSL #32 @@ -95,19 +96,20 @@ G_M56432_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0040 {x6}, blr x7 ; gcrRegs -[x0-x5] ; byrRegs -[x6]
- ldr x0, [fp, #0x18] // [V07 loc4+0x08]
+ ldr x0, [fp, #0x20] // [V07 loc4+0x08]
; gcrRegs +[x0] cbnz x0, G_M56432_IG05
- ;; size=136 bbWeight=1 PerfScore 58.00
+ ;; size=136 bbWeight=1 PerfScore 57.50
G_M56432_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0 x19] mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M56432_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x30] - ldp fp, lr, [sp], #0x40
+ ldr x21, [sp, #0x48] + ldp x19, x20, [sp, #0x38] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
G_M56432_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[x19] ldr x14, [x19, #0x28] @@ -115,12 +117,12 @@ G_M56432_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 ldr w13, [x14, #0x08] cmp w20, w13 bhs G_M56432_IG07
- ubfiz x13, x20, #5, #32
+ lsl x13, x21, #5
add x13, x13, #16 add x14, x14, x13 ; gcrRegs -[x14] ; byrRegs +[x14]
- add x13, fp, #16 // [V07 loc4]
+ add x13, fp, #24 // [V07 loc4]
; byrRegs +[x13] ldr x12, [x13], #0x08 str x12, [x14], #0x08 @@ -141,16 +143,17 @@ G_M56432_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 mov w0, #1 ;; size=88 bbWeight=0.50 PerfScore 13.50 G_M56432_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x30] - ldp fp, lr, [sp], #0x40
+ ldr x21, [sp, #0x48] + ldp x19, x20, [sp, #0x38] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
G_M56432_IG07: ; 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 292, prolog size 20, PerfScore 80.75, instruction count 73, allocated bytes for code 292 (MethodHash=1b1e238f) for method Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(int,byref):ubyte:this (FullOpts)
+; Total bytes of code 304, prolog size 24, PerfScore 83.25, instruction count 76, allocated bytes for code 304 (MethodHash=1b1e238f) for method Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(int,byref):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -161,7 +164,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 73 (0x00049) Actual length = 292 (0x000124)
+ Function Length : 76 (0x0004c) Actual length = 304 (0x000130)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -172,10 +175,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 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
+ 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]!
E4 end E4 end

+20 (+4.24%) : 809.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)

@@ -9,35 +9,36 @@ ; Final local variable assignments ; ; V00 this [V00,T04] ( 11, 7 ) byref -> x19 this single-def
-; V01 arg1 [V01,T06] ( 5, 3.50) int -> x1 single-def -; V02 loc0 [V02,T16] ( 3, 2.50) int -> x0
+; V01 arg1 [V01,T07] ( 5, 3.50) int -> x1 single-def +; V02 loc0 [V02,T17] ( 3, 2.50) int -> x0
; V03 loc1 [V03,T15] ( 5, 2.50) int -> x21
-; V04 loc2 [V04,T11] ( 5, 4 ) int -> x20 ld-addr-op -; V05 loc3 [V05,T00] ( 11, 29.50) int -> x22 -; V06 loc4 [V06,T01] ( 14, 22 ) int -> x23 -; V07 loc5 [V07,T18] ( 2, 1 ) int -> x0 -; V08 loc6 [V08,T09] ( 4, 5 ) int -> x1 -; V09 loc7 [V09,T03] ( 4, 10.50) int -> x2 -; V10 loc8 [V10,T05] ( 3, 6.50) int -> x3
+; V04 loc2 [V04,T16] ( 5, 2.50) int -> x20 ld-addr-op +; V05 loc3 [V05,T00] ( 13, 34.50) int -> x22 +; V06 loc4 [V06,T01] ( 14, 28 ) int -> x23 +; V07 loc5 [V07,T19] ( 2, 1 ) int -> x0 +; V08 loc6 [V08,T05] ( 4, 9 ) int -> x1 +; V09 loc7 [V09,T03] ( 6, 13.50) int -> x2 +; V10 loc8 [V10,T06] ( 4, 9 ) int -> x3
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp3 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V15 tmp4 [V15 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V16 tmp5 [V16,T07] ( 5, 5 ) long -> [fp+0x18] "Inlining Arg"
+; V16 tmp5 [V16,T09] ( 5, 5 ) long -> [fp+0x18] "Inlining Arg"
;* V17 tmp6 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V18 tmp7 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp8 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp9 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V21 tmp10 [V21 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V22 tmp11 [V22,T08] ( 5, 5 ) long -> [fp+0x10] spill-single-def "Inlining Arg"
+; V22 tmp11 [V22,T10] ( 5, 5 ) long -> [fp+0x10] spill-single-def "Inlining Arg"
;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V24 tmp13 [V24,T13] ( 3, 3 ) long -> x0 "Cast away GC" ; V25 tmp14 [V25,T14] ( 3, 3 ) long -> x0 "Cast away GC"
-; V26 cse0 [V26,T17] ( 3, 1.50) int -> x0 "CSE - moderate" -; V27 cse1 [V27,T02] ( 12, 18 ) byref -> x24 hoist multi-def "CSE - aggressive" -; V28 cse2 [V28,T10] ( 2, 4.50) int -> x0 hoist "CSE - aggressive" -; V29 cse3 [V29,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
+; V26 cse0 [V26,T18] ( 3, 1.50) int -> x0 "CSE - moderate" +; V27 cse1 [V27,T02] ( 13, 20.50) byref -> x24 hoist multi-def "CSE - aggressive" +; V28 cse2 [V28,T11] ( 3, 5 ) int -> x0 "CSE - aggressive" +; V29 cse3 [V29,T08] ( 4, 5.50) int -> x4 hoist multi-def "CSE - aggressive" +; V30 cse4 [V30,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
; ; Lcl frame size = 16 @@ -151,7 +152,7 @@ G_M38441_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=48 bbWeight=0.50 PerfScore 4.75
-G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add w0, w23, #1 str w0, [x19] neg w0, w20 @@ -159,42 +160,45 @@ G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, mov w1, wzr add x24, x19, #4 ; byrRegs +[x24]
+ ldr w2, [x24, w22, SXTW #2]
and w0, w0, #31
- b G_M38441_IG13 - ;; size=32 bbWeight=0.50 PerfScore 2.50 -G_M38441_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ lsr w3, w2, w0 + cmp w22, #0 + ble G_M38441_IG13 + and w4, w20, #31 + ;; size=48 bbWeight=0.50 PerfScore 4.75 +G_M38441_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
orr w1, w1, w3 str w1, [x24, w23, SXTW #2]
- lsl w1, w2, w20
+ lsl w1, w2, w4
sub w22, w22, #1 sub w23, w23, #1
- ;; size=20 bbWeight=2 PerfScore 6.00 -G_M38441_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w2, [x24, w22, SXTW #2] lsr w3, w2, w0 cmp w22, #0 bgt G_M38441_IG12
- ;; size=16 bbWeight=4 PerfScore 20.00 -G_M38441_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3 - str w0, [x24, w23, SXTW #2]
+ ;; size=36 bbWeight=4 PerfScore 32.00 +G_M38441_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w4, w1, w3 + str w4, [x24, w23, SXTW #2]
sub w0, w23, #1
- lsl w1, w2, w20
+ and w4, w20, #31 + lsl w1, w2, w4
str w1, [x24, w0, SXTW #2] mov x0, x24 lsl w1, w21, #2 mov w1, w1 str x1, [fp, #0x10] // [V22 tmp11]
- cbz x1, G_M38441_IG16
+ cbz x1, G_M38441_IG15
cmp x1, #0xD1FFAB1E
- bhi G_M38441_IG15
+ bhi G_M38441_IG14
mov w1, wzr ldr w2, [fp, #0x10] // [V22 tmp11] bl CORINFO_HELP_MEMSET ; gcr arg pop 0
- b G_M38441_IG16 - ;; size=64 bbWeight=0.50 PerfScore 6.75 -G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ b G_M38441_IG15 + ;; size=68 bbWeight=0.50 PerfScore 7.00 +G_M38441_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
ldr x1, [fp, #0x10] // [V22 tmp11] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -203,7 +207,7 @@ G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 blr x2 ; gcr arg pop 0 ;; size=24 bbWeight=0.50 PerfScore 3.75
-G_M38441_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w0, [x19] sub w0, w0, #1 ldr w1, [x24, w0, SXTW #2] @@ -212,7 +216,7 @@ G_M38441_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 b G_M38441_IG04 ;; size=24 bbWeight=0.50 PerfScore 4.75
-; Total bytes of code 472, prolog size 24, PerfScore 111.75, instruction count 118, allocated bytes for code 472 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
+; Total bytes of code 492, prolog size 24, PerfScore 120.25, instruction count 123, allocated bytes for code 492 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
; ============================================================ Unwind Info: @@ -223,7 +227,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 118 (0x00076) Actual length = 472 (0x0001d8)
+ Function Length : 123 (0x0007b) Actual length = 492 (0x0001ec)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+5.41%) : 13893.dasm - Microsoft.ML.Trainers.KMeansLloydsYinYangTrain+SharedState:UpdateYinYangBounds(int):this (FullOpts)

@@ -35,8 +35,9 @@ G_M25866_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre add x2, x2, #16 ; gcrRegs -[x2] ; byrRegs +[x2]
- ubfiz x3, x1, #2, #32 - add x2, x2, x3
+ mov w3, w1 + lsl x4, x3, #2 + add x2, x2, x4
ldr s16, [x2] ldp x4, x5, [x0, #0x10] ; gcrRegs +[x4-x5] @@ -46,7 +47,7 @@ G_M25866_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre add x5, x5, #16 ; gcrRegs -[x5] ; byrRegs +[x5]
- ldr w5, [x5, x3]
+ ldr w5, [x5, x3, LSL #2]
; byrRegs -[x5] ldr w6, [x4, #0x08] cmp w5, w6 @@ -66,24 +67,26 @@ G_M25866_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre bhs G_M25866_IG04 add x1, x2, #16 ; byrRegs +[x1]
- add x1, x1, x3
+ lsl x2, x3, #2 + ; gcrRegs -[x2] + add x1, x1, x2
ldr s16, [x1] ldr s17, [x0, #0x34] fsub s16, s16, s17 str s16, [x1]
- ;; size=124 bbWeight=1 PerfScore 55.00
+ ;; size=132 bbWeight=1 PerfScore 56.50
G_M25866_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00 G_M25866_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x2]
+ ; gcrRegs -[x0]
; byrRegs -[x1] bl CORINFO_HELP_RNGCHKFAIL brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 148, prolog size 8, PerfScore 58.50, instruction count 37, allocated bytes for code 148 (MethodHash=0d9c9af5) for method Microsoft.ML.Trainers.KMeansLloydsYinYangTrain+SharedState:UpdateYinYangBounds(int):this (FullOpts)
+; Total bytes of code 156, prolog size 8, PerfScore 60.00, instruction count 39, allocated bytes for code 156 (MethodHash=0d9c9af5) for method Microsoft.ML.Trainers.KMeansLloydsYinYangTrain+SharedState:UpdateYinYangBounds(int):this (FullOpts)
; ============================================================ Unwind Info: @@ -94,7 +97,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
---- 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 507 307 56 144 -3,784 +484
benchmarks.run_pgo.osx.arm64.checked.mch 2,037 1,614 87 336 -17,212 +608
benchmarks.run_tiered.osx.arm64.checked.mch 680 563 31 86 -6,108 +248
coreclr_tests.run.osx.arm64.checked.mch 5,373 4,070 175 1,128 -29,224 +2,304
libraries.crossgen2.osx.arm64.checked.mch 1,797 1,172 117 508 -12,372 +1,168
libraries.pmi.osx.arm64.checked.mch 2,215 1,449 189 577 -14,712 +10,284
libraries_tests.run.osx.arm64.Release.mch 9,092 7,473 256 1,363 -92,256 +1,932
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 2,745 1,785 146 814 -17,252 +1,440
realworld.run.osx.arm64.checked.mch 523 348 41 134 -3,912 +624
24,969 18,781 1,098 5,090 -196,832 +19,092

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,794 356,765 229,029 94 (0.02%) 94 (0.02%)
libraries.crossgen2.osx.arm64.checked.mch 234,103 15 234,088 0 (0.00%) 2 (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,095 932,669 1,337,426 772 (0.03%) 775 (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: 11170400 (overridden on cmd)
Total bytes of delta: -3300 (-0.03 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          52 : 5615.dasm (5.22 % of base)
          48 : 6281.dasm (1.06 % of base)
          36 : 21579.dasm (3.56 % of base)
          28 : 16504.dasm (1.56 % of base)
          20 : 1503.dasm (2.26 % of base)
          20 : 821.dasm (4.24 % of base)
          16 : 23747.dasm (2.33 % of base)
          12 : 13214.dasm (0.94 % of base)
          12 : 2536.dasm (1.19 % of base)
           8 : 15750.dasm (0.80 % of base)
           8 : 16459.dasm (2.25 % of base)
           8 : 16460.dasm (2.11 % of base)
           8 : 21459.dasm (0.62 % of base)
           8 : 24099.dasm (1.09 % of base)
           8 : 24361.dasm (4.55 % of base)
           8 : 12878.dasm (1.40 % of base)
           8 : 1622.dasm (0.77 % of base)
           8 : 14108.dasm (0.62 % of base)
           8 : 15146.dasm (1.22 % of base)
           8 : 24779.dasm (1.96 % of base)

Top file improvements (bytes):
        -168 : 17123.dasm (-1.86 % of base)
        -168 : 23044.dasm (-1.55 % of base)
        -104 : 16868.dasm (-3.33 % of base)
        -100 : 6311.dasm (-0.98 % of base)
        -100 : 22474.dasm (-6.23 % of base)
         -88 : 21774.dasm (-5.38 % of base)
         -76 : 2389.dasm (-4.07 % of base)
         -72 : 2379.dasm (-2.05 % of base)
         -68 : 2617.dasm (-3.46 % of base)
         -68 : 10813.dasm (-0.21 % of base)
         -64 : 16867.dasm (-5.05 % of base)
         -64 : 20525.dasm (-19.51 % of base)
         -56 : 18021.dasm (-1.33 % of base)
         -56 : 22395.dasm (-3.02 % of base)
         -52 : 7347.dasm (-1.43 % of base)
         -48 : 3199.dasm (-4.17 % of base)
         -48 : 15153.dasm (-4.18 % of base)
         -44 : 21392.dasm (-0.12 % of base)
         -40 : 22387.dasm (-7.94 % of base)
         -36 : 877.dasm (-3.10 % of base)

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

Top method regressions (bytes):
          52 (5.22 % of base) : 5615.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          48 (1.06 % 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)
          36 (3.56 % of base) : 21579.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          28 (1.56 % of base) : 16504.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          20 (2.26 % of base) : 1503.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Span`1[System.__Canon]):int (FullOpts)
          20 (4.24 % of base) : 821.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
          16 (2.33 % of base) : 23747.dasm - SciMark2.FFT:transform_internal(double[],int) (FullOpts)
          12 (0.94 % of base) : 13214.dasm - EMFloat:AddSubInternalFPF(ubyte,byref,byref,byref) (FullOpts)
          12 (1.19 % of base) : 2536.dasm - System.Globalization.OrdinalCasing:ToUpperOrdinal(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]) (FullOpts)
           8 (1.22 % of base) : 15146.dasm - AssignJagged:Run():double:this (FullOpts)
           8 (4.55 % of base) : 24361.dasm - BenchmarksGame.ReverseComplement_1:InitComplements() (FullOpts)
           8 (1.96 % of base) : 24780.dasm - BenchmarksGame.SpectralNorm_1:MultiplyAtv(int,double[],double[]):this (FullOpts)
           8 (1.96 % of base) : 24779.dasm - BenchmarksGame.SpectralNorm_1:MultiplyAv(int,double[],double[]):this (FullOpts)
           8 (0.62 % of base) : 21459.dasm - Benchstone.BenchF.MatInv4:MinV1(float[],byref,byref,float[],float[]) (FullOpts)
           8 (1.09 % of base) : 24099.dasm - Burgers:GetCalculated3(int,int,double,double,double,double[]):double[] (FullOpts)
           8 (0.62 % of base) : 14108.dasm - EMFloatClass:AddSubInternalFPF(ubyte,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF) (FullOpts)
           8 (0.80 % of base) : 15750.dasm - IDEAEncryption:de_key_idea(ushort[],ushort[]) (FullOpts)
           8 (2.11 % of base) : 16460.dasm - NeuralJagged:adjust_mid_wts(int) (FullOpts)
           8 (2.25 % of base) : 16459.dasm - NeuralJagged:adjust_out_wts() (FullOpts)
           8 (0.77 % of base) : 1622.dasm - System.Collections.Frozen.FrozenHashTable:CalcNumBuckets(System.ReadOnlySpan`1[int],ubyte):int (FullOpts)

Top method improvements (bytes):
        -168 (-1.86 % of base) : 17123.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
        -168 (-1.55 % of base) : 23044.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
        -104 (-3.33 % of base) : 16868.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
        -100 (-6.23 % of base) : 22474.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (FullOpts)
        -100 (-0.98 % of base) : 6311.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         -88 (-5.38 % of base) : 21774.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (FullOpts)
         -76 (-4.07 % of base) : 2389.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -72 (-2.05 % of base) : 2379.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
         -68 (-0.21 % of base) : 10813.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
         -68 (-3.46 % of base) : 2617.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
         -64 (-5.05 % of base) : 16867.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (FullOpts)
         -64 (-19.51 % of base) : 20525.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
         -56 (-3.02 % of base) : 22395.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (FullOpts)
         -56 (-1.33 % of base) : 18021.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -52 (-1.43 % of base) : 7347.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -48 (-4.18 % of base) : 15153.dasm - AssignJagged:first_assignments(int[][],short[][]):int (FullOpts)
         -48 (-4.17 % of base) : 3199.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)
         -44 (-0.12 % of base) : 21392.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
         -40 (-7.94 % of base) : 22387.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (FullOpts)
         -36 (-3.10 % of base) : 877.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)

Top method regressions (percentages):
          52 (5.22 % of base) : 5615.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
           8 (4.55 % of base) : 24361.dasm - BenchmarksGame.ReverseComplement_1:InitComplements() (FullOpts)
          20 (4.24 % of base) : 821.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
           4 (3.57 % of base) : 9993.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (FullOpts)
          36 (3.56 % of base) : 21579.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
           4 (3.03 % of base) : 20868.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder:ToArray():Microsoft.CodeAnalysis.GreenNode[]:this (FullOpts)
           4 (2.70 % of base) : 23028.dasm - BenchmarksGame.Fasta_2:SelectRandom(BenchmarksGame.Fasta_2+Frequency[]):ubyte (FullOpts)
          16 (2.33 % of base) : 23747.dasm - SciMark2.FFT:transform_internal(double[],int) (FullOpts)
          20 (2.26 % of base) : 1503.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Span`1[System.__Canon]):int (FullOpts)
           8 (2.25 % of base) : 16459.dasm - NeuralJagged:adjust_out_wts() (FullOpts)
           8 (2.11 % of base) : 16460.dasm - NeuralJagged:adjust_mid_wts(int) (FullOpts)
           8 (1.96 % of base) : 24780.dasm - BenchmarksGame.SpectralNorm_1:MultiplyAtv(int,double[],double[]):this (FullOpts)
           8 (1.96 % of base) : 24779.dasm - BenchmarksGame.SpectralNorm_1:MultiplyAv(int,double[],double[]):this (FullOpts)
           4 (1.85 % of base) : 20869.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList:List(Microsoft.CodeAnalysis.GreenNode[],int):Microsoft.CodeAnalysis.GreenNode (FullOpts)
           4 (1.85 % of base) : 13381.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,int]:SwapIfGreaterWithValues(System.Span`1[int],System.Span`1[int],int,int) (FullOpts)
           4 (1.72 % of base) : 13763.dasm - System.Number+BigInteger:Add(uint):this (FullOpts)
           4 (1.61 % of base) : 12902.dasm - System.UInt128:<op_Division>g__SubtractDivisor|111_3(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (FullOpts)
          28 (1.56 % of base) : 16504.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
           4 (1.52 % of base) : 12861.dasm - System.SpanHelpers:SequenceCompareTo[int](byref,int,byref,int):int (FullOpts)
           4 (1.52 % of base) : 12204.dasm - System.Text.RegularExpressions.Symbolic.CharSetSolver:CreateBDDFromChar(ushort):System.Text.RegularExpressions.Symbolic.BDD:this (FullOpts)

Top method improvements (percentages):
         -64 (-19.51 % of base) : 20525.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
          -8 (-8.70 % of base) : 5296.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
         -40 (-7.94 % of base) : 22387.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (FullOpts)
        -100 (-6.23 % of base) : 22474.dasm - Benchstone.BenchF.Romber:Test():ubyte: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)
         -16 (-5.56 % of base) : 16774.dasm - Benchstone.BenchI.NDhrystone:Proc8(int[],int[][],int,int) (FullOpts)
         -88 (-5.38 % of base) : 21774.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (FullOpts)
         -64 (-5.05 % of base) : 16867.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (FullOpts)
          -8 (-5.00 % of base) : 15150.dasm - AssignJagged:CopyToAssign(int[][],int[][]) (FullOpts)
          -8 (-4.88 % of base) : 24311.dasm - NumericSortJagged:NumSift(int[],int,int) (FullOpts)
         -16 (-4.76 % of base) : 7388.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:HasCallbacks(int):ubyte:this (FullOpts)
          -4 (-4.76 % of base) : 20487.dasm - System.Collections.IndexerSet`1[System.__Canon]:Array():System.__Canon[]:this (FullOpts)
         -12 (-4.69 % of base) : 1045.dasm - System.Linq.OrderedEnumerable`1[double]:Fill(double[],System.Span`1[double]):this (FullOpts)
          -8 (-4.65 % of base) : 20430.dasm - System.Net.MultiArrayBuffer:Dispose():this (FullOpts)
          -4 (-4.55 % of base) : 15503.dasm - System.Collections.IndexerSetReverse`1[System.__Canon]:Array():System.__Canon[]:this (FullOpts)
          -8 (-4.55 % of base) : 23551.dasm - System.Globalization.GregorianCalendarHelper:get_Eras():int[]:this (FullOpts)
         -16 (-4.44 % of base) : 15171.dasm - System.Boolean:TrimWhiteSpaceAndNull(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
          -8 (-4.35 % of base) : 21245.dasm - Benchstone.BenchI.Puzzle:Fit(int,int):ubyte:this (FullOpts)
         -48 (-4.18 % of base) : 15153.dasm - AssignJagged:first_assignments(int[][],short[][]):int (FullOpts)
          -8 (-4.17 % of base) : 13382.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,int]:InsertionSort(System.Span`1[int],System.Span`1[int]) (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: 34329508 (overridden on cmd)
Total bytes of delta: -16604 (-0.05 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          36 : 43603.dasm (2.00 % of base)
          32 : 83124.dasm (2.40 % of base)
          24 : 66049.dasm (0.65 % of base)
          24 : 42105.dasm (1.34 % of base)
          24 : 42108.dasm (1.34 % of base)
          20 : 82602.dasm (1.28 % of base)
          16 : 78780.dasm (2.34 % of base)
          16 : 78771.dasm (2.50 % of base)
          16 : 78779.dasm (2.50 % of base)
          12 : 17949.dasm (2.13 % of base)
          12 : 37353.dasm (2.40 % of base)
          12 : 44207.dasm (2.40 % of base)
          12 : 58884.dasm (0.89 % of base)
           8 : 41849.dasm (2.25 % of base)
           8 : 41850.dasm (2.11 % of base)
           8 : 59432.dasm (2.11 % of base)
           8 : 66454.dasm (2.11 % of base)
           8 : 73923.dasm (1.08 % of base)
           8 : 76596.dasm (2.11 % of base)
           8 : 33983.dasm (1.68 % of base)

Top file improvements (bytes):
        -340 : 45612.dasm (-5.46 % of base)
        -204 : 80380.dasm (-10.83 % of base)
        -188 : 80379.dasm (-7.97 % of base)
        -164 : 58887.dasm (-1.82 % of base)
        -164 : 72094.dasm (-1.51 % of base)
        -128 : 59418.dasm (-2.13 % of base)
        -116 : 70057.dasm (-6.55 % of base)
        -112 : 83389.dasm (-3.17 % of base)
        -112 : 45614.dasm (-4.38 % of base)
        -112 : 81474.dasm (-3.98 % of base)
        -112 : 65607.dasm (-3.87 % of base)
        -112 : 81808.dasm (-3.16 % of base)
        -108 : 77234.dasm (-3.21 % of base)
        -108 : 44975.dasm (-3.21 % of base)
        -108 : 60064.dasm (-3.21 % of base)
        -108 : 58842.dasm (-3.21 % of base)
         -92 : 45603.dasm (-2.84 % of base)
         -92 : 25229.dasm (-0.28 % of base)
         -84 : 69792.dasm (-1.91 % of base)
         -84 : 71057.dasm (-1.91 % of base)

72 total files with Code Size differences (44 improved, 28 regressed), 20 unchanged.

Top method regressions (bytes):
          36 (2.00 % of base) : 43603.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
          32 (2.40 % of base) : 83124.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
          24 (1.34 % of base) : 42105.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
          24 (1.34 % of base) : 42108.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
          24 (0.65 % of base) : 66049.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
          20 (1.28 % of base) : 82602.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1)
          16 (2.34 % of base) : 78780.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1)
          16 (2.50 % of base) : 78771.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1-OSR)
          16 (2.50 % of base) : 78779.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1-OSR)
          12 (0.89 % of base) : 58884.dasm - Benchstone.BenchF.LLoops:Init():this (Tier1-OSR)
          12 (2.13 % of base) : 17949.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.40 % of base) : 37353.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.40 % of base) : 44207.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
           8 (1.08 % of base) : 73923.dasm - Benchstone.BenchF.SqMtx:Inner(double[][],double[][],int) (Tier1)
           8 (2.11 % of base) : 41850.dasm - NeuralJagged:adjust_mid_wts(int) (Tier1)
           8 (2.25 % of base) : 41849.dasm - NeuralJagged:adjust_out_wts() (Tier1)
           8 (2.11 % of base) : 59432.dasm - System.Linq.Enumerable+SelectArrayIterator`2[double,System.__Canon]:Fill(System.ReadOnlySpan`1[double],System.Span`1[System.__Canon],System.Func`2[double,System.__Canon]) (Tier1-OSR)
           8 (2.11 % of base) : 66454.dasm - System.Linq.Enumerable+SelectArrayIterator`2[double,System.__Canon]:Fill(System.ReadOnlySpan`1[double],System.Span`1[System.__Canon],System.Func`2[double,System.__Canon]) (Tier1-OSR)
           8 (2.11 % of base) : 76596.dasm - System.Linq.Enumerable+SelectArrayIterator`2[double,System.__Canon]:Fill(System.ReadOnlySpan`1[double],System.Span`1[System.__Canon],System.Func`2[double,System.__Canon]) (Tier1-OSR)
           8 (1.68 % of base) : 33983.dasm - System.Linq.Enumerable+SelectArrayIterator`2[double,System.__Canon]:Fill(System.ReadOnlySpan`1[double],System.Span`1[System.__Canon],System.Func`2[double,System.__Canon]) (Tier1-OSR)

Top method improvements (bytes):
        -340 (-5.46 % of base) : 45612.dasm - LUDecomp:Run():double:this (Tier1)
        -204 (-10.83 % of base) : 80380.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
        -188 (-7.97 % of base) : 80379.dasm - NumericSortJagged:Run():double:this (Tier1)
        -164 (-1.82 % of base) : 58887.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
        -164 (-1.51 % of base) : 72094.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
        -128 (-2.13 % of base) : 59418.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
        -116 (-6.55 % of base) : 70057.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (Tier1-OSR)
        -112 (-4.38 % of base) : 45614.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
        -112 (-3.17 % of base) : 83389.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (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) : 77234.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)
        -108 (-3.21 % of base) : 58842.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
         -92 (-0.28 % of base) : 25229.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
         -92 (-2.84 % of base) : 45603.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
         -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)

Top method regressions (percentages):
           4 (3.57 % of base) : 77490.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
           4 (2.50 % of base) : 80377.dasm - NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
           4 (2.50 % of base) : 80361.dasm - NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
          16 (2.50 % of base) : 78771.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1-OSR)
          16 (2.50 % of base) : 78779.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1-OSR)
           4 (2.50 % of base) : 59800.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1-OSR)
           4 (2.50 % of base) : 77477.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1-OSR)
           4 (2.50 % of base) : 79460.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1-OSR)
          32 (2.40 % of base) : 83124.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
          12 (2.40 % of base) : 37353.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.40 % of base) : 44207.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          16 (2.34 % of base) : 78780.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1)
           8 (2.25 % of base) : 41849.dasm - NeuralJagged:adjust_out_wts() (Tier1)
          12 (2.13 % of base) : 17949.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
           8 (2.11 % of base) : 41850.dasm - NeuralJagged:adjust_mid_wts(int) (Tier1)
           8 (2.11 % of base) : 59432.dasm - System.Linq.Enumerable+SelectArrayIterator`2[double,System.__Canon]:Fill(System.ReadOnlySpan`1[double],System.Span`1[System.__Canon],System.Func`2[double,System.__Canon]) (Tier1-OSR)
           8 (2.11 % of base) : 66454.dasm - System.Linq.Enumerable+SelectArrayIterator`2[double,System.__Canon]:Fill(System.ReadOnlySpan`1[double],System.Span`1[System.__Canon],System.Func`2[double,System.__Canon]) (Tier1-OSR)
           8 (2.11 % of base) : 76596.dasm - System.Linq.Enumerable+SelectArrayIterator`2[double,System.__Canon]:Fill(System.ReadOnlySpan`1[double],System.Span`1[System.__Canon],System.Func`2[double,System.__Canon]) (Tier1-OSR)
           8 (2.11 % of base) : 65320.dasm - System.Linq.Enumerable+SelectArrayIterator`2[double,System.__Canon]:Fill(System.ReadOnlySpan`1[double],System.Span`1[System.__Canon],System.Func`2[double,System.__Canon]) (Tier1-OSR)
          36 (2.00 % of base) : 43603.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)

Top method improvements (percentages):
         -40 (-10.99 % of base) : 69153.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
        -204 (-10.83 % of base) : 80380.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
         -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)
        -188 (-7.97 % of base) : 80379.dasm - NumericSortJagged:Run():double:this (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)
         -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)
        -116 (-6.55 % of base) : 70057.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (Tier1-OSR)
         -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)
        -340 (-5.46 % of base) : 45612.dasm - LUDecomp:Run():double:this (Tier1)
         -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)
         -28 (-5.22 % of base) : 31972.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (Instrumented Tier0)
         -28 (-5.22 % of base) : 31976.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (Instrumented Tier0)
          -8 (-5.00 % of base) : 38131.dasm - AssignJagged:CopyToAssign(int[][],int[][]) (Tier1)
          -8 (-4.88 % of base) : 80370.dasm - NumericSortJagged:NumSift(int[],int,int) (Tier1)
         -12 (-4.76 % of base) : 58841.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
          -8 (-4.76 % of base) : 32492.dasm - System.Xml.Schema.XsdDateTime:Write2Digits(System.Span`1[ushort],int,int) (Tier0)


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

Detail diffs



Top file regressions (bytes):
          28 : 32061.dasm (1.56 % of base)
          24 : 42546.dasm (1.19 % of base)
          20 : 8226.dasm (4.24 % of base)
          16 : 46644.dasm (2.48 % of base)
          16 : 46647.dasm (2.33 % of base)
          12 : 27709.dasm (0.94 % of base)
           8 : 21944.dasm (0.80 % of base)
           8 : 27806.dasm (0.62 % of base)
           8 : 29472.dasm (1.22 % of base)
           8 : 30977.dasm (0.80 % of base)
           8 : 31920.dasm (2.25 % of base)
           8 : 31921.dasm (2.11 % of base)
           8 : 47925.dasm (0.86 % of base)
           8 : 46984.dasm (1.39 % of base)
           4 : 17876.dasm (0.76 % of base)
           4 : 23630.dasm (2.08 % of base)
           4 : 27708.dasm (0.35 % of base)
           4 : 27804.dasm (0.32 % of base)
           4 : 27808.dasm (0.35 % of base)
           4 : 39951.dasm (2.50 % of base)

Top file improvements (bytes):
        -168 : 45044.dasm (-1.55 % of base)
        -168 : 39846.dasm (-1.86 % of base)
        -128 : 32754.dasm (-4.40 % of base)
        -112 : 43029.dasm (-4.83 % of base)
        -112 : 47458.dasm (-3.98 % of base)
        -104 : 32757.dasm (-3.33 % of base)
         -96 : 44688.dasm (-5.45 % of base)
         -68 : 14783.dasm (-0.78 % of base)
         -68 : 21350.dasm (-0.21 % of base)
         -64 : 32761.dasm (-5.05 % of base)
         -60 : 29463.dasm (-4.98 % of base)
         -56 : 39080.dasm (-1.36 % of base)
         -56 : 42618.dasm (-3.74 % of base)
         -52 : 17295.dasm (-4.26 % of base)
         -52 : 44348.dasm (-2.56 % of base)
         -52 : 17666.dasm (-1.36 % of base)
         -52 : 43570.dasm (-3.23 % of base)
         -52 : 47478.dasm (-3.28 % of base)
         -48 : 433.dasm (-1.35 % of base)
         -48 : 29466.dasm (-4.18 % of base)

76 total files with Code Size differences (50 improved, 26 regressed), 20 unchanged.

Top method regressions (bytes):
          28 (1.56 % of base) : 32061.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
          24 (1.19 % of base) : 42546.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1-OSR)
          20 (4.24 % of base) : 8226.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          16 (2.33 % of base) : 46647.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1)
          16 (2.48 % of base) : 46644.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1-OSR)
          12 (0.94 % of base) : 27709.dasm - EMFloat:AddSubInternalFPF(ubyte,byref,byref,byref) (Tier1)
           8 (1.22 % of base) : 29472.dasm - AssignJagged:Run():double:this (Tier1)
           8 (1.39 % of base) : 46984.dasm - Burgers:GetCalculated3(int,int,double,double,double,double[]):double[] (Tier1-OSR)
           8 (0.62 % of base) : 27806.dasm - EMFloatClass:AddSubInternalFPF(ubyte,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF) (Tier1)
           8 (0.80 % of base) : 30977.dasm - IDEAEncryption:de_key_idea(ushort[],ushort[]) (Tier1)
           8 (2.11 % of base) : 31921.dasm - NeuralJagged:adjust_mid_wts(int) (Tier1)
           8 (2.25 % of base) : 31920.dasm - NeuralJagged:adjust_out_wts() (Tier1)
           8 (0.86 % of base) : 47925.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
           8 (0.80 % of base) : 21944.dasm - System.Collections.Frozen.FrozenHashTable:CalcNumBuckets(System.ReadOnlySpan`1[int],ubyte):int (Tier1-OSR)
           4 (1.32 % of base) : 39826.dasm - Benchstone.BenchI.Pi:ComputePi(int[]):int[] (Tier1-OSR)
           4 (0.35 % of base) : 27708.dasm - EMFloat:MultiplyInternalFPF(byref,byref,byref) (Tier1)
           4 (0.32 % of base) : 27804.dasm - EMFloatClass:DivideInternalFPF(EMFloatClass+InternalFPF,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF) (Tier1)
           4 (0.35 % of base) : 27808.dasm - EMFloatClass:MultiplyInternalFPF(EMFloatClass+InternalFPF,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF) (Tier1)
           4 (2.50 % of base) : 47221.dasm - NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
           4 (0.26 % of base) : 47928.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1)

Top method improvements (bytes):
        -168 (-1.86 % of base) : 39846.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
        -168 (-1.55 % of base) : 45044.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
        -128 (-4.40 % of base) : 32754.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
        -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)
        -104 (-3.33 % of base) : 32757.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
         -96 (-5.45 % 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)
         -64 (-5.05 % of base) : 32761.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
         -60 (-4.98 % of base) : 29463.dasm - AssignJagged:first_assignments(int[][],short[][]):int (Tier1-OSR)
         -56 (-3.74 % of base) : 42618.dasm - Benchstone.BenchF.MatInv4:MinV2(float[],byref,byref,float[],float[]) (Tier1-OSR)
         -56 (-1.36 % of base) : 39080.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
         -52 (-1.36 % of base) : 17666.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier0-FullOpts)
         -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 (4.24 % of base) : 8226.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
           4 (3.57 % of base) : 46272.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
           4 (2.50 % of base) : 47221.dasm - NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
           4 (2.50 % of base) : 39951.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1-OSR)
          16 (2.48 % of base) : 46644.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1-OSR)
          16 (2.33 % of base) : 46647.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1)
           8 (2.25 % of base) : 31920.dasm - NeuralJagged:adjust_out_wts() (Tier1)
           8 (2.11 % of base) : 31921.dasm - NeuralJagged:adjust_mid_wts(int) (Tier1)
           4 (2.08 % of base) : 23630.dasm - System.Text.RegularExpressions.Symbolic.CharSetSolver:CreateBDDFromChar(ushort):System.Text.RegularExpressions.Symbolic.BDD:this (Tier1)
          28 (1.56 % of base) : 32061.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
           8 (1.39 % of base) : 46984.dasm - Burgers:GetCalculated3(int,int,double,double,double,double[]):double[] (Tier1-OSR)
           4 (1.32 % of base) : 39826.dasm - Benchstone.BenchI.Pi:ComputePi(int[]):int[] (Tier1-OSR)
           8 (1.22 % of base) : 29472.dasm - AssignJagged:Run():double:this (Tier1)
          24 (1.19 % of base) : 42546.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1-OSR)
           4 (1.05 % of base) : 6236.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:CreateEntryNoResize(System.__Canon,System.__Canon):this (Tier1)
           4 (1.02 % of base) : 14147.dasm - System.Random+CompatPrng:Initialize(int):this (Tier1)
          12 (0.94 % of base) : 27709.dasm - EMFloat:AddSubInternalFPF(ubyte,byref,byref,byref) (Tier1)
           8 (0.86 % of base) : 47925.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
           8 (0.80 % of base) : 30977.dasm - IDEAEncryption:de_key_idea(ushort[],ushort[]) (Tier1)
           8 (0.80 % of base) : 21944.dasm - System.Collections.Frozen.FrozenHashTable:CalcNumBuckets(System.ReadOnlySpan`1[int],ubyte):int (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)
         -36 (-9.57 % of base) : 44021.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
         -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)
         -16 (-5.56 % of base) : 32086.dasm - Benchstone.BenchI.NDhrystone:Proc8(int[],int[][],int,int) (Tier1)
         -24 (-5.56 % of base) : 1939.dasm - System.Collections.Generic.ArraySortHelper`1[int]:InsertionSort(System.Span`1[int],System.Comparison`1[int]) (Tier0)
         -96 (-5.45 % of base) : 44688.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (Tier1-OSR)
         -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)
         -20 (-5.21 % of base) : 44019.dasm - Benchstone.BenchI.XposMatrix:Test():ubyte:this (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)
         -64 (-5.05 % of base) : 32761.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
          -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)


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: 486273168 (overridden on cmd)
Total bytes of diff: 486246248 (overridden on cmd)
Total bytes of delta: -26920 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

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)
          60 : 400304.dasm (5.77 % of base)
          60 : 1979.dasm (8.72 % of base)
          36 : 6127.dasm (8.49 % of base)
          36 : 252536.dasm (8.49 % of base)
          36 : 487731.dasm (0.44 % of base)
          28 : 364552.dasm (6.60 % of base)
          28 : 517158.dasm (3.93 % of base)
          24 : 685.dasm (1.44 % of base)
          24 : 516471.dasm (3.68 % of base)
          20 : 269199.dasm (4.72 % of base)
          20 : 284704.dasm (4.72 % of base)
          20 : 299272.dasm (4.72 % of base)
          20 : 279435.dasm (4.72 % of base)
          20 : 287196.dasm (4.72 % of base)
          20 : 28811.dasm (4.72 % of base)
          20 : 304788.dasm (4.72 % of base)
          20 : 306732.dasm (4.72 % of base)

Top file improvements (bytes):
        -332 : 249229.dasm (-5.32 % of base)
        -208 : 248677.dasm (-4.18 % of base)
        -204 : 248666.dasm (-9.94 % of base)
        -192 : 248670.dasm (-7.99 % of base)
        -168 : 492653.dasm (-1.86 % of base)
        -168 : 492710.dasm (-1.55 % of base)
        -124 : 248968.dasm (-5.26 % of base)
        -120 : 248917.dasm (-3.66 % of base)
        -112 : 249223.dasm (-4.38 % of base)
        -104 : 493671.dasm (-3.33 % of base)
        -100 : 401880.dasm (-6.48 % of base)
        -100 : 522734.dasm (-2.43 % of base)
        -100 : 517166.dasm (-2.43 % of base)
         -92 : 249219.dasm (-2.84 % of base)
         -92 : 480697.dasm (-3.10 % of base)
         -76 : 492956.dasm (-4.92 % of base)
         -68 : 400811.dasm (-4.23 % of base)
         -64 : 248943.dasm (-2.81 % of base)
         -64 : 493670.dasm (-5.05 % of base)
         -60 : 582202.dasm (-7.94 % of base)

78 total files with Code Size differences (54 improved, 24 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)
          60 (8.72 % of base) : 1979.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Instrumented Tier1)
          60 (5.77 % of base) : 400304.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          36 (0.44 % of base) : 487731.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)
          36 (8.49 % of base) : 6127.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          36 (8.49 % of base) : 252536.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          28 (3.93 % of base) : 517158.dasm - struct1:ProcessJagged2DArray(byref) (FullOpts)
          28 (6.60 % of base) : 364552.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          24 (3.68 % of base) : 516471.dasm - class1:ProcessJagged2DArray(byref) (FullOpts)
          24 (1.44 % of base) : 685.dasm - System.IO.PathInternal:RemoveRelativeSegments(System.ReadOnlySpan`1[ushort],int,byref):ubyte (Instrumented Tier1)
          20 (4.72 % of base) : 269199.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 284704.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 299272.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 279435.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 287196.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 28811.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 304788.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 306732.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

Top method improvements (bytes):
        -332 (-5.32 % of base) : 249229.dasm - LUDecomp:Run():double:this (Tier1)
        -208 (-4.18 % of base) : 248677.dasm - NumericSortJagged:Run():double:this (Tier1)
        -204 (-9.94 % of base) : 248666.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
        -192 (-7.99 % of base) : 248670.dasm - NumericSortJagged:Run():double:this (Tier1-OSR)
        -168 (-1.86 % of base) : 492653.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
        -168 (-1.55 % of base) : 492710.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
        -124 (-5.26 % of base) : 248968.dasm - AssignJagged:Run():double:this (Tier1)
        -120 (-3.66 % of base) : 248917.dasm - EMFloatClass:SetupCPUEmFloatArrays(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int) (Tier1)
        -112 (-4.38 % of base) : 249223.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
        -104 (-3.33 % of base) : 493671.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
        -100 (-6.48 % of base) : 401880.dasm - Simple_Array_Test:TestEntryPoint():int (FullOpts)
        -100 (-2.43 % of base) : 522734.dasm - Test_structarr_InnerProd.intmm:TestEntryPoint():int (FullOpts)
        -100 (-2.43 % of base) : 517166.dasm - Test_structarr_InnerProd.intmm:TestEntryPoint():int (FullOpts)
         -92 (-2.84 % of base) : 249219.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
         -92 (-3.10 % of base) : 480697.dasm - Test:TestEntryPoint():int (FullOpts)
         -76 (-4.92 % of base) : 492956.dasm - Benchstone.BenchF.Romber:Bench():ubyte (FullOpts)
         -68 (-4.23 % of base) : 400811.dasm - Complex_Array_Test:TestEntryPoint():int (FullOpts)
         -64 (-2.81 % of base) : 248943.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
         -64 (-5.05 % of base) : 493670.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (FullOpts)
         -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)

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)
          60 (8.72 % of base) : 1979.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Instrumented Tier1)
          36 (8.49 % of base) : 6127.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          36 (8.49 % of base) : 252536.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          28 (6.60 % of base) : 364552.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          60 (5.77 % of base) : 400304.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          20 (4.72 % of base) : 269199.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 284704.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 299272.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 279435.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 287196.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 28811.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 304788.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 306732.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 219303.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 349999.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 385774.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 386654.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

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)
         -40 (-10.99 % of base) : 239922.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
         -24 (-10.91 % of base) : 513516.dasm - System.Collections.Generic.GenericArraySortHelper`2[uint,System.__Canon]:InsertionSort(System.Span`1[uint],System.Span`1[System.__Canon]) (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) : 517460.dasm - Test_unsafe_4.TestApp:test_368(ulong,long):long (FullOpts)
          -4 (-10.00 % of base) : 522862.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)
        -204 (-9.94 % of base) : 248666.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
          -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) : 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)


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: 55715976 (overridden on cmd)
Total bytes of diff: 55704772 (overridden on cmd)
Total bytes of delta: -11204 (-0.02 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          52 : 206856.dasm (5.22 % of base)
          52 : 229013.dasm (5.22 % of base)
          40 : 228975.dasm (2.08 % of base)
          36 : 157518.dasm (2.18 % of base)
          36 : 111653.dasm (3.36 % of base)
          36 : 78084.dasm (8.11 % of base)
          32 : 106304.dasm (1.14 % of base)
          32 : 74791.dasm (5.16 % of base)
          32 : 21454.dasm (3.16 % of base)
          28 : 22555.dasm (3.57 % of base)
          24 : 150102.dasm (0.54 % of base)
          24 : 156661.dasm (1.52 % of base)
          24 : 160674.dasm (1.95 % of base)
          20 : 155657.dasm (3.03 % of base)
          20 : 22437.dasm (4.10 % of base)
          20 : 67460.dasm (1.69 % of base)
          20 : 8183.dasm (7.14 % of base)
          20 : 8184.dasm (7.14 % of base)
          20 : 8187.dasm (7.14 % of base)
          20 : 8181.dasm (7.25 % of base)

Top file improvements (bytes):
        -376 : 140498.dasm (-1.38 % of base)
        -176 : 143930.dasm (-7.12 % of base)
        -112 : 79913.dasm (-5.92 % of base)
        -100 : 208772.dasm (-2.59 % of base)
        -100 : 144337.dasm (-2.65 % of base)
         -96 : 2206.dasm (-0.89 % of base)
         -92 : 18382.dasm (-79.31 % of base)
         -92 : 18735.dasm (-79.31 % of base)
         -92 : 18619.dasm (-79.31 % of base)
         -88 : 195012.dasm (-3.35 % of base)
         -88 : 193199.dasm (-3.29 % of base)
         -84 : 2209.dasm (-3.52 % of base)
         -80 : 150468.dasm (-1.12 % of base)
         -80 : 46396.dasm (-1.41 % of base)
         -76 : 139206.dasm (-1.20 % of base)
         -72 : 160027.dasm (-2.32 % of base)
         -64 : 150806.dasm (-1.59 % of base)
         -64 : 159710.dasm (-1.77 % of base)
         -64 : 67459.dasm (-4.02 % of base)
         -64 : 21635.dasm (-16.67 % of base)

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

Top method regressions (bytes):
          52 (5.22 % of base) : 206856.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          52 (5.22 % of base) : 229013.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          40 (2.08 % of base) : 228975.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          36 (3.36 % of base) : 111653.dasm - Microsoft.Diagnostics.Tracing.StackSources.StraceStackSource:ProcessRecord(System.Text.StringBuilder):this (FullOpts)
          36 (8.11 % of base) : 78084.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel+groupByRefTypeParallel@2301-1[System.__Canon,System.__Canon]:Invoke(int):this (FullOpts)
          36 (2.18 % of base) : 157518.dasm - System.Xml.XmlTextReaderImpl:ParseNumericCharRefInline(int,ubyte,System.Text.StringBuilder,byref,byref):int:this (FullOpts)
          32 (1.14 % of base) : 106304.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousTypeTemplateSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
          32 (5.16 % of base) : 74791.dasm - Microsoft.FSharp.Core.PrintfImpl+FormatString:findNextFormatSpecifier(System.String,byref):System.String (FullOpts)
          32 (3.16 % of base) : 21454.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Span`1[System.__Canon]):int (FullOpts)
          28 (3.57 % of base) : 22555.dasm - System.Resources.ResourceReader:UseReflectionToGetType(int):System.Type:this (FullOpts)
          24 (0.54 % of base) : 150102.dasm - System.Data.ExpressionParser:Parse():System.Data.ExpressionNode:this (FullOpts)
          24 (1.95 % of base) : 160674.dasm - System.Xml.Serialization.CodeGenerator:InitILGeneration(System.Type[],System.String[],ubyte):this (FullOpts)
          24 (1.52 % of base) : 156661.dasm - System.Xml.Serialization.XmlSerializer:FromMappings(System.Xml.Serialization.XmlMapping[],System.Type):System.Xml.Serialization.XmlSerializer[] (FullOpts)
          20 (1.69 % of base) : 67460.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)
          20 (4.10 % of base) : 22437.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
          20 (7.14 % of base) : 8183.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[int],System.Runtime.Intrinsics.Vector512`1[int]):System.Runtime.Intrinsics.Vector512`1[int] (FullOpts)
          20 (7.14 % of base) : 8186.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[long],System.Runtime.Intrinsics.Vector512`1[long]):System.Runtime.Intrinsics.Vector512`1[long] (FullOpts)
          20 (7.25 % of base) : 8181.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[short],System.Runtime.Intrinsics.Vector512`1[short]):System.Runtime.Intrinsics.Vector512`1[short] (FullOpts)
          20 (7.14 % of base) : 8184.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[uint],System.Runtime.Intrinsics.Vector512`1[uint]):System.Runtime.Intrinsics.Vector512`1[uint] (FullOpts)
          20 (7.14 % of base) : 8187.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[ulong],System.Runtime.Intrinsics.Vector512`1[ulong]):System.Runtime.Intrinsics.Vector512`1[ulong] (FullOpts)

Top method improvements (bytes):
        -376 (-1.38 % 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)
        -176 (-7.12 % of base) : 143930.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
        -112 (-5.92 % 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)
        -100 (-2.65 % of base) : 144337.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:Fix(int):ubyte:this (FullOpts)
        -100 (-2.59 % of base) : 208772.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,System.__Canon]:MergeSortCooperatively():this (FullOpts)
         -96 (-0.89 % of base) : 2206.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase: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 (-3.35 % of base) : 195012.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -88 (-3.29 % of base) : 193199.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -84 (-3.52 % of base) : 2209.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -80 (-1.41 % of base) : 46396.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)
         -80 (-1.12 % of base) : 150468.dasm - System.Data.RBTree`1[int]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
         -76 (-1.20 % of base) : 139206.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
         -72 (-2.32 % of base) : 160027.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
         -64 (-4.02 % of base) : 67459.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)
         -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 (-1.77 % of base) : 159710.dasm - System.Xml.Schema.XmlSchemaValidator:EndElementIdentityConstraints(System.Object,System.String,System.Xml.Schema.XmlSchemaDatatype):this (FullOpts)

Top method regressions (percentages):
          36 (8.11 % of base) : 78084.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel+groupByRefTypeParallel@2301-1[System.__Canon,System.__Canon]:Invoke(int):this (FullOpts)
          20 (7.25 % of base) : 8181.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[short],System.Runtime.Intrinsics.Vector512`1[short]):System.Runtime.Intrinsics.Vector512`1[short] (FullOpts)
          20 (7.25 % of base) : 8182.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[ushort],System.Runtime.Intrinsics.Vector512`1[ushort]):System.Runtime.Intrinsics.Vector512`1[ushort] (FullOpts)
          20 (7.14 % of base) : 8183.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[int],System.Runtime.Intrinsics.Vector512`1[int]):System.Runtime.Intrinsics.Vector512`1[int] (FullOpts)
          20 (7.14 % of base) : 8186.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[long],System.Runtime.Intrinsics.Vector512`1[long]):System.Runtime.Intrinsics.Vector512`1[long] (FullOpts)
          20 (7.14 % of base) : 8184.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[uint],System.Runtime.Intrinsics.Vector512`1[uint]):System.Runtime.Intrinsics.Vector512`1[uint] (FullOpts)
          20 (7.14 % of base) : 8187.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[ulong],System.Runtime.Intrinsics.Vector512`1[ulong]):System.Runtime.Intrinsics.Vector512`1[ulong] (FullOpts)
          52 (5.22 % of base) : 206856.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          52 (5.22 % of base) : 229013.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          32 (5.16 % of base) : 74791.dasm - Microsoft.FSharp.Core.PrintfImpl+FormatString:findNextFormatSpecifier(System.String,byref):System.String (FullOpts)
          12 (4.17 % of base) : 8188.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[double],System.Runtime.Intrinsics.Vector512`1[long]):System.Runtime.Intrinsics.Vector512`1[double] (FullOpts)
          12 (4.17 % of base) : 8185.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[float],System.Runtime.Intrinsics.Vector512`1[int]):System.Runtime.Intrinsics.Vector512`1[float] (FullOpts)
          20 (4.10 % of base) : 22437.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
           4 (3.70 % of base) : 218660.dasm - System.Numerics.BigIntegerCalculator:AddDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint]):uint (FullOpts)
          12 (3.57 % of base) : 40368.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(int,byref):ubyte:this (FullOpts)
          28 (3.57 % of base) : 22555.dasm - System.Resources.ResourceReader:UseReflectionToGetType(int):System.Type:this (FullOpts)
          36 (3.36 % of base) : 111653.dasm - Microsoft.Diagnostics.Tracing.StackSources.StraceStackSource:ProcessRecord(System.Text.StringBuilder):this (FullOpts)
           4 (3.23 % of base) : 218661.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (FullOpts)
          32 (3.16 % of base) : 21454.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Span`1[System.__Canon]):int (FullOpts)
           8 (3.03 % of base) : 8043.dasm - System.Runtime.Intrinsics.Vector256:Shuffle(System.Runtime.Intrinsics.Vector256`1[ushort],System.Runtime.Intrinsics.Vector256`1[ushort]):System.Runtime.Intrinsics.Vector256`1[ushort] (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)
         -56 (-8.81 % of base) : 15593.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -48 (-8.51 % of base) : 15592.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
         -16 (-8.33 % of base) : 172802.dasm - Microsoft.CodeAnalysis.XmlCharType:IsOnlyCharData(System.String):int (FullOpts)
         -16 (-8.33 % of base) : 27489.dasm - Microsoft.CodeAnalysis.XmlCharType:IsOnlyCharData(System.String):int (FullOpts)
         -56 (-8.00 % of base) : 195693.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (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)
         -56 (-7.69 % of base) : 195692.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
         -56 (-7.69 % of base) : 193844.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase (FullOpts)
          -4 (-7.69 % of base) : 16216.dasm - System.Globalization.CharUnicodeInfo:GetNumericValueNoBoundsCheck(uint):double (FullOpts)
          -8 (-7.69 % of base) : 20348.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
         -56 (-7.53 % of base) : 193845.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo (FullOpts)
        -176 (-7.12 % of base) : 143930.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
         -16 (-6.56 % of base) : 137994.dasm - System.Dynamic.Utils.TypeExtensions:MatchesArgumentTypes(System.Reflection.MethodInfo,System.Type[]):ubyte (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: 80190480 (overridden on cmd)
Total bytes of delta: -4428 (-0.01 % 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)
         404 : 19972.dasm (100.00 % of base)
         404 : 19978.dasm (100.00 % of base)
         404 : 19539.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)
         128 : 21931.dasm (76.19 % of base)
         108 : 12259.dasm (65.85 % of base)
         104 : 12354.dasm (27.66 % of base)
         104 : 12357.dasm (27.66 % of base)
         100 : 12431.dasm (64.10 % of base)
         100 : 12435.dasm (64.10 % of base)
          52 : 259533.dasm (5.22 % of base)
          48 : 215351.dasm (1.57 % of base)

Top file improvements (bytes):
        -180 : 189302.dasm (-0.67 % of base)
        -156 : 110817.dasm (-2.80 % of base)
        -120 : 174241.dasm (-3.87 % of base)
        -120 : 61257.dasm (-1.92 % of base)
        -112 : 132426.dasm (-3.20 % of base)
        -100 : 5214.dasm (-0.98 % of base)
         -96 : 278319.dasm (-2.54 % of base)
         -92 : 211519.dasm (-0.96 % of base)
         -88 : 103624.dasm (-6.29 % of base)
         -84 : 213720.dasm (-1.18 % of base)
         -84 : 278310.dasm (-2.18 % of base)
         -80 : 300042.dasm (-3.27 % of base)
         -80 : 256063.dasm (-3.20 % of base)
         -76 : 133480.dasm (-3.06 % of base)
         -76 : 5216.dasm (-4.07 % of base)
         -76 : 5217.dasm (-2.80 % of base)
         -72 : 207574.dasm (-1.99 % of base)
         -72 : 136950.dasm (-1.49 % of base)
         -68 : 27995.dasm (-3.48 % of base)
         -64 : 1955.dasm (-19.51 % of base)

70 total files with Code Size differences (47 improved, 23 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)
         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)
         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)
         104 (27.66 % of base) : 12354.dasm - System.Numerics.Vector:Narrow(System.Numerics.Vector`1[int],System.Numerics.Vector`1[int]):System.Numerics.Vector`1[short] (FullOpts)
         104 (27.66 % of base) : 12357.dasm - System.Numerics.Vector:Narrow(System.Numerics.Vector`1[uint],System.Numerics.Vector`1[uint]):System.Numerics.Vector`1[ushort] (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 (5.22 % of base) : 259533.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          48 (1.57 % of base) : 215351.dasm - System.Data.ProviderBase.SchemaMapping:SetupSchemaWithoutKeyInfo(int,int,ubyte,System.Data.DataColumn,System.Object):System.Object[]:this (FullOpts)

Top method improvements (bytes):
        -180 (-0.67 % 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)
        -156 (-2.80 % 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)
        -120 (-1.92 % 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)
        -120 (-3.87 % of base) : 174241.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
        -112 (-3.20 % of base) : 132426.dasm - Microsoft.CodeAnalysis.VisualBasic.ExpressionLambdaRewriter:VisitObjectInitializer(Microsoft.CodeAnalysis.VisualBasic.BoundObjectInitializerExpression):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
        -100 (-0.98 % of base) : 5214.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         -96 (-2.54 % of base) : 278319.dasm - System.Linq.Parallel.SortHelper`2[ubyte,System.Nullable`1[int]]:MergeSortCooperatively():this (FullOpts)
         -92 (-0.96 % of base) : 211519.dasm - System.Data.XmlTreeGen:SchemaTree(System.Xml.XmlDocument,System.Xml.XmlWriter,System.Data.DataSet,System.Data.DataTable,ubyte):this (FullOpts)
         -88 (-6.29 % 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)
         -84 (-1.18 % of base) : 213720.dasm - System.Data.RBTree`1[ubyte]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
         -84 (-2.18 % of base) : 278310.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,System.Nullable`1[int]]:MergeSortCooperatively():this (FullOpts)
         -80 (-3.27 % of base) : 300042.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -80 (-3.20 % of base) : 256063.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -76 (-3.06 % of base) : 133480.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)
         -76 (-4.07 % of base) : 5216.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -76 (-2.80 % of base) : 5217.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -72 (-1.49 % of base) : 136950.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousTypeTemplateSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
         -72 (-1.99 % of base) : 207574.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
         -68 (-3.48 % of base) : 27995.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
         -64 (-19.51 % of base) : 1955.dasm - System.Array+SorterObjectArray:SwapIfGreater(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)
         104 (27.66 % of base) : 12354.dasm - System.Numerics.Vector:Narrow(System.Numerics.Vector`1[int],System.Numerics.Vector`1[int]):System.Numerics.Vector`1[short] (FullOpts)
         104 (27.66 % of base) : 12357.dasm - System.Numerics.Vector:Narrow(System.Numerics.Vector`1[uint],System.Numerics.Vector`1[uint]):System.Numerics.Vector`1[ushort] (FullOpts)
          32 (26.67 % of base) : 214160.dasm - System.Data.ExpressionParser:ScanName():this (FullOpts)
          20 (9.09 % of base) : 21020.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[short],System.Runtime.Intrinsics.Vector512`1[short]):System.Runtime.Intrinsics.Vector512`1[short] (FullOpts)

Top method improvements (percentages):
         -64 (-19.51 % of base) : 1955.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
         -60 (-10.49 % of base) : 5221.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -48 (-9.60 % of base) : 5220.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
          -8 (-9.09 % of base) : 303759.dasm - System.Drawing.KnownColorTable:KnownColorToArgb(int):uint (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)
         -12 (-7.69 % of base) : 91905.dasm - ILCompiler.IBC.WriterExtensions:WriteEncodedString(System.IO.BinaryWriter,System.String) (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)
         -16 (-6.56 % of base) : 3561.dasm - System.Type:ImplementInterface(System.Type):ubyte:this (FullOpts)
         -12 (-6.52 % of base) : 217339.dasm - System.ComponentModel.PropertyDescriptorCollection:System.Collections.IDictionary.get_Keys():System.Collections.ICollection:this (FullOpts)
          -8 (-6.45 % of base) : 103685.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel+Map@2060-2[System.__Canon,System.Nullable`1[int]]:Invoke(int):this (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: 323294984 (overridden on cmd)
Total bytes of delta: -90324 (-0.03 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          84 : 542086.dasm (0.69 % of base)
          80 : 86571.dasm (5.35 % of base)
          76 : 104991.dasm (4.15 % of base)
          60 : 170484.dasm (9.15 % of base)
          56 : 127211.dasm (1.22 % of base)
          48 : 202214.dasm (4.41 % of base)
          48 : 501668.dasm (0.54 % of base)
          36 : 614057.dasm (1.49 % of base)
          32 : 169198.dasm (0.33 % of base)
          28 : 320553.dasm (1.53 % of base)
          28 : 363755.dasm (0.88 % of base)
          28 : 370845.dasm (0.88 % of base)
          28 : 377677.dasm (1.54 % of base)
          28 : 97223.dasm (0.22 % of base)
          24 : 542902.dasm (5.66 % of base)
          24 : 316984.dasm (5.83 % of base)
          24 : 3359.dasm (1.44 % of base)
          24 : 570116.dasm (5.77 % of base)
          20 : 360815.dasm (4.81 % of base)
          20 : 645.dasm (1.18 % of base)

Top file improvements (bytes):
        -540 : 613674.dasm (-0.27 % of base)
        -256 : 56996.dasm (-1.28 % of base)
        -252 : 483363.dasm (-1.95 % of base)
        -228 : 631865.dasm (-1.76 % of base)
        -228 : 179011.dasm (-1.76 % of base)
        -224 : 237667.dasm (-1.76 % of base)
        -220 : 330209.dasm (-1.70 % of base)
        -204 : 297991.dasm (-3.63 % of base)
        -200 : 112531.dasm (-1.54 % of base)
        -192 : 272609.dasm (-1.54 % of base)
        -188 : 628786.dasm (-1.50 % of base)
        -184 : 500187.dasm (-1.47 % of base)
        -168 : 569070.dasm (-1.39 % of base)
        -168 : 334250.dasm (-1.31 % of base)
        -164 : 371165.dasm (-1.55 % of base)
        -152 : 366128.dasm (-1.21 % of base)
        -148 : 50590.dasm (-2.69 % of base)
        -144 : 298427.dasm (-2.67 % of base)
        -144 : 171719.dasm (-1.14 % of base)
        -140 : 299182.dasm (-1.44 % of base)

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

Top method regressions (bytes):
          84 (0.69 % of base) : 542086.dasm - Xunit.Sdk.TypeUtility:ResolveGenericTypes(Xunit.Abstractions.IMethodInfo,System.Object[]):Xunit.Abstractions.ITypeInfo[] (Tier1)
          80 (5.35 % of base) : 86571.dasm - System.IO.FileSystem:CreateParentsAndDirectory(System.String,int) (Instrumented Tier1)
          76 (4.15 % of base) : 104991.dasm - Microsoft.CSharp.RuntimeBinder.RuntimeBinder:CreateArgumentArray(Microsoft.CSharp.RuntimeBinder.ICSharpBinder,System.Linq.Expressions.Expression[],System.Dynamic.DynamicMetaObject[]):Microsoft.CSharp.RuntimeBinder.ArgumentObject[]:this (Tier1)
          60 (9.15 % of base) : 170484.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Instrumented Tier1)
          56 (1.22 % of base) : 127211.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateArgumentCallSites(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain,System.Reflection.ParameterInfo[],ubyte):Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite[]:this (Tier1)
          48 (4.41 % of base) : 202214.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Span`1[System.__Canon]):int (Instrumented Tier1)
          48 (0.54 % of base) : 501668.dasm - System.Reflection.Emit.CustomAttributeBuilder:.ctor(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]):this (Tier1)
          36 (1.49 % of base) : 614057.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)
          32 (0.33 % of base) : 169198.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
          28 (0.22 % of base) : 97223.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
          28 (1.53 % of base) : 320553.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
          28 (1.54 % of base) : 377677.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
          28 (0.88 % of base) : 363755.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[float]:<Divide_TwoTensors_InPlace>b__141_0(int):this (Tier1)
          28 (0.88 % of base) : 370845.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[float]:<Divide_TwoTensors_InPlace>b__141_0(int):this (Tier1)
          24 (1.44 % of base) : 3359.dasm - System.IO.PathInternal:RemoveRelativeSegments(System.ReadOnlySpan`1[ushort],int,byref):ubyte (Instrumented Tier1)
          24 (5.66 % of base) : 542902.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          24 (5.83 % of base) : 316984.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          24 (5.77 % of base) : 570116.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (1.18 % of base) : 645.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (Instrumented Tier1)
          20 (4.81 % of base) : 360815.dasm - System.Number+BigInteger:ShiftLeft(uint):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)
        -256 (-1.28 % of base) : 56996.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)
        -252 (-1.95 % 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)
        -228 (-1.76 % 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)
        -228 (-1.76 % 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)
        -224 (-1.76 % of base) : 237667.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -220 (-1.70 % 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)
        -204 (-3.63 % 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)
        -200 (-1.54 % of base) : 112531.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -192 (-1.54 % of base) : 272609.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -188 (-1.50 % of base) : 628786.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -184 (-1.47 % of base) : 500187.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -168 (-1.31 % of base) : 334250.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -168 (-1.39 % of base) : 569070.dasm - Xunit.Sdk.TypeUtility:ResolveGenericTypes(Xunit.Abstractions.IMethodInfo,System.Object[]):Xunit.Abstractions.ITypeInfo[] (Tier1)
        -164 (-1.55 % of base) : 371165.dasm - System.Numerics.Tensors.Tests.GenericFloatingPointNumberTensorPrimitivesTests`1+<>c__DisplayClass59_0[System.Runtime.InteropServices.NFloat]:<SpanSpanSpanDestination_ThrowsForMismatchedLengths>b__0(int):this (Tier1)
        -152 (-1.21 % of base) : 366128.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)
        -144 (-1.14 % of base) : 171719.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -144 (-2.67 % of base) : 298427.dasm - System.Linq.Parallel.SortHelper`2[int,System.Linq.Parallel.ConcatKey`2[int,int]]:MergeSortCooperatively():this (Tier1)
        -140 (-1.44 % of base) : 299182.dasm - Xunit.Sdk.TypeUtility:ResolveGenericTypes(Xunit.Abstractions.IMethodInfo,System.Object[]):Xunit.Abstractions.ITypeInfo[] (Tier1)

Top method regressions (percentages):
          60 (9.15 % of base) : 170484.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Instrumented Tier1)
          24 (5.83 % of base) : 316984.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          24 (5.77 % of base) : 570116.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          24 (5.66 % of base) : 542902.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          80 (5.35 % of base) : 86571.dasm - System.IO.FileSystem:CreateParentsAndDirectory(System.String,int) (Instrumented Tier1)
          20 (4.81 % of base) : 360815.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          48 (4.41 % of base) : 202214.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Span`1[System.__Canon]):int (Instrumented Tier1)
          76 (4.15 % of base) : 104991.dasm - Microsoft.CSharp.RuntimeBinder.RuntimeBinder:CreateArgumentArray(Microsoft.CSharp.RuntimeBinder.ICSharpBinder,System.Linq.Expressions.Expression[],System.Dynamic.DynamicMetaObject[]):Microsoft.CSharp.RuntimeBinder.ArgumentObject[]:this (Tier1)
           4 (3.57 % of base) : 470386.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
           4 (3.57 % of base) : 492310.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
           8 (3.23 % of base) : 199084.dasm - System.Linq.Enumerable+SelectListIterator`2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (Tier1)
           4 (3.03 % of base) : 599738.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder:ToArray():Microsoft.CodeAnalysis.GreenNode[]:this (Tier1)
           4 (3.03 % of base) : 63136.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder:ToArray():Microsoft.CodeAnalysis.GreenNode[]:this (Tier1)
           4 (2.44 % of base) : 432891.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1-OSR)
           4 (2.27 % of base) : 611579.dasm - System.Linq.Enumerable+SelectListIterator`2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (Tier1)
           4 (2.27 % of base) : 50565.dasm - System.Linq.Enumerable+SelectListIterator`2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (Tier1)
           4 (2.04 % of base) : 401109.dasm - System.Xml.Schema.BitSet:And(System.Xml.Schema.BitSet):this (Tier1)
           4 (2.00 % of base) : 48118.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (Tier1)
           4 (2.00 % of base) : 82345.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (Tier1)
           4 (2.00 % of base) : 154766.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (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) : 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) : 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) : 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: 162532212 (overridden on cmd)
Total bytes of delta: -15812 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          64 : 228293.dasm (0.98 % of base)
          52 : 187330.dasm (5.22 % of base)
          52 : 187287.dasm (5.20 % of base)
          52 : 4578.dasm (5.22 % of base)
          44 : 187322.dasm (4.35 % of base)
          44 : 187572.dasm (4.28 % of base)
          44 : 187986.dasm (4.31 % of base)
          44 : 187430.dasm (4.28 % of base)
          44 : 187441.dasm (4.35 % of base)
          44 : 188208.dasm (4.30 % of base)
          36 : 144438.dasm (3.56 % of base)
          36 : 144483.dasm (3.56 % of base)
          32 : 89349.dasm (26.67 % of base)
          32 : 89369.dasm (7.84 % of base)
          32 : 192843.dasm (1.25 % of base)
          32 : 194053.dasm (1.25 % of base)
          28 : 144710.dasm (1.56 % of base)
          28 : 161565.dasm (1.54 % of base)
          24 : 18128.dasm (0.17 % of base)
          20 : 51772.dasm (0.88 % of base)

Top file improvements (bytes):
        -540 : 286659.dasm (-0.27 % of base)
        -420 : 59054.dasm (-1.45 % of base)
        -228 : 172236.dasm (-1.27 % of base)
        -172 : 93215.dasm (-1.37 % of base)
        -164 : 296585.dasm (-2.74 % of base)
        -124 : 24716.dasm (-4.06 % of base)
        -104 : 182981.dasm (-1.88 % of base)
         -96 : 117235.dasm (-1.99 % of base)
         -96 : 129819.dasm (-2.56 % of base)
         -96 : 263926.dasm (-2.59 % of base)
         -96 : 90896.dasm (-1.01 % of base)
         -88 : 207576.dasm (-2.04 % of base)
         -84 : 268673.dasm (-1.78 % of base)
         -84 : 129893.dasm (-2.20 % of base)
         -84 : 88979.dasm (-1.18 % of base)
         -76 : 157471.dasm (-3.18 % of base)
         -72 : 90176.dasm (-1.98 % of base)
         -72 : 180173.dasm (-1.16 % of base)
         -68 : 76334.dasm (-4.03 % of base)
         -64 : 90270.dasm (-1.59 % of base)

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

Top method regressions (bytes):
          64 (0.98 % of base) : 228293.dasm - System.Text.Encodings.Web.Tests.InboxEncoderCommonTestBase:_RunEncodeUtf16_Battery(System.String[],System.String[]):this (FullOpts)
          52 (5.20 % of base) : 187287.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512UInt16ShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
          52 (5.22 % of base) : 187330.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512UInt32ShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
          52 (5.22 % of base) : 4578.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          44 (4.35 % of base) : 187322.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512DoubleShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
          44 (4.30 % of base) : 188208.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512Int16ShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
          44 (4.31 % of base) : 187986.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512Int32ShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
          44 (4.28 % of base) : 187572.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512Int64ShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
          44 (4.35 % of base) : 187441.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512SingleShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
          44 (4.28 % of base) : 187430.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512UInt64ShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
          36 (3.56 % of base) : 144438.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          36 (3.56 % of base) : 144483.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          32 (26.67 % of base) : 89349.dasm - System.Data.ExpressionParser:ScanName():this (FullOpts)
          32 (7.84 % of base) : 89369.dasm - System.Data.ExpressionParser:ScanNumeric():this (FullOpts)
          32 (1.25 % of base) : 192843.dasm - System.Runtime.Serialization.Tests.Utils:CompareXElements(System.Xml.Linq.XElement,System.Xml.Linq.XElement):ubyte (FullOpts)
          32 (1.25 % of base) : 194053.dasm - System.Runtime.Serialization.Tests.Utils:CompareXElements(System.Xml.Linq.XElement,System.Xml.Linq.XElement):ubyte (FullOpts)
          28 (1.56 % of base) : 144710.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          28 (1.54 % of base) : 161565.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          24 (0.17 % of base) : 18128.dasm - Microsoft.Interop.JavaScript.JSGeneratorResolver:Create(Microsoft.Interop.TypePositionInfo,ubyte,int,int[],int,int[],System.Func`2[System.String,Microsoft.Interop.ResolvedGenerator]):Microsoft.Interop.ResolvedGenerator (FullOpts)
          20 (0.88 % of base) : 51772.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)

Top method improvements (bytes):
        -540 (-0.27 % of base) : 286659.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5308_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (Tier0-MinOpts)
        -420 (-1.45 % 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)
        -228 (-1.27 % of base) : 172236.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (FullOpts)
        -172 (-1.37 % of base) : 93215.dasm - System.Data.Tests.DataTableTest2:GetChanges_ByDataRowState():this (FullOpts)
        -164 (-2.74 % of base) : 296585.dasm - System.Threading.Tasks.Tests.TaskRtTests:RunFromResult() (FullOpts)
        -124 (-4.06 % of base) : 24716.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
        -104 (-1.88 % of base) : 182981.dasm - System.Reflection.Tests.ConstructorInfoInvokeArrayTests:Invoke_2DArrayConstructor():this (FullOpts)
         -96 (-1.01 % of base) : 90896.dasm - System.Data.XmlTreeGen:SchemaTree(System.Xml.XmlDocument,System.Xml.XmlWriter,System.Data.DataSet,System.Data.DataTable,ubyte):this (FullOpts)
         -96 (-1.99 % of base) : 117235.dasm - System.Formats.Tar.Tests.TarFile_ExtractToDirectoryAsync_File_Tests+<SetsLastModifiedTimeOnExtractedDirectories>d__5:MoveNext():this (FullOpts)
         -96 (-2.56 % of base) : 129819.dasm - System.Linq.Parallel.SortHelper`2[double,int]:MergeSortCooperatively():this (FullOpts)
         -96 (-2.59 % of base) : 263926.dasm - System.Text.RegularExpressions.Tests.GetGroupNamesTests:GroupNamesAndNumbers(System.String,System.String,System.String[],int[],System.String[],int):this (FullOpts)
         -88 (-2.04 % of base) : 207576.dasm - System.Tests.ArraySegment_Tests:GetSetItem_InRange(System.ArraySegment`1[int]) (FullOpts)
         -84 (-1.18 % of base) : 88979.dasm - System.Data.RBTree`1[int]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
         -84 (-2.20 % of base) : 129893.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,int]:MergeSortCooperatively():this (FullOpts)
         -84 (-1.78 % of base) : 268673.dasm - System.Text.RegularExpressions.Tests.RegexMatchTests:<Match_Advanced>g__VerifyMatch|21_0(System.Text.RegularExpressions.Match,byref) (FullOpts)
         -76 (-3.18 % of base) : 157471.dasm - System.Numerics.Tests.Matrix4x4Tests:DecomposeScaleTest(float,float,float):this (FullOpts)
         -72 (-1.16 % of base) : 180173.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateMethodDef(System.Reflection.Metadata.MetadataReader,uint,uint,ubyte):this (FullOpts)
         -72 (-1.98 % of base) : 90176.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
         -68 (-4.03 % of base) : 76334.dasm - System.Collections.Tests.LinkedList_Generic_Tests`1[int]:AddFirst_LinkedListNode():this (FullOpts)
         -64 (-1.59 % of base) : 90270.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)

Top method regressions (percentages):
          32 (26.67 % of base) : 89349.dasm - System.Data.ExpressionParser:ScanName():this (FullOpts)
          32 (7.84 % of base) : 89369.dasm - System.Data.ExpressionParser:ScanNumeric():this (FullOpts)
          52 (5.22 % of base) : 187330.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512UInt32ShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
          52 (5.22 % of base) : 4578.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          52 (5.20 % of base) : 187287.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512UInt16ShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
          44 (4.35 % of base) : 187322.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512DoubleShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
          44 (4.35 % of base) : 187441.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512SingleShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
          44 (4.31 % of base) : 187986.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512Int32ShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
          44 (4.30 % of base) : 188208.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512Int16ShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
          44 (4.28 % of base) : 187572.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512Int64ShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
          44 (4.28 % of base) : 187430.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512UInt64ShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
           4 (4.17 % of base) : 188785.dasm - System.Numerics.BigIntegerCalculator:AddDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint]):uint (FullOpts)
          12 (4.11 % of base) : 12049.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(int,byref):ubyte:this (FullOpts)
           4 (3.70 % of base) : 214211.dasm - System.Security.Cryptography.Tests.EccTestBase+<>c:<InvertStringCase>b__19_0(System.Span`1[ushort],System.String):this (FullOpts)
           4 (3.70 % of base) : 217183.dasm - System.Security.Cryptography.Tests.EccTestBase+<>c:<InvertStringCase>b__19_0(System.Span`1[ushort],System.String):this (FullOpts)
           4 (3.57 % of base) : 31376.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (FullOpts)
          36 (3.56 % of base) : 144438.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          36 (3.56 % of base) : 144483.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
           4 (3.23 % of base) : 66461.dasm - System.Collections.Frozen.FrozenDictionary`2+Enumerator[System.Collections.Frozen.Tests.SimpleNonComparableStruct,int]:get_Current():System.Collections.Generic.KeyValuePair`2[System.Collections.Frozen.Tests.SimpleNonComparableStruct,int]:this (FullOpts)
           4 (3.03 % of base) : 46440.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder:ToArray():Microsoft.CodeAnalysis.GreenNode[]:this (FullOpts)

Top method improvements (percentages):
         -16 (-11.43 % of base) : 129539.dasm - System.Linq.Parallel.OrderPreservingPipeliningMergeHelper`2+OrderedPipeliningMergeEnumerator[int,int]:TryGetPrivateElement(int,byref):ubyte:this (FullOpts)
         -24 (-10.91 % of base) : 9849.dasm - System.Collections.Generic.GenericArraySortHelper`2[uint,System.__Canon]:InsertionSort(System.Span`1[uint],System.Span`1[System.__Canon]) (FullOpts)
          -8 (-9.09 % of base) : 83984.dasm - System.Drawing.KnownColorTable:KnownColorToArgb(int):uint (FullOpts)
         -12 (-7.69 % of base) : 207001.dasm - System.Collections.Generic.SortUtils:MoveNansToFront[float,System.__Canon](System.Span`1[float],System.Span`1[System.__Canon]):int (FullOpts)
         -12 (-7.32 % of base) : 39825.dasm - Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter:<GetClosedParameterType>g__CloseGenericParametersIfAny|44_0(System.Type[]):ubyte:this (FullOpts)
         -40 (-6.41 % of base) : 177470.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (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)
         -16 (-6.06 % of base) : 53411.dasm - Castle.DynamicProxy.Generators.MethodSignatureComparer:EqualParameters(System.Reflection.MethodInfo,System.Reflection.MethodInfo):ubyte:this (FullOpts)
         -24 (-5.88 % of base) : 142903.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,ubyte]:InsertionSort(System.Span`1[System.__Canon],System.Span`1[ubyte],System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
         -24 (-5.88 % of base) : 295231.dasm - System.Threading.Tasks.Tests.ParallelForTest:InvokeZetaWorkload(int):this (FullOpts)
         -12 (-5.66 % of base) : 157926.dasm - System.Numerics.Tests.GenericVectorTests+<>c__DisplayClass403_0`1[short]:<TestDivisionWithScalarByZeroException>b__0():this (FullOpts)
         -16 (-5.63 % of base) : 223707.dasm - System.Security.Cryptography.Xml.Transform:AcceptsType(System.Type):ubyte:this (FullOpts)
          -8 (-5.56 % of base) : 113625.dasm - System.Numerics.NumericsHelpers:DangerousMakeTwosComplement(System.Span`1[uint]) (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)


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

Detail diffs



Top file regressions (bytes):
         204 : 1186.dasm (5.59 % of base)
         116 : 1612.dasm (8.63 % of base)
          52 : 1816.dasm (5.22 % of base)
          36 : 13005.dasm (0.63 % of base)
          20 : 809.dasm (4.24 % of base)
          12 : 13938.dasm (0.34 % of base)
          12 : 19177.dasm (0.54 % of base)
          12 : 21743.dasm (4.11 % of base)
           8 : 1101.dasm (0.47 % of base)
           8 : 11115.dasm (0.56 % of base)
           8 : 13656.dasm (0.81 % of base)
           8 : 13806.dasm (1.15 % of base)
           8 : 1124.dasm (0.96 % of base)
           8 : 13893.dasm (5.41 % of base)
           8 : 21740.dasm (1.90 % of base)
           4 : 11460.dasm (0.76 % of base)
           4 : 267.dasm (1.05 % of base)
           4 : 13024.dasm (1.00 % of base)
           4 : 13871.dasm (1.67 % of base)
           4 : 14112.dasm (1.92 % of base)

Top file improvements (bytes):
        -120 : 13797.dasm (-3.11 % of base)
        -104 : 13615.dasm (-1.87 % of base)
        -100 : 30934.dasm (-0.98 % of base)
         -92 : 6065.dasm (-1.57 % of base)
         -76 : 2251.dasm (-4.07 % of base)
         -68 : 5696.dasm (-7.39 % of base)
         -60 : 13544.dasm (-0.69 % of base)
         -60 : 3375.dasm (-7.94 % of base)
         -60 : 6591.dasm (-8.47 % of base)
         -60 : 26323.dasm (-1.47 % of base)
         -56 : 17196.dasm (-1.34 % of base)
         -52 : 12746.dasm (-1.40 % of base)
         -52 : 1620.dasm (-6.74 % of base)
         -48 : 16932.dasm (-4.17 % of base)
         -44 : 1666.dasm (-5.76 % of base)
         -44 : 13943.dasm (-1.37 % of base)
         -40 : 12860.dasm (-0.46 % of base)
         -40 : 5698.dasm (-10.00 % of base)
         -40 : 3210.dasm (-0.65 % of base)
         -40 : 4602.dasm (-12.35 % of base)

62 total files with Code Size differences (36 improved, 26 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)
         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)
          52 (5.22 % of base) : 1816.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          36 (0.63 % 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)
          20 (4.24 % of base) : 809.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
          12 (4.11 % of base) : 21743.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(int,byref):ubyte:this (FullOpts)
          12 (0.54 % of base) : 19177.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)
          12 (0.34 % 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)
           8 (0.47 % of base) : 1101.dasm - BepuPhysics.Collidables.ConvexHullHelper:ReduceFace(byref,byref,System.Span`1[System.Numerics.Vector3],float,byref,byref,byref) (FullOpts)
           8 (0.96 % of base) : 1124.dasm - BepuUtilities.Collections.QuickSort:Sort[int,BepuPhysics.Trees.Tree+IndexMapComparer](byref,int,int,byref) (FullOpts)
           8 (1.90 % of base) : 21740.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:FixParameters(System.Func`3[Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer,int,ubyte],byref):int:this (FullOpts)
           8 (5.41 % of base) : 13893.dasm - Microsoft.ML.Trainers.KMeansLloydsYinYangTrain+SharedState:UpdateYinYangBounds(int):this (FullOpts)
           8 (1.15 % of base) : 13806.dasm - Microsoft.ML.Transforms.NormalizeTransform+Sng+MinMaxVecColumnFunctionBuilder:CreateColumnFunction():Microsoft.ML.Data.IColumnFunction:this (FullOpts)
           8 (0.81 % of base) : 13656.dasm - Microsoft.ML.Transforms.Text.NgramExtractingTransformer+Mapper:.ctor(Microsoft.ML.Transforms.Text.NgramExtractingTransformer,Microsoft.ML.DataViewSchema):this (FullOpts)
           8 (0.56 % of base) : 11115.dasm - System.Diagnostics.StackFrameHelper:InitializeSourceInfo(int,ubyte,System.Exception):this (FullOpts)
           4 (1.28 % of base) : 23108.dasm - Microsoft.CodeAnalysis.BitVector:UnionWith(byref):ubyte:this (FullOpts)
           4 (1.85 % of base) : 15218.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList:List(Microsoft.CodeAnalysis.GreenNode[],int):Microsoft.CodeAnalysis.GreenNode (FullOpts)
           4 (3.03 % of base) : 15217.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder:ToArray():Microsoft.CodeAnalysis.GreenNode[]:this (FullOpts)
           4 (0.97 % of base) : 13921.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:Apply[float](byref,Microsoft.ML.Internal.Utilities.VBufferUtils+SlotValueManipulator`1[float]) (FullOpts)
           4 (1.00 % of base) : 13024.dasm - Microsoft.ML.Numeric.VectorUtils:AddMult(byref,System.Span`1[float],float) (FullOpts)

Top method improvements (bytes):
        -120 (-3.11 % of base) : 13797.dasm - Microsoft.ML.Transforms.NormalizingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.IDataView,Microsoft.ML.Transforms.NormalizingEstimator+ColumnOptionsBase[]):Microsoft.ML.Transforms.NormalizingTransformer (FullOpts)
        -104 (-1.87 % 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)
        -100 (-0.98 % of base) : 30934.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         -92 (-1.57 % of base) : 6065.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)
         -76 (-4.07 % of base) : 2251.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (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)
         -60 (-1.47 % of base) : 26323.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitFixedStatement(Microsoft.CodeAnalysis.CSharp.BoundFixedStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
         -60 (-0.69 % of base) : 13544.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer: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)
         -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)
         -52 (-1.40 % of base) : 12746.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -48 (-4.17 % of base) : 16932.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)
         -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.37 % of base) : 13943.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyInto[float,float,float](byref,byref,byref,System.Func`4[int,float,float,float]) (FullOpts)
         -40 (-0.65 % of base) : 3210.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)
         -40 (-12.35 % of base) : 4602.dasm - Internal.Utilities.Text.Parsing.Implementation+AssocTable:Read(int,int):int:this (FullOpts)
         -40 (-0.46 % of base) : 12860.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)
         -40 (-10.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)

Top method regressions (percentages):
         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)
         204 (5.59 % of base) : 1186.dasm - BepuPhysics.CollisionDetection.CollisionTasks.CapsuleConvexHullTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
           8 (5.41 % of base) : 13893.dasm - Microsoft.ML.Trainers.KMeansLloydsYinYangTrain+SharedState:UpdateYinYangBounds(int):this (FullOpts)
          52 (5.22 % of base) : 1816.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          20 (4.24 % of base) : 809.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
          12 (4.11 % of base) : 21743.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(int,byref):ubyte:this (FullOpts)
           4 (3.03 % of base) : 15217.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder:ToArray():Microsoft.CodeAnalysis.GreenNode[]:this (FullOpts)
           4 (1.92 % of base) : 14112.dasm - System.Collections.Generic.GenericEqualityComparer`1[float]:IndexOf(float[],float,int,int):int:this (FullOpts)
           8 (1.90 % of base) : 21740.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:FixParameters(System.Func`3[Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer,int,ubyte],byref):int:this (FullOpts)
           4 (1.85 % of base) : 15218.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList:List(Microsoft.CodeAnalysis.GreenNode[],int):Microsoft.CodeAnalysis.GreenNode (FullOpts)
           4 (1.67 % of base) : 13871.dasm - Microsoft.ML.Trainers.KMeansBarBarInitialization+<>c__DisplayClass3_0:<Initialize>b__3(float[][],System.Random,byref):this (FullOpts)
           4 (1.28 % of base) : 23108.dasm - Microsoft.CodeAnalysis.BitVector:UnionWith(byref):ubyte:this (FullOpts)
           8 (1.15 % of base) : 13806.dasm - Microsoft.ML.Transforms.NormalizeTransform+Sng+MinMaxVecColumnFunctionBuilder:CreateColumnFunction():Microsoft.ML.Data.IColumnFunction:this (FullOpts)
           4 (1.05 % of base) : 267.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:CreateEntryNoResize(System.__Canon,System.__Canon):this (FullOpts)
           4 (1.02 % of base) : 820.dasm - System.Random+CompatPrng:Initialize(int):this (FullOpts)
           4 (1.00 % of base) : 13024.dasm - Microsoft.ML.Numeric.VectorUtils:AddMult(byref,System.Span`1[float],float) (FullOpts)
           4 (0.97 % of base) : 13921.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:Apply[float](byref,Microsoft.ML.Internal.Utilities.VBufferUtils+SlotValueManipulator`1[float]) (FullOpts)
           8 (0.96 % of base) : 1124.dasm - BepuUtilities.Collections.QuickSort:Sort[int,BepuPhysics.Trees.Tree+IndexMapComparer](byref,int,int,byref) (FullOpts)
           8 (0.81 % of base) : 13656.dasm - Microsoft.ML.Transforms.Text.NgramExtractingTransformer+Mapper:.ctor(Microsoft.ML.Transforms.Text.NgramExtractingTransformer,Microsoft.ML.DataViewSchema):this (FullOpts)
           4 (0.78 % of base) : 11675.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree:BuildCodes():this (FullOpts)

Top method improvements (percentages):
         -28 (-13.21 % of base) : 6589.dasm - System.Collections.Generic.GenericArraySortHelper`2[ushort,int]:InsertionSort(System.Span`1[ushort],System.Span`1[int]) (FullOpts)
         -40 (-12.35 % of base) : 4602.dasm - Internal.Utilities.Text.Parsing.Implementation+AssocTable:Read(int,int):int:this (FullOpts)
         -24 (-10.91 % of base) : 3377.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,System.__Canon]:InsertionSort(System.Span`1[int],System.Span`1[System.__Canon]) (FullOpts)
         -40 (-10.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)
         -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)
         -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 (-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)
         -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)
          -8 (-6.06 % of base) : 15114.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (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)
         -12 (-4.69 % of base) : 1036.dasm - System.Linq.OrderedEnumerable`1[double]:Fill(double[],System.Span`1[double]):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)
          -4 (-4.17 % of base) : 16457.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
         -48 (-4.17 % of base) : 16932.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)
         -76 (-4.07 % of base) : 2251.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -20 (-3.88 % of base) : 1859.dasm - System.Text.EncodingTable:GetCodePageDataItem(int):System.Text.CodePageDataItem (FullOpts)



windows arm64

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

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

Overall (-181,504 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,957,488 -3,280
benchmarks.run_pgo.windows.arm64.checked.mch 45,442,912 -20,196
benchmarks.run_tiered.windows.arm64.checked.mch 15,586,420 -6,072
coreclr_tests.run.windows.arm64.checked.mch 495,084,120 -29,016
libraries.crossgen2.windows.arm64.checked.mch 59,059,712 -11,856
libraries.pmi.windows.arm64.checked.mch 79,827,256 -12,692
libraries_tests.run.windows.arm64.Release.mch 329,452,088 -76,184
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 171,557,220 -16,260
realworld.run.windows.arm64.checked.mch 15,902,524 -3,372
smoke_tests.nativeaot.windows.arm64.checked.mch 3,798,548 -2,576

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 (-159,820 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,956,952 -3,280
benchmarks.run_pgo.windows.arm64.checked.mch 29,431,516 -15,276
benchmarks.run_tiered.windows.arm64.checked.mch 4,409,232 -2,472
coreclr_tests.run.windows.arm64.checked.mch 156,395,016 -26,832
libraries.crossgen2.windows.arm64.checked.mch 59,058,076 -11,856
libraries.pmi.windows.arm64.checked.mch 79,707,272 -12,692
libraries_tests.run.windows.arm64.Release.mch 126,018,492 -65,796
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 158,403,472 -15,668
realworld.run.windows.arm64.checked.mch 15,338,544 -3,372
smoke_tests.nativeaot.windows.arm64.checked.mch 3,797,536 -2,576

Example diffs

benchmarks.run.windows.arm64.checked.mch

-8 (-8.70%) : 6284.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)

@@ -50,23 +50,20 @@ G_M6504_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, by ;; size=28 bbWeight=1 PerfScore 7.00 G_M6504_IG03: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=100002 {x1 x20}, byref, isz mov w3, w2
- lsl x4, x3, #1 - add x4, x1, x4 - ; byrRegs +[x4] - ldrb w3, [x20, x3] - strh w3, [x4]
+ ldrb w4, [x20, x3] + strh w4, [x1, x3, LSL #2]
add w2, w2, #1 cmp w2, w19 blt G_M6504_IG03
- ;; size=32 bbWeight=4 PerfScore 32.00
+ ;; size=24 bbWeight=4 PerfScore 26.00
G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[x1 x4 x20]
+ ; byrRegs -[x1 x20]
ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 92, prolog size 20, PerfScore 45.50, instruction count 23, allocated bytes for code 92 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
+; Total bytes of code 84, prolog size 20, PerfScore 39.50, instruction count 21, allocated bytes for code 84 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -77,7 +74,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)

-40 (-7.94%) : 21993.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (FullOpts)

@@ -7,36 +7,30 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 7, 5.08) ref -> x0 class-hnd single-def <int[][]> -; V01 arg1 [V01,T16] ( 11, 26.98) int -> x1 single-def -; V02 loc0 [V02,T11] ( 18, 35.40) int -> x2 -; V03 loc1 [V03,T01] ( 23, 84.96) int -> x5 -; V04 loc2 [V04,T14] ( 6, 32.00) int -> x10
+; V00 arg0 [V00,T17] ( 7, 5.08) ref -> x0 class-hnd single-def <int[][]> +; V01 arg1 [V01,T15] ( 11, 26.98) int -> x1 single-def +; V02 loc0 [V02,T11] ( 17, 35.48) int -> x2 +; V03 loc1 [V03,T01] ( 25, 85.27) int -> x5 +; V04 loc2 [V04,T13] ( 6, 32.00) int -> x9
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T03] ( 7, 64.32) ref -> x11 class-hnd "Strict ordering of exceptions for Array store" <int[]>
+; V06 tmp1 [V06,T03] ( 7, 64.32) ref -> x10 class-hnd "Strict ordering of exceptions for Array store" <int[]>
; V07 tmp2 [V07,T04] ( 6, 64.00) int -> x13 "Strict ordering of exceptions for Array store"
-; V08 tmp3 [V08,T02] ( 8, 64.64) ref -> x8 "arr expr" -; V09 tmp4 [V09,T00] ( 9, 96.00) ref -> registers "arr expr" -; V10 tmp5 [V10,T13] ( 6, 1.91) ref -> registers "arr expr" -; V11 cse0 [V11,T26] ( 3, 0.36) ref -> x6 hoist "CSE - conservative" -; V12 cse1 [V12,T22] ( 3, 0.48) ref -> x8 "CSE - conservative" -; V13 cse2 [V13,T24] ( 3, 0.48) ref -> x0 "CSE - conservative" -; V14 cse3 [V14,T10] ( 8, 37.64) ref -> x7 hoist multi-def "CSE - aggressive" -; V15 cse4 [V15,T06] ( 2, 31.36) ref -> x0 "CSE - aggressive" -; V16 cse5 [V16,T21] ( 4, 4.00) long -> x6 hoist multi-def "CSE - aggressive" -; V17 cse6 [V17,T12] ( 6, 33.68) long -> x6 hoist multi-def "CSE - aggressive" -; V18 cse7 [V18,T08] ( 3, 47.04) long -> x8 "CSE - aggressive" -; V19 cse8 [V19,T28] ( 2, 0.08) long -> x10 hoist "CSE - conservative" -; V20 cse9 [V20,T27] ( 3, 0.36) long -> x7 hoist "CSE - conservative" -; V21 cse10 [V21,T23] ( 3, 0.48) long -> x9 "CSE - conservative" -; V22 cse11 [V22,T25] ( 3, 0.48) long -> x8 "CSE - conservative" -; V23 cse12 [V23,T17] ( 8, 19.08) byref -> x4 hoist multi-def "CSE - aggressive" -; V24 cse13 [V24,T05] ( 6, 47.52) byref -> x9 multi-def "CSE - aggressive" -; V25 cse14 [V25,T15] ( 2, 31.36) int -> x13 "CSE - aggressive" -; V26 cse15 [V26,T07] ( 3, 47.04) byref -> x0 "CSE - aggressive" -; V27 cse16 [V27,T19] ( 7, 6.36) int -> x3 hoist multi-def "CSE - aggressive" -; V28 cse17 [V28,T20] ( 6, 6.00) long -> x0 multi-def "CSE - aggressive" -; V29 cse18 [V29,T09] ( 3, 47.04) long -> x0 "CSE - aggressive"
+; V08 tmp3 [V08,T02] ( 8, 64.64) ref -> registers "arr expr" +; V09 tmp4 [V09,T00] ( 9, 96.00) ref -> x11 "arr expr" +; V10 tmp5 [V10,T12] ( 6, 1.91) ref -> x6 "arr expr" +; V11 cse0 [V11,T20] ( 3, 0.48) ref -> x10 "CSE - conservative" +; V12 cse1 [V12,T21] ( 3, 0.48) ref -> x6 "CSE - conservative" +; V13 cse2 [V13,T22] ( 3, 0.48) ref -> x6 "CSE - conservative" +; V14 cse3 [V14,T09] ( 8, 37.78) ref -> x6 multi-def "CSE - aggressive" +; V15 cse4 [V15,T07] ( 2, 31.36) ref -> x11 "CSE - aggressive" +; V16 cse5 [V16,T16] ( 8, 19.34) byref -> x4 hoist multi-def "CSE - aggressive" +; V17 cse6 [V17,T06] ( 6, 47.52) byref -> x8 multi-def "CSE - aggressive" +; V18 cse7 [V18,T14] ( 2, 31.36) int -> x13 "CSE - aggressive" +; V19 cse8 [V19,T08] ( 3, 47.04) byref -> x11 "CSE - aggressive" +; V20 cse9 [V20,T18] ( 7, 6.48) int -> x3 hoist multi-def "CSE - aggressive" +; V21 cse10 [V21,T10] ( 8, 35.82) long -> x0 hoist multi-def "CSE - aggressive" +; V22 cse11 [V22,T05] ( 4, 62.73) long -> x7 "CSE - aggressive" +; V23 cse12 [V23,T19] ( 4, 0.52) long -> x7 hoist "CSE - conservative"
; ; Lcl frame size = 0 @@ -65,103 +59,94 @@ G_M43574_IG03: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, b ;; size=12 bbWeight=3.96 PerfScore 7.92 G_M43574_IG04: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz mov w0, w2
- lsl x6, x0, #3 - ldr x7, [x4, x6] - ; gcrRegs +[x7] - cbz x7, G_M43574_IG07 - ldr w6, [x7, #0x08] - cmp w6, w1
+ ldr x6, [x4, x0, LSL #3] + ; gcrRegs +[x6] + cbz x6, G_M43574_IG07 + ldr w7, [x6, #0x08] + cmp w7, w1
ble G_M43574_IG07
- lsl x6, x0, #2 - ;; size=32 bbWeight=1.98 PerfScore 21.78 -G_M43574_IG05: ; bbWeight=15.68, gcrefRegs=0080 {x7}, byrefRegs=0010 {x4}, byref, isz - mov x8, x7 - ; gcrRegs +[x8] - add x9, x8, #16 - ; byrRegs +[x9] - mov w0, w5 - lsl x8, x0, #2 - ; gcrRegs -[x8] - ldr w10, [x9, x8] - mov x11, x7
+ ;; size=24 bbWeight=1.98 PerfScore 17.82 +G_M43574_IG05: ; bbWeight=15.68, gcrefRegs=0040 {x6}, byrefRegs=0010 {x4}, byref, isz + mov x7, x6 + ; gcrRegs +[x7] + add x8, x7, #16 + ; byrRegs +[x8] + mov w7, w5 + ; gcrRegs -[x7] + ldr w9, [x8, x7, LSL #2] + mov x10, x6 + ; gcrRegs +[x10] + ldr x11, [x4, x7, LSL #3]
; gcrRegs +[x11]
- lsl x0, x0, #3 - ldr x0, [x4, x0] - ; gcrRegs +[x0] - ldr w13, [x0, #0x08]
+ ldr w13, [x11, #0x08]
cmp w2, w13 bhs G_M43574_IG15
- add x0, x0, #16 - ; gcrRegs -[x0] - ; byrRegs +[x0] - ldr w13, [x0, x6] - ldr w11, [x11, #0x08]
+ add x11, x11, #16
; gcrRegs -[x11]
- cmp w5, w11
+ ; byrRegs +[x11] + ldr w13, [x11, x0, LSL #2] + ldr w10, [x10, #0x08] + ; gcrRegs -[x10] + cmp w5, w10
bhs G_M43574_IG15
- str w13, [x9, x8] - str w10, [x0, x6]
+ str w13, [x8, x7, LSL #2] + str w9, [x11, x0, LSL #2]
add w5, w5, #1 cmp w5, w1 ble G_M43574_IG05
- ;; size=84 bbWeight=15.68 PerfScore 415.56
+ ;; size=76 bbWeight=15.68 PerfScore 384.20
G_M43574_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref
- ; gcrRegs -[x7] - ; byrRegs -[x0 x9]
+ ; gcrRegs -[x6] + ; byrRegs -[x8 x11]
b G_M43574_IG09 ;; size=4 bbWeight=3.96 PerfScore 3.96 G_M43574_IG07: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref mov w0, w2
- lsl x6, x0, #3 - ldr x7, [x4, x6]
+ ;; size=4 bbWeight=0.02 PerfScore 0.01 +G_M43574_IG08: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz + ldr x6, [x4, x0, LSL #3] + ; gcrRegs +[x6] + mov x7, x6
; gcrRegs +[x7]
- lsl x6, x0, #2 - ;; size=16 bbWeight=0.02 PerfScore 0.11 -G_M43574_IG08: ; bbWeight=0.16, gcrefRegs=0080 {x7}, byrefRegs=0010 {x4}, byref, isz - mov x8, x7 - ; gcrRegs +[x8] - ldr w9, [x8, #0x08] - cmp w5, w9
+ ldr w8, [x7, #0x08] + cmp w5, w8
bhs G_M43574_IG15
- add x9, x8, #16 - ; byrRegs +[x9] - ubfiz x8, x5, #2, #32 - ; gcrRegs -[x8] - ldr w10, [x9, x8] - mov x11, x7 - ; gcrRegs +[x11]
+ add x8, x7, #16 + ; byrRegs +[x8] + ldr w9, [x8, w5, UXTW #2] + mov x10, x6 + ; gcrRegs +[x10]
cmp w5, w3 bhs G_M43574_IG15
- ldr x0, [x4, w5, UXTW #3] - ; gcrRegs +[x0] - mov x14, x0 - ; gcrRegs +[x14] - ldr w13, [x14, #0x08]
+ ldr x6, [x4, w5, UXTW #3] + mov x11, x6 + ; gcrRegs +[x11] + ldr w13, [x11, #0x08]
cmp w2, w13 bhs G_M43574_IG15
- add x14, x14, #16 - ; gcrRegs -[x14] - ; byrRegs +[x14] - ldr w13, [x14, x6] - ldr w11, [x11, #0x08]
+ add x7, x11, #16 + ; gcrRegs -[x7] + ; byrRegs +[x7] + ldr w13, [x7, x0, LSL #2] + ldr w10, [x10, #0x08] + ; gcrRegs -[x10] + cmp w5, w10 + bhs G_M43574_IG15 + str w13, [x8, w5, UXTW #2] + ldr w11, [x6, #0x08]
; gcrRegs -[x11]
- cmp w5, w11
+ cmp w2, w11
bhs G_M43574_IG15
- str w13, [x9, x8] - ldr w13, [x0, #0x08] - cmp w2, w13 - bhs G_M43574_IG15 - add x0, x0, #16 - ; gcrRegs -[x0] - ; byrRegs +[x0] - str w10, [x0, x6]
+ add x13, x6, #16 + ; byrRegs +[x13] + str w9, [x13, x0, LSL #2]
add w5, w5, #1 cmp w5, w1 ble G_M43574_IG08
- ;; size=116 bbWeight=0.16 PerfScore 5.78
+ ;; size=116 bbWeight=0.16 PerfScore 6.10
G_M43574_IG09: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
- ; gcrRegs -[x7] - ; byrRegs -[x0 x9 x14]
+ ; gcrRegs -[x6] + ; byrRegs -[x7-x8 x13]
add w2, w2, #1 cmp w2, w1 ble G_M43574_IG03 @@ -170,68 +155,63 @@ G_M43574_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x4] b G_M43574_IG14 ;; size=4 bbWeight=1 PerfScore 1.00
-G_M43574_IG11: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M43574_IG11: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x0] mov w5, #1 ldr w3, [x0, #0x08] add x4, x0, #16 ; byrRegs +[x4]
- ubfiz x10, x2, #3, #32
+ mov w7, w2 + ;; size=16 bbWeight=0.04 PerfScore 0.18 +G_M43574_IG12: ; bbWeight=0.16, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref, isz
cmp w2, w3 bhs G_M43574_IG15
- ldr x6, [x4, x10] - ; gcrRegs +[x6] - ubfiz x7, x2, #2, #32 - ;; size=32 bbWeight=0.04 PerfScore 0.42 -G_M43574_IG12: ; bbWeight=0.16, gcrefRegs=0041 {x0 x6}, byrefRegs=0010 {x4}, byref, isz - mov x8, x6 - ; gcrRegs +[x8] - ldr w9, [x8, #0x08]
...

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

+4 (+3.57%) : 14000.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span1[uint],System.ReadOnlySpan1[uint],ulong):uint (FullOpts)

@@ -19,8 +19,8 @@ ; V09 tmp2 [V09,T10] ( 2, 5 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V10 tmp3 [V10,T09] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP ; V11 tmp4 [V11,T07] ( 3, 6 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V12 cse0 [V12,T04] ( 3, 12 ) long -> x7 "CSE - aggressive" -; V13 cse1 [V13,T05] ( 3, 12 ) int -> x9 "CSE - aggressive"
+; V12 cse0 [V12,T04] ( 3, 12 ) int -> x9 "CSE - aggressive" +; V13 cse1 [V13,T05] ( 3, 12 ) long -> x7 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -36,19 +36,20 @@ G_M60135_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, b ble G_M60135_IG06 ;; size=16 bbWeight=1 PerfScore 2.50 G_M60135_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- ubfiz x7, x6, #2, #32 - ldr w8, [x2, x7]
+ mov w7, w6 + ldr w8, [x2, x7, LSL #2]
madd x5, x8, x4, x5 sxtw w8, w5 lsr x5, x5, #32 cmp w6, w1 bhs G_M60135_IG08
+ lsl x7, x7, #2
add x7, x0, x7 ; byrRegs +[x7] ldr w9, [x7] cmp w9, w8 bhs G_M60135_IG05
- ;; size=44 bbWeight=4 PerfScore 68.00
+ ;; size=48 bbWeight=4 PerfScore 70.00
G_M60135_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0085 {x0 x2 x7}, byref add x5, x5, #1 ;; size=4 bbWeight=2 PerfScore 1.00 @@ -73,7 +74,7 @@ G_M60135_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 112, prolog size 8, PerfScore 89.50, instruction count 28, allocated bytes for code 112 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (FullOpts)
+; Total bytes of code 116, prolog size 8, PerfScore 91.50, instruction count 29, allocated bytes for code 116 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (FullOpts)
; ============================================================ Unwind Info: @@ -84,7 +85,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ 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 (+4.24%) : 668.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)

@@ -9,35 +9,36 @@ ; Final local variable assignments ; ; V00 this [V00,T04] ( 11, 7 ) byref -> x19 this single-def
-; V01 arg1 [V01,T06] ( 5, 3.50) int -> x1 single-def -; V02 loc0 [V02,T16] ( 3, 2.50) int -> x0
+; V01 arg1 [V01,T07] ( 5, 3.50) int -> x1 single-def +; V02 loc0 [V02,T17] ( 3, 2.50) int -> x0
; V03 loc1 [V03,T15] ( 5, 2.50) int -> x21
-; V04 loc2 [V04,T11] ( 5, 4 ) int -> x20 ld-addr-op -; V05 loc3 [V05,T00] ( 11, 29.50) int -> x22 -; V06 loc4 [V06,T01] ( 14, 22 ) int -> x23 -; V07 loc5 [V07,T18] ( 2, 1 ) int -> x0 -; V08 loc6 [V08,T09] ( 4, 5 ) int -> x1 -; V09 loc7 [V09,T03] ( 4, 10.50) int -> x2 -; V10 loc8 [V10,T05] ( 3, 6.50) int -> x3
+; V04 loc2 [V04,T16] ( 5, 2.50) int -> x20 ld-addr-op +; V05 loc3 [V05,T00] ( 13, 34.50) int -> x22 +; V06 loc4 [V06,T01] ( 14, 28 ) int -> x23 +; V07 loc5 [V07,T19] ( 2, 1 ) int -> x0 +; V08 loc6 [V08,T05] ( 4, 9 ) int -> x1 +; V09 loc7 [V09,T03] ( 6, 13.50) int -> x2 +; V10 loc8 [V10,T06] ( 4, 9 ) int -> x3
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp3 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V15 tmp4 [V15 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V16 tmp5 [V16,T07] ( 5, 5 ) long -> [fp+0x18] "Inlining Arg"
+; V16 tmp5 [V16,T09] ( 5, 5 ) long -> [fp+0x18] "Inlining Arg"
;* V17 tmp6 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V18 tmp7 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp8 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp9 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V21 tmp10 [V21 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V22 tmp11 [V22,T08] ( 5, 5 ) long -> [fp+0x10] spill-single-def "Inlining Arg"
+; V22 tmp11 [V22,T10] ( 5, 5 ) long -> [fp+0x10] spill-single-def "Inlining Arg"
;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V24 tmp13 [V24,T13] ( 3, 3 ) long -> x0 "Cast away GC" ; V25 tmp14 [V25,T14] ( 3, 3 ) long -> x0 "Cast away GC"
-; V26 cse0 [V26,T17] ( 3, 1.50) int -> x0 "CSE - moderate" -; V27 cse1 [V27,T02] ( 12, 18 ) byref -> x24 hoist multi-def "CSE - aggressive" -; V28 cse2 [V28,T10] ( 2, 4.50) int -> x0 hoist "CSE - aggressive" -; V29 cse3 [V29,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
+; V26 cse0 [V26,T18] ( 3, 1.50) int -> x0 "CSE - moderate" +; V27 cse1 [V27,T02] ( 13, 20.50) byref -> x24 hoist multi-def "CSE - aggressive" +; V28 cse2 [V28,T11] ( 3, 5 ) int -> x0 "CSE - aggressive" +; V29 cse3 [V29,T08] ( 4, 5.50) int -> x4 hoist multi-def "CSE - aggressive" +; V30 cse4 [V30,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
; ; Lcl frame size = 16 @@ -151,7 +152,7 @@ G_M38441_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=48 bbWeight=0.50 PerfScore 4.75
-G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add w0, w23, #1 str w0, [x19] neg w0, w20 @@ -159,42 +160,45 @@ G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, mov w1, wzr add x24, x19, #4 ; byrRegs +[x24]
+ ldr w2, [x24, w22, SXTW #2]
and w0, w0, #31
- b G_M38441_IG13 - ;; size=32 bbWeight=0.50 PerfScore 2.50 -G_M38441_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ lsr w3, w2, w0 + cmp w22, #0 + ble G_M38441_IG13 + and w4, w20, #31 + ;; size=48 bbWeight=0.50 PerfScore 4.75 +G_M38441_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
orr w1, w1, w3 str w1, [x24, w23, SXTW #2]
- lsl w1, w2, w20
+ lsl w1, w2, w4
sub w22, w22, #1 sub w23, w23, #1
- ;; size=20 bbWeight=2 PerfScore 6.00 -G_M38441_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w2, [x24, w22, SXTW #2] lsr w3, w2, w0 cmp w22, #0 bgt G_M38441_IG12
- ;; size=16 bbWeight=4 PerfScore 20.00 -G_M38441_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3 - str w0, [x24, w23, SXTW #2]
+ ;; size=36 bbWeight=4 PerfScore 32.00 +G_M38441_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w4, w1, w3 + str w4, [x24, w23, SXTW #2]
sub w0, w23, #1
- lsl w1, w2, w20
+ and w4, w20, #31 + lsl w1, w2, w4
str w1, [x24, w0, SXTW #2] mov x0, x24 lsl w1, w21, #2 mov w1, w1 str x1, [fp, #0x10] // [V22 tmp11]
- cbz x1, G_M38441_IG16
+ cbz x1, G_M38441_IG15
cmp x1, #0xD1FFAB1E
- bhi G_M38441_IG15
+ bhi G_M38441_IG14
mov w1, wzr ldr w2, [fp, #0x10] // [V22 tmp11] bl CORINFO_HELP_MEMSET ; gcr arg pop 0
- b G_M38441_IG16 - ;; size=64 bbWeight=0.50 PerfScore 6.75 -G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ b G_M38441_IG15 + ;; size=68 bbWeight=0.50 PerfScore 7.00 +G_M38441_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
ldr x1, [fp, #0x10] // [V22 tmp11] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -203,7 +207,7 @@ G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 blr x2 ; gcr arg pop 0 ;; size=24 bbWeight=0.50 PerfScore 3.75
-G_M38441_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w0, [x19] sub w0, w0, #1 ldr w1, [x24, w0, SXTW #2] @@ -212,7 +216,7 @@ G_M38441_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 b G_M38441_IG04 ;; size=24 bbWeight=0.50 PerfScore 4.75
-; Total bytes of code 472, prolog size 24, PerfScore 111.75, instruction count 118, allocated bytes for code 472 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
+; Total bytes of code 492, prolog size 24, PerfScore 120.25, instruction count 123, allocated bytes for code 492 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
; ============================================================ Unwind Info: @@ -223,7 +227,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 118 (0x00076) Actual length = 472 (0x0001d8)
+ Function Length : 123 (0x0007b) Actual length = 492 (0x0001ec)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+4.55%) : 24107.dasm - BenchmarksGame.ReverseComplement_1:InitComplements() (FullOpts)

@@ -19,9 +19,9 @@ ; V09 cse0 [V09,T08] ( 4, 7 ) ref -> x1 hoist "CSE - aggressive" ; V10 cse1 [V10,T10] ( 2, 5 ) byref -> x4 hoist "CSE - aggressive" ; V11 cse2 [V11,T11] ( 2, 5 ) byref -> x5 hoist "CSE - aggressive"
-; V12 cse3 [V12,T07] ( 3, 12 ) long -> x6 "CSE - aggressive" -; V13 cse4 [V13,T05] ( 5, 14 ) int -> x3 "CSE - aggressive" -; V14 cse5 [V14,T06] ( 3, 12 ) byref -> x2 "CSE - aggressive"
+; V12 cse3 [V12,T05] ( 5, 14 ) int -> x3 "CSE - aggressive" +; V13 cse4 [V13,T06] ( 3, 12 ) byref -> x2 "CSE - aggressive" +; V14 cse5 [V14,T07] ( 3, 12 ) long -> x6 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -63,8 +63,10 @@ G_M12226_IG04: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0004 {x2}, by ;; size=28 bbWeight=1 PerfScore 3.50 G_M12226_IG05: ; bbWeight=4, gcrefRegs=0002 {x1}, byrefRegs=0034 {x2 x4 x5}, byref, isz ; byrRegs +[x4-x5]
- ubfiz x6, x0, #1, #32 - ldrb w7, [x4, x6]
+ mov w6, w0 + lsl x7, x6, #1 + ldrb w7, [x4, x7] + lsl x6, x6, #1
ldrb w6, [x5, x6] cmp w7, w3 bhs G_M12226_IG08 @@ -72,7 +74,7 @@ G_M12226_IG05: ; bbWeight=4, gcrefRegs=0002 {x1}, byrefRegs=0034 {x2 x4 x add w0, w0, #1 cmp w0, #24 blt G_M12226_IG05
- ;; size=36 bbWeight=4 PerfScore 46.00
+ ;; size=44 bbWeight=4 PerfScore 52.00
G_M12226_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x2 x4-x5] mov x0, x1 @@ -95,7 +97,7 @@ G_M12226_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 8, PerfScore 99.50, instruction count 44, allocated bytes for code 176 (MethodHash=c680d03d) for method BenchmarksGame.ReverseComplement_1:InitComplements() (FullOpts)
+; Total bytes of code 184, prolog size 8, PerfScore 105.50, instruction count 46, allocated bytes for code 184 (MethodHash=c680d03d) for method BenchmarksGame.ReverseComplement_1:InitComplements() (FullOpts)
; ============================================================ Unwind Info: @@ -106,7 +108,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
+ 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)

benchmarks.run_pgo.windows.arm64.checked.mch

-40 (-10.99%) : 76548.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)

@@ -9,35 +9,30 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 99.43 ; Final local variable assignments ;
-; V00 arg0 [V00,T19] ( 6, 4.98) ref -> x0 class-hnd single-def <int[][]>
+; V00 arg0 [V00,T17] ( 6, 4.98) ref -> x0 class-hnd single-def <int[][]>
; V01 arg1 [V01,T14] ( 9,105.95) int -> x1 single-def
-; V02 loc0 [V02,T15] ( 9,103.98) int -> x3
+; V02 loc0 [V02,T15] ( 9,104.96) int -> x3
; V03 loc1 [V03,T01] ( 15,499.98) int -> x2
-; V04 loc2 [V04,T11] ( 4,198.01) int -> x13
+; V04 loc2 [V04,T11] ( 4,198.01) int -> x10
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T03] ( 4,396.02) ref -> x14 class-hnd "Strict ordering of exceptions for Array store" <int[]> -; V07 tmp2 [V07,T04] ( 4,396.02) int -> x10 "Strict ordering of exceptions for Array store" -; V08 tmp3 [V08,T02] ( 5,398.00) ref -> x10 "arr expr" -; V09 tmp4 [V09,T00] ( 6,594.03) ref -> registers "arr expr"
+; V06 tmp1 [V06,T03] ( 4,396.02) ref -> x11 class-hnd "Strict ordering of exceptions for Array store" <int[]> +; V07 tmp2 [V07,T04] ( 4,396.02) int -> registers "Strict ordering of exceptions for Array store" +; V08 tmp3 [V08,T02] ( 5,398.00) ref -> x8 "arr expr" +; V09 tmp4 [V09,T00] ( 6,594.03) ref -> x13 "arr expr"
;* V10 tmp5 [V10,T12] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V11 cse0 [V11,T18] ( 5,100.99) ref -> x7 hoist multi-def "CSE - aggressive" -; V12 cse1 [V12,T22] ( 2, 1.98) ref -> x6 "CSE - aggressive" -; V13 cse2 [V13,T16] ( 7,101.98) ref -> x8 multi-def "CSE - aggressive" -; V14 cse3 [V14,T06] ( 2,196.03) ref -> x5 "CSE - aggressive" -; V15 cse4 [V15,T26] ( 4, 1.99) long -> x7 hoist multi-def "CSE - aggressive" -; V16 cse5 [V16,T10] ( 6,199.00) long -> x9 hoist multi-def "CSE - aggressive" -; V17 cse6 [V17,T08] ( 3,294.04) long -> x6 "CSE - aggressive" -; V18 cse7 [V18,T24] ( 3, 2.97) long -> x8 "CSE - aggressive" -; V19 cse8 [V19,T17] ( 5,101.00) byref -> x4 hoist "CSE - aggressive" -; V20 cse9 [V20,T20] ( 6, 3.97) int -> x5 hoist multi-def "CSE - aggressive" -; V21 cse10 [V21,T05] ( 6,297.01) byref -> x11 multi-def "CSE - aggressive" -; V22 cse11 [V22,T13] ( 2,196.03) int -> x10 "CSE - aggressive" -; V23 cse12 [V23,T07] ( 3,294.04) byref -> x5 "CSE - aggressive" -; V24 cse13 [V24,T27] ( 2, 1.98) int -> x10 "CSE - aggressive" -; V25 cse14 [V25,T23] ( 3, 2.97) byref -> x6 "CSE - aggressive" -; V26 cse15 [V26,T21] ( 6, 2.99) long -> x6 multi-def "CSE - aggressive" -; V27 cse16 [V27,T09] ( 3,294.04) long -> x5 "CSE - aggressive" -; V28 cse17 [V28,T25] ( 3, 2.97) long -> x6 "CSE - aggressive"
+; V11 cse0 [V11,T20] ( 2, 1.98) ref -> x13 "CSE - aggressive" +; V12 cse1 [V12,T09] ( 8,201.96) ref -> x7 multi-def "CSE - aggressive" +; V13 cse2 [V13,T07] ( 2,196.03) ref -> x13 "CSE - aggressive" +; V14 cse3 [V14,T16] ( 5,101.98) byref -> x4 hoist "CSE - aggressive" +; V15 cse4 [V15,T18] ( 6, 4.95) int -> x5 hoist multi-def "CSE - aggressive" +; V16 cse5 [V16,T06] ( 6,297.01) byref -> x9 multi-def "CSE - aggressive" +; V17 cse6 [V17,T13] ( 2,196.03) int -> x8 "CSE - aggressive" +; V18 cse7 [V18,T08] ( 3,294.04) byref -> x13 "CSE - aggressive" +; V19 cse8 [V19,T22] ( 2, 1.98) int -> x7 "CSE - aggressive" +; V20 cse9 [V20,T21] ( 3, 2.97) byref -> x7 "CSE - aggressive" +; V21 cse10 [V21,T10] ( 8,200.98) long -> x6 hoist multi-def "CSE - aggressive" +; V22 cse11 [V22,T05] ( 4,392.06) long -> x5 "CSE - aggressive" +; V23 cse12 [V23,T19] ( 4, 3.96) long -> x8 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -67,109 +62,96 @@ G_M43574_IG05: ; bbWeight=0.99, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, cmp w5, w3 bls G_M43574_IG08 mov w6, w3
- lsl x7, x6, #3 - ldr x8, [x4, x7] - ; gcrRegs +[x8] - cbz x8, G_M43574_IG08 - orr w7, w2, w1 - tbnz w7, #31, G_M43574_IG08 - ldr w7, [x8, #0x08] - cmp w7, w1
+ ldr x7, [x4, x6, LSL #3] + ; gcrRegs +[x7] + cbz x7, G_M43574_IG08 + orr w8, w2, w1 + tbnz w8, #31, G_M43574_IG08 + ldr w8, [x7, #0x08] + cmp w8, w1
ble G_M43574_IG08 cmp w5, w1 ble G_M43574_IG08
- mov x7, x8 - ; gcrRegs +[x7] - lsl x9, x6, #2 - ;; size=68 bbWeight=0.99 PerfScore 19.72 -G_M43574_IG06: ; bbWeight=98.01, gcrefRegs=0181 {x0 x7 x8}, byrefRegs=0010 {x4}, byref, isz - mov x10, x8 - ; gcrRegs +[x10] - add x11, x10, #16 - ; byrRegs +[x11]
+ ;; size=56 bbWeight=0.99 PerfScore 17.25 +G_M43574_IG06: ; bbWeight=98.01, gcrefRegs=0081 {x0 x7}, byrefRegs=0010 {x4}, byref, isz + mov x8, x7 + ; gcrRegs +[x8] + add x9, x8, #16 + ; byrRegs +[x9]
mov w5, w2
- lsl x6, x5, #2 - ldr w13, [x11, x6] - mov x14, x7 - ; gcrRegs +[x14] - lsl x10, x5, #3 - ; gcrRegs -[x10] - ldr x5, [x4, x10] - ; gcrRegs +[x5] - ldr w10, [x5, #0x08] - cmp w3, w10
+ ldr w10, [x9, x5, LSL #2] + mov x11, x7 + ; gcrRegs +[x11] + ldr x13, [x4, x5, LSL #3] + ; gcrRegs +[x13] + ldr w8, [x13, #0x08] + ; gcrRegs -[x8] + cmp w3, w8
bhs G_M43574_IG11
- add x5, x5, #16 - ; gcrRegs -[x5] - ; byrRegs +[x5] - ldr w10, [x5, x9] - ldr w14, [x14, #0x08] - ; gcrRegs -[x14] - cmp w2, w14
+ add x13, x13, #16 + ; gcrRegs -[x13] + ; byrRegs +[x13] + ldr w8, [x13, x6, LSL #2] + ldr w11, [x11, #0x08] + ; gcrRegs -[x11] + cmp w2, w11
bhs G_M43574_IG11
- str w10, [x11, x6] - str w13, [x5, x9]
+ str w8, [x9, x5, LSL #2] + str w10, [x13, x6, LSL #2]
add w2, w2, #1 cmp w2, w1 ble G_M43574_IG06
- ;; size=84 bbWeight=98.01 PerfScore 2597.38
+ ;; size=76 bbWeight=98.01 PerfScore 2401.35
G_M43574_IG07: ; bbWeight=0.99, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref
- ; gcrRegs -[x7-x8] - ; byrRegs -[x5 x11]
+ ; gcrRegs -[x7] + ; byrRegs -[x9 x13]
b G_M43574_IG10 ;; size=4 bbWeight=0.99 PerfScore 0.99
-G_M43574_IG08: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref, isz
+G_M43574_IG08: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref
ldr w5, [x0, #0x08] mov w6, w3
- lsl x7, x6, #3
+ ;; size=8 bbWeight=0.01 PerfScore 0.03 +G_M43574_IG09: ; bbWeight=0.99, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref, isz
cmp w3, w5 bhs G_M43574_IG11
- ldr x8, [x4, x7] - ; gcrRegs +[x8] - mov x7, x8
+ ldr x7, [x4, x6, LSL #3]
; gcrRegs +[x7]
- lsl x9, x6, #2 - ;; size=32 bbWeight=0.01 PerfScore 0.10 -G_M43574_IG09: ; bbWeight=0.99, gcrefRegs=0081 {x0 x7}, byrefRegs=0010 {x4}, byref, isz - ; gcrRegs -[x8] - mov x10, x7 - ; gcrRegs +[x10] - ldr w11, [x10, #0x08] - cmp w2, w11
+ mov x8, x7 + ; gcrRegs +[x8] + ldr w9, [x8, #0x08] + cmp w2, w9
bhs G_M43574_IG11
- add x11, x10, #16 - ; byrRegs +[x11] - mov w6, w2 - lsl x8, x6, #2 - ldr w13, [x11, x8] - mov x14, x7 - ; gcrRegs +[x14]
+ add x9, x8, #16 + ; byrRegs +[x9] + mov w8, w2 + ; gcrRegs -[x8] + ldr w10, [x9, x8, LSL #2] + mov x11, x7 + ; gcrRegs +[x11]
cmp w2, w5 bhs G_M43574_IG11
- lsl x6, x6, #3 - ldr x6, [x4, x6] - ; gcrRegs +[x6] - ldr w10, [x6, #0x08] - ; gcrRegs -[x10] - cmp w3, w10
+ ldr x13, [x4, x8, LSL #3] + ; gcrRegs +[x13] + ldr w7, [x13, #0x08] + ; gcrRegs -[x7] + cmp w3, w7
bhs G_M43574_IG11
- add x6, x6, #16 - ; gcrRegs -[x6] - ; byrRegs +[x6] - ldr w10, [x6, x9] - ldr w14, [x14, #0x08] - ; gcrRegs -[x14] - cmp w2, w14
+ add x7, x13, #16 + ; byrRegs +[x7] + ldr w13, [x7, x6, LSL #2] + ; gcrRegs -[x13] + ldr w11, [x11, #0x08] + ; gcrRegs -[x11] + cmp w2, w11
bhs G_M43574_IG11
- str w10, [x11, x8] - str w13, [x6, x9]
+ str w13, [x9, x8, LSL #2] + str w10, [x7, x6, LSL #2]
add w2, w2, #1 cmp w2, w1 ble G_M43574_IG09
- ;; size=104 bbWeight=0.99 PerfScore 32.18
+ ;; size=108 bbWeight=0.99 PerfScore 34.65
G_M43574_IG10: ; bbWeight=1.00, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref, isz
- ; gcrRegs -[x7] - ; byrRegs -[x6 x11]
+ ; byrRegs -[x7 x9]
add w3, w3, #1 cmp w3, w1 bgt G_M43574_IG12 @@ -187,7 +169,7 @@ G_M43574_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 364, prolog size 20, PerfScore 2664.34, instruction count 91, allocated bytes for code 364 (MethodHash=d41955c9) for method Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
+; Total bytes of code 324, prolog size 20, PerfScore 2468.25, instruction count 81, allocated bytes for code 324 (MethodHash=d41955c9) for method Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
; ============================================================ Unwind Info: @@ -198,7 +180,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 91 (0x0005b) Actual length = 364 (0x00016c)
+ Function Length : 81 (0x00051) Actual length = 324 (0x000144)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

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

+4 (+2.50%) : 90723.dasm - NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)

@@ -10,16 +10,16 @@ ; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T08] ( 5, 2.05) ref -> x0 class-hnd single-def <int[][]>
+; V00 arg0 [V00,T11] ( 5, 2.05) ref -> x0 class-hnd single-def <int[][]>
; V01 arg1 [V01,T05] ( 4,102.00) int -> x1 single-def
-; V02 arg2 [V02,T09] ( 3, 2.02) int -> x2 single-def -; V03 loc0 [V03,T10] ( 5, 0.08) int -> x4
+; V02 arg2 [V02,T12] ( 3, 2.02) int -> x2 single-def +; V03 loc0 [V03,T06] ( 5,100.05) int -> x4
; V04 loc1 [V04,T00] ( 8,599.94) int -> x3 ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+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,599.91) ref -> x7 class-hnd "Strict ordering of exceptions for Array store" <int[]> -; V09 tmp4 [V09,T03] ( 2,399.94) int -> x8 "Strict ordering of exceptions for Array store"
+; V08 tmp3 [V08,T01] ( 3,599.91) ref -> x9 class-hnd "Strict ordering of exceptions for Array store" <int[]> +; V09 tmp4 [V09,T03] ( 2,399.94) int -> x10 "Strict ordering of exceptions for Array store"
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref "Strict ordering of exceptions for Array store" ;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" @@ -28,13 +28,12 @@ ;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref "arr expr" ;* V16 tmp11 [V16 ] ( 0, 0 ) ref -> zero-ref "arr expr" ;* V17 tmp12 [V17 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V18 tmp13 [V18,T02] ( 3,599.91) ref -> x8 "arr expr" -; V19 cse0 [V19,T06] ( 2,100.00) ref -> x5 hoist "CSE - aggressive" -; V20 cse1 [V20,T07] ( 2,100.00) ref -> x6 hoist "CSE - aggressive" -; V21 cse2 [V21,T12] ( 2, 0.03) long -> x7 hoist "CSE - conservative" -; V22 cse3 [V22,T04] ( 3,299.95) long -> x9 "CSE - aggressive" -; V23 cse4 [V23,T13] ( 2, 0.03) int -> x5 hoist "CSE - conservative" -; V24 cse5 [V24,T11] ( 2, 0.03) byref -> x6 hoist "CSE - conservative"
+; V18 tmp13 [V18,T02] ( 3,599.91) ref -> x10 "arr expr" +; V19 cse0 [V19,T08] ( 2,100.00) ref -> x8 hoist "CSE - aggressive" +; V20 cse1 [V20,T07] ( 3,100.02) int -> x5 hoist "CSE - aggressive" +; V21 cse2 [V21,T09] ( 2,100.00) byref -> x6 hoist "CSE - aggressive" +; V22 cse3 [V22,T10] ( 2,100.00) long -> x7 hoist "CSE - aggressive" +; V23 cse4 [V23,T04] ( 3,299.95) long -> x11 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -60,43 +59,42 @@ G_M12699_IG05: ; bbWeight=0.02, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ldr w5, [x0, #0x08] add x6, x0, #16 ; byrRegs +[x6]
- ubfiz x7, x4, #3, #32
+ mov w7, w4 + cmp w5, #0 + bls G_M12699_IG08 + ldr x8, [x0, #0x10] + ; gcrRegs +[x8] + ;; size=24 bbWeight=0.02 PerfScore 0.13 +G_M12699_IG06: ; bbWeight=99.98, gcrefRegs=0101 {x0 x8}, byrefRegs=0040 {x6}, byref, isz
cmp w4, w5 bhs G_M12699_IG08
- ldr x5, [x6, x7] - ; gcrRegs +[x5] - ldr x6, [x0, #0x10] - ; gcrRegs +[x6] - ; byrRegs -[x6] - ;; size=28 bbWeight=0.02 PerfScore 0.18 -G_M12699_IG06: ; bbWeight=99.98, gcrefRegs=0061 {x0 x5 x6}, byrefRegs=0000 {}, byref, isz - mov x7, x5 - ; gcrRegs +[x7] - mov x8, x6 - ; gcrRegs +[x8] - ldr w9, [x8, #0x08] - cmp w3, w9
+ ldr x9, [x6, x7, LSL #3] + ; gcrRegs +[x9] + mov x10, x8 + ; gcrRegs +[x10] + ldr w11, [x10, #0x08] + cmp w3, w11
bhs G_M12699_IG08
- add x8, x8, #16 - ; gcrRegs -[x8] - ; byrRegs +[x8] - ubfiz x9, x3, #2, #32 - ldr w8, [x8, x9] - ; byrRegs -[x8] - ldr w10, [x7, #0x08] - cmp w3, w10
+ add x10, x10, #16 + ; gcrRegs -[x10] + ; byrRegs +[x10] + mov w11, w3 + ldr w10, [x10, x11, LSL #2] + ; byrRegs -[x10] + ldr w13, [x9, #0x08] + cmp w3, w13
bhs G_M12699_IG08
- add x7, x7, #16 - ; gcrRegs -[x7] - ; byrRegs +[x7] - str w8, [x7, x9]
+ add x9, x9, #16 + ; gcrRegs -[x9] + ; byrRegs +[x9] + str w10, [x9, x11, LSL #2]
add w3, w3, #1 cmp w3, w1 blt G_M12699_IG06
- ;; size=64 bbWeight=99.98 PerfScore 1799.73
+ ;; size=72 bbWeight=99.98 PerfScore 2149.67
G_M12699_IG07: ; bbWeight=0.02, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x5-x6] - ; byrRegs -[x7]
+ ; gcrRegs -[x8] + ; byrRegs -[x6 x9]
add w4, w4, #1 cmp w4, w2 bge G_M12699_IG09 @@ -113,7 +111,7 @@ G_M12699_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 160, prolog size 20, PerfScore 1808.48, instruction count 40, allocated bytes for code 160 (MethodHash=6a3cce64) for method NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
+; Total bytes of code 164, prolog size 20, PerfScore 2158.38, instruction count 41, allocated bytes for code 164 (MethodHash=6a3cce64) for method NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
; ============================================================ Unwind Info: @@ -124,7 +122,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+3.57%) : 84776.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span1[uint],System.ReadOnlySpan1[uint],ulong):uint (Tier1)

@@ -20,8 +20,8 @@ ; V09 tmp2 [V09,T10] ( 2, 742.51) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V10 tmp3 [V10,T09] ( 2, 742.51) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP ; V11 tmp4 [V11,T07] ( 3, 743.51) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V12 cse0 [V12,T04] ( 3,2224.54) long -> x7 "CSE - aggressive" -; V13 cse1 [V13,T05] ( 3,2224.54) int -> x9 "CSE - aggressive"
+; V12 cse0 [V12,T04] ( 3,2224.54) int -> x9 "CSE - aggressive" +; V13 cse1 [V13,T05] ( 3,2224.54) long -> x7 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -37,19 +37,20 @@ G_M60135_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, b ble G_M60135_IG06 ;; size=16 bbWeight=1 PerfScore 2.50 G_M60135_IG03: ; bbWeight=741.51, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- ubfiz x7, x6, #2, #32 - ldr w8, [x2, x7]
+ mov w7, w6 + ldr w8, [x2, x7, LSL #2]
madd x5, x8, x4, x5 sxtw w8, w5 lsr x5, x5, #32 cmp w6, w1 bhs G_M60135_IG08
+ lsl x7, x7, #2
add x7, x0, x7 ; byrRegs +[x7] ldr w9, [x7] cmp w9, w8 bhs G_M60135_IG05
- ;; size=44 bbWeight=741.51 PerfScore 12605.71
+ ;; size=48 bbWeight=741.51 PerfScore 12976.46
G_M60135_IG04: ; bbWeight=367.87, gcrefRegs=0000 {}, byrefRegs=0085 {x0 x2 x7}, byref add x5, x5, #1 ;; size=4 bbWeight=367.87 PerfScore 183.94 @@ -74,7 +75,7 @@ G_M60135_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 112, prolog size 8, PerfScore 15391.43, instruction count 28, allocated bytes for code 112 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
+; Total bytes of code 116, prolog size 8, PerfScore 15762.19, instruction count 29, allocated bytes for code 116 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
; ============================================================ Unwind Info: @@ -85,7 +86,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ 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)

+32 (+7.14%) : 43280.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

@@ -12,131 +12,126 @@ ; V00 this [V00,T00] ( 11, 4.33) byref -> x19 this single-def ; V01 arg1 [V01,T01] ( 5, 3 ) int -> x1 single-def ; V02 loc0 [V02,T05] ( 3, 2.33) int -> x0
-; V03 loc1 [V03,T11] ( 5, 1.00) int -> x21 -; V04 loc2 [V04,T08] ( 5, 1.67) int -> x20 ld-addr-op -; V05 loc3 [V05,T04] ( 10, 2.67) int -> x22
+; V03 loc1 [V03,T12] ( 5, 1.00) int -> x21 +; V04 loc2 [V04,T08] ( 5, 1.50) int -> x20 ld-addr-op +; V05 loc3 [V05,T03] ( 12, 2.67) int -> x22
; V06 loc4 [V06,T02] ( 14, 3.33) int -> x23
-; V07 loc5 [V07,T15] ( 2, 0.67) int -> x0 -; V08 loc6 [V08,T09] ( 4, 1.33) int -> x1 -; V09 loc7 [V09,T07] ( 4, 2.00) int -> x2 -; V10 loc8 [V10,T10] ( 3, 1.33) int -> x3
+; V07 loc5 [V07,T16] ( 2, 0.67) int -> x0 +; V08 loc6 [V08,T09] ( 4, 1.33) int -> x3 +; V09 loc7 [V09,T06] ( 6, 2.00) int -> x25 +; V10 loc8 [V10,T10] ( 4, 1.33) int -> x26
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp3 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V15 tmp4 [V15 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V16 tmp5 [V16,T06] ( 5, 2.00) long -> [fp+0x18] spill-single-def "Inlining Arg"
+; V16 tmp5 [V16,T07] ( 5, 2.00) long -> [fp+0x18] spill-single-def "Inlining Arg"
;* V17 tmp6 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V18 tmp7 [V18,T12] ( 3, 1.00) long -> x0 "Cast away GC" -; V19 cse0 [V19,T14] ( 2, 1.00) int -> x0 hoist "CSE - moderate" -; V20 cse1 [V20,T13] ( 3, 1.00) int -> x0 "CSE - conservative" -; V21 cse2 [V21,T03] ( 10, 2.67) byref -> x24 hoist multi-def "CSE - aggressive"
+; V18 tmp7 [V18,T13] ( 3, 1.00) long -> x0 "Cast away GC" +; V19 cse0 [V19,T14] ( 3, 1.00) int -> x0 "CSE - moderate" +; V20 cse1 [V20,T15] ( 3, 1.00) int -> x0 "CSE - conservative" +; V21 cse2 [V21,T11] ( 4, 1.17) int -> x1 hoist multi-def "CSE - moderate" +; V22 cse3 [V22,T04] ( 11, 2.67) byref -> x24 multi-def "CSE - aggressive"
; ; Lcl frame size = 16 G_M38441_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] stp x23, x24, [sp, #0x40]
+ stp x25, x26, [sp, #0x50]
mov fp, sp mov x19, x0 ; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=28 bbWeight=1 PerfScore 6.00
G_M38441_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz ldr w0, [x19]
- cbnz w0, G_M38441_IG08
+ cbnz w0, G_M38441_IG04
;; size=8 bbWeight=1 PerfScore 4.00 G_M38441_IG03: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x19]
+ ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0.67 PerfScore 3.33 -G_M38441_IG04: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, gcvars, byref - ; byrRegs +[x19 x24] - orr w1, w1, w3 - str w1, [x24, w23, SXTW #2] - lsl w1, w2, w20 - sub w22, w22, #1 - sub w23, w23, #1 - ;; size=20 bbWeight=0.33 PerfScore 1.00 -G_M38441_IG05: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - ldr w2, [x24, w22, SXTW #2] - lsr w3, w2, w0 - cmp w22, #0 - bgt G_M38441_IG04 - ;; size=16 bbWeight=0.67 PerfScore 3.33 -G_M38441_IG06: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3 - str w0, [x24, w23, SXTW #2] - sub w0, w23, #1 - lsl w1, w2, w20 - str w1, [x24, w0, SXTW #2] - mov x0, x24 - lsl w1, w21, #2 - mov w1, w1 - str x1, [fp, #0x18] // [V16 tmp5] - cbnz x1, G_M38441_IG09 - ;; size=40 bbWeight=0.33 PerfScore 2.50 -G_M38441_IG07: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - ldr w0, [x19] - sub w0, w0, #1 - ldr w1, [x24, w0, SXTW #2] - cbnz w1, G_M38441_IG03 - str w0, [x19] - b G_M38441_IG03 - ;; size=24 bbWeight=0.33 PerfScore 3.17 -G_M38441_IG08: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - ; byrRegs -[x24]
+ ;; size=24 bbWeight=0.67 PerfScore 4.00 +G_M38441_IG04: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz + ; byrRegs +[x19]
cbz w1, G_M38441_IG03 and w20, w1, #31 lsr w21, w1, #5 sub w22, w0, #1 add w23, w22, w21
- cbz w20, G_M38441_IG13 - b G_M38441_IG10 - ;; size=28 bbWeight=0.33 PerfScore 1.83 -G_M38441_IG09: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - ; byrRegs +[x24] - cmp x1, #0xD1FFAB1E - bhi G_M38441_IG12 - mov w1, wzr - ldr w2, [fp, #0x18] // [V16 tmp5] - bl CORINFO_HELP_MEMSET - ; gcr arg pop 0 - b G_M38441_IG07 - ;; size=24 bbWeight=0.17 PerfScore 1.00 -G_M38441_IG10: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - ; byrRegs -[x24]
+ cbz w20, G_M38441_IG12
add w23, w23, #1 cmp w23, #115
- bge G_M38441_IG17 - ;; size=12 bbWeight=0.33 PerfScore 0.67 -G_M38441_IG11: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+ bge G_M38441_IG16 + ;; size=36 bbWeight=0.33 PerfScore 2.17 +G_M38441_IG05: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add w0, w23, #1 str w0, [x19] neg w0, w20 add w0, w0, #32
- mov w1, wzr
+ mov w3, wzr
add x24, x19, #4 ; byrRegs +[x24]
+ ldr w25, [x24, w22, SXTW #2]
and w0, w0, #31
- b G_M38441_IG05 - ;; size=32 bbWeight=0.33 PerfScore 1.67 -G_M38441_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref - ldr x1, [fp, #0x18] // [V16 tmp5] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2
+ lsr w26, w25, w0 + cmp w22, #0 + bgt G_M38441_IG08 + ;; size=44 bbWeight=0.33 PerfScore 3.00 +G_M38441_IG06: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w1, w3, w26 + str w1, [x24, w23, SXTW #2] + sub w0, w23, #1 + and w1, w20, #31 + lsl w1, w25, w1 + str w1, [x24, w0, SXTW #2] + mov x0, x24 + lsl w1, w21, #2 + mov w1, w1 + str x1, [fp, #0x18] // [V16 tmp5] + cbz x1, G_M38441_IG11 + ;; size=44 bbWeight=0.33 PerfScore 2.67 +G_M38441_IG07: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref + b G_M38441_IG10 + ;; size=4 bbWeight=0.17 PerfScore 0.17 +G_M38441_IG08: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref + and w1, w20, #31 + ;; size=4 bbWeight=0.17 PerfScore 0.08 +G_M38441_IG09: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w3, w3, w26 + str w3, [x24, w23, SXTW #2] + lsl w3, w25, w1 + sub w22, w22, #1 + sub w23, w23, #1 + ldr w25, [x24, w22, SXTW #2] + lsr w26, w25, w0 + cmp w22, #0 + bgt G_M38441_IG09 + b G_M38441_IG06 + ;; size=40 bbWeight=0.33 PerfScore 3.00 +G_M38441_IG10: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + cmp x1, #0xD1FFAB1E + bhi G_M38441_IG17 + mov w1, wzr + ldr w2, [fp, #0x18] // [V16 tmp5] + bl CORINFO_HELP_MEMSET
; gcr arg pop 0
- b G_M38441_IG07 - ;; size=28 bbWeight=0 PerfScore 0.00 -G_M38441_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+ ;; size=20 bbWeight=0.17 PerfScore 0.83 +G_M38441_IG11: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + ldr w1, [x19] + sub w0, w1, #1 + ldr w1, [x24, w0, SXTW #2] + cbnz w1, G_M38441_IG03 + str w0, [x19] + b G_M38441_IG03 + ;; size=24 bbWeight=0.33 PerfScore 3.17 +G_M38441_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
; byrRegs -[x24] cmp w23, #115 cset x0, lt @@ -146,9 +141,9 @@ G_M38441_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ldr x1, [x1] blr x1 ; gcr arg pop 0
- b G_M38441_IG15
+ b G_M38441_IG14
;; size=32 bbWeight=0 PerfScore 0.00
-G_M38441_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
add x24, x19, #4 ; byrRegs +[x24] sbfiz x0, x23, #2, #32 @@ -159,9 +154,9 @@ G_M38441_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by sub w22, w22, #1 sub w23, w23, #1 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M38441_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M38441_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs -[x0 x24]
- tbz w22, #31, G_M38441_IG14
+ tbz w22, #31, G_M38441_IG13
ldr w0, [x19] add w0, w0, w21 str w0, [x19] @@ -176,14 +171,15 @@ G_M38441_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; byrRegs -[x0 x19] ; gcr arg pop 0 ;; size=44 bbWeight=0 PerfScore 0.00
-G_M38441_IG16: ; bbWeight=0, epilog, nogc, extend
+G_M38441_IG15: ; bbWeight=0, epilog, nogc, extend + ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00 -G_M38441_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref
...

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)

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

@@ -8,32 +8,27 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T21] ( 6, 10.05) ref -> x0 class-hnd single-def <int[][]> -; V01 arg1 [V01,T06] ( 9, 46 ) int -> x1 single-def -; V02 loc0 [V02,T05] ( 10, 48.24) int -> x3 -; V03 loc1 [V03,T01] ( 16, 94.48) int -> x2 -; V04 loc2 [V04,T14] ( 4, 32 ) int -> x13
+; V00 arg0 [V00,T18] ( 6, 10.05) ref -> x0 class-hnd single-def <int[][]> +; V01 arg1 [V01,T07] ( 9, 46 ) int -> x1 single-def +; V02 loc0 [V02,T06] ( 10, 48.36) int -> x3 +; V03 loc1 [V03,T01] ( 17, 94.64) int -> x2 +; V04 loc2 [V04,T14] ( 4, 32 ) int -> x10
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T03] ( 4, 64 ) ref -> x14 class-hnd "Strict ordering of exceptions for Array store" <int[]> -; V07 tmp2 [V07,T04] ( 4, 64 ) int -> x10 "Strict ordering of exceptions for Array store" -; V08 tmp3 [V08,T02] ( 5, 64.32) ref -> x10 "arr expr" -; V09 tmp4 [V09,T00] ( 6, 96 ) ref -> registers "arr expr" -; V10 tmp5 [V10,T13] ( 3, 0.96) ref -> x8 "arr expr" -; V11 cse0 [V11,T17] ( 5, 20.20) ref -> x7 hoist multi-def "CSE - aggressive" -; V12 cse1 [V12,T23] ( 3, 0.48) ref -> x8 "CSE - conservative" -; V13 cse2 [V13,T15] ( 7, 31.92) ref -> x8 multi-def "CSE - aggressive" -; V14 cse3 [V14,T08] ( 2, 31.68) ref -> x5 "CSE - aggressive" -; V15 cse4 [V15,T22] ( 4, 8.08) long -> x7 hoist multi-def "CSE - aggressive" -; V16 cse5 [V16,T12] ( 6, 36.04) long -> x9 hoist multi-def "CSE - aggressive" -; V17 cse6 [V17,T10] ( 3, 47.52) long -> x6 "CSE - aggressive" -; V18 cse7 [V18,T24] ( 3, 0.48) long -> x6 "CSE - conservative" -; V19 cse8 [V19,T18] ( 5, 20.05) byref -> x4 hoist "CSE - aggressive" -; V20 cse9 [V20,T19] ( 6, 12.24) int -> x5 hoist multi-def "CSE - aggressive" -; V21 cse10 [V21,T07] ( 6, 48 ) byref -> x11 multi-def "CSE - aggressive" -; V22 cse11 [V22,T16] ( 2, 31.68) int -> x10 "CSE - aggressive" -; V23 cse12 [V23,T09] ( 3, 47.52) byref -> x5 "CSE - aggressive" -; V24 cse13 [V24,T20] ( 6, 12.12) long -> x6 multi-def "CSE - aggressive" -; V25 cse14 [V25,T11] ( 3, 47.52) long -> x5 "CSE - aggressive"
+; V06 tmp1 [V06,T03] ( 4, 64 ) ref -> x11 class-hnd "Strict ordering of exceptions for Array store" <int[]> +; V07 tmp2 [V07,T04] ( 4, 64 ) int -> x8 "Strict ordering of exceptions for Array store" +; V08 tmp3 [V08,T02] ( 5, 64.32) ref -> x8 "arr expr" +; V09 tmp4 [V09,T00] ( 6, 96 ) ref -> x13 "arr expr" +; V10 tmp5 [V10,T13] ( 3, 0.96) ref -> x7 "arr expr" +; V11 cse0 [V11,T19] ( 3, 0.48) ref -> x7 "CSE - conservative" +; V12 cse1 [V12,T11] ( 8, 44.16) ref -> x7 multi-def "CSE - aggressive" +; V13 cse2 [V13,T09] ( 2, 31.68) ref -> x13 "CSE - aggressive" +; V14 cse3 [V14,T16] ( 5, 20.17) byref -> x4 hoist "CSE - aggressive" +; V15 cse4 [V15,T17] ( 6, 12.36) int -> x5 hoist multi-def "CSE - aggressive" +; V16 cse5 [V16,T08] ( 6, 48 ) byref -> x9 multi-def "CSE - aggressive" +; V17 cse6 [V17,T15] ( 2, 31.68) int -> x8 "CSE - aggressive" +; V18 cse7 [V18,T10] ( 3, 47.52) byref -> x13 "CSE - aggressive" +; V19 cse8 [V19,T12] ( 8, 40.20) long -> x6 hoist multi-def "CSE - aggressive" +; V20 cse9 [V20,T05] ( 4, 63.36) long -> x5 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -63,113 +58,102 @@ G_M43574_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, by cmp w5, w3 bls G_M43574_IG08 mov w6, w3
- lsl x7, x6, #3 - ldr x8, [x4, x7] - ; gcrRegs +[x8] - cbz x8, G_M43574_IG08 - orr w7, w2, w1 - tbnz w7, #31, G_M43574_IG08 - ldr w7, [x8, #0x08] - cmp w7, w1
+ ldr x7, [x4, x6, LSL #3] + ; gcrRegs +[x7] + cbz x7, G_M43574_IG08 + orr w8, w2, w1 + tbnz w8, #31, G_M43574_IG08 + ldr w8, [x7, #0x08] + cmp w8, w1
ble G_M43574_IG08 cmp w5, w1 ble G_M43574_IG08
- mov x7, x8 - ; gcrRegs +[x7] - lsl x9, x6, #2 - ;; size=68 bbWeight=4 PerfScore 80.00 -G_M43574_IG06: ; bbWeight=15.84, gcrefRegs=0181 {x0 x7 x8}, byrefRegs=0010 {x4}, byref, isz - mov x10, x8 - ; gcrRegs +[x10] - add x11, x10, #16 - ; byrRegs +[x11]
+ ;; size=56 bbWeight=4 PerfScore 70.00 +G_M43574_IG06: ; bbWeight=15.84, gcrefRegs=0081 {x0 x7}, byrefRegs=0010 {x4}, byref, isz + mov x8, x7 + ; gcrRegs +[x8] + add x9, x8, #16 + ; byrRegs +[x9]
mov w5, w2
- lsl x6, x5, #2 - ldr w13, [x11, x6] - mov x14, x7 - ; gcrRegs +[x14] - lsl x10, x5, #3 - ; gcrRegs -[x10] - ldr x5, [x4, x10] - ; gcrRegs +[x5] - ldr w10, [x5, #0x08] - cmp w3, w10
+ ldr w10, [x9, x5, LSL #2] + mov x11, x7 + ; gcrRegs +[x11] + ldr x13, [x4, x5, LSL #3] + ; gcrRegs +[x13] + ldr w8, [x13, #0x08] + ; gcrRegs -[x8] + cmp w3, w8
bhs G_M43574_IG12
- add x5, x5, #16 - ; gcrRegs -[x5] - ; byrRegs +[x5] - ldr w10, [x5, x9] - ldr w14, [x14, #0x08] - ; gcrRegs -[x14] - cmp w2, w14
+ add x13, x13, #16 + ; gcrRegs -[x13] + ; byrRegs +[x13] + ldr w8, [x13, x6, LSL #2] + ldr w11, [x11, #0x08] + ; gcrRegs -[x11] + cmp w2, w11
bhs G_M43574_IG12
- str w10, [x11, x6] - str w13, [x5, x9]
+ str w8, [x9, x5, LSL #2] + str w10, [x13, x6, LSL #2]
add w2, w2, #1 cmp w2, w1 ble G_M43574_IG06
- ;; size=84 bbWeight=15.84 PerfScore 419.76
+ ;; size=76 bbWeight=15.84 PerfScore 388.08
G_M43574_IG07: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref
- ; gcrRegs -[x7-x8] - ; byrRegs -[x5 x11]
+ ; gcrRegs -[x7] + ; byrRegs -[x9 x13]
b G_M43574_IG10 ;; size=4 bbWeight=8 PerfScore 8.00
-G_M43574_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref, isz
+G_M43574_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref
ldr w5, [x0, #0x08] mov w6, w3
- lsl x7, x6, #3
+ ;; size=8 bbWeight=0.04 PerfScore 0.14 +G_M43574_IG09: ; bbWeight=0.16, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref, isz
cmp w3, w5 bhs G_M43574_IG12
- ldr x8, [x4, x7] - ; gcrRegs +[x8] - mov x7, x8
+ ldr x7, [x4, x6, LSL #3]
; gcrRegs +[x7]
- lsl x9, x6, #2 - ;; size=32 bbWeight=0.04 PerfScore 0.42 -G_M43574_IG09: ; bbWeight=0.16, gcrefRegs=0081 {x0 x7}, byrefRegs=0010 {x4}, byref, isz - ; gcrRegs -[x8] - mov x10, x7 - ; gcrRegs +[x10] - ldr w11, [x10, #0x08] - cmp w2, w11
+ mov x8, x7 + ; gcrRegs +[x8] + ldr w9, [x8, #0x08] + cmp w2, w9
bhs G_M43574_IG12
- add x11, x10, #16 - ; byrRegs +[x11] - ubfiz x6, x2, #2, #32 - ldr w13, [x11, x6] - mov x14, x7 - ; gcrRegs +[x14]
+ add x9, x8, #16 + ; byrRegs +[x9] + ldr w10, [x9, w2, UXTW #2] + mov x11, x7 + ; gcrRegs +[x11]
cmp w2, w5 bhs G_M43574_IG12
- ldr x8, [x4, w2, UXTW #3] - ; gcrRegs +[x8] - mov x10, x8 - ldr w12, [x10, #0x08] - cmp w3, w12
+ ldr x7, [x4, w2, UXTW #3] + mov x13, x7 + ; gcrRegs +[x13] + ldr w8, [x13, #0x08] + ; gcrRegs -[x8] + cmp w3, w8
bhs G_M43574_IG12
- add x10, x10, #16 - ; gcrRegs -[x10] - ; byrRegs +[x10] - ldr w10, [x10, x9] - ; byrRegs -[x10] - ldr w14, [x14, #0x08] - ; gcrRegs -[x14] - cmp w2, w14
+ add x8, x13, #16 + ; byrRegs +[x8] + ldr w8, [x8, x6, LSL #2] + ; byrRegs -[x8] + ldr w11, [x11, #0x08] + ; gcrRegs -[x11] + cmp w2, w11
bhs G_M43574_IG12
- str w10, [x11, x6] - ldr w6, [x8, #0x08] - cmp w3, w6
+ str w8, [x9, w2, UXTW #2] + ldr w8, [x7, #0x08] + cmp w3, w8
bhs G_M43574_IG12
- add x6, x8, #16 - ; byrRegs +[x6] - str w13, [x6, x9]
+ add x7, x7, #16 + ; gcrRegs -[x7] + ; byrRegs +[x7] + str w10, [x7, x6, LSL #2]
add w2, w2, #1 cmp w2, w1 ble G_M43574_IG09
- ;; size=116 bbWeight=0.16 PerfScore 5.84
+ ;; size=124 bbWeight=0.16 PerfScore 6.40
G_M43574_IG10: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref, isz
- ; gcrRegs -[x7-x8] - ; byrRegs -[x6 x11]
+ ; gcrRegs -[x13] + ; byrRegs -[x7 x9]
add w3, w3, #1 cmp w3, w1 ble G_M43574_IG03 @@ -187,7 +171,7 @@ G_M43574_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 376, prolog size 20, PerfScore 545.61, instruction count 94, allocated bytes for code 376 (MethodHash=d41955c9) for method Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
+; Total bytes of code 340, prolog size 20, PerfScore 504.21, instruction count 85, allocated bytes for code 340 (MethodHash=d41955c9) for method Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
; ============================================================ Unwind Info: @@ -198,7 +182,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 94 (0x0005e) Actual length = 376 (0x000178)
...

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

+4 (+2.50%) : 48176.dasm - NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)

@@ -8,23 +8,22 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 5, 10.01) ref -> x0 class-hnd single-def <int[][]>
+; V00 arg0 [V00,T11] ( 5, 10.01) ref -> x0 class-hnd single-def <int[][]>
; V01 arg1 [V01,T06] ( 4, 26 ) int -> x1 single-def
-; V02 arg2 [V02,T10] ( 3, 10 ) int -> x2 single-def -; V03 loc0 [V03,T05] ( 5, 32 ) int -> x4
+; V02 arg2 [V02,T12] ( 3, 10 ) int -> x2 single-def +; V03 loc0 [V03,T05] ( 5, 44 ) int -> x4
; V04 loc1 [V04,T00] ( 8,106 ) int -> x3 ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+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 -> x8 class-hnd "Strict ordering of exceptions for Array store" <int[]> -; V09 tmp4 [V09,T03] ( 2, 64 ) int -> x9 "Strict ordering of exceptions for Array store" -; V10 tmp5 [V10,T02] ( 3, 96 ) ref -> x9 "arr expr" -; V11 cse0 [V11,T07] ( 2, 20 ) ref -> x6 hoist "CSE - aggressive" -; V12 cse1 [V12,T08] ( 2, 20 ) ref -> x7 hoist "CSE - aggressive" -; V13 cse2 [V13,T11] ( 2, 8 ) long -> x7 hoist "CSE - aggressive" -; V14 cse3 [V14,T04] ( 3, 48 ) long -> x10 "CSE - aggressive" -; V15 cse4 [V15,T12] ( 2, 8 ) int -> x6 hoist "CSE - aggressive" -; V16 cse5 [V16,T13] ( 2, 4.01) byref -> x5 hoist "CSE - aggressive"
+; V08 tmp3 [V08,T01] ( 3, 96 ) ref -> x9 class-hnd "Strict ordering of exceptions for Array store" <int[]> +; V09 tmp4 [V09,T03] ( 2, 64 ) int -> x10 "Strict ordering of exceptions for Array store" +; V10 tmp5 [V10,T02] ( 3, 96 ) ref -> x10 "arr expr" +; V11 cse0 [V11,T08] ( 2, 20 ) ref -> x8 hoist "CSE - aggressive" +; V12 cse1 [V12,T07] ( 3, 24 ) int -> x6 hoist "CSE - aggressive" +; V13 cse2 [V13,T10] ( 2, 16.01) byref -> x5 hoist "CSE - aggressive" +; V14 cse3 [V14,T09] ( 2, 20 ) long -> x7 hoist "CSE - aggressive" +; V15 cse4 [V15,T04] ( 3, 48 ) long -> x11 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -50,42 +49,42 @@ G_M12699_IG04: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0020 {x5}, by ;; size=8 bbWeight=8 PerfScore 12.00 G_M12699_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0020 {x5}, byref, isz ldr w6, [x0, #0x08]
- ubfiz x7, x4, #3, #32
+ mov w7, w4 + cmp w6, #0 + bls G_M12699_IG09 + ldr x8, [x0, #0x10] + ; gcrRegs +[x8] + ;; size=20 bbWeight=4 PerfScore 32.00 +G_M12699_IG06: ; bbWeight=16, gcrefRegs=0101 {x0 x8}, byrefRegs=0020 {x5}, byref, isz
cmp w4, w6 bhs G_M12699_IG09
- ldr x6, [x5, x7] - ; gcrRegs +[x6] - ldr x7, [x0, #0x10] - ; gcrRegs +[x7] - ;; size=24 bbWeight=4 PerfScore 46.00 -G_M12699_IG06: ; bbWeight=16, gcrefRegs=00C1 {x0 x6 x7}, byrefRegs=0020 {x5}, byref, isz - mov x8, x6 - ; gcrRegs +[x8] - mov x9, x7
+ ldr x9, [x5, x7, LSL #3]
; gcrRegs +[x9]
- ldr w10, [x9, #0x08] - cmp w3, w10
+ mov x10, x8 + ; gcrRegs +[x10] + ldr w11, [x10, #0x08] + cmp w3, w11 + bhs G_M12699_IG09 + add x10, x10, #16 + ; gcrRegs -[x10] + ; byrRegs +[x10] + mov w11, w3 + ldr w10, [x10, x11, LSL #2] + ; byrRegs -[x10] + ldr w13, [x9, #0x08] + cmp w3, w13
bhs G_M12699_IG09 add x9, x9, #16 ; gcrRegs -[x9] ; byrRegs +[x9]
- ubfiz x10, x3, #2, #32 - ldr w9, [x9, x10] - ; byrRegs -[x9] - ldr w11, [x8, #0x08] - cmp w3, w11 - bhs G_M12699_IG09 - add x8, x8, #16 - ; gcrRegs -[x8] - ; byrRegs +[x8] - str w9, [x8, x10]
+ str w10, [x9, x11, LSL #2]
add w3, w3, #1 cmp w3, w1 blt G_M12699_IG06
- ;; size=64 bbWeight=16 PerfScore 288.00
+ ;; size=72 bbWeight=16 PerfScore 344.00
G_M12699_IG07: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0020 {x5}, byref, isz
- ; gcrRegs -[x6-x7] - ; byrRegs -[x8]
+ ; gcrRegs -[x8] + ; byrRegs -[x9]
add w4, w4, #1 cmp w4, w2 blt G_M12699_IG03 @@ -103,7 +102,7 @@ G_M12699_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 160, prolog size 20, PerfScore 365.59, instruction count 40, allocated bytes for code 160 (MethodHash=6a3cce64) for method NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
+; Total bytes of code 164, prolog size 20, PerfScore 407.59, instruction count 41, allocated bytes for code 164 (MethodHash=6a3cce64) for method NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
; ============================================================ Unwind Info: @@ -114,7 +113,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+3.57%) : 46985.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span1[uint],System.ReadOnlySpan1[uint],ulong):uint (Tier1)

@@ -19,8 +19,8 @@ ; V09 tmp2 [V09,T10] ( 2, 5 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V10 tmp3 [V10,T09] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP ; V11 tmp4 [V11,T07] ( 3, 6 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V12 cse0 [V12,T04] ( 3, 12 ) long -> x7 "CSE - aggressive" -; V13 cse1 [V13,T05] ( 3, 12 ) int -> x9 "CSE - aggressive"
+; V12 cse0 [V12,T04] ( 3, 12 ) int -> x9 "CSE - aggressive" +; V13 cse1 [V13,T05] ( 3, 12 ) long -> x7 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -36,19 +36,20 @@ G_M60135_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, b ble G_M60135_IG06 ;; size=16 bbWeight=1 PerfScore 2.50 G_M60135_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- ubfiz x7, x6, #2, #32 - ldr w8, [x2, x7]
+ mov w7, w6 + ldr w8, [x2, x7, LSL #2]
madd x5, x8, x4, x5 sxtw w8, w5 lsr x5, x5, #32 cmp w6, w1 bhs G_M60135_IG08
+ lsl x7, x7, #2
add x7, x0, x7 ; byrRegs +[x7] ldr w9, [x7] cmp w9, w8 bhs G_M60135_IG05
- ;; size=44 bbWeight=4 PerfScore 68.00
+ ;; size=48 bbWeight=4 PerfScore 70.00
G_M60135_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0085 {x0 x2 x7}, byref add x5, x5, #1 ;; size=4 bbWeight=2 PerfScore 1.00 @@ -73,7 +74,7 @@ G_M60135_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 112, prolog size 8, PerfScore 89.50, instruction count 28, allocated bytes for code 112 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
+; Total bytes of code 116, prolog size 8, PerfScore 91.50, instruction count 29, allocated bytes for code 116 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
; ============================================================ Unwind Info: @@ -84,7 +85,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ 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 (+4.24%) : 5470.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

@@ -9,35 +9,36 @@ ; Final local variable assignments ; ; V00 this [V00,T04] ( 11, 7 ) byref -> x19 this single-def
-; V01 arg1 [V01,T06] ( 5, 3.50) int -> x1 single-def -; V02 loc0 [V02,T16] ( 3, 2.50) int -> x0
+; V01 arg1 [V01,T07] ( 5, 3.50) int -> x1 single-def +; V02 loc0 [V02,T17] ( 3, 2.50) int -> x0
; V03 loc1 [V03,T15] ( 5, 2.50) int -> x21
-; V04 loc2 [V04,T11] ( 5, 4 ) int -> x20 ld-addr-op -; V05 loc3 [V05,T00] ( 11, 29.50) int -> x22 -; V06 loc4 [V06,T01] ( 14, 22 ) int -> x23 -; V07 loc5 [V07,T18] ( 2, 1 ) int -> x0 -; V08 loc6 [V08,T09] ( 4, 5 ) int -> x1 -; V09 loc7 [V09,T03] ( 4, 10.50) int -> x2 -; V10 loc8 [V10,T05] ( 3, 6.50) int -> x3
+; V04 loc2 [V04,T16] ( 5, 2.50) int -> x20 ld-addr-op +; V05 loc3 [V05,T00] ( 13, 34.50) int -> x22 +; V06 loc4 [V06,T01] ( 14, 28 ) int -> x23 +; V07 loc5 [V07,T19] ( 2, 1 ) int -> x0 +; V08 loc6 [V08,T05] ( 4, 9 ) int -> x1 +; V09 loc7 [V09,T03] ( 6, 13.50) int -> x2 +; V10 loc8 [V10,T06] ( 4, 9 ) int -> x3
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp3 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V15 tmp4 [V15 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V16 tmp5 [V16,T07] ( 5, 5 ) long -> [fp+0x18] "Inlining Arg"
+; V16 tmp5 [V16,T09] ( 5, 5 ) long -> [fp+0x18] "Inlining Arg"
;* V17 tmp6 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V18 tmp7 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp8 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp9 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V21 tmp10 [V21 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V22 tmp11 [V22,T08] ( 5, 5 ) long -> [fp+0x10] spill-single-def "Inlining Arg"
+; V22 tmp11 [V22,T10] ( 5, 5 ) long -> [fp+0x10] spill-single-def "Inlining Arg"
;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V24 tmp13 [V24,T13] ( 3, 3 ) long -> x0 "Cast away GC" ; V25 tmp14 [V25,T14] ( 3, 3 ) long -> x0 "Cast away GC"
-; V26 cse0 [V26,T17] ( 3, 1.50) int -> x0 "CSE - moderate" -; V27 cse1 [V27,T02] ( 12, 18 ) byref -> x24 hoist multi-def "CSE - aggressive" -; V28 cse2 [V28,T10] ( 2, 4.50) int -> x0 hoist "CSE - aggressive" -; V29 cse3 [V29,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
+; V26 cse0 [V26,T18] ( 3, 1.50) int -> x0 "CSE - moderate" +; V27 cse1 [V27,T02] ( 13, 20.50) byref -> x24 hoist multi-def "CSE - aggressive" +; V28 cse2 [V28,T11] ( 3, 5 ) int -> x0 "CSE - aggressive" +; V29 cse3 [V29,T08] ( 4, 5.50) int -> x4 hoist multi-def "CSE - aggressive" +; V30 cse4 [V30,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
; ; Lcl frame size = 16 @@ -151,7 +152,7 @@ G_M38441_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=48 bbWeight=0.50 PerfScore 4.75
-G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add w0, w23, #1 str w0, [x19] neg w0, w20 @@ -159,42 +160,45 @@ G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, mov w1, wzr add x24, x19, #4 ; byrRegs +[x24]
+ ldr w2, [x24, w22, SXTW #2]
and w0, w0, #31
- b G_M38441_IG13 - ;; size=32 bbWeight=0.50 PerfScore 2.50 -G_M38441_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ lsr w3, w2, w0 + cmp w22, #0 + ble G_M38441_IG13 + and w4, w20, #31 + ;; size=48 bbWeight=0.50 PerfScore 4.75 +G_M38441_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
orr w1, w1, w3 str w1, [x24, w23, SXTW #2]
- lsl w1, w2, w20
+ lsl w1, w2, w4
sub w22, w22, #1 sub w23, w23, #1
- ;; size=20 bbWeight=2 PerfScore 6.00 -G_M38441_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w2, [x24, w22, SXTW #2] lsr w3, w2, w0 cmp w22, #0 bgt G_M38441_IG12
- ;; size=16 bbWeight=4 PerfScore 20.00 -G_M38441_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3 - str w0, [x24, w23, SXTW #2]
+ ;; size=36 bbWeight=4 PerfScore 32.00 +G_M38441_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w4, w1, w3 + str w4, [x24, w23, SXTW #2]
sub w0, w23, #1
- lsl w1, w2, w20
+ and w4, w20, #31 + lsl w1, w2, w4
str w1, [x24, w0, SXTW #2] mov x0, x24 lsl w1, w21, #2 mov w1, w1 str x1, [fp, #0x10] // [V22 tmp11]
- cbz x1, G_M38441_IG16
+ cbz x1, G_M38441_IG15
cmp x1, #0xD1FFAB1E
- bhi G_M38441_IG15
+ bhi G_M38441_IG14
mov w1, wzr ldr w2, [fp, #0x10] // [V22 tmp11] bl CORINFO_HELP_MEMSET ; gcr arg pop 0
- b G_M38441_IG16 - ;; size=64 bbWeight=0.50 PerfScore 6.75 -G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ b G_M38441_IG15 + ;; size=68 bbWeight=0.50 PerfScore 7.00 +G_M38441_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
ldr x1, [fp, #0x10] // [V22 tmp11] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -203,7 +207,7 @@ G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 blr x2 ; gcr arg pop 0 ;; size=24 bbWeight=0.50 PerfScore 3.75
-G_M38441_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w0, [x19] sub w0, w0, #1 ldr w1, [x24, w0, SXTW #2] @@ -212,7 +216,7 @@ G_M38441_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 b G_M38441_IG04 ;; size=24 bbWeight=0.50 PerfScore 4.75
-; Total bytes of code 472, prolog size 24, PerfScore 111.75, instruction count 118, allocated bytes for code 472 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
+; Total bytes of code 492, prolog size 24, PerfScore 120.25, instruction count 123, allocated bytes for code 492 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
; ============================================================ Unwind Info: @@ -223,7 +227,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 118 (0x00076) Actual length = 472 (0x0001d8)
+ Function Length : 123 (0x0007b) Actual length = 492 (0x0001ec)
---- 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)

+36 (+8.49%) : 519046.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

@@ -11,15 +11,15 @@ ; ; V00 this [V00,T01] ( 11, 7 ) byref -> x19 this single-def ; V01 arg1 [V01,T05] ( 5, 5 ) int -> x1 single-def
-; V02 loc0 [V02,T13] ( 3, 3 ) int -> x0 -; V03 loc1 [V03,T11] ( 5, 3 ) int -> x21 -; V04 loc2 [V04,T07] ( 5, 5 ) int -> x20 ld-addr-op -; V05 loc3 [V05,T03] ( 10, 8 ) int -> x22
+; V02 loc0 [V02,T14] ( 3, 3 ) int -> x0 +; V03 loc1 [V03,T12] ( 5, 3 ) int -> x21 +; V04 loc2 [V04,T07] ( 5, 4.50) int -> x20 ld-addr-op +; V05 loc3 [V05,T02] ( 12, 8 ) int -> x22
; V06 loc4 [V06,T00] ( 14, 10 ) int -> x23
-; V07 loc5 [V07,T16] ( 2, 2 ) int -> x0 -; V08 loc6 [V08,T08] ( 4, 4 ) int -> x1 -; V09 loc7 [V09,T06] ( 4, 6 ) int -> x2 -; V10 loc8 [V10,T09] ( 3, 4 ) int -> x3
+; V07 loc5 [V07,T17] ( 2, 2 ) int -> x0 +; V08 loc6 [V08,T08] ( 4, 4 ) int -> x3 +; V09 loc7 [V09,T06] ( 6, 6 ) int -> x25 +; V10 loc8 [V10,T09] ( 4, 4 ) int -> x26
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -28,22 +28,24 @@ ; V16 tmp5 [V16,T04] ( 5, 8.00) long -> [fp+0x18] spill-single-def "Inlining Arg" ;* V17 tmp6 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V18 tmp7 [V18,T10] ( 3, 4.00) long -> x0 "Cast away GC"
-; V19 cse0 [V19,T14] ( 3, 3 ) int -> x0 "CSE - aggressive" -; V20 cse1 [V20,T02] ( 10, 8 ) byref -> x24 hoist multi-def "CSE - aggressive" -; V21 cse2 [V21,T15] ( 2, 3 ) int -> x0 hoist "CSE - aggressive" -; V22 cse3 [V22,T12] ( 3, 3 ) ref -> x1 "CSE - aggressive"
+; V19 cse0 [V19,T15] ( 3, 3 ) int -> x0 "CSE - aggressive" +; V20 cse1 [V20,T03] ( 11, 8 ) byref -> x24 multi-def "CSE - aggressive" +; V21 cse2 [V21,T16] ( 3, 3 ) int -> x0 "CSE - aggressive" +; V22 cse3 [V22,T13] ( 3, 3 ) ref -> x1 "CSE - aggressive" +; V23 cse4 [V23,T11] ( 4, 3.50) int -> x1 hoist multi-def "CSE - aggressive"
; ; Lcl frame size = 16 G_M38441_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] stp x23, x24, [sp, #0x40]
+ stp x25, x26, [sp, #0x50]
mov fp, sp mov x19, x0 ; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=28 bbWeight=1 PerfScore 6.00
G_M38441_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz ldr w0, [x19] cbz w0, G_M38441_IG11 @@ -69,53 +71,59 @@ G_M38441_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=80 bbWeight=1 PerfScore 18.00
-G_M38441_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add w0, w23, #1 str w0, [x19] neg w0, w20 add w0, w0, #32
- mov w1, wzr
+ mov w3, wzr
add x24, x19, #4 ; byrRegs +[x24]
+ ldr w25, [x24, w22, SXTW #2]
and w0, w0, #31
- b G_M38441_IG05 - ;; size=32 bbWeight=1 PerfScore 5.00 -G_M38441_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref - orr w1, w1, w3 - str w1, [x24, w23, SXTW #2] - lsl w1, w2, w20 - sub w22, w22, #1 - sub w23, w23, #1 - ;; size=20 bbWeight=1 PerfScore 3.00 -G_M38441_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - ldr w2, [x24, w22, SXTW #2] - lsr w3, w2, w0
+ lsr w26, w25, w0
cmp w22, #0
- bgt G_M38441_IG04 - ;; size=16 bbWeight=2 PerfScore 10.00 -G_M38441_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3 - str w0, [x24, w23, SXTW #2]
+ bgt G_M38441_IG07 + ;; size=44 bbWeight=1 PerfScore 9.00 +G_M38441_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w1, w3, w26 + str w1, [x24, w23, SXTW #2]
sub w0, w23, #1
- lsl w1, w2, w20
+ and w1, w20, #31 + lsl w1, w25, w1
str w1, [x24, w0, SXTW #2] mov x0, x24 lsl w1, w21, #2 mov w1, w1 str x1, [fp, #0x18] // [V16 tmp5] cbz x1, G_M38441_IG10
- ;; size=40 bbWeight=1 PerfScore 7.50 -G_M38441_IG07: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+ ;; size=44 bbWeight=1 PerfScore 8.00 +G_M38441_IG05: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
cmp x1, #0xD1FFAB1E bhi G_M38441_IG09 ;; size=8 bbWeight=1.00 PerfScore 1.50
-G_M38441_IG08: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+G_M38441_IG06: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
mov w1, wzr ldr w2, [fp, #0x18] // [V16 tmp5] bl CORINFO_HELP_MEMSET ; gcr arg pop 0 b G_M38441_IG10 ;; size=16 bbWeight=0.99 PerfScore 4.44
+G_M38441_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref + and w1, w20, #31 + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M38441_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w3, w3, w26 + str w3, [x24, w23, SXTW #2] + lsl w3, w25, w1 + sub w22, w22, #1 + sub w23, w23, #1 + ldr w25, [x24, w22, SXTW #2] + lsr w26, w25, w0 + cmp w22, #0 + bgt G_M38441_IG08 + b G_M38441_IG04 + ;; size=40 bbWeight=1 PerfScore 9.00
G_M38441_IG09: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref ldr x1, [fp, #0x18] // [V16 tmp5] movz x2, #0xD1FFAB1E // code for <unknown method> @@ -134,12 +142,13 @@ G_M38441_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x2 ;; size=20 bbWeight=1 PerfScore 8.50 G_M38441_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x19 x24]
+ ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
G_M38441_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref ; byrRegs +[x19] cmp w23, #115 @@ -181,14 +190,15 @@ G_M38441_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; gcr arg pop 0 ;; size=44 bbWeight=0 PerfScore 0.00 G_M38441_IG15: ; bbWeight=0, epilog, nogc, extend
+ ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 424, prolog size 24, PerfScore 63.03, instruction count 106, allocated bytes for code 424 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
+; Total bytes of code 460, prolog size 28, PerfScore 64.78, instruction count 115, allocated bytes for code 460 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
; ============================================================ Unwind Info: @@ -199,7 +209,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 106 (0x0006a) Actual length = 424 (0x0001a8)
+ Function Length : 115 (0x00073) Actual length = 460 (0x0001cc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -212,8 +222,8 @@ Unwind Info: ---- Epilog start at index 1 ---- E6 save_next E6 save_next
+ E6 save_next
C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
- 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]! - E4 end
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end

+36 (+8.49%) : 521211.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

@@ -11,15 +11,15 @@ ; ; V00 this [V00,T01] ( 11, 7 ) byref -> x19 this single-def ; V01 arg1 [V01,T05] ( 5, 5 ) int -> x1 single-def
-; V02 loc0 [V02,T13] ( 3, 3 ) int -> x0 -; V03 loc1 [V03,T11] ( 5, 3 ) int -> x21 -; V04 loc2 [V04,T07] ( 5, 4.80) int -> x20 ld-addr-op -; V05 loc3 [V05,T04] ( 10, 7.20) int -> x22
+; V02 loc0 [V02,T14] ( 3, 3 ) int -> x0 +; V03 loc1 [V03,T12] ( 5, 3 ) int -> x21 +; V04 loc2 [V04,T07] ( 5, 4.44) int -> x20 ld-addr-op +; V05 loc3 [V05,T04] ( 12, 7.20) int -> x22
; V06 loc4 [V06,T00] ( 14, 9.40) int -> x23
-; V07 loc5 [V07,T16] ( 2, 2 ) int -> x0 -; V08 loc6 [V08,T09] ( 4, 3.60) int -> x1 -; V09 loc7 [V09,T06] ( 4, 5.40) int -> x2 -; V10 loc8 [V10,T10] ( 3, 3.60) int -> x3
+; V07 loc5 [V07,T17] ( 2, 2 ) int -> x0 +; V08 loc6 [V08,T09] ( 4, 3.60) int -> x3 +; V09 loc7 [V09,T06] ( 6, 5.40) int -> x25 +; V10 loc8 [V10,T10] ( 4, 3.60) int -> x26
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -28,22 +28,24 @@ ; V16 tmp5 [V16,T02] ( 5, 8.00) long -> [fp+0x18] spill-single-def "Inlining Arg" ;* V17 tmp6 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V18 tmp7 [V18,T08] ( 3, 4.00) long -> x0 "Cast away GC"
-; V19 cse0 [V19,T15] ( 2, 2.80) int -> x0 hoist "CSE - aggressive" -; V20 cse1 [V20,T14] ( 3, 3 ) int -> x0 "CSE - aggressive" -; V21 cse2 [V21,T03] ( 10, 7.60) byref -> x24 hoist multi-def "CSE - aggressive" -; V22 cse3 [V22,T12] ( 3, 3 ) ref -> x1 "CSE - aggressive"
+; V19 cse0 [V19,T16] ( 3, 2.80) int -> x0 "CSE - aggressive" +; V20 cse1 [V20,T15] ( 3, 3 ) int -> x0 "CSE - aggressive" +; V21 cse2 [V21,T03] ( 11, 7.60) byref -> x24 multi-def "CSE - aggressive" +; V22 cse3 [V22,T13] ( 3, 3 ) ref -> x1 "CSE - aggressive" +; V23 cse4 [V23,T11] ( 4, 3.24) int -> x1 hoist multi-def "CSE - aggressive"
; ; Lcl frame size = 16 G_M38441_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] stp x23, x24, [sp, #0x40]
+ stp x25, x26, [sp, #0x50]
mov fp, sp mov x19, x0 ; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=28 bbWeight=1 PerfScore 6.00
G_M38441_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz ldr w0, [x19] cbz w0, G_M38441_IG11 @@ -69,53 +71,59 @@ G_M38441_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=80 bbWeight=1 PerfScore 18.00
-G_M38441_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add w0, w23, #1 str w0, [x19] neg w0, w20 add w0, w0, #32
- mov w1, wzr
+ mov w3, wzr
add x24, x19, #4 ; byrRegs +[x24]
+ ldr w25, [x24, w22, SXTW #2]
and w0, w0, #31
- ;; size=28 bbWeight=1 PerfScore 4.00 -G_M38441_IG04: ; bbWeight=1.80, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - ldr w2, [x24, w22, SXTW #2] - lsr w3, w2, w0
+ lsr w26, w25, w0
cmp w22, #0
- bgt G_M38441_IG08 - ;; size=16 bbWeight=1.80 PerfScore 9.00 -G_M38441_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3 - str w0, [x24, w23, SXTW #2]
+ bgt G_M38441_IG07 + ;; size=44 bbWeight=1 PerfScore 9.00 +G_M38441_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w1, w3, w26 + str w1, [x24, w23, SXTW #2]
sub w0, w23, #1
- lsl w1, w2, w20
+ and w1, w20, #31 + lsl w1, w25, w1
str w1, [x24, w0, SXTW #2] mov x0, x24 lsl w1, w21, #2 mov w1, w1 str x1, [fp, #0x18] // [V16 tmp5] cbz x1, G_M38441_IG10
- ;; size=40 bbWeight=1 PerfScore 7.50 -G_M38441_IG06: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+ ;; size=44 bbWeight=1 PerfScore 8.00 +G_M38441_IG05: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
cmp x1, #0xD1FFAB1E bhi G_M38441_IG09 ;; size=8 bbWeight=1.00 PerfScore 1.50
-G_M38441_IG07: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+G_M38441_IG06: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
mov w1, wzr ldr w2, [fp, #0x18] // [V16 tmp5] bl CORINFO_HELP_MEMSET ; gcr arg pop 0 b G_M38441_IG10 ;; size=16 bbWeight=0.99 PerfScore 4.44
-G_M38441_IG08: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref - orr w1, w1, w3 - str w1, [x24, w23, SXTW #2] - lsl w1, w2, w20
+G_M38441_IG07: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref + and w1, w20, #31 + ;; size=4 bbWeight=0.44 PerfScore 0.22 +G_M38441_IG08: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w3, w3, w26 + str w3, [x24, w23, SXTW #2] + lsl w3, w25, w1
sub w22, w22, #1 sub w23, w23, #1
+ ldr w25, [x24, w22, SXTW #2] + lsr w26, w25, w0 + cmp w22, #0 + bgt G_M38441_IG08
b G_M38441_IG04
- ;; size=24 bbWeight=0.80 PerfScore 3.20
+ ;; size=40 bbWeight=0.80 PerfScore 7.20
G_M38441_IG09: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref ldr x1, [fp, #0x18] // [V16 tmp5] movz x2, #0xD1FFAB1E // code for <unknown method> @@ -134,12 +142,13 @@ G_M38441_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x2 ;; size=20 bbWeight=1 PerfScore 8.50 G_M38441_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x19 x24]
+ ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
G_M38441_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref ; byrRegs +[x19] cmp w23, #115 @@ -181,14 +190,15 @@ G_M38441_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; gcr arg pop 0 ;; size=44 bbWeight=0 PerfScore 0.00 G_M38441_IG15: ; bbWeight=0, epilog, nogc, extend
+ ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 424, prolog size 24, PerfScore 61.23, instruction count 106, allocated bytes for code 424 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
+; Total bytes of code 460, prolog size 28, PerfScore 62.96, instruction count 115, allocated bytes for code 460 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
; ============================================================ Unwind Info: @@ -199,7 +209,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 106 (0x0006a) Actual length = 424 (0x0001a8)
+ Function Length : 115 (0x00073) Actual length = 460 (0x0001cc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -212,8 +222,8 @@ Unwind Info: ---- Epilog start at index 1 ---- E6 save_next E6 save_next
+ E6 save_next
C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
- 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]! - E4 end
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end

+32 (+24.24%) : 254504.dasm - TestApp:test22(int):int (FullOpts)

@@ -7,17 +7,14 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 5, 5 ) int -> x0 single-def -; V01 loc0 [V01,T08] ( 3, 2 ) int -> x0
+; V00 arg0 [V00,T00] ( 7, 6.50) int -> x0 single-def +; V01 loc0 [V01,T04] ( 3, 2 ) int -> x0
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 8, 7 ) ref -> registers "Field obj" -; V04 tmp2 [V04,T02] ( 3, 6 ) ref -> x2 single-def "arr expr" -; V05 tmp3 [V05,T03] ( 3, 6 ) ref -> x2 single-def "arr expr" -;* V06 tmp4 [V06,T09] ( 0, 0 ) ref -> zero-ref single-def "arr expr" -; V07 cse0 [V07,T06] ( 3, 2.50) ref -> x1 "CSE - unknown" -; V08 cse1 [V08,T07] ( 3, 2.50) ref -> x2 "CSE - unknown" -; V09 cse2 [V09,T05] ( 3, 3 ) long -> x3 "CSE - unknown" -; V10 cse3 [V10,T04] ( 3, 3 ) long -> x1 "CSE - unknown"
+; V03 tmp1 [V03,T01] ( 9, 7.50) ref -> x1 "Field obj" +; V04 tmp2 [V04,T02] ( 3, 6 ) ref -> x1 single-def "arr expr" +; V05 tmp3 [V05,T03] ( 3, 6 ) ref -> x1 single-def "arr expr" +; V06 tmp4 [V06,T05] ( 2, 2 ) ref -> x1 single-def "arr expr" +; V07 cse0 [V07,T06] ( 2, 2 ) int -> x3 "CSE - unknown"
; ; Lcl frame size = 0 @@ -29,49 +26,65 @@ G_M47962_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- ldr x2, [x1]
+ ldr x1, [x1] + ; gcrRegs +[x1] + ldr w2, [x1, #0x08] + cmp w0, w2 + bhs G_M47962_IG06 + add x1, x1, #16 + ; gcrRegs -[x1] + ; byrRegs +[x1] + ldr x1, [x1, w0, UXTW #3] + ; gcrRegs +[x1] + ; byrRegs -[x1] + ldrsb wzr, [x1] + ldr x2, [x1, #0x10]
; gcrRegs +[x2]
- ldr w3, [x2, #0x08]
+ movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field> + ; gcrRegs -[x1] + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + ; gcrRegs +[x1] + ldr w3, [x1, #0x08]
cmp w0, w3 bhs G_M47962_IG06
- add x2, x2, #16 - ; gcrRegs -[x2] - ; byrRegs +[x2] - ubfiz x3, x0, #3, #32 - ldr x2, [x2, x3] - ; gcrRegs +[x2] - ; byrRegs -[x2] - ldrsb wzr, [x2] - ldr x4, [x2, #0x10] - ; gcrRegs +[x4] - ldr x2, [x1, #0x08] - ldr w1, [x2, #0x08] - cmp w0, w1 - bhs G_M47962_IG06 - add x0, x2, #16 - ; byrRegs +[x0] - ldr x2, [x0, x3] - mov x0, x2 - ; gcrRegs +[x0] - ; byrRegs -[x0] - ldrsb wzr, [x0] - ldr x1, [x0, #0x10]
+ add x1, x1, #16 + ; gcrRegs -[x1] + ; byrRegs +[x1] + ldr x1, [x1, w0, UXTW #3]
; gcrRegs +[x1]
- cmp x4, x1
+ ; byrRegs -[x1] + ldrsb wzr, [x1] + ldr x1, [x1, #0x10] + cmp x2, x1
beq G_M47962_IG04
- ;; size=92 bbWeight=1 PerfScore 38.50
+ ;; size=96 bbWeight=1 PerfScore 38.50
G_M47962_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0-x2 x4]
+ ; gcrRegs -[x1-x2]
mov w0, #100 b G_M47962_IG05 ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M47962_IG04: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref - ; gcrRegs +[x1-x2] - ldrsb wzr, [x2] - ldr w0, [x1, #0x08] - ;; size=8 bbWeight=0.50 PerfScore 3.00
+G_M47962_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field> + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + ; gcrRegs +[x1] + add x1, x1, #16 + ; gcrRegs -[x1] + ; byrRegs +[x1] + ldr x1, [x1, w0, UXTW #3] + ; gcrRegs +[x1] + ; byrRegs -[x1] + ldrsb wzr, [x1] + ldr x0, [x1, #0x10] + ; gcrRegs +[x0] + ldr w0, [x0, #0x08] + ; gcrRegs -[x0] + ;; size=36 bbWeight=0.50 PerfScore 8.50
G_M47962_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x1-x2]
+ ; gcrRegs -[x1]
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00 @@ -80,7 +93,7 @@ G_M47962_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 132, prolog size 8, PerfScore 45.75, instruction count 33, allocated bytes for code 132 (MethodHash=eca744a5) for method TestApp:test_2_2(int):int (FullOpts)
+; Total bytes of code 164, prolog size 8, PerfScore 51.25, instruction count 41, allocated bytes for code 164 (MethodHash=eca744a5) for method TestApp:test_2_2(int):int (FullOpts)
; ============================================================ Unwind Info: @@ -91,7 +104,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 33 (0x00021) Actual length = 132 (0x000084)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- 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

-48 (-8.51%) : 18002.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)

@@ -9,41 +9,39 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T14] ( 5, 5 ) ref -> x20 class-hnd single-def <System.Reflection.MethodBase[]> -; V01 arg1 [V01,T12] ( 4, 6 ) ref -> x19 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,T09] ( 5, 17 ) int -> x24
+; V00 arg0 [V00,T12] ( 5, 5 ) ref -> x20 class-hnd single-def <System.Reflection.MethodBase[]> +; V01 arg1 [V01,T10] ( 4, 6 ) ref -> x19 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,T05] ( 6, 19 ) int -> x24
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-; V06 loc4 [V06,T00] ( 7, 84 ) int -> [fp+0x3C]
+; 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,T13] ( 2, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase> -; V11 tmp3 [V11,T05] ( 2, 20 ) byref -> x27 "field V05._reference (fldOffset=0x0)" P-INDEP -; V12 tmp4 [V12,T03] ( 3, 24 ) int -> x28 "field V05._length (fldOffset=0x8)" P-INDEP
+; V10 tmp2 [V10,T11] ( 2, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase> +; V11 tmp3 [V11,T04] ( 2, 20 ) byref -> x26 "field V05._reference (fldOffset=0x0)" P-INDEP +; V12 tmp4 [V12,T02] ( 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,T01] ( 2, 64 ) ref -> x0 "argument with side effect"
-; V16 cse0 [V16,T02] ( 3, 48 ) long -> [fp+0x30] spill-single-def "CSE - aggressive" -; V17 cse1 [V17,T11] ( 3, 10 ) long -> x26 "CSE - aggressive" -; V18 cse2 [V18,T04] ( 4, 22 ) int -> [fp+0x2C] spill-single-def "CSE - aggressive" -; V19 cse3 [V19,T06] ( 2, 18 ) byref -> [fp+0x10] spill-single-def hoist "CSE - aggressive" -; V20 cse4 [V20,T16] ( 3, 7 ) byref -> x20 hoist "CSE - aggressive" -; V21 cse5 [V21,T15] ( 4, 7 ) int -> x21 "CSE - aggressive" -; V22 cse6 [V22,T07] ( 2, 18 ) long -> [fp+0x20] spill-single-def hoist "CSE - aggressive" -; V23 cse7 [V23,T08] ( 2, 18 ) long -> [fp+0x18] spill-single-def hoist "CSE - aggressive" -; V24 cse8 [V24,T18] ( 2, 5 ) long -> x25 hoist "CSE - moderate"
+; V16 cse0 [V16,T03] ( 4, 22 ) int -> [fp+0x2C] spill-single-def "CSE - aggressive" +; V17 cse1 [V17,T06] ( 2, 18 ) byref -> [fp+0x10] spill-single-def hoist "CSE - aggressive" +; V18 cse2 [V18,T14] ( 3, 7 ) byref -> x20 hoist "CSE - aggressive" +; V19 cse3 [V19,T13] ( 4, 7 ) int -> x21 "CSE - aggressive" +; V20 cse4 [V20,T07] ( 2, 18 ) long -> [fp+0x20] spill-single-def hoist "CSE - aggressive" +; V21 cse5 [V21,T08] ( 2, 18 ) long -> [fp+0x18] spill-single-def hoist "CSE - aggressive" +; V22 cse6 [V22,T16] ( 2, 5 ) long -> x25 hoist "CSE - moderate"
;
-; Lcl frame size = 48
+; Lcl frame size = 32
G_M8664_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x90]! - stp x19, x20, [sp, #0x40] - stp x21, x22, [sp, #0x50] - stp x23, x24, [sp, #0x60] - stp x25, x26, [sp, #0x70] - stp x27, x28, [sp, #0x80]
+ 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]
mov fp, sp mov x20, x0 ; gcrRegs +[x20] @@ -51,7 +49,7 @@ G_M8664_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19] ;; size=36 bbWeight=1 PerfScore 7.50 G_M8664_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M8664_IG19
+ cbz x20, G_M8664_IG16
ldr w21, [x20, #0x08] mov w0, w21 adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address @@ -64,7 +62,7 @@ G_M8664_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {} mov w23, wzr mov w24, wzr cmp w21, #0
- ble G_M8664_IG09
+ ble G_M8664_IG08
add x20, x20, #16 ; gcrRegs -[x20] ; byrRegs +[x20] @@ -73,8 +71,7 @@ G_M8664_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {} ;; size=60 bbWeight=1 PerfScore 14.00 G_M8664_IG03: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=100000 {x20}, byref, isz ; gcrRegs -[x0]
- ubfiz x26, x24, #3, #32 - ldr x0, [x20, x26]
+ ldr x0, [x20, w24, UXTW #3]
; gcrRegs +[x0] mov x11, x25 ldr wzr, [x0] @@ -82,76 +79,67 @@ G_M8664_IG03: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=100000 blr x1 ; gcrRegs -[x0] ; byrRegs +[x0]
- mov x27, x0 - ; byrRegs +[x27] - mov w28, w1 - cbz w28, G_M8664_IG08 - ;; size=36 bbWeight=4 PerfScore 54.00 -G_M8664_IG04: ; bbWeight=2, gcrefRegs=480000 {x19 x22}, byrefRegs=8100000 {x20 x27}, byref, isz
+ mov x26, x0 + ; byrRegs +[x26] + mov w27, w1 + cbz w27, G_M8664_IG07 + ;; size=32 bbWeight=4 PerfScore 50.00 +G_M8664_IG04: ; bbWeight=2, gcrefRegs=480000 {x19 x22}, byrefRegs=4100000 {x20 x26}, byref, isz
; byrRegs -[x0]
- mov w1, wzr - ldr w2, [x19, #0x08] - str w2, [fp, #0x2C] // [V18 cse2] - cmp w2, #0 - ble G_M8664_IG13 - adrp x3, [HIGH RELOC #0xD1FFAB1E] - add x3, x3, [LOW RELOC #0xD1FFAB1E] - str x3, [fp, #0x20] // [V22 cse6] - add x4, x19, #16 - ; byrRegs +[x4] - str x4, [fp, #0x10] // [V19 cse3] - ; GC ptr vars +{V19} - adrp x5, [HIGH RELOC #0xD1FFAB1E] - add x5, x5, [LOW RELOC #0xD1FFAB1E] - str x5, [fp, #0x18] // [V23 cse7]
+ mov w28, wzr + ldr w1, [x19, #0x08] + str w1, [fp, #0x2C] // [V16 cse0] + cmp w1, #0 + ble G_M8664_IG06 + adrp x2, [HIGH RELOC #0xD1FFAB1E] + add x2, x2, [LOW RELOC #0xD1FFAB1E] + str x2, [fp, #0x20] // [V20 cse4] + add x3, x19, #16 + ; byrRegs +[x3] + str x3, [fp, #0x10] // [V17 cse1] + ; GC ptr vars +{V17} + adrp x4, [HIGH RELOC #0xD1FFAB1E] + add x4, x4, [LOW RELOC #0xD1FFAB1E] + str x4, [fp, #0x18] // [V21 cse5]
;; size=52 bbWeight=2 PerfScore 23.00
-G_M8664_IG05: ; bbWeight=16, gcVars=0000000000000040 {V19}, gcrefRegs=480000 {x19 x22}, byrefRegs=8100000 {x20 x27}, gcvars, byref, isz - ; byrRegs -[x4] - cmp w1, w28 - bhs G_M8664_IG18 - str w1, [fp, #0x3C] // [V06 loc4] - ubfiz x6, x1, #3, #32 - str x6, [fp, #0x30] // [V16 cse0] - ldr x0, [x27, x6]
+G_M8664_IG05: ; bbWeight=16, gcVars=0000000000000040 {V17}, gcrefRegs=480000 {x19 x22}, byrefRegs=4100000 {x20 x26}, gcvars, byref, isz + ; byrRegs -[x3] + cmp w28, w27 + bhs G_M8664_IG15 + ldr x0, [x26, w28, UXTW #3]
; gcrRegs +[x0]
- mov x11, x3
+ mov x11, x2
ldr wzr, [x0]
- ldr x7, [x11] - blr x7 - ldr x2, [fp, #0x10] // [V19 cse3]
+ ldr x5, [x11] + blr x5 + ldr x2, [fp, #0x10] // [V17 cse1]
; byrRegs +[x2]
- ldr x1, [fp, #0x30] // [V16 cse0] - ldr x1, [x2, x1]
+ ldr x1, [x2, w28, UXTW #3]
; gcrRegs +[x1]
- ldr x11, [fp, #0x18] // [V23 cse7]
+ ldr x11, [fp, #0x18] // [V21 cse5]
ldr wzr, [x0] ldr x3, [x11] blr x3 ; gcrRegs -[x0-x1] ; byrRegs -[x2]
- cbz w0, G_M8664_IG07 - ldr w14, [fp, #0x3C] // [V06 loc4] - add w14, w14, #1 - ldr w15, [fp, #0x2C] // [V18 cse2] - cmp w15, w14 - ldr x3, [fp, #0x20] // [V22 cse6] - bgt G_M8664_IG12 - ;; size=96 bbWeight=16 PerfScore 640.00 -G_M8664_IG06: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=100000 {x20}, gcvars, byref - ; byrRegs -[x27] - ; GC ptr vars -{V19} - str w14, [fp, #0x3C] // [V06 loc4] - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M8664_IG07: ; bbWeight=2, gcrefRegs=480000 {x19 x22}, byrefRegs=100000 {x20}, byref, isz - ldr w15, [fp, #0x2C] // [V18 cse2] - ldr w14, [fp, #0x3C] // [V06 loc4] - cmp w15, w14 - bgt G_M8664_IG08 - ldr x15, [x20, x26]
+ cbz w0, G_M8664_IG06 + add w28, w28, #1 + ldr w14, [fp, #0x2C] // [V16 cse0] + cmp w14, w28 + ldr x2, [fp, #0x20] // [V20 cse4] + bgt G_M8664_IG05 + ;; size=76 bbWeight=16 PerfScore 528.00 +G_M8664_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=100000 {x20}, gcvars, byref, isz + ; byrRegs -[x26] + ; GC ptr vars -{V17} + ldr w14, [fp, #0x2C] // [V16 cse0] + cmp w14, w28 + bgt G_M8664_IG07 + ldr x15, [x20, w24, UXTW #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 @@ -162,65 +150,51 @@ G_M8664_IG07: ; bbWeight=2, gcrefRegs=480000 {x19 x22}, byrefRegs=100000 ; gcrRegs -[x15] ; byrRegs -[x14] add w23, w23, #1
- ;; size=60 bbWeight=2 PerfScore 40.00 -G_M8664_IG08: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=100000 {x20}, byref, isz
+ ;; size=56 bbWeight=2 PerfScore 36.00 +G_M8664_IG07: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=100000 {x20}, byref, isz
add w24, w24, #1 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
+G_M8664_IG08: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19] ; byrRegs -[x20]
- 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, #0x80] - ldp x25, x26, [sp, #0x70] - ldp x23, x24, [sp, #0x60] - ldp x21, x22, [sp, #0x50] - ldp x19, x20, [sp, #0x40] - ldp fp, lr, [sp], #0x90
+G_M8664_IG10: ; bbWeight=0.50, epilog, nogc, extend
...

-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

+20 (+7.25%) : 10465.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector5121[ushort],System.Runtime.Intrinsics.Vector5121[ushort]):System.Runtime.Intrinsics.Vector512`1ushort

@@ -9,42 +9,45 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00 ] ( 3, 4 ) struct (64) [fp+0x90] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[ushort]> -; V01 arg1 [V01 ] ( 3, 6 ) struct (64) [fp+0x50] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[ushort]> -; V02 loc0 [V02 ] ( 2, 5 ) struct (64) [fp+0x10] HFA(simd16) do-not-enreg[XSR] multireg-ret addr-exposed ld-addr-op <System.Runtime.Intrinsics.Vector512`1[ushort]> -; V03 loc1 [V03,T00] ( 9, 29 ) int -> x19 -; V04 loc2 [V04,T02] ( 4, 12 ) ushort -> x21 -; V05 loc3 [V05,T04] ( 3, 10 ) ushort -> x22
+; V00 arg0 [V00 ] ( 3, 4 ) struct (64) [fp+0x98] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[ushort]> +; V01 arg1 [V01 ] ( 3, 6 ) struct (64) [fp+0x58] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[ushort]> +; V02 loc0 [V02 ] ( 2, 5 ) struct (64) [fp+0x18] HFA(simd16) do-not-enreg[XSR] multireg-ret addr-exposed ld-addr-op <System.Runtime.Intrinsics.Vector512`1[ushort]> +; V03 loc1 [V03,T00] ( 10, 33 ) int -> x19 +; V04 loc2 [V04,T02] ( 4, 12 ) ushort -> x20 +; V05 loc3 [V05,T03] ( 3, 10 ) ushort -> x21
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp"
-; V08 tmp2 [V08,T05] ( 2, 4 ) int -> x1
+; V08 tmp2 [V08,T04] ( 2, 4 ) int -> x1
;* V09 tmp3 [V09 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V10 tmp4 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V11 tmp5 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp6 [V12 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp"
-; V13 tmp7 [V13,T07] ( 2, 4 ) int -> x1
+; V13 tmp7 [V13,T06] ( 2, 4 ) int -> x1
;* V14 tmp8 [V14 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V15 tmp9 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp10 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp11 [V17,T06] ( 2, 4 ) int -> x1
+; V17 tmp11 [V17,T05] ( 2, 4 ) int -> x1
;* V18 tmp12 [V18 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V19 tmp13 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp14 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 cse0 [V21,T01] ( 9, 18 ) ref -> x0 multi-def "CSE - aggressive"
-; V22 cse1 [V22,T03] ( 3, 12 ) long -> x20 "CSE - aggressive"
;
-; Lcl frame size = 192
+; Lcl frame size = 200
G_M32000_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0xF0]!
- stp x19, x20, [sp, #0xD0] - stp x21, x22, [sp, #0xE0]
+ stp x19, x20, [sp, #0xD8] + str x21, [sp, #0xE8]
mov fp, sp
- stp q0, q1, [fp, #0x90] // [V00 arg0], [V00 arg0+0x10] - stp q2, q3, [fp, #0xB0] // [V00 arg0+0x20], [V00 arg0+0x30] - stp q4, q5, [fp, #0x50] // [V01 arg1], [V01 arg1+0x10] - stp q6, q7, [fp, #0x70] // [V01 arg1+0x20], [V01 arg1+0x30] - ;; size=32 bbWeight=1 PerfScore 7.50
+ str q0, [fp, #0x98] // [V00 arg0] + str q1, [fp, #0xA8] // [V00 arg0+0x10] + str q2, [fp, #0xB8] // [V00 arg0+0x20] + str q3, [fp, #0xC8] // [V00 arg0+0x30] + str q4, [fp, #0x58] // [V01 arg1] + str q5, [fp, #0x68] // [V01 arg1+0x10] + str q6, [fp, #0x78] // [V01 arg1+0x20] + str q7, [fp, #0x88] // [V01 arg1+0x30] + ;; size=48 bbWeight=1 PerfScore 11.50
G_M32000_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w19, wzr ;; size=4 bbWeight=1 PerfScore 0.50 @@ -73,17 +76,16 @@ G_M32000_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 ;; size=36 bbWeight=2 PerfScore 25.00 G_M32000_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add x1, fp, #80 // [V01 arg1]
+ add x1, fp, #88 // [V01 arg1]
; byrRegs +[x1]
- sbfiz x20, x19, #1, #32 - ldrh w21, [x1, x20] - mov w22, wzr - cmp w21, #32
+ ldrh w20, [x1, w19, SXTW #2] + mov w21, wzr + cmp w20, #32
bge G_M32000_IG09
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=20 bbWeight=4 PerfScore 22.00
G_M32000_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x1]
- cmp w21, #32
+ cmp w20, #32
cset x1, lt tst w1, #255 bne G_M32000_IG08 @@ -102,9 +104,9 @@ G_M32000_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 ;; size=52 bbWeight=2 PerfScore 30.00 G_M32000_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x1, fp, #144 // [V00 arg0]
+ add x1, fp, #152 // [V00 arg0]
; byrRegs +[x1]
- ldrh w22, [x1, w21, UXTW #2]
+ ldrh w21, [x1, w20, UXTW #2]
;; size=8 bbWeight=2 PerfScore 7.00 G_M32000_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x1] @@ -132,26 +134,28 @@ G_M32000_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 ;; size=36 bbWeight=2 PerfScore 25.00 G_M32000_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add x0, fp, #16 // [V02 loc0]
+ add x0, fp, #24 // [V02 loc0]
; byrRegs +[x0]
- strh w22, [x0, x20]
+ strh w21, [x0, w19, SXTW #2]
add w19, w19, #1 cmp w19, #32 blt G_M32000_IG03 ;; size=20 bbWeight=4 PerfScore 14.00 G_M32000_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0]
- ldp q0, q1, [fp, #0x10] // [V02 loc0], [V02 loc0+0x10] - ldp q2, q3, [fp, #0x30] // [V02 loc0+0x20], [V02 loc0+0x30] - ;; size=8 bbWeight=1 PerfScore 4.00
+ ldr q0, [fp, #0x18] // [V02 loc0] + ldr q1, [fp, #0x28] // [V02 loc0+0x10] + ldr q2, [fp, #0x38] // [V02 loc0+0x20] + ldr q3, [fp, #0x48] // [V02 loc0+0x30] + ;; size=16 bbWeight=1 PerfScore 8.00
G_M32000_IG14: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0xE0] - ldp x19, x20, [sp, #0xD0]
+ ldr x21, [sp, #0xE8] + ldp x19, x20, [sp, #0xD8]
ldp fp, lr, [sp], #0xF0 ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 276, prolog size 32, PerfScore 161.00, instruction count 69, allocated bytes for code 276 (MethodHash=070182ff) for method System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[ushort],System.Runtime.Intrinsics.Vector512`1[ushort]):System.Runtime.Intrinsics.Vector512`1[ushort] (FullOpts)
+; Total bytes of code 296, prolog size 48, PerfScore 166.00, instruction count 74, allocated bytes for code 296 (MethodHash=070182ff) for method System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[ushort],System.Runtime.Intrinsics.Vector512`1[ushort]):System.Runtime.Intrinsics.Vector512`1[ushort] (FullOpts)
; ============================================================ Unwind Info: @@ -162,7 +166,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 69 (0x00045) Actual length = 276 (0x000114)
+ Function Length : 74 (0x0004a) Actual length = 296 (0x000128)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -170,10 +174,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next - C8 1A save_regp X#0 Z#26 (0x1A); stp x19, x20, [sp, #208]
+ D0 9D save_reg X#2 Z#29 (0x1D); str x21, [sp, #232] + C8 1B save_regp X#0 Z#27 (0x1B); stp x19, x20, [sp, #216]
9D save_fplr_x #29 (0x1D); stp fp, lr, [sp, #-240]! E4 end E4 end
- E4 end

+20 (+7.25%) : 10464.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector5121[short],System.Runtime.Intrinsics.Vector5121[short]):System.Runtime.Intrinsics.Vector512`1short

@@ -9,42 +9,45 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00 ] ( 3, 4 ) struct (64) [fp+0x90] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[short]> -; V01 arg1 [V01 ] ( 3, 6 ) struct (64) [fp+0x50] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[short]> -; V02 loc0 [V02 ] ( 2, 5 ) struct (64) [fp+0x10] HFA(simd16) do-not-enreg[XSR] multireg-ret addr-exposed ld-addr-op <System.Runtime.Intrinsics.Vector512`1[short]> -; V03 loc1 [V03,T00] ( 9, 29 ) int -> x19 -; V04 loc2 [V04,T02] ( 4, 12 ) ushort -> x21 -; V05 loc3 [V05,T04] ( 3, 10 ) short -> x22
+; V00 arg0 [V00 ] ( 3, 4 ) struct (64) [fp+0x98] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[short]> +; V01 arg1 [V01 ] ( 3, 6 ) struct (64) [fp+0x58] HFA(simd16) do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector512`1[short]> +; V02 loc0 [V02 ] ( 2, 5 ) struct (64) [fp+0x18] HFA(simd16) do-not-enreg[XSR] multireg-ret addr-exposed ld-addr-op <System.Runtime.Intrinsics.Vector512`1[short]> +; V03 loc1 [V03,T00] ( 10, 33 ) int -> x19 +; V04 loc2 [V04,T02] ( 4, 12 ) ushort -> x20 +; V05 loc3 [V05,T03] ( 3, 10 ) short -> x21
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) short -> zero-ref "Inline return value spill temp"
-; V08 tmp2 [V08,T05] ( 2, 4 ) int -> x1
+; V08 tmp2 [V08,T04] ( 2, 4 ) int -> x1
;* V09 tmp3 [V09 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V10 tmp4 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V11 tmp5 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp6 [V12 ] ( 0, 0 ) short -> zero-ref "Inline return value spill temp"
-; V13 tmp7 [V13,T07] ( 2, 4 ) int -> x1
+; V13 tmp7 [V13,T06] ( 2, 4 ) int -> x1
;* V14 tmp8 [V14 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V15 tmp9 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp10 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp11 [V17,T06] ( 2, 4 ) int -> x1
+; V17 tmp11 [V17,T05] ( 2, 4 ) int -> x1
;* V18 tmp12 [V18 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V19 tmp13 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp14 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 cse0 [V21,T01] ( 9, 18 ) ref -> x0 multi-def "CSE - aggressive"
-; V22 cse1 [V22,T03] ( 3, 12 ) long -> x20 "CSE - aggressive"
;
-; Lcl frame size = 192
+; Lcl frame size = 200
G_M11381_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0xF0]!
- stp x19, x20, [sp, #0xD0] - stp x21, x22, [sp, #0xE0]
+ stp x19, x20, [sp, #0xD8] + str x21, [sp, #0xE8]
mov fp, sp
- stp q0, q1, [fp, #0x90] // [V00 arg0], [V00 arg0+0x10] - stp q2, q3, [fp, #0xB0] // [V00 arg0+0x20], [V00 arg0+0x30] - stp q4, q5, [fp, #0x50] // [V01 arg1], [V01 arg1+0x10] - stp q6, q7, [fp, #0x70] // [V01 arg1+0x20], [V01 arg1+0x30] - ;; size=32 bbWeight=1 PerfScore 7.50
+ str q0, [fp, #0x98] // [V00 arg0] + str q1, [fp, #0xA8] // [V00 arg0+0x10] + str q2, [fp, #0xB8] // [V00 arg0+0x20] + str q3, [fp, #0xC8] // [V00 arg0+0x30] + str q4, [fp, #0x58] // [V01 arg1] + str q5, [fp, #0x68] // [V01 arg1+0x10] + str q6, [fp, #0x78] // [V01 arg1+0x20] + str q7, [fp, #0x88] // [V01 arg1+0x30] + ;; size=48 bbWeight=1 PerfScore 11.50
G_M11381_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w19, wzr ;; size=4 bbWeight=1 PerfScore 0.50 @@ -73,17 +76,16 @@ G_M11381_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 ;; size=36 bbWeight=2 PerfScore 25.00 G_M11381_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add x1, fp, #80 // [V01 arg1]
+ add x1, fp, #88 // [V01 arg1]
; byrRegs +[x1]
- sbfiz x20, x19, #1, #32 - ldrh w21, [x1, x20] - mov w22, wzr - cmp w21, #32
+ ldrh w20, [x1, w19, SXTW #2] + mov w21, wzr + cmp w20, #32
bge G_M11381_IG09
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=20 bbWeight=4 PerfScore 22.00
G_M11381_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x1]
- cmp w21, #32
+ cmp w20, #32
cset x1, lt tst w1, #255 bne G_M11381_IG08 @@ -102,9 +104,9 @@ G_M11381_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 ;; size=52 bbWeight=2 PerfScore 30.00 G_M11381_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x1, fp, #144 // [V00 arg0]
+ add x1, fp, #152 // [V00 arg0]
; byrRegs +[x1]
- ldrsh w22, [x1, w21, UXTW #2]
+ ldrsh w21, [x1, w20, UXTW #2]
;; size=8 bbWeight=2 PerfScore 7.00 G_M11381_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x1] @@ -132,26 +134,28 @@ G_M11381_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 ;; size=36 bbWeight=2 PerfScore 25.00 G_M11381_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add x0, fp, #16 // [V02 loc0]
+ add x0, fp, #24 // [V02 loc0]
; byrRegs +[x0]
- strh w22, [x0, x20]
+ strh w21, [x0, w19, SXTW #2]
add w19, w19, #1 cmp w19, #32 blt G_M11381_IG03 ;; size=20 bbWeight=4 PerfScore 14.00 G_M11381_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0]
- ldp q0, q1, [fp, #0x10] // [V02 loc0], [V02 loc0+0x10] - ldp q2, q3, [fp, #0x30] // [V02 loc0+0x20], [V02 loc0+0x30] - ;; size=8 bbWeight=1 PerfScore 4.00
+ ldr q0, [fp, #0x18] // [V02 loc0] + ldr q1, [fp, #0x28] // [V02 loc0+0x10] + ldr q2, [fp, #0x38] // [V02 loc0+0x20] + ldr q3, [fp, #0x48] // [V02 loc0+0x30] + ;; size=16 bbWeight=1 PerfScore 8.00
G_M11381_IG14: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0xE0] - ldp x19, x20, [sp, #0xD0]
+ ldr x21, [sp, #0xE8] + ldp x19, x20, [sp, #0xD8]
ldp fp, lr, [sp], #0xF0 ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 276, prolog size 32, PerfScore 161.00, instruction count 69, allocated bytes for code 276 (MethodHash=30e4d38a) for method System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[short],System.Runtime.Intrinsics.Vector512`1[short]):System.Runtime.Intrinsics.Vector512`1[short] (FullOpts)
+; Total bytes of code 296, prolog size 48, PerfScore 166.00, instruction count 74, allocated bytes for code 296 (MethodHash=30e4d38a) for method System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[short],System.Runtime.Intrinsics.Vector512`1[short]):System.Runtime.Intrinsics.Vector512`1[short] (FullOpts)
; ============================================================ Unwind Info: @@ -162,7 +166,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 69 (0x00045) Actual length = 276 (0x000114)
+ Function Length : 74 (0x0004a) Actual length = 296 (0x000128)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -170,10 +174,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next - C8 1A save_regp X#0 Z#26 (0x1A); stp x19, x20, [sp, #208]
+ D0 9D save_reg X#2 Z#29 (0x1D); str x21, [sp, #232] + C8 1B save_regp X#0 Z#27 (0x1B); stp x19, x20, [sp, #216]
9D save_fplr_x #29 (0x1D); stp fp, lr, [sp, #-240]! E4 end E4 end
- E4 end

+36 (+8.11%) : 31856.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel+groupByRefTypeParallel@2301-1[System.Canon,System.Canon]:Invoke(int):this (FullOpts)

@@ -12,7 +12,7 @@ ; V00 this [V00,T03] ( 9, 21 ) ref -> x19 this class-hnd single-def <Microsoft.FSharp.Collections.ArrayModule+Parallel+groupByRefTypeParallel@2301-1[System.__Canon,System.__Canon]> ; V01 arg1 [V01,T12] ( 4, 4 ) int -> x1 single-def ; V02 loc0 [V02 ] ( 4, 4 ) struct (16) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op <System.ArraySegment`1[System.__Canon]>
-; V03 loc1 [V03,T20] ( 3, 3 ) int -> x20 single-def
+; V03 loc1 [V03,T24] ( 3, 3 ) int -> x20 single-def
; V04 loc2 [V04,T00] ( 8, 26 ) int -> x21 ;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon]> ; V06 loc4 [V06,T11] ( 2, 8 ) ref -> x1 class-hnd <System.__Canon> @@ -27,35 +27,41 @@ ; V15 tmp6 [V15 ] ( 4, 4 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._offset (fldOffset=0x8)" P-DEP ; V16 tmp7 [V16 ] ( 4, 4 ) int -> [fp+0x24] do-not-enreg[X] addr-exposed "field V02._count (fldOffset=0xc)" P-DEP ;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref "field V05.value (fldOffset=0x0)" P-INDEP
-; V18 tmp9 [V18,T08] ( 3, 12 ) ref -> x24 "field V11.value (fldOffset=0x0)" P-INDEP
+; V18 tmp9 [V18,T08] ( 3, 12 ) ref -> x28 "field V11.value (fldOffset=0x0)" P-INDEP
; V19 tmp10 [V19,T13] ( 3, 6 ) ref -> x0 single-def "arr expr"
-; V20 tmp11 [V20,T17] ( 2, 4 ) long -> x1 "argument with side effect" -; V21 tmp12 [V21,T18] ( 2, 4 ) long -> x1 "argument with side effect" -; V22 tmp13 [V22,T19] ( 2, 4 ) long -> x1 "argument with side effect"
+; V20 tmp11 [V20,T21] ( 2, 4 ) long -> x1 "argument with side effect" +; V21 tmp12 [V21,T22] ( 2, 4 ) long -> x1 "argument with side effect" +; V22 tmp13 [V22,T23] ( 2, 4 ) long -> x1 "argument with side effect"
; V23 tmp14 [V23,T01] ( 3, 24 ) ref -> x0 "arr expr" ; V24 tmp15 [V24,T02] ( 3, 24 ) ref -> x14 "arr expr" ; V25 tmp16 [V25,T09] ( 3, 12 ) ref -> x0 "Field obj" ; V26 tmp17 [V26,T07] ( 2, 16 ) long -> x0 "argument with side effect" ; V27 tmp18 [V27,T04] ( 2, 16 ) ref -> x2 "argument with side effect"
-; V28 tmp19 [V28,T05] ( 2, 16 ) ref -> x23 "argument with side effect"
+; V28 tmp19 [V28,T05] ( 2, 16 ) ref -> x27 "argument with side effect"
; V29 tmp20 [V29,T06] ( 2, 16 ) byref -> x0 "argument with side effect"
-; V30 cse0 [V30,T14] ( 2, 5 ) long -> x22 hoist "CSE - aggressive" -; V31 cse1 [V31,T16] ( 4, 4 ) long -> x20 "CSE - moderate" -; V32 cse2 [V32,T10] ( 3, 12 ) long -> x23 "CSE - aggressive" -; V33 cse3 [V33,T15] ( 2, 5 ) int -> x20 hoist "CSE - moderate"
+; V30 cse0 [V30,T14] ( 2, 5 ) long -> x23 hoist "CSE - aggressive" +; V31 cse1 [V31,T20] ( 4, 4 ) long -> x20 "CSE - moderate" +; V32 cse2 [V32,T15] ( 2, 5 ) int -> x20 hoist "CSE - aggressive" +; V33 cse3 [V33,T16] ( 2, 5 ) long -> x22 hoist "CSE - aggressive" +; V34 cse4 [V34,T17] ( 2, 5 ) long -> x24 hoist "CSE - aggressive" +; V35 cse5 [V35,T18] ( 2, 5 ) long -> x25 hoist "CSE - aggressive" +; V36 cse6 [V36,T19] ( 2, 5 ) long -> x26 hoist "CSE - aggressive" +; V37 cse7 [V37,T10] ( 3, 12 ) long -> x27 "CSE - aggressive"
; ; Lcl frame size = 32 G_M55655_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]!
+ 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]
mov fp, sp str x0, [fp, #0x28] mov x19, x0 ; gcrRegs +[x19]
- ;; size=28 bbWeight=1 PerfScore 6.00
+ ;; size=36 bbWeight=1 PerfScore 8.00
G_M55655_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x0, [x19, #0x28] ; gcrRegs +[x0] @@ -104,14 +110,22 @@ G_M55655_IG04: ; bbWeight=1, isz, extend sub w20, w0, #1 cmp w20, w21 blt G_M55655_IG06
+ adrp x22, [HIGH RELOC #0xD1FFAB1E] + add x22, x22, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x19] adrp x11, [HIGH RELOC #0xD1FFAB1E] add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] blr x1
- mov x22, x0
+ mov x23, x0 + adrp x24, [HIGH RELOC #0xD1FFAB1E] + add x24, x24, [LOW RELOC #0xD1FFAB1E] + adrp x25, [HIGH RELOC #0xD1FFAB1E] + add x25, x25, [LOW RELOC #0xD1FFAB1E] + adrp x26, [HIGH RELOC #0xD1FFAB1E] + add x26, x26, [LOW RELOC #0xD1FFAB1E]
add w20, w20, #1
- ;; size=148 bbWeight=1 PerfScore 39.00
+ ;; size=180 bbWeight=1 PerfScore 43.00
G_M55655_IG05: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x0, [x19, #0x10] ; gcrRegs +[x0] @@ -121,30 +135,30 @@ G_M55655_IG05: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ubfiz x23, x21, #3, #32 - ldr x1, [x0, x23]
+ mov w27, w21 + ldr x1, [x0, x27, LSL #3]
; gcrRegs +[x1] ldr x0, [x19, #0x08] ; gcrRegs +[x0] ; byrRegs -[x0]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E]
+ mov x11, x22
ldr wzr, [x0] ldr x2, [x11] blr x2 ; gcrRegs -[x1]
- mov x24, x0 - ; gcrRegs +[x24]
+ mov x28, x0 + ; gcrRegs +[x28]
ldr x14, [x19, #0x20] ; gcrRegs +[x14] ldr w15, [x14, #0x08] cmp w21, w15 bhs G_M55655_IG07
- add x15, x23, #16
+ lsl x15, x27, #3 + add x15, x15, #16
add x14, x14, x15 ; gcrRegs -[x14] ; byrRegs +[x14]
- mov x15, x24
+ mov x15, x28
; gcrRegs +[x15] adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_ASSIGN_REF add x12, x12, [LOW RELOC #0xD1FFAB1E] @@ -152,45 +166,44 @@ G_M55655_IG05: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by blr x12 ; gcrRegs -[x0 x15] ; byrRegs -[x14]
- ldr x23, [x19, #0x18] - ; gcrRegs +[x23] - mov x0, x22 - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E]
+ ldr x27, [x19, #0x18] + ; gcrRegs +[x27] + mov x0, x23 + mov x11, x24
ldr x1, [x11] blr x1 ; gcrRegs +[x0] mov x2, x0 ; gcrRegs +[x2]
- mov x0, x23 - mov x1, x24
+ mov x0, x27 + mov x1, x28
; gcrRegs +[x1]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E]
+ mov x11, x25
ldr wzr, [x0] ldr x3, [x11] blr x3
- ; gcrRegs -[x1-x2 x23-x24]
+ ; gcrRegs -[x1-x2 x27-x28]
ldrsb wzr, [x0] add x0, x0, #8 ; gcrRegs -[x0] ; byrRegs +[x0]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E]
+ mov x11, x26
ldr x1, [x11] blr x1 ; byrRegs -[x0] add w21, w21, #1 cmp w21, w20 bne G_M55655_IG05
- ;; size=192 bbWeight=4 PerfScore 264.00
+ ;; size=180 bbWeight=4 PerfScore 258.00
G_M55655_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc
+ 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], #0x60
+ ldp fp, lr, [sp], #0x80
ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00
+ ;; size=28 bbWeight=1 PerfScore 7.00
G_M55655_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address add x0, x0, [LOW RELOC #0xD1FFAB1E] @@ -199,18 +212,18 @@ G_M55655_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 brk_windows #0 ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 444, prolog size 24, PerfScore 328.50, instruction count 111, allocated bytes for code 444 (MethodHash=9a9c2698) for method Microsoft.FSharp.Collections.ArrayModule+Parallel+groupByRefTypeParallel@2301-1[System.__Canon,System.__Canon]:Invoke(int):this (FullOpts)
+; Total bytes of code 480, prolog size 32, PerfScore 330.50, instruction count 120, allocated bytes for code 480 (MethodHash=9a9c2698) for method Microsoft.FSharp.Collections.ArrayModule+Parallel+groupByRefTypeParallel@2301-1[System.__Canon,System.__Canon]:Invoke(int):this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 3
Epilog Count : 1 E bit : 0 X bit : 0 Vers : 0
- Function Length : 111 (0x0006f) Actual length = 444 (0x0001bc)
+ Function Length : 120 (0x00078) Actual length = 480 (0x0001e0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -220,8 +233,12 @@ Unwind Info: ---- Epilog start at index 1 ---- E6 save_next E6 save_next
+ E6 save_next + E6 save_next
C8 06 save_regp X#0 Z#6 (0x06); stp x19, x20, [sp, #48]
- 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
+ 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]! + E4 end + E4 end
E4 end E4 end

libraries.pmi.windows.arm64.checked.mch

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

-8 (-8.70%) : 228502.dasm - System.Collections.Generic.SegmentedList`1[short]:get_Item(long):short:this (FullOpts)

@@ -33,8 +33,7 @@ G_M64153_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre add x2, x2, #16 ; gcrRegs -[x2] ; byrRegs +[x2]
- lsl x3, x3, #3 - ldr x2, [x2, x3]
+ ldr x2, [x2, x3, LSL #3]
; gcrRegs +[x2] ; byrRegs -[x2] ldrsw x0, [x0, #0x28] @@ -45,9 +44,8 @@ G_M64153_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre bhs G_M64153_IG04 add x1, x2, #16 ; byrRegs +[x1]
- lsl x0, x0, #1 - ldrsh w0, [x1, x0] - ;; size=68 bbWeight=1 PerfScore 28.00
+ ldrsh w0, [x1, x0, LSL #2] + ;; size=60 bbWeight=1 PerfScore 26.00
G_M64153_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr @@ -59,7 +57,7 @@ G_M64153_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 31.50, instruction count 23, allocated bytes for code 92 (MethodHash=05c40566) for method System.Collections.Generic.SegmentedList`1[short]:get_Item(long):short:this (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 29.50, instruction count 21, allocated bytes for code 84 (MethodHash=05c40566) for method System.Collections.Generic.SegmentedList`1[short]:get_Item(long):short:this (FullOpts)
; ============================================================ Unwind Info: @@ -70,7 +68,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)

-8 (-8.70%) : 228522.dasm - System.Collections.Generic.SegmentedList`1[double]:get_Item(long):double:this (FullOpts)

@@ -33,8 +33,7 @@ G_M9401_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref add x2, x2, #16 ; gcrRegs -[x2] ; byrRegs +[x2]
- lsl x3, x3, #3 - ldr x2, [x2, x3]
+ ldr x2, [x2, x3, LSL #3]
; gcrRegs +[x2] ; byrRegs -[x2] ldrsw x0, [x0, #0x28] @@ -45,9 +44,8 @@ G_M9401_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref bhs G_M9401_IG04 add x1, x2, #16 ; byrRegs +[x1]
- lsl x0, x0, #3 - ldr d0, [x1, x0] - ;; size=68 bbWeight=1 PerfScore 28.00
+ ldr d0, [x1, x0, LSL #3] + ;; size=60 bbWeight=1 PerfScore 26.00
G_M9401_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr @@ -59,7 +57,7 @@ G_M9401_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 31.50, instruction count 23, allocated bytes for code 92 (MethodHash=a2eadb46) for method System.Collections.Generic.SegmentedList`1[double]:get_Item(long):double:this (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 29.50, instruction count 21, allocated bytes for code 84 (MethodHash=a2eadb46) for method System.Collections.Generic.SegmentedList`1[double]:get_Item(long):double:this (FullOpts)
; ============================================================ Unwind Info: @@ -70,7 +68,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)

+12 (+4.48%) : 13699.dasm - System.Collections.Generic.ObjectEqualityComparer`1[long]:IndexOf(long[],long,int,int):int:this (FullOpts)

@@ -9,35 +9,35 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[long]>
-; V01 arg1 [V01,T08] ( 7, 5.08) ref -> x20 class-hnd single-def <long[]> -; V02 arg2 [V02,T07] ( 4, 6 ) long -> x19 single-def -; V03 arg3 [V03,T09] ( 4, 4 ) int -> x3 single-def -; V04 arg4 [V04,T11] ( 3, 3 ) int -> x4 single-def -; V05 loc0 [V05,T06] ( 6, 8 ) int -> x21
+; V01 arg1 [V01,T06] ( 7, 5.08) ref -> x20 class-hnd single-def <long[]> +; V02 arg2 [V02,T05] ( 4, 6 ) long -> x19 single-def +; V03 arg3 [V03,T07] ( 4, 4 ) int -> x3 single-def +; V04 arg4 [V04,T10] ( 3, 3 ) int -> x4 single-def +; V05 loc0 [V05,T04] ( 6, 8 ) int -> x21
;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref ; V07 loc2 [V07,T01] ( 13, 19.54) int -> x22 ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) long -> zero-ref "spilling side-effects" ; V10 tmp2 [V10,T00] ( 6, 24 ) ref -> x0 class-hnd exact "Single-def Box Helper" <System.Int64>
-; V11 tmp3 [V11,T02] ( 4, 16 ) byref -> registers "impImportAndPushBox"
+; V11 tmp3 [V11,T02] ( 4, 16 ) byref -> x25 "impImportAndPushBox"
;* V12 tmp4 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V13 tmp5 [V13,T03] ( 4, 16 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Int64>
-; V14 cse0 [V14,T04] ( 2, 7.92) long -> x20 "CSE - aggressive" -; V15 cse1 [V15,T05] ( 4, 5.04) byref -> x23 hoist multi-def "CSE - aggressive" -; V16 cse2 [V16,T10] ( 4, 5.04) long -> x24 hoist multi-def "CSE - aggressive"
+; V14 cse0 [V14,T08] ( 4, 5.04) byref -> x23 hoist multi-def "CSE - aggressive" +; V15 cse1 [V15,T09] ( 4, 5.04) long -> x24 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M53699_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 fp, lr, [sp, #-0x50]! + stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + stp x23, x24, [sp, #0x38] + str x25, [sp, #0x48]
mov fp, sp mov x20, x1 ; gcrRegs +[x20] mov x19, x2
- ;; size=28 bbWeight=1 PerfScore 5.50
+ ;; size=32 bbWeight=1 PerfScore 6.50
G_M53699_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz add w21, w3, w4 sxtw w22, w3 @@ -57,15 +57,15 @@ G_M53699_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ;; size=56 bbWeight=1 PerfScore 11.50 G_M53699_IG03: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz ; gcrRegs -[x20]
- ubfiz x20, x22, #3, #32
mov x0, x24 bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0
- add x20, x23, x20 - ; byrRegs +[x20]
+ ubfiz x1, x22, #3, #32 + add x25, x23, x1 + ; byrRegs +[x25]
str x19, [x0, #0x08]
- ldr x1, [x20]
+ ldr x1, [x25]
ldr x0, [x0, #0x08] ; gcrRegs -[x0] cmp x1, x0 @@ -75,7 +75,7 @@ G_M53699_IG03: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=800000 {x23} blt G_M53699_IG03 ;; size=48 bbWeight=3.96 PerfScore 53.46 G_M53699_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x20 x23]
+ ; byrRegs -[x23 x25]
b G_M53699_IG06 ;; size=4 bbWeight=0.50 PerfScore 0.50 G_M53699_IG05: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz @@ -93,11 +93,10 @@ G_M53699_IG05: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=0000 {} ; gcrRegs +[x0] ; gcr arg pop 0 ubfiz x1, x22, #3, #32
- add x1, x23, x1 - ; byrRegs +[x1]
+ add x25, x23, x1 + ; byrRegs +[x25]
str x19, [x0, #0x08]
- ldr x1, [x1] - ; byrRegs -[x1]
+ ldr x1, [x25]
ldr x0, [x0, #0x08] ; gcrRegs -[x0] cmp x1, x0 @@ -108,44 +107,46 @@ G_M53699_IG05: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=0000 {} ;; size=76 bbWeight=0.04 PerfScore 0.80 G_M53699_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x20]
- ; byrRegs -[x23]
+ ; byrRegs -[x23 x25]
movn w0, #0 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M53699_IG07: ; bbWeight=0.50, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x40
+ ldr x25, [sp, #0x48] + ldp x23, x24, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 2.50
+ ;; size=24 bbWeight=0.50 PerfScore 3.50
G_M53699_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref mov w0, w22 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M53699_IG09: ; bbWeight=0.50, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x40
+ ldr x25, [sp, #0x48] + ldp x23, x24, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 2.50
+ ;; size=24 bbWeight=0.50 PerfScore 3.50
G_M53699_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 268, prolog size 28, PerfScore 77.26, instruction count 67, allocated bytes for code 268 (MethodHash=c3f02e3c) for method System.Collections.Generic.ObjectEqualityComparer`1[long]:IndexOf(long[],long,int,int):int:this (FullOpts)
+; Total bytes of code 280, prolog size 32, PerfScore 80.26, instruction count 70, allocated bytes for code 280 (MethodHash=c3f02e3c) for method System.Collections.Generic.ObjectEqualityComparer`1[long]:IndexOf(long[],long,int,int):int:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 3
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 67 (0x00043) Actual length = 268 (0x00010c)
+ Function Length : 70 (0x00046) Actual length = 280 (0x000118)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -156,10 +157,13 @@ 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 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ 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
E4 end E4 end

+32 (+7.84%) : 176386.dasm - System.Data.ExpressionParser:ScanNumeric():this (FullOpts)

@@ -7,25 +7,26 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 21, 41.50) ref -> x19 this class-hnd single-def <System.Data.ExpressionParser> -; V01 loc0 [V01,T06] ( 3, 10 ) ref -> x20 class-hnd single-def <<unknown class>> -; V02 loc1 [V02,T13] ( 3, 2 ) ubyte -> x21 -;* V03 loc2 [V03,T15] ( 0, 0 ) ubyte -> zero-ref
+; V00 this [V00,T01] ( 21, 38.50) ref -> x19 this class-hnd single-def <System.Data.ExpressionParser> +; V01 loc0 [V01,T10] ( 3, 3 ) ref -> x0 class-hnd single-def <<unknown class>> +; V02 loc1 [V02,T14] ( 3, 2 ) ubyte -> x20 +;* V03 loc2 [V03,T16] ( 0, 0 ) ubyte -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T00] ( 3, 48 ) int -> x0 "index expr"
+; V05 tmp1 [V05,T02] ( 6, 30 ) int -> x21 "index expr"
; V06 tmp2 [V06,T07] ( 3, 6 ) int -> x0 "index expr"
-; V07 tmp3 [V07,T01] ( 3, 48 ) int -> x0 "index expr"
+; V07 tmp3 [V07,T00] ( 3, 48 ) int -> x0 "index expr"
; V08 tmp4 [V08,T08] ( 3, 6 ) int -> x1 "index expr"
-;* V09 tmp5 [V09,T16] ( 0, 0 ) int -> zero-ref "index expr" -; V10 tmp6 [V10,T10] ( 3, 3 ) int -> x0 "index expr" -;* V11 tmp7 [V11,T17] ( 0, 0 ) int -> zero-ref "index expr" -; V12 tmp8 [V12,T04] ( 3, 24 ) int -> x0 "index expr" -; V13 cse0 [V13,T14] ( 3, 1.50) int -> x0 "CSE - moderate" -; V14 cse1 [V14,T11] ( 3, 2.50) int -> x1 "CSE - aggressive" -; V15 cse2 [V15,T12] ( 3, 1.50) int -> x0 "CSE - aggressive" -; V16 cse3 [V16,T09] ( 3, 2.50) int -> x0 "CSE - aggressive" -; V17 cse4 [V17,T05] ( 7, 23.50) byref -> x22 hoist "CSE - aggressive" -; V18 cse5 [V18,T03] ( 7, 30.50) int -> x23 "CSE - aggressive"
+;* V09 tmp5 [V09,T17] ( 0, 0 ) int -> zero-ref "index expr" +; V10 tmp6 [V10,T11] ( 3, 3 ) int -> x0 "index expr" +;* V11 tmp7 [V11,T18] ( 0, 0 ) int -> zero-ref "index expr" +; V12 tmp8 [V12,T03] ( 3, 24 ) int -> x0 "index expr" +; V13 cse0 [V13,T15] ( 3, 1.50) int -> x0 "CSE - moderate" +; V14 cse1 [V14,T12] ( 3, 2.50) int -> x1 "CSE - aggressive" +; V15 cse2 [V15,T06] ( 3, 12 ) int -> x21 "CSE - aggressive" +; V16 cse3 [V16,T13] ( 3, 1.50) int -> x0 "CSE - aggressive" +; V17 cse4 [V17,T09] ( 3, 2.50) int -> x0 "CSE - aggressive" +; V18 cse5 [V18,T04] ( 8, 20.50) byref -> x23 "CSE - aggressive" +; V19 cse6 [V19,T05] ( 8, 20.50) int -> x22 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -38,147 +39,153 @@ G_M57065_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x0 ; gcrRegs +[x19] ;; size=24 bbWeight=1 PerfScore 5.00
-G_M57065_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ldr x20, [x19, #0x08] - ; gcrRegs +[x20] - mov w21, wzr - add x22, x20, #16 - ; byrRegs +[x22] - b G_M57065_IG04 - ;; size=16 bbWeight=1 PerfScore 5.00 -G_M57065_IG03: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=400000 {x22}, byref
+G_M57065_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr x0, [x19, #0x08] + ; gcrRegs +[x0] + mov w20, wzr + ldr w21, [x19, #0x30] + ldr w22, [x0, #0x08] + cmp w21, w22 + bhs G_M57065_IG19 + add x23, x0, #16 + ; byrRegs +[x23] + ldrh w0, [x23, w21, UXTW #2] + ; gcrRegs -[x0] + movz x1, #0xD1FFAB1E // code for System.Data.ExpressionParser:IsDigit(ushort):ubyte + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + cbz w0, G_M57065_IG04 + ;; size=56 bbWeight=1 PerfScore 21.00 +G_M57065_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [x19, #0x30]
- add w0, w0, #1 - str w0, [x19, #0x30] - ;; size=12 bbWeight=2 PerfScore 9.00 -G_M57065_IG04: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=400000 {x22}, byref, isz - ldr w0, [x19, #0x30] - ldr w23, [x20, #0x08] - cmp w0, w23 - bhs G_M57065_IG20 - ldrh w0, [x22, w0, UXTW #2]
+ add w21, w0, #1 + str w21, [x19, #0x30] + cmp w21, w22 + bhs G_M57065_IG19 + ldrh w0, [x23, w21, UXTW #2]
movz x1, #0xD1FFAB1E // code for System.Data.ExpressionParser:IsDigit(ushort):ubyte movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 cbnz w0, G_M57065_IG03
- ;; size=44 bbWeight=8 PerfScore 136.00 -G_M57065_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz - ; gcrRegs -[x20]
+ ;; size=48 bbWeight=4 PerfScore 62.00 +G_M57065_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [x19, #0x30]
- cmp w0, w23 - bhs G_M57065_IG20 - ldrh w0, [x22, w0, UXTW #2]
+ cmp w0, w22 + bhs G_M57065_IG19 + ldrh w0, [x23, w0, UXTW #2]
ldrh w1, [x19, #0x4E] cmp w0, w1
- bne G_M57065_IG08
+ bne G_M57065_IG07
;; size=28 bbWeight=1 PerfScore 12.00
-G_M57065_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref - mov w21, #1
+G_M57065_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref + mov w20, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M57065_IG07: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
+G_M57065_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref
ldr w0, [x19, #0x30] add w0, w0, #1 str w0, [x19, #0x30] ;; size=12 bbWeight=2 PerfScore 9.00
-G_M57065_IG08: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M57065_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [x19, #0x30]
- cmp w0, w23 - bhs G_M57065_IG20 - ldrh w0, [x22, w0, UXTW #2]
+ cmp w0, w22 + bhs G_M57065_IG19 + ldrh w0, [x23, w0, UXTW #2]
movz x1, #0xD1FFAB1E // code for System.Data.ExpressionParser:IsDigit(ushort):ubyte movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- cbnz w0, G_M57065_IG07
+ cbnz w0, G_M57065_IG06
;; size=40 bbWeight=8 PerfScore 112.00
-G_M57065_IG09: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M57065_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [x19, #0x30] sxtw w1, w0
- cmp w1, w23 - bhs G_M57065_IG20 - ldrh w1, [x22, w1, UXTW #2]
+ cmp w1, w22 + bhs G_M57065_IG19 + ldrh w1, [x23, w1, UXTW #2]
ldrh w2, [x19, #0x52] cmp w1, w2
- beq G_M57065_IG11
+ beq G_M57065_IG10
;; size=32 bbWeight=1 PerfScore 12.50
-G_M57065_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M57065_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldrh w2, [x19, #0x54] cmp w1, w2
- bne G_M57065_IG16
+ bne G_M57065_IG15
;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M57065_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M57065_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
add w0, w0, #1 str w0, [x19, #0x30]
- cmp w0, w23 - bhs G_M57065_IG20 - ldrh w0, [x22, w0, UXTW #2]
+ cmp w0, w22 + bhs G_M57065_IG19 + ldrh w0, [x23, w0, UXTW #2]
cmp w0, #45
- beq G_M57065_IG12
+ beq G_M57065_IG11
cmp w0, #43
- bne G_M57065_IG13
+ bne G_M57065_IG12
;; size=36 bbWeight=0.50 PerfScore 4.50
-G_M57065_IG12: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
+G_M57065_IG11: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref
ldr w0, [x19, #0x30] add w0, w0, #1 str w0, [x19, #0x30] ;; size=12 bbWeight=2 PerfScore 9.00
-G_M57065_IG13: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M57065_IG12: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [x19, #0x30]
- cmp w0, w23 - bhs G_M57065_IG20 - ldrh w0, [x22, w0, UXTW #2]
+ cmp w0, w22 + bhs G_M57065_IG19 + ldrh w0, [x23, w0, UXTW #2]
movz x1, #0xD1FFAB1E // code for System.Data.ExpressionParser:IsDigit(ushort):ubyte movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- cbnz w0, G_M57065_IG12
+ cbnz w0, G_M57065_IG11
;; size=40 bbWeight=4 PerfScore 56.00
-G_M57065_IG14: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; byrRegs -[x22]
+G_M57065_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; byrRegs -[x23]
mov w0, #4 str w0, [x19, #0x38] ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M57065_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M57065_IG14: ; 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 ret lr ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M57065_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - cbz w21, G_M57065_IG18
+G_M57065_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz + cbz w20, G_M57065_IG17
mov w0, #3 str w0, [x19, #0x38] ;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M57065_IG17: ; bbWeight=0.50, epilog, nogc, extend
+G_M57065_IG16: ; 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 ret lr ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M57065_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M57065_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
mov w0, #2 str w0, [x19, #0x38] ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M57065_IG19: ; bbWeight=0.50, epilog, nogc, extend
+G_M57065_IG18: ; 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 ret lr ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M57065_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M57065_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19] ...

+32 (+26.67%) : 176387.dasm - System.Data.ExpressionParser:ScanName():this (FullOpts)

@@ -7,66 +7,74 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 7, 16 ) ref -> x19 this class-hnd single-def <System.Data.ExpressionParser> -; V01 loc0 [V01,T02] ( 3, 10 ) ref -> x20 class-hnd single-def <<unknown class>>
+; V00 this [V00,T01] ( 7, 13 ) ref -> x19 this class-hnd single-def <System.Data.ExpressionParser> +; V01 loc0 [V01,T05] ( 3, 3 ) ref -> x0 class-hnd single-def <<unknown class>>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 3, 48 ) int -> x0 "index expr" -; V04 cse0 [V04,T03] ( 2, 9 ) byref -> x21 hoist "CSE - aggressive"
+; V03 tmp1 [V03,T00] ( 6, 30 ) int -> x20 "index expr" +; V04 cse0 [V04,T02] ( 3, 12 ) int -> x20 "CSE - aggressive" +; V05 cse1 [V05,T03] ( 3, 6 ) byref -> x22 "CSE - aggressive" +; V06 cse2 [V06,T04] ( 3, 6 ) int -> x21 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M25477_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 x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M25477_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ldr x20, [x19, #0x08] - ; gcrRegs +[x20] - add x21, x20, #16 - ; byrRegs +[x21] - b G_M25477_IG04 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M25477_IG03: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
+G_M25477_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr x0, [x19, #0x08] + ; gcrRegs +[x0] + ldr w20, [x19, #0x30] + ldr w21, [x0, #0x08] + cmp w20, w21 + bhs G_M25477_IG06 + add x22, x0, #16 + ; byrRegs +[x22] + ldrh w0, [x22, w20, UXTW #2] + ; gcrRegs -[x0] + movz x1, #0xD1FFAB1E // code for <unknown method> + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + cbz w0, G_M25477_IG04 + ;; size=52 bbWeight=1 PerfScore 20.50 +G_M25477_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
ldr w0, [x19, #0x30]
- add w0, w0, #1 - str w0, [x19, #0x30] - ;; size=12 bbWeight=2 PerfScore 9.00 -G_M25477_IG04: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz - ldr w0, [x19, #0x30] - ldr w1, [x20, #0x08] - cmp w0, w1 - bhs G_M25477_IG07 - ldrh w0, [x21, w0, UXTW #2]
+ add w20, w0, #1 + str w20, [x19, #0x30] + cmp w20, w21 + bhs G_M25477_IG06 + ldrh w0, [x22, w20, UXTW #2]
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 cbnz w0, G_M25477_IG03
- ;; size=44 bbWeight=8 PerfScore 136.00 -G_M25477_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x20] - ; byrRegs -[x21]
+ ;; size=48 bbWeight=4 PerfScore 62.00 +G_M25477_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; byrRegs -[x22]
mov w0, #1 str w0, [x19, #0x38] ;; size=8 bbWeight=1 PerfScore 1.50
-G_M25477_IG06: ; bbWeight=1, epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+G_M25477_IG05: ; bbWeight=1, epilog, nogc, extend + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00 -G_M25477_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=1 PerfScore 4.00 +G_M25477_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19] bl CORINFO_HELP_RNGCHKFAIL brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 120, prolog size 16, PerfScore 160.00, instruction count 30, allocated bytes for code 120 (MethodHash=0db89c7a) for method System.Data.ExpressionParser:ScanName():this (FullOpts)
+; Total bytes of code 152, prolog size 16, PerfScore 92.00, instruction count 38, allocated bytes for code 152 (MethodHash=0db89c7a) for method System.Data.ExpressionParser:ScanName():this (FullOpts)
; ============================================================ Unwind Info: @@ -77,7 +85,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ 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) @@ -85,9 +93,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]
+ E6 save_next + 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

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

+24 (+5.77%) : 446866.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

@@ -14,86 +14,54 @@ ; V02 loc0 [V02,T02] ( 3, 2.23) int -> x0 ; V03 loc1 [V03,T10] ( 5, 0.69) int -> x21 ; V04 loc2 [V04,T07] ( 5, 0.99) int -> x20 ld-addr-op
-; V05 loc3 [V05,T06] ( 10, 1.20) int -> x22
+; V05 loc3 [V05,T06] ( 12, 1.20) int -> x22
; V06 loc4 [V06,T04] ( 14, 1.82) int -> x23
-; V07 loc5 [V07,T15] ( 2, 0.46) int -> x0 -; V08 loc6 [V08,T12] ( 4, 0.60) int -> x1 -; V09 loc7 [V09,T09] ( 4, 0.90) int -> x2 -; V10 loc8 [V10,T13] ( 3, 0.60) int -> x3
+; V07 loc5 [V07,T14] ( 3, 0.53) int -> x0 +; V08 loc6 [V08,T12] ( 4, 0.60) int -> x3 +; V09 loc7 [V09,T09] ( 6, 0.90) int -> x25 +; V10 loc8 [V10,T13] ( 4, 0.60) int -> x26
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V14 tmp3 [V14,T03] ( 5, 1.84) long -> [fp+0x18] spill-single-def "Inlining Arg" ;* V15 tmp4 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V16 tmp5 [V16,T08] ( 3, 0.92) long -> x0 "Cast away GC"
-; V17 cse0 [V17,T14] ( 2, 0.53) int -> x0 hoist "CSE - conservative" -; V18 cse1 [V18,T11] ( 3, 0.69) int -> x0 "CSE - conservative" -; V19 cse2 [V19,T05] ( 10, 1.52) byref -> x24 hoist multi-def "CSE - moderate"
+; V17 cse0 [V17,T11] ( 3, 0.69) int -> x0 "CSE - conservative" +; V18 cse1 [V18,T05] ( 11, 1.52) byref -> x24 multi-def "CSE - moderate"
; ; Lcl frame size = 16 G_M38441_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] stp x23, x24, [sp, #0x40]
+ stp x25, x26, [sp, #0x50]
mov fp, sp mov x19, x0 ; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=28 bbWeight=1 PerfScore 6.00
G_M38441_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz ldr w0, [x19]
- cbnz w0, G_M38441_IG07
+ cbnz w0, G_M38441_IG04
;; size=8 bbWeight=1 PerfScore 4.00 G_M38441_IG03: ; bbWeight=0.77, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x19]
+ ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0.77 PerfScore 3.85 -G_M38441_IG04: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, gcvars, byref - ; byrRegs +[x19 x24] - orr w1, w1, w3 - str w1, [x24, w23, SXTW #2] - lsl w1, w2, w20 - sub w22, w22, #1 - sub w23, w23, #1 - ;; size=20 bbWeight=0.07 PerfScore 0.21 -G_M38441_IG05: ; bbWeight=0.30, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - ldr w2, [x24, w22, SXTW #2] - lsr w3, w2, w0 - cmp w22, #0 - bgt G_M38441_IG04 - ;; size=16 bbWeight=0.30 PerfScore 1.50 -G_M38441_IG06: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3 - str w0, [x24, w23, SXTW #2] - sub w0, w23, #1 - lsl w1, w2, w20 - str w1, [x24, w0, SXTW #2] - mov x0, x24 - lsl w1, w21, #2 - mov w1, w1 - str x1, [fp, #0x18] // [V14 tmp3] - cbz x1, G_M38441_IG08 - cmp x1, #0xD1FFAB1E - bhi G_M38441_IG13 - mov w1, wzr - ldr w2, [fp, #0x18] // [V14 tmp3] - bl CORINFO_HELP_MEMSET - ; gcr arg pop 0 - b G_M38441_IG08 - ;; size=64 bbWeight=0.23 PerfScore 3.10 -G_M38441_IG07: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - ; byrRegs -[x24]
+ ;; size=24 bbWeight=0.77 PerfScore 4.62 +G_M38441_IG04: ; bbWeight=0.23, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz + ; byrRegs +[x19]
cbz w1, G_M38441_IG03 and w20, w1, #31 lsr w21, w1, #5 sub w22, w0, #1 add w23, w22, w21
- cbz w20, G_M38441_IG09
+ cbz w20, G_M38441_IG08
add w23, w23, #1 cmp w23, #115 cset x0, lt @@ -107,13 +75,46 @@ G_M38441_IG07: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, str w0, [x19] neg w0, w20 add w0, w0, #32
- mov w1, wzr
+ mov w3, wzr
add x24, x19, #4 ; byrRegs +[x24]
- and w0, w0, #31
+ ldr w25, [x24, w22, SXTW #2] + lsr w26, w25, w0 + cmp w22, #0 + bgt G_M38441_IG06 + ;; size=96 bbWeight=0.23 PerfScore 4.60 +G_M38441_IG05: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w0, w3, w26 + str w0, [x24, w23, SXTW #2] + sub w0, w23, #1 + lsl w1, w25, w20 + str w1, [x24, w0, SXTW #2] + mov x0, x24 + lsl w1, w21, #2 + mov w1, w1 + str x1, [fp, #0x18] // [V14 tmp3] + cbz x1, G_M38441_IG07 + cmp x1, #0xD1FFAB1E + bhi G_M38441_IG12 + mov w1, wzr + ldr w2, [fp, #0x18] // [V14 tmp3] + bl CORINFO_HELP_MEMSET + ; gcr arg pop 0 + b G_M38441_IG07 + ;; size=64 bbWeight=0.23 PerfScore 3.10 +G_M38441_IG06: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w3, w3, w26 + str w3, [x24, w23, SXTW #2] + lsl w3, w25, w20 + sub w22, w22, #1 + sub w23, w23, #1 + ldr w25, [x24, w22, SXTW #2] + lsr w26, w25, w0 + cmp w22, #0 + bgt G_M38441_IG06
b G_M38441_IG05
- ;; size=88 bbWeight=0.23 PerfScore 3.79 -G_M38441_IG08: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+ ;; size=40 bbWeight=0.07 PerfScore 0.62 +G_M38441_IG07: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w0, [x19] sub w0, w0, #1 ldr w1, [x24, w0, SXTW #2] @@ -121,7 +122,7 @@ G_M38441_IG08: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 str w0, [x19] b G_M38441_IG03 ;; size=24 bbWeight=0.23 PerfScore 2.18
-G_M38441_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
; byrRegs -[x24] cmp w23, #115 cset x0, lt @@ -131,9 +132,9 @@ G_M38441_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ldr x1, [x1] blr x1 ; gcr arg pop 0
- b G_M38441_IG11
+ b G_M38441_IG10
;; size=32 bbWeight=0 PerfScore 0.00
-G_M38441_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
add x24, x19, #4 ; byrRegs +[x24] sbfiz x0, x23, #2, #32 @@ -144,9 +145,9 @@ G_M38441_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by sub w22, w22, #1 sub w23, w23, #1 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M38441_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M38441_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs -[x0 x24]
- tbz w22, #31, G_M38441_IG10
+ tbz w22, #31, G_M38441_IG09
ldr w0, [x19] add w0, w0, w21 str w0, [x19] @@ -161,14 +162,15 @@ G_M38441_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; byrRegs -[x0 x19] ; gcr arg pop 0 ;; size=44 bbWeight=0 PerfScore 0.00
-G_M38441_IG12: ; bbWeight=0, epilog, nogc, extend
+G_M38441_IG11: ; bbWeight=0, epilog, nogc, extend + ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00 -G_M38441_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, gcvars, byref
+ ;; size=24 bbWeight=0 PerfScore 0.00 +G_M38441_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, gcvars, byref
; byrRegs +[x19 x24] ldr x1, [fp, #0x18] // [V14 tmp3] movz x2, #0xD1FFAB1E // code for <unknown method> @@ -177,10 +179,10 @@ G_M38441_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ldr x2, [x2] blr x2 ; gcr arg pop 0
- b G_M38441_IG08
+ b G_M38441_IG07
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 416, prolog size 24, PerfScore 23.64, instruction count 104, allocated bytes for code 416 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
+; Total bytes of code 440, prolog size 28, PerfScore 25.13, instruction count 110, allocated bytes for code 440 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
; ============================================================ Unwind Info: @@ -191,7 +193,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 104 (0x00068) Actual length = 416 (0x0001a0)
+ Function Length : 110 (0x0006e) Actual length = 440 (0x0001b8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -204,8 +206,8 @@ Unwind Info: ---- Epilog start at index 1 ---- E6 save_next E6 save_next
+ E6 save_next
C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
- 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]! - E4 end
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end

+24 (+5.77%) : 328651.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

@@ -11,24 +11,25 @@ ; ; V00 this [V00,T04] ( 11, 5.33) byref -> x19 this single-def ; V01 arg1 [V01,T07] ( 5, 3.75) int -> x1 single-def
-; V02 loc0 [V02,T11] ( 3, 2.58) int -> x0 -; V03 loc1 [V03,T13] ( 5, 1.75) int -> x21 -; V04 loc2 [V04,T08] ( 5, 5.18) int -> x20 ld-addr-op -; V05 loc3 [V05,T00] ( 10, 13.74) int -> x22
+; V02 loc0 [V02,T12] ( 3, 2.58) int -> x0 +; V03 loc1 [V03,T14] ( 5, 1.75) int -> x21 +; V04 loc2 [V04,T11] ( 5, 2.81) int -> x20 ld-addr-op +; V05 loc3 [V05,T00] ( 12, 13.74) int -> x22
; V06 loc4 [V06,T01] ( 14, 12.63) int -> x23
-; V07 loc5 [V07,T15] ( 2, 1.16) int -> x0
+; V07 loc5 [V07,T16] ( 2, 1.16) int -> x0
; V08 loc6 [V08,T05] ( 4, 6.87) int -> x1
-; V09 loc7 [V09,T02] ( 4, 10.30) int -> x2 -; V10 loc8 [V10,T06] ( 3, 6.87) int -> x3
+; V09 loc7 [V09,T02] ( 6, 10.30) int -> x2 +; V10 loc8 [V10,T06] ( 4, 6.87) int -> x3
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V14 tmp3 [V14,T09] ( 5, 4.65) long -> [fp+0x18] spill-single-def "Inlining Arg"
+; V14 tmp3 [V14,T08] ( 5, 4.65) long -> [fp+0x18] spill-single-def "Inlining Arg"
;* V15 tmp4 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V16 tmp5 [V16,T12] ( 3, 2.33) long -> x0 "Cast away GC" -; V17 cse0 [V17,T14] ( 3, 1.75) int -> x0 "CSE - moderate" -; V18 cse1 [V18,T03] ( 10, 9.19) byref -> x24 hoist multi-def "CSE - aggressive" -; V19 cse2 [V19,T10] ( 2, 4.02) int -> x0 hoist "CSE - aggressive"
+; V16 tmp5 [V16,T13] ( 3, 2.33) long -> x0 "Cast away GC" +; V17 cse0 [V17,T15] ( 3, 1.75) int -> x0 "CSE - moderate" +; V18 cse1 [V18,T03] ( 11, 9.19) byref -> x24 multi-def "CSE - aggressive" +; V19 cse2 [V19,T10] ( 3, 4.02) int -> x0 "CSE - aggressive" +; V20 cse3 [V20,T09] ( 4, 4.50) int -> x4 hoist multi-def "CSE - aggressive"
; ; Lcl frame size = 16 @@ -46,7 +47,7 @@ G_M38441_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by cbz w0, G_M38441_IG04 ;; size=8 bbWeight=1 PerfScore 4.00 G_M38441_IG03: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- cbnz w1, G_M38441_IG08
+ cbnz w1, G_M38441_IG09
;; size=4 bbWeight=0.58 PerfScore 0.58 G_M38441_IG04: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x19] @@ -56,46 +57,8 @@ G_M38441_IG04: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ldp fp, lr, [sp], #0x50 ret lr ;; size=20 bbWeight=0.42 PerfScore 2.09
-G_M38441_IG05: ; bbWeight=2.85, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, gcvars, byref - ; byrRegs +[x19 x24] - orr w1, w1, w3 - str w1, [x24, w23, SXTW #2] - lsl w1, w2, w20 - sub w22, w22, #1 - sub w23, w23, #1 - ;; size=20 bbWeight=2.85 PerfScore 8.56 -G_M38441_IG06: ; bbWeight=3.43, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - ldr w2, [x24, w22, SXTW #2] - lsr w3, w2, w0 - cmp w22, #0 - bgt G_M38441_IG05 - ;; size=16 bbWeight=3.43 PerfScore 17.17 -G_M38441_IG07: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3 - str w0, [x24, w23, SXTW #2] - sub w0, w23, #1 - lsl w1, w2, w20 - str w1, [x24, w0, SXTW #2] - mov x0, x24 - lsl w1, w21, #2 - mov w1, w1 - str x1, [fp, #0x18] // [V14 tmp3] - cbz x1, G_M38441_IG09 - cmp x1, #0xD1FFAB1E - bhi G_M38441_IG14 - mov w1, wzr - ldr w2, [fp, #0x18] // [V14 tmp3] - bl CORINFO_HELP_MEMSET - ; gcr arg pop 0 - b G_M38441_IG09 - ;; size=64 bbWeight=0.58 PerfScore 7.85 -G_M38441_IG08: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - ; byrRegs -[x24] - and w20, w1, #31 - lsr w21, w1, #5 - sub w22, w0, #1 - add w23, w22, w21 - cbz w20, G_M38441_IG10
+G_M38441_IG05: ; bbWeight=0.58, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz + ; byrRegs +[x19]
add w23, w23, #1 cmp w23, #115 cset x0, lt @@ -112,10 +75,57 @@ G_M38441_IG08: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, mov w1, wzr add x24, x19, #4 ; byrRegs +[x24]
+ ldr w2, [x24, w22, SXTW #2]
and w0, w0, #31
- b G_M38441_IG06 - ;; size=84 bbWeight=0.58 PerfScore 9.02 -G_M38441_IG09: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+ lsr w3, w2, w0 + cmp w22, #0 + ble G_M38441_IG08 + ;; size=76 bbWeight=0.58 PerfScore 9.31 +G_M38441_IG06: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref + and w4, w20, #31 + ;; size=4 bbWeight=0.48 PerfScore 0.24 +G_M38441_IG07: ; bbWeight=2.85, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w1, w1, w3 + str w1, [x24, w23, SXTW #2] + lsl w1, w2, w4 + sub w22, w22, #1 + sub w23, w23, #1 + ldr w2, [x24, w22, SXTW #2] + lsr w3, w2, w0 + cmp w22, #0 + bgt G_M38441_IG07 + ;; size=36 bbWeight=2.85 PerfScore 22.82 +G_M38441_IG08: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w4, w1, w3 + str w4, [x24, w23, SXTW #2] + sub w0, w23, #1 + and w4, w20, #31 + lsl w1, w2, w4 + str w1, [x24, w0, SXTW #2] + mov x0, x24 + lsl w1, w21, #2 + mov w1, w1 + str x1, [fp, #0x18] // [V14 tmp3] + cbz x1, G_M38441_IG10 + cmp x1, #0xD1FFAB1E + bhi G_M38441_IG15 + mov w1, wzr + ldr w2, [fp, #0x18] // [V14 tmp3] + bl CORINFO_HELP_MEMSET + ; gcr arg pop 0 + b G_M38441_IG10 + ;; size=68 bbWeight=0.58 PerfScore 8.14 +G_M38441_IG09: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz + ; byrRegs -[x24] + and w20, w1, #31 + lsr w21, w1, #5 + sub w22, w0, #1 + add w23, w22, w21 + cbz w20, G_M38441_IG11 + b G_M38441_IG05 + ;; size=24 bbWeight=0.58 PerfScore 2.62 +G_M38441_IG10: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + ; byrRegs +[x24]
ldr w0, [x19] sub w0, w0, #1 ldr w1, [x24, w0, SXTW #2] @@ -123,7 +133,7 @@ G_M38441_IG09: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 str w0, [x19] b G_M38441_IG04 ;; size=24 bbWeight=0.58 PerfScore 5.53
-G_M38441_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
; byrRegs -[x24] cmp w23, #115 cset x0, lt @@ -133,9 +143,9 @@ G_M38441_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ldr x1, [x1] blr x1 ; gcr arg pop 0
- b G_M38441_IG12
+ b G_M38441_IG13
;; size=32 bbWeight=0 PerfScore 0.00
-G_M38441_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
add x24, x19, #4 ; byrRegs +[x24] sbfiz x0, x23, #2, #32 @@ -146,9 +156,9 @@ G_M38441_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by sub w22, w22, #1 sub w23, w23, #1 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M38441_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M38441_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs -[x0 x24]
- tbz w22, #31, G_M38441_IG11
+ tbz w22, #31, G_M38441_IG12
ldr w0, [x19] add w0, w0, w21 str w0, [x19] @@ -163,14 +173,14 @@ G_M38441_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; byrRegs -[x0 x19] ; gcr arg pop 0 ;; size=44 bbWeight=0 PerfScore 0.00
-G_M38441_IG13: ; bbWeight=0, epilog, nogc, extend
+G_M38441_IG14: ; bbWeight=0, epilog, nogc, extend
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x50 ret lr ;; size=20 bbWeight=0 PerfScore 0.00
-G_M38441_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, gcvars, byref
+G_M38441_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, gcvars, byref
; byrRegs +[x19 x24] ldr x1, [fp, #0x18] // [V14 tmp3] movz x2, #0xD1FFAB1E // code for <unknown method> @@ -179,10 +189,10 @@ G_M38441_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ldr x2, [x2] blr x2 ; gcr arg pop 0
- b G_M38441_IG09
+ b G_M38441_IG10
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 416, prolog size 24, PerfScore 59.79, instruction count 104, allocated bytes for code 416 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
+; Total bytes of code 440, prolog size 24, PerfScore 60.33, instruction count 110, allocated bytes for code 440 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
; ============================================================ Unwind Info: @@ -193,7 +203,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 104 (0x00068) Actual length = 416 (0x0001a0)
+ Function Length : 110 (0x0006e) Actual length = 440 (0x0001b8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+36 (+9.18%) : 172649.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

@@ -9,75 +9,89 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 17, 3.15) byref -> x19 this single-def
+; V00 this [V00,T00] ( 18, 3.15) byref -> x19 this single-def
; V01 arg1 [V01,T01] ( 5, 2.05) int -> x1 single-def ; V02 loc0 [V02,T02] ( 3, 2.02) int -> x0 ; V03 loc1 [V03,T11] ( 5, 0.05) int -> x21 ; V04 loc2 [V04,T06] ( 5, 0.07) int -> x20 ld-addr-op
-; V05 loc3 [V05,T04] ( 10, 0.11) int -> x22
+; V05 loc3 [V05,T04] ( 12, 0.11) int -> x22
; V06 loc4 [V06,T03] ( 14, 0.14) int -> x23
-; V07 loc5 [V07,T13] ( 2, 0.04) int -> x0 -; V08 loc6 [V08,T09] ( 4, 0.05) int -> x1 -; V09 loc7 [V09,T05] ( 4, 0.08) int -> x2 -; V10 loc8 [V10,T10] ( 3, 0.05) int -> x3
+; V07 loc5 [V07,T14] ( 2, 0.03) int -> x0 +; V08 loc6 [V08,T09] ( 4, 0.05) int -> x2 +; V09 loc7 [V09,T05] ( 6, 0.08) int -> x24 +; V10 loc8 [V10,T10] ( 4, 0.05) int -> x25
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V14 tmp3 [V14,T07] ( 2, 0.06) long -> x0 "Cast away GC" ; V15 tmp4 [V15,T08] ( 2, 0.06) long -> x0 "argument with side effect" ; V16 cse0 [V16,T12] ( 3, 0.05) int -> x1 "CSE - conservative"
+; V17 cse1 [V17,T13] ( 3, 0.04) int -> x0 "CSE - conservative"
; ; Lcl frame size = 8 G_M38441_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
+ stp fp, lr, [sp, #-0x50]!
stp x19, x20, [sp, #0x18] stp x21, x22, [sp, #0x28]
- str x23, [sp, #0x38]
+ stp x23, x24, [sp, #0x38] + str x25, [sp, #0x48]
mov fp, sp mov x19, x0 ; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=28 bbWeight=1 PerfScore 6.00
G_M38441_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz ldr w0, [x19]
- cbnz w0, G_M38441_IG07
+ cbnz w0, G_M38441_IG04
;; size=8 bbWeight=1 PerfScore 4.00 G_M38441_IG03: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x19]
- ldr x23, [sp, #0x38]
+ ldr x25, [sp, #0x48] + ldp x23, x24, [sp, #0x38]
ldp x21, x22, [sp, #0x28] ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x50
ret lr
- ;; size=20 bbWeight=0.98 PerfScore 5.90 -G_M38441_IG04: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref
+ ;; size=24 bbWeight=0.98 PerfScore 6.89 +G_M38441_IG04: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz
; byrRegs +[x19]
- add x4, x19, #4 - ; byrRegs +[x4] - orr w1, w1, w3 - str w1, [x4, w23, SXTW #2] - lsl w1, w2, w20 - sub w22, w22, #1 - sub w23, w23, #1 - ;; size=24 bbWeight=0.01 PerfScore 0.04 -G_M38441_IG05: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - ; byrRegs -[x4] - add x2, x19, #4 - ; byrRegs +[x2] - ldr w2, [x2, w22, SXTW #2] - ; byrRegs -[x2] - lsr w3, w2, w0
+ cbz w1, G_M38441_IG03 + and w20, w1, #31 + lsr w21, w1, #5 + sub w22, w0, #1 + add w23, w22, w21 + cbz w20, G_M38441_IG08 + add w23, w23, #1 + cmp w23, #115 + cset x0, lt + movz x1, #0xD1FFAB1E // code for <unknown method> + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + ; gcr arg pop 0 + add w0, w23, #1 + str w0, [x19] + neg w0, w20 + add w0, w0, #32 + mov w2, wzr + add x1, x19, #4 + ; byrRegs +[x1] + ldr w24, [x1, w22, SXTW #2] + and w0, w0, #31 + lsr w25, w24, w0
cmp w22, #0
- bgt G_M38441_IG04 - ;; size=20 bbWeight=0.03 PerfScore 0.15 -G_M38441_IG06: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ bgt G_M38441_IG06 + ;; size=100 bbWeight=0.02 PerfScore 0.32 +G_M38441_IG05: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz + ; byrRegs -[x1]
add x0, x19, #4 ; byrRegs +[x0]
- orr w1, w1, w3
+ orr w1, w2, w25
str w1, [x0, w23, SXTW #2] add x0, x19, #4 sub w1, w23, #1
- lsl w2, w2, w20
+ lsl w2, w24, w20
str w2, [x0, w1, SXTW #2] add x0, x19, #4 lsl w1, w21, #2 @@ -99,29 +113,24 @@ G_M38441_IG06: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, str w1, [x19] b G_M38441_IG03 ;; size=88 bbWeight=0.02 PerfScore 0.35
-G_M38441_IG07: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - cbz w1, G_M38441_IG03 - and w20, w1, #31 - lsr w21, w1, #5 - sub w22, w0, #1 - add w23, w22, w21 - cbz w20, G_M38441_IG08 - add w23, w23, #1 - cmp w23, #115 - cset x0, lt - movz x1, #0xD1FFAB1E // code for <unknown method> - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - add w0, w23, #1 - str w0, [x19] - neg w0, w20 - add w0, w0, #32 - mov w1, wzr
+G_M38441_IG06: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz + add x1, x19, #4 + ; byrRegs +[x1] + orr w2, w2, w25 + str w2, [x1, w23, SXTW #2] + lsl w2, w24, w20 + sub w22, w22, #1 + sub w23, w23, #1 + add x1, x19, #4 + ldr w24, [x1, w22, SXTW #2] + lsr w25, w24, w0 + cmp w22, #0 + bgt G_M38441_IG06 + ;; size=44 bbWeight=0.01 PerfScore 0.10 +G_M38441_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref + ; byrRegs -[x1]
b G_M38441_IG05
- ;; size=80 bbWeight=0.02 PerfScore 0.25
+ ;; size=4 bbWeight=0.01 PerfScore 0.01
G_M38441_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref cmp w23, #115 cset x0, lt @@ -164,25 +173,26 @@ G_M38441_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; gcr arg pop 0 ;; size=44 bbWeight=0 PerfScore 0.00 G_M38441_IG11: ; bbWeight=0, epilog, nogc, extend
- ldr x23, [sp, #0x38]
+ ldr x25, [sp, #0x48] + ldp x23, x24, [sp, #0x38]
ldp x21, x22, [sp, #0x28] ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x50
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 392, prolog size 24, PerfScore 15.68, instruction count 98, allocated bytes for code 392 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
+; Total bytes of code 428, prolog size 28, PerfScore 17.67, instruction count 107, allocated bytes for code 428 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 3
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 98 (0x00062) Actual length = 392 (0x000188)
+ Function Length : 107 (0x0006b) Actual length = 428 (0x0001ac)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -193,9 +203,13 @@ 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]
+ 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]
- 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]! + E4 end + E4 end + E4 end
E4 end

librariestestsnotieredcompilation.run.windows.arm64.Release.mch

-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

-12 (-7.69%) : 215981.dasm - System.Collections.Generic.SortUtils:MoveNansToFrontfloat,System.__Canon:int (FullOpts)

@@ -11,25 +11,22 @@ ;* 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[float]> ;* V02 arg1 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.__Canon]>
-; V03 loc0 [V03,T02] ( 7, 12 ) int -> x0 -; V04 loc1 [V04,T00] ( 7, 21 ) int -> x5 -; V05 loc2 [V05,T14] ( 2, 4 ) float -> d17 -; V06 loc3 [V06,T11] ( 2, 4 ) ref -> x6 class-hnd <System.__Canon>
+; V03 loc0 [V03,T03] ( 7, 12 ) int -> x0 +; V04 loc1 [V04,T00] ( 6, 19 ) int -> x5 +; V05 loc2 [V05,T11] ( 2, 4 ) float -> d17 +; V06 loc3 [V06,T08] ( 2, 4 ) ref -> x7 class-hnd <System.__Canon>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) int -> zero-ref ;* V09 tmp2 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V10 tmp3 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 tmp4 [V11,T12] ( 3, 24 ) float -> d17 "Inlining Arg" -; V12 tmp5 [V12,T01] ( 5, 11 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V13 tmp6 [V13,T04] ( 4, 8 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V14 tmp7 [V14,T03] ( 5, 9 ) byref -> x3 single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V15 tmp8 [V15,T06] ( 3, 5 ) int -> x4 single-def "field V02._length (fldOffset=0x8)" P-INDEP -; V16 cse0 [V16,T13] ( 3, 10 ) float -> d16 "CSE - aggressive" -; V17 cse1 [V17,T05] ( 3, 10 ) long -> x14 "CSE - aggressive" -; V18 cse2 [V18,T07] ( 3, 6 ) long -> x12 "CSE - aggressive" -; V19 cse3 [V19,T08] ( 3, 6 ) long -> x14 "CSE - aggressive" -; V20 cse4 [V20,T09] ( 3, 6 ) long -> x7 "CSE - aggressive" -; V21 cse5 [V21,T10] ( 3, 6 ) long -> x15 "CSE - aggressive"
+; V11 tmp4 [V11,T09] ( 3, 24 ) float -> d17 "Inlining Arg" +; V12 tmp5 [V12,T02] ( 5, 11 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V13 tmp6 [V13,T06] ( 4, 8 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V14 tmp7 [V14,T04] ( 5, 9 ) byref -> x3 single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V15 tmp8 [V15,T07] ( 3, 5 ) int -> x4 single-def "field V02._length (fldOffset=0x8)" P-INDEP +; V16 cse0 [V16,T10] ( 3, 10 ) float -> d16 "CSE - aggressive" +; V17 cse1 [V17,T01] ( 5, 14 ) long -> x6 "CSE - aggressive" +; V18 cse2 [V18,T05] ( 5, 10 ) long -> x14 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -45,43 +42,40 @@ G_M45669_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=000A {x1 x3}, b ble G_M45669_IG07 ;; size=16 bbWeight=1 PerfScore 2.50 G_M45669_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=000A {x1 x3}, byref, isz
- ubfiz x14, x5, #2, #32 - ldr s16, [x1, x14]
+ mov w6, w5 + ldr s16, [x1, x6, LSL #2]
fmov s17, s16 fcmp s17, s17 beq G_M45669_IG06
- ;; size=20 bbWeight=4 PerfScore 26.00
+ ;; size=20 bbWeight=4 PerfScore 24.00
G_M45669_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=000A {x1 x3}, byref, isz cmp w0, w2 bhs G_M45669_IG08
- mov w15, w0 - lsl x12, x15, #2 - ldr s17, [x1, x12] - str s16, [x1, x12] - str s17, [x1, x14]
+ mov w14, w0 + ldr s17, [x1, x14, LSL #2] + str s16, [x1, x14, LSL #2] + str s17, [x1, x6, LSL #2]
cmp w5, w4 bhs G_M45669_IG05 cmp w0, w4 bhs G_M45669_IG08
- lsl x14, x15, #3 - ldr x6, [x3, x14] - ; gcrRegs +[x6] - add x14, x3, x14
+ ldr x7, [x3, x14, LSL #3] + ; gcrRegs +[x7] + add x14, x3, x14, LSL #3
; byrRegs +[x14]
- ubfiz x7, x5, #3, #32 - ldr x15, [x3, x7]
+ ldr x15, [x3, x6, LSL #3]
; gcrRegs +[x15] bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x14]
- add x14, x3, x7
+ add x14, x3, x6, LSL #3
; byrRegs +[x14]
- mov x15, x6
+ mov x15, x7
; gcrRegs +[x15] bl CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[x6 x15]
+ ; gcrRegs -[x7 x15]
; byrRegs -[x14]
- ;; size=80 bbWeight=2 PerfScore 45.00
+ ;; size=68 bbWeight=2 PerfScore 41.00
G_M45669_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=000A {x1 x3}, byref add w0, w0, #1 ;; size=4 bbWeight=2 PerfScore 1.00 @@ -101,7 +95,7 @@ G_M45669_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 156, prolog size 8, PerfScore 86.00, instruction count 39, allocated bytes for code 156 (MethodHash=f42d4d9a) for method System.Collections.Generic.SortUtils:MoveNansToFront[float,System.__Canon](System.Span`1[float],System.Span`1[System.__Canon]):int (FullOpts)
+; Total bytes of code 144, prolog size 8, PerfScore 80.00, instruction count 36, allocated bytes for code 144 (MethodHash=f42d4d9a) for method System.Collections.Generic.SortUtils:MoveNansToFront[float,System.__Canon](System.Span`1[float],System.Span`1[System.__Canon]):int (FullOpts)
; ============================================================ Unwind Info: @@ -112,7 +106,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
+ Function Length : 36 (0x00024) Actual length = 144 (0x000090)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-12 (-7.32%) : 40420.dasm - Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter:g_CloseGenericParametersIfAny|440(System.Type[]):ubyte:this (FullOpts)

@@ -7,30 +7,28 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 3, 6 ) ref -> x20 this class-hnd single-def <Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter> -; V01 arg1 [V01,T03] ( 5, 6 ) ref -> x19 class-hnd single-def <System.Type[]> -; V02 loc0 [V02,T07] ( 3, 4 ) ubyte -> x21 -; V03 loc1 [V03,T00] ( 6, 19 ) int -> x22
+; V00 this [V00,T03] ( 3, 6 ) ref -> x20 this class-hnd single-def <Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter> +; V01 arg1 [V01,T02] ( 5, 6 ) ref -> x19 class-hnd single-def <System.Type[]> +; V02 loc0 [V02,T06] ( 3, 4 ) ubyte -> x21 +; V03 loc1 [V03,T00] ( 7, 21 ) int -> x22
; V04 loc2 [V04,T01] ( 4, 12 ) ref -> x2 class-hnd <System.Type> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 cse0 [V06,T02] ( 3, 10 ) long -> x25 "CSE - aggressive" -; V07 cse1 [V07,T05] ( 3, 7 ) byref -> x24 hoist "CSE - aggressive" -; V08 cse2 [V08,T06] ( 3, 6 ) int -> x23 "CSE - aggressive"
+; V06 cse0 [V06,T04] ( 3, 7 ) byref -> x24 hoist "CSE - aggressive" +; V07 cse1 [V07,T05] ( 3, 6 ) int -> x23 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M44596_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 x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19]
- ;; size=32 bbWeight=1 PerfScore 6.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M44596_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz mov w21, wzr mov w22, wzr @@ -41,8 +39,7 @@ G_M44596_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; byrRegs +[x24] ;; size=24 bbWeight=1 PerfScore 6.00 G_M44596_IG03: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=1000000 {x24}, byref, isz
- ubfiz x25, x22, #3, #32 - ldr x1, [x24, x25]
+ ldr x1, [x24, w22, UXTW #3]
; gcrRegs +[x1] mov x0, x20 ; gcrRegs +[x0] @@ -55,10 +52,10 @@ G_M44596_IG03: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=100000 mov x2, x0 ; gcrRegs +[x2] cbz x2, G_M44596_IG05
- ;; size=40 bbWeight=4 PerfScore 46.00
+ ;; size=36 bbWeight=4 PerfScore 42.00
G_M44596_IG04: ; bbWeight=2, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=1000000 {x24}, byref, isz ; gcrRegs -[x0]
- ldr x1, [x24, x25]
+ ldr x1, [x24, w22, UXTW #3]
; gcrRegs +[x1] cmp x1, x2 beq G_M44596_IG05 @@ -81,26 +78,25 @@ G_M44596_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w0, w21 ;; size=4 bbWeight=1 PerfScore 0.50 G_M44596_IG07: ; bbWeight=1, epilog, nogc, extend
- ldr x25, [sp, #0x48] - ldp x23, x24, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x50
+ 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
-; Total bytes of code 164, prolog size 24, PerfScore 88.00, instruction count 41, allocated bytes for code 164 (MethodHash=792251cb) for method Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter:<GetClosedParameterType>g__CloseGenericParametersIfAny|44_0(System.Type[]):ubyte:this (FullOpts)
+; Total bytes of code 152, prolog size 20, PerfScore 81.00, instruction count 38, allocated bytes for code 152 (MethodHash=792251cb) for method Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter:<GetClosedParameterType>g__CloseGenericParametersIfAny|44_0(System.Type[]):ubyte:this (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 : 41 (0x00029) Actual length = 164 (0x0000a4)
+ 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) @@ -108,13 +104,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

+44 (+4.37%) : 197201.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512UInt16ShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)

@@ -9,9 +9,9 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests>
-; V01 loc0 [V01,T18] ( 3, 9 ) struct (64) [fp+0x150] HFA(simd16) do-not-enreg[S] <System.Runtime.Intrinsics.Vector512`1[ushort]> -; V02 loc1 [V02,T04] ( 9, 31.30) int -> x19 -; V03 loc2 [V03,T05] ( 9, 31.30) int -> x19
+; V01 loc0 [V01,T18] ( 3, 9 ) struct (64) [fp+0x158] HFA(simd16) do-not-enreg[S] <System.Runtime.Intrinsics.Vector512`1[ushort]> +; V02 loc1 [V02,T05] ( 9, 31.30) int -> x19 +; V03 loc2 [V03,T06] ( 9, 31.30) int -> x19
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (64) zero-ref HFA(simd16) do-not-enreg[S] "impAppendStmt" <System.Runtime.Intrinsics.Vector512`1[ushort]> ;* V06 tmp2 [V06 ] ( 0, 0 ) struct (64) zero-ref HFA(simd16) do-not-enreg[S] "spilled call-like call argument" <System.Runtime.Intrinsics.Vector512`1[ushort]> @@ -29,12 +29,12 @@ ;* V18 tmp14 [V18 ] ( 0, 0 ) struct (32) zero-ref HFA(simd16) "Inline return value spill temp" <System.Runtime.Intrinsics.Vector256`1[ushort]> ;* V19 tmp15 [V19 ] ( 0, 0 ) struct (32) zero-ref HFA(simd16) ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.Intrinsics.Vector256`1[ushort]> ;* V20 tmp16 [V20 ] ( 0, 0 ) struct (64) zero-ref HFA(simd16) do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.Intrinsics.Vector512`1[ushort]>
-; V21 tmp17 [V21 ] ( 2, 5 ) struct (64) [fp+0x110] HFA(simd16) do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.Intrinsics.Vector512`1[ushort]> -; V22 tmp18 [V22,T07] ( 9, 29 ) int -> x19 "Inline stloc first use temp" -; V23 tmp19 [V23 ] ( 5, 16 ) struct (64) [fp+0xD0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector512`1[ushort]> -; V24 tmp20 [V24,T15] ( 4, 12 ) ushort -> x21 "Inline stloc first use temp" -; V25 tmp21 [V25,T17] ( 3, 10 ) ushort -> x22 "Inline stloc first use temp" -; V26 tmp22 [V26 ] ( 5, 12 ) struct (64) [fp+0x90] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector512`1[ushort]>
+; V21 tmp17 [V21 ] ( 2, 5 ) struct (64) [fp+0x118] HFA(simd16) do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.Intrinsics.Vector512`1[ushort]> +; V22 tmp18 [V22,T00] ( 10, 33 ) int -> x19 "Inline stloc first use temp" +; V23 tmp19 [V23 ] ( 5, 16 ) struct (64) [fp+0xD8] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector512`1[ushort]> +; V24 tmp20 [V24,T16] ( 4, 12 ) ushort -> x20 "Inline stloc first use temp" +; V25 tmp21 [V25,T17] ( 3, 10 ) ushort -> x21 "Inline stloc first use temp" +; V26 tmp22 [V26 ] ( 5, 12 ) struct (64) [fp+0x98] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector512`1[ushort]>
;* V27 tmp23 [V27 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp" ; V28 tmp24 [V28,T21] ( 2, 4 ) int -> x0 ;* V29 tmp25 [V29 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" @@ -49,7 +49,7 @@ ;* V38 tmp34 [V38 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V39 tmp35 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V40 tmp36 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V41 tmp37 [V41 ] ( 2, 16.12) struct (64) [fp+0x50] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector512`1[ushort]>
+; V41 tmp37 [V41 ] ( 2, 16.12) struct (64) [fp+0x58] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector512`1[ushort]>
; V42 tmp38 [V42,T19] ( 2, 8.12) ushort -> x20 "Inline return value spill temp" ; V43 tmp39 [V43,T23] ( 2, 4 ) int -> x0 ;* V44 tmp40 [V44 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" @@ -59,9 +59,9 @@ ; V48 tmp44 [V48,T08] ( 3, 24.36) ref -> x22 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]> ;* V49 tmp45 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> ; V50 tmp46 [V50,T11] ( 3, 12.18) ref -> x24 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]>
-; V51 tmp47 [V51,T00] ( 4, 32.48) ref -> x26 class-hnd exact "NewObj constructor temp" <<unknown class>> -; V52 tmp48 [V52,T01] ( 4, 32.48) ref -> x24 class-hnd exact "NewObj constructor temp" <<unknown class>> -; V53 tmp49 [V53 ] ( 2, 16.12) struct (64) [fp+0x10] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector512`1[ushort]>
+; V51 tmp47 [V51,T01] ( 4, 32.48) ref -> x26 class-hnd exact "NewObj constructor temp" <<unknown class>> +; V52 tmp48 [V52,T02] ( 4, 32.48) ref -> x27 class-hnd exact "NewObj constructor temp" <<unknown class>> +; V53 tmp49 [V53 ] ( 2, 16.12) struct (64) [fp+0x18] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector512`1[ushort]>
; V54 tmp50 [V54,T20] ( 2, 8.12) ushort -> x20 "Inline return value spill temp" ; V55 tmp51 [V55,T24] ( 2, 4 ) int -> x0 ;* V56 tmp52 [V56 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" @@ -70,9 +70,9 @@ ;* V59 tmp55 [V59 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ; V60 tmp56 [V60,T09] ( 3, 24.36) ref -> x22 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]> ;* V61 tmp57 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]>
-; V62 tmp58 [V62,T12] ( 3, 12.18) ref -> x24 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> -; V63 tmp59 [V63,T02] ( 4, 32.48) ref -> x26 class-hnd exact "NewObj constructor temp" <<unknown class>> -; V64 tmp60 [V64,T03] ( 4, 32.48) ref -> x24 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V62 tmp58 [V62,T12] ( 3, 12.18) ref -> x26 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> +; V63 tmp59 [V63,T03] ( 4, 32.48) ref -> x27 class-hnd exact "NewObj constructor temp" <<unknown class>> +; V64 tmp60 [V64,T04] ( 4, 32.48) ref -> x26 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V65 tmp61 [V65 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "field V07._lower (fldOffset=0x0)" P-INDEP ;* V66 tmp62 [V66 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "field V07._upper (fldOffset=0x10)" P-INDEP ;* V67 tmp63 [V67 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "field V08._lower (fldOffset=0x0)" P-INDEP @@ -113,13 +113,13 @@ ;* V102 tmp98 [V102 ] ( 0, 0 ) simd16 -> zero-ref "V06.[016..032)" ;* V103 tmp99 [V103 ] ( 0, 0 ) simd16 -> zero-ref "V06.[032..048)" ;* V104 tmp100 [V104 ] ( 0, 0 ) simd16 -> zero-ref "V06.[048..064)"
-; V105 cse0 [V105,T16] ( 3, 12 ) long -> x20 "CSE - aggressive" -; V106 cse1 [V106,T10] ( 5, 20.30) long -> x25 "CSE - aggressive" -; V107 cse2 [V107,T06] ( 15, 30 ) ref -> x1 multi-def "CSE - aggressive" -; V108 cse3 [V108,T13] ( 3, 12.18) long -> x21 "CSE - aggressive" -; V109 cse4 [V109,T14] ( 3, 12.18) long -> x23 "CSE - aggressive"
+; V105 cse0 [V105,T10] ( 5, 20.30) long -> x25 "CSE - aggressive" +; V106 cse1 [V106,T07] ( 15, 30 ) ref -> x1 multi-def "CSE - aggressive" +; V107 cse2 [V107,T13] ( 3, 12.18) long -> x21 "CSE - aggressive" +; V108 cse3 [V108,T14] ( 3, 12.18) long -> x23 "CSE - aggressive" +; V109 cse4 [V109,T15] ( 3, 12.18) long -> x24 "CSE - aggressive"
;
-; Lcl frame size = 384
+; Lcl frame size = 392
G_M57924_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #0xD1FFAB1E]! @@ -127,31 +127,33 @@ G_M57924_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp x21, x22, [sp, #0xD1FFAB1E] stp x23, x24, [sp, #0xD1FFAB1E] stp x25, x26, [sp, #0xD1FFAB1E]
+ str x27, [sp, #0xD1FFAB1E]
mov fp, sp add x9, fp, #0xD1FFAB1E movi v16.16b, #0 stp q16, q16, [x9] stp q16, q16, [x9, #0x20]
- ;; size=40 bbWeight=1 PerfScore 8.50
+ ;; size=44 bbWeight=1 PerfScore 9.50
G_M57924_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldr q16, [@RWD00]
- str q16, [fp, #0x90] // [V26 tmp22]
+ str q16, [fp, #0x98] // [V26 tmp22]
ldr q16, [@RWD16]
- str q16, [fp, #0xA0] // [V26 tmp22+0x10]
+ str q16, [fp, #0xA8] // [V26 tmp22+0x10]
ldr q16, [@RWD32]
- str q16, [fp, #0xB0] // [V26 tmp22+0x20]
+ str q16, [fp, #0xB8] // [V26 tmp22+0x20]
ldr q16, [@RWD48]
- str q16, [fp, #0xC0] // [V26 tmp22+0x30]
+ str q16, [fp, #0xC8] // [V26 tmp22+0x30]
ldr q16, [@RWD64]
- str q16, [fp, #0xD0] // [V23 tmp19]
+ str q16, [fp, #0xD8] // [V23 tmp19]
ldr q16, [@RWD80]
- str q16, [fp, #0xE0] // [V23 tmp19+0x10]
+ str q16, [fp, #0xE8] // [V23 tmp19+0x10]
ldr q16, [@RWD96]
- str q16, [fp, #0xF0] // [V23 tmp19+0x20]
+ str q16, [fp, #0xF8] // [V23 tmp19+0x20]
ldr q16, [@RWD112]
- str q16, [fp, #0xD1FFAB1E] // [V23 tmp19+0x30]
+ mov xip1, #0xD1FFAB1E + str q16, [fp, xip1] // [V23 tmp19+0x30]
mov w19, wzr
- ;; size=68 bbWeight=1 PerfScore 24.50
+ ;; size=72 bbWeight=1 PerfScore 25.00
G_M57924_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz tbnz w19, #31, G_M57924_IG05 ;; size=4 bbWeight=4 PerfScore 4.00 @@ -176,17 +178,16 @@ G_M57924_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 ;; size=36 bbWeight=2 PerfScore 15.00 G_M57924_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add x0, fp, #208 // [V23 tmp19]
+ add x0, fp, #216 // [V23 tmp19]
; byrRegs +[x0]
- sbfiz x20, x19, #1, #32 - ldrh w21, [x0, x20] - mov w22, wzr - cmp w21, #32
+ ldrh w20, [x0, w19, SXTW #2] + mov w21, wzr + cmp w20, #32
bge G_M57924_IG09
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=20 bbWeight=4 PerfScore 22.00
G_M57924_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x0]
- cmp w21, #32
+ cmp w20, #32
cset x0, lt tst w0, #255 bne G_M57924_IG08 @@ -204,9 +205,9 @@ G_M57924_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 ;; size=52 bbWeight=2 PerfScore 20.00 G_M57924_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x0, fp, #144 // [V26 tmp22]
+ add x0, fp, #152 // [V26 tmp22]
; byrRegs +[x0]
- ldrh w22, [x0, w21, UXTW #2]
+ ldrh w21, [x0, w20, UXTW #2]
;; size=8 bbWeight=2 PerfScore 7.00 G_M57924_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x0] @@ -235,28 +236,36 @@ G_M57924_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M57924_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz add x0, fp, #0xD1FFAB1E // [V21 tmp17] ; byrRegs +[x0]
- strh w22, [x0, x20]
+ strh w21, [x0, w19, SXTW #2]
add w19, w19, #1 cmp w19, #32 blt G_M57924_IG03 ;; size=20 bbWeight=4 PerfScore 14.00 G_M57924_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0]
- ldp q16, q17, [fp, #0xD1FFAB1E] - stp q16, q17, [fp, #0xD1FFAB1E] - ldp q16, q17, [fp, #0xD1FFAB1E] - stp q16, q17, [fp, #0xD1FFAB1E]
+ ldp x0, x1, [fp, #0xD1FFAB1E] + stp x0, x1, [fp, #0xD1FFAB1E] + ldp x0, x1, [fp, #0xD1FFAB1E] + stp x0, x1, [fp, #0xD1FFAB1E] + ldp x0, x1, [fp, #0xD1FFAB1E] + stp x0, x1, [fp, #0xD1FFAB1E] + ldp x0, x1, [fp, #0xD1FFAB1E] + stp x0, x1, [fp, #0xD1FFAB1E]
mov w19, wzr
- ;; size=20 bbWeight=1 PerfScore 6.50
+ ;; size=36 bbWeight=1 PerfScore 16.50
G_M57924_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldp q16, q17, [fp, #0xD1FFAB1E] - stp q16, q17, [fp, #0x50] - ldp q16, q17, [fp, #0xD1FFAB1E] - stp q16, q17, [fp, #0x70]
+ ldp x0, x1, [fp, #0xD1FFAB1E] + stp x0, x1, [fp, #0x58] + ldp x0, x1, [fp, #0xD1FFAB1E] + stp x0, x1, [fp, #0x68] + ldp x0, x1, [fp, #0xD1FFAB1E] + stp x0, x1, [fp, #0x78] + ldp x0, x1, [fp, #0xD1FFAB1E] + stp x0, x1, [fp, #0x88]
cmp w19, #32 bhs G_M57924_IG24 tbnz w19, #31, G_M57924_IG16
- ;; size=28 bbWeight=4 PerfScore 34.00
+ ;; size=44 bbWeight=4 PerfScore 74.00
G_M57924_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz cmp w19, #32 cset x0, lt @@ -278,7 +287,7 @@ G_M57924_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 ;; size=36 bbWeight=2 PerfScore 15.00 G_M57924_IG17: ; bbWeight=4.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add x0, fp, #80 // [V41 tmp37]
+ add x0, fp, #88 // [V41 tmp37]
; byrRegs +[x0] ldrh w20, [x0, w19, SXTW #2] movz x21, #0xD1FFAB1E @@ -319,17 +328,17 @@ G_M57924_IG17: ; bbWeight=4.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15 x24] ; byrRegs -[x14]
- movz x0, #0xD1FFAB1E // code for <unknown method> - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - str x0, [x26, #0x18]
+ movz x24, #0xD1FFAB1E // code for <unknown method> + movk x24, #0xD1FFAB1E LSL #16 + movk x24, #0xD1FFAB1E LSL #32 + str x24, [x26, #0x18]
add x0, x25, #0xD1FFAB1E bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0
- mov x24, x0 - ; gcrRegs +[x24] - add x14, x24, #16
+ mov x27, x0 + ; gcrRegs +[x27] + add x14, x27, #16
; byrRegs +[x14] mov x15, x26 ; gcrRegs +[x15] @@ -345,7 +354,7 @@ G_M57924_IG17: ; bbWeight=4.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ...

+32 (+7.84%) : 93763.dasm - System.Data.ExpressionParser:ScanNumeric():this (FullOpts)

@@ -7,25 +7,26 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 21, 41.50) ref -> x19 this class-hnd single-def <System.Data.ExpressionParser> -; V01 loc0 [V01,T06] ( 3, 10 ) ref -> x20 class-hnd single-def <<unknown class>> -; V02 loc1 [V02,T13] ( 3, 2 ) ubyte -> x21 -;* V03 loc2 [V03,T15] ( 0, 0 ) ubyte -> zero-ref
+; V00 this [V00,T01] ( 21, 38.50) ref -> x19 this class-hnd single-def <System.Data.ExpressionParser> +; V01 loc0 [V01,T10] ( 3, 3 ) ref -> x0 class-hnd single-def <<unknown class>> +; V02 loc1 [V02,T14] ( 3, 2 ) ubyte -> x20 +;* V03 loc2 [V03,T16] ( 0, 0 ) ubyte -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T00] ( 3, 48 ) int -> x0 "index expr"
+; V05 tmp1 [V05,T02] ( 6, 30 ) int -> x21 "index expr"
; V06 tmp2 [V06,T07] ( 3, 6 ) int -> x0 "index expr"
-; V07 tmp3 [V07,T01] ( 3, 48 ) int -> x0 "index expr"
+; V07 tmp3 [V07,T00] ( 3, 48 ) int -> x0 "index expr"
; V08 tmp4 [V08,T08] ( 3, 6 ) int -> x1 "index expr"
-;* V09 tmp5 [V09,T16] ( 0, 0 ) int -> zero-ref "index expr" -; V10 tmp6 [V10,T10] ( 3, 3 ) int -> x0 "index expr" -;* V11 tmp7 [V11,T17] ( 0, 0 ) int -> zero-ref "index expr" -; V12 tmp8 [V12,T04] ( 3, 24 ) int -> x0 "index expr" -; V13 cse0 [V13,T14] ( 3, 1.50) int -> x0 "CSE - moderate" -; V14 cse1 [V14,T11] ( 3, 2.50) int -> x1 "CSE - aggressive" -; V15 cse2 [V15,T12] ( 3, 1.50) int -> x0 "CSE - aggressive" -; V16 cse3 [V16,T09] ( 3, 2.50) int -> x0 "CSE - aggressive" -; V17 cse4 [V17,T05] ( 7, 23.50) byref -> x22 hoist "CSE - aggressive" -; V18 cse5 [V18,T03] ( 7, 30.50) int -> x23 "CSE - aggressive"
+;* V09 tmp5 [V09,T17] ( 0, 0 ) int -> zero-ref "index expr" +; V10 tmp6 [V10,T11] ( 3, 3 ) int -> x0 "index expr" +;* V11 tmp7 [V11,T18] ( 0, 0 ) int -> zero-ref "index expr" +; V12 tmp8 [V12,T03] ( 3, 24 ) int -> x0 "index expr" +; V13 cse0 [V13,T15] ( 3, 1.50) int -> x0 "CSE - moderate" +; V14 cse1 [V14,T12] ( 3, 2.50) int -> x1 "CSE - aggressive" +; V15 cse2 [V15,T06] ( 3, 12 ) int -> x21 "CSE - aggressive" +; V16 cse3 [V16,T13] ( 3, 1.50) int -> x0 "CSE - aggressive" +; V17 cse4 [V17,T09] ( 3, 2.50) int -> x0 "CSE - aggressive" +; V18 cse5 [V18,T04] ( 8, 20.50) byref -> x23 "CSE - aggressive" +; V19 cse6 [V19,T05] ( 8, 20.50) int -> x22 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -38,147 +39,153 @@ G_M57065_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x0 ; gcrRegs +[x19] ;; size=24 bbWeight=1 PerfScore 5.00
-G_M57065_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ldr x20, [x19, #0x08] - ; gcrRegs +[x20] - mov w21, wzr - add x22, x20, #16 - ; byrRegs +[x22] - b G_M57065_IG04 - ;; size=16 bbWeight=1 PerfScore 5.00 -G_M57065_IG03: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=400000 {x22}, byref
+G_M57065_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr x0, [x19, #0x08] + ; gcrRegs +[x0] + mov w20, wzr + ldr w21, [x19, #0x30] + ldr w22, [x0, #0x08] + cmp w21, w22 + bhs G_M57065_IG19 + add x23, x0, #16 + ; byrRegs +[x23] + ldrh w0, [x23, w21, UXTW #2] + ; gcrRegs -[x0] + movz x1, #0xD1FFAB1E // code for System.Data.ExpressionParser:IsDigit(ushort):ubyte + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + cbz w0, G_M57065_IG04 + ;; size=56 bbWeight=1 PerfScore 21.00 +G_M57065_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [x19, #0x30]
- add w0, w0, #1 - str w0, [x19, #0x30] - ;; size=12 bbWeight=2 PerfScore 9.00 -G_M57065_IG04: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=400000 {x22}, byref, isz - ldr w0, [x19, #0x30] - ldr w23, [x20, #0x08] - cmp w0, w23 - bhs G_M57065_IG20 - ldrh w0, [x22, w0, UXTW #2]
+ add w21, w0, #1 + str w21, [x19, #0x30] + cmp w21, w22 + bhs G_M57065_IG19 + ldrh w0, [x23, w21, UXTW #2]
movz x1, #0xD1FFAB1E // code for System.Data.ExpressionParser:IsDigit(ushort):ubyte movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 cbnz w0, G_M57065_IG03
- ;; size=44 bbWeight=8 PerfScore 136.00 -G_M57065_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz - ; gcrRegs -[x20]
+ ;; size=48 bbWeight=4 PerfScore 62.00 +G_M57065_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [x19, #0x30]
- cmp w0, w23 - bhs G_M57065_IG20 - ldrh w0, [x22, w0, UXTW #2]
+ cmp w0, w22 + bhs G_M57065_IG19 + ldrh w0, [x23, w0, UXTW #2]
ldrh w1, [x19, #0x4E] cmp w0, w1
- bne G_M57065_IG08
+ bne G_M57065_IG07
;; size=28 bbWeight=1 PerfScore 12.00
-G_M57065_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref - mov w21, #1
+G_M57065_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref + mov w20, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M57065_IG07: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
+G_M57065_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref
ldr w0, [x19, #0x30] add w0, w0, #1 str w0, [x19, #0x30] ;; size=12 bbWeight=2 PerfScore 9.00
-G_M57065_IG08: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M57065_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [x19, #0x30]
- cmp w0, w23 - bhs G_M57065_IG20 - ldrh w0, [x22, w0, UXTW #2]
+ cmp w0, w22 + bhs G_M57065_IG19 + ldrh w0, [x23, w0, UXTW #2]
movz x1, #0xD1FFAB1E // code for System.Data.ExpressionParser:IsDigit(ushort):ubyte movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- cbnz w0, G_M57065_IG07
+ cbnz w0, G_M57065_IG06
;; size=40 bbWeight=8 PerfScore 112.00
-G_M57065_IG09: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M57065_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [x19, #0x30] sxtw w1, w0
- cmp w1, w23 - bhs G_M57065_IG20 - ldrh w1, [x22, w1, UXTW #2]
+ cmp w1, w22 + bhs G_M57065_IG19 + ldrh w1, [x23, w1, UXTW #2]
ldrh w2, [x19, #0x52] cmp w1, w2
- beq G_M57065_IG11
+ beq G_M57065_IG10
;; size=32 bbWeight=1 PerfScore 12.50
-G_M57065_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M57065_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldrh w2, [x19, #0x54] cmp w1, w2
- bne G_M57065_IG16
+ bne G_M57065_IG15
;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M57065_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M57065_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
add w0, w0, #1 str w0, [x19, #0x30]
- cmp w0, w23 - bhs G_M57065_IG20 - ldrh w0, [x22, w0, UXTW #2]
+ cmp w0, w22 + bhs G_M57065_IG19 + ldrh w0, [x23, w0, UXTW #2]
cmp w0, #45
- beq G_M57065_IG12
+ beq G_M57065_IG11
cmp w0, #43
- bne G_M57065_IG13
+ bne G_M57065_IG12
;; size=36 bbWeight=0.50 PerfScore 4.50
-G_M57065_IG12: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
+G_M57065_IG11: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref
ldr w0, [x19, #0x30] add w0, w0, #1 str w0, [x19, #0x30] ;; size=12 bbWeight=2 PerfScore 9.00
-G_M57065_IG13: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M57065_IG12: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [x19, #0x30]
- cmp w0, w23 - bhs G_M57065_IG20 - ldrh w0, [x22, w0, UXTW #2]
+ cmp w0, w22 + bhs G_M57065_IG19 + ldrh w0, [x23, w0, UXTW #2]
movz x1, #0xD1FFAB1E // code for System.Data.ExpressionParser:IsDigit(ushort):ubyte movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- cbnz w0, G_M57065_IG12
+ cbnz w0, G_M57065_IG11
;; size=40 bbWeight=4 PerfScore 56.00
-G_M57065_IG14: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; byrRegs -[x22]
+G_M57065_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; byrRegs -[x23]
mov w0, #4 str w0, [x19, #0x38] ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M57065_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M57065_IG14: ; 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 ret lr ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M57065_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - cbz w21, G_M57065_IG18
+G_M57065_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz + cbz w20, G_M57065_IG17
mov w0, #3 str w0, [x19, #0x38] ;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M57065_IG17: ; bbWeight=0.50, epilog, nogc, extend
+G_M57065_IG16: ; 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 ret lr ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M57065_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M57065_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
mov w0, #2 str w0, [x19, #0x38] ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M57065_IG19: ; bbWeight=0.50, epilog, nogc, extend
+G_M57065_IG18: ; 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 ret lr ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M57065_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M57065_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19] ...

+32 (+26.67%) : 93544.dasm - System.Data.ExpressionParser:ScanName():this (FullOpts)

@@ -7,66 +7,74 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 7, 16 ) ref -> x19 this class-hnd single-def <System.Data.ExpressionParser> -; V01 loc0 [V01,T02] ( 3, 10 ) ref -> x20 class-hnd single-def <<unknown class>>
+; V00 this [V00,T01] ( 7, 13 ) ref -> x19 this class-hnd single-def <System.Data.ExpressionParser> +; V01 loc0 [V01,T05] ( 3, 3 ) ref -> x0 class-hnd single-def <<unknown class>>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 3, 48 ) int -> x0 "index expr" -; V04 cse0 [V04,T03] ( 2, 9 ) byref -> x21 hoist "CSE - aggressive"
+; V03 tmp1 [V03,T00] ( 6, 30 ) int -> x20 "index expr" +; V04 cse0 [V04,T02] ( 3, 12 ) int -> x20 "CSE - aggressive" +; V05 cse1 [V05,T03] ( 3, 6 ) byref -> x22 "CSE - aggressive" +; V06 cse2 [V06,T04] ( 3, 6 ) int -> x21 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M25477_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 x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M25477_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ldr x20, [x19, #0x08] - ; gcrRegs +[x20] - add x21, x20, #16 - ; byrRegs +[x21] - b G_M25477_IG04 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M25477_IG03: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
+G_M25477_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr x0, [x19, #0x08] + ; gcrRegs +[x0] + ldr w20, [x19, #0x30] + ldr w21, [x0, #0x08] + cmp w20, w21 + bhs G_M25477_IG06 + add x22, x0, #16 + ; byrRegs +[x22] + ldrh w0, [x22, w20, UXTW #2] + ; gcrRegs -[x0] + movz x1, #0xD1FFAB1E // code for <unknown method> + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + cbz w0, G_M25477_IG04 + ;; size=52 bbWeight=1 PerfScore 20.50 +G_M25477_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
ldr w0, [x19, #0x30]
- add w0, w0, #1 - str w0, [x19, #0x30] - ;; size=12 bbWeight=2 PerfScore 9.00 -G_M25477_IG04: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz - ldr w0, [x19, #0x30] - ldr w1, [x20, #0x08] - cmp w0, w1 - bhs G_M25477_IG07 - ldrh w0, [x21, w0, UXTW #2]
+ add w20, w0, #1 + str w20, [x19, #0x30] + cmp w20, w21 + bhs G_M25477_IG06 + ldrh w0, [x22, w20, UXTW #2]
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 cbnz w0, G_M25477_IG03
- ;; size=44 bbWeight=8 PerfScore 136.00 -G_M25477_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x20] - ; byrRegs -[x21]
+ ;; size=48 bbWeight=4 PerfScore 62.00 +G_M25477_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; byrRegs -[x22]
mov w0, #1 str w0, [x19, #0x38] ;; size=8 bbWeight=1 PerfScore 1.50
-G_M25477_IG06: ; bbWeight=1, epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+G_M25477_IG05: ; bbWeight=1, epilog, nogc, extend + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00 -G_M25477_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=1 PerfScore 4.00 +G_M25477_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19] bl CORINFO_HELP_RNGCHKFAIL brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 120, prolog size 16, PerfScore 160.00, instruction count 30, allocated bytes for code 120 (MethodHash=0db89c7a) for method System.Data.ExpressionParser:ScanName():this (FullOpts)
+; Total bytes of code 152, prolog size 16, PerfScore 92.00, instruction count 38, allocated bytes for code 152 (MethodHash=0db89c7a) for method System.Data.ExpressionParser:ScanName():this (FullOpts)
; ============================================================ Unwind Info: @@ -77,7 +85,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ 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) @@ -85,9 +93,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]
+ E6 save_next + 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

realworld.run.windows.arm64.checked.mch

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

@@ -44,34 +44,27 @@ 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]
b G_M33083_IG05
- ;; size=36 bbWeight=4 PerfScore 46.00
+ ;; size=28 bbWeight=4 PerfScore 38.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, w4, UXTW #2] + str w10, [x2, x11, LSL #2]
sub w4, w4, #1
- ;; size=60 bbWeight=8 PerfScore 108.00
+ ;; size=48 bbWeight=8 PerfScore 88.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 @@ -86,16 +79,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 +98,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 184, prolog size 8, PerfScore 292.00, instruction count 46, allocated bytes for code 184 (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 +109,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 53 (0x00035) Actual length = 212 (0x0000d4)
+ 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)

-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

-24 (-10.91%) : 3288.dasm - System.Collections.Generic.GenericArraySortHelper2[int,System.__Canon]:InsertionSort(System.Span1[int],System.Span`1[System.__Canon]) (FullOpts)

@@ -45,26 +45,22 @@ G_M63387_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=000A {x1 x3}, b G_M63387_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=000A {x1 x3}, byref, isz add w6, w0, #1 mov w14, w6
- lsl x15, x14, #2 - ldr w7, [x1, x15]
+ ldr w7, [x1, x14, LSL #2]
cmp w6, w4 bhs G_M63387_IG09
- lsl x14, x14, #3 - ldr x8, [x3, x14]
+ ldr x8, [x3, x14, LSL #3]
; gcrRegs +[x8] b G_M63387_IG05
- ;; size=36 bbWeight=4 PerfScore 46.00
+ ;; size=28 bbWeight=4 PerfScore 38.00
G_M63387_IG04: ; bbWeight=8, gcrefRegs=0100 {x8}, byrefRegs=000A {x1 x3}, byref, isz add w9, w0, #1 cmp w9, w2 bhs G_M63387_IG09 mov w10, w9
- lsl x15, x10, #2 - str w14, [x1, x15]
+ str w14, [x1, x10, LSL #2]
cmp w9, w4 bhs G_M63387_IG09
- lsl x14, x10, #3 - add x14, x3, x14
+ add x14, x3, x10, LSL #3
; byrRegs +[x14] cmp w0, w4 bhs G_M63387_IG09 @@ -74,7 +70,7 @@ G_M63387_IG04: ; bbWeight=8, gcrefRegs=0100 {x8}, byrefRegs=000A {x1 x3}, ; gcrRegs -[x15] ; byrRegs -[x14] sub w0, w0, #1
- ;; size=60 bbWeight=8 PerfScore 108.00
+ ;; size=52 bbWeight=8 PerfScore 96.00
G_M63387_IG05: ; bbWeight=32, gcrefRegs=0100 {x8}, byrefRegs=000A {x1 x3}, byref, isz tbnz w0, #31, G_M63387_IG07 ;; size=4 bbWeight=32 PerfScore 32.00 @@ -90,12 +86,10 @@ G_M63387_IG07: ; bbWeight=4, gcrefRegs=0100 {x8}, byrefRegs=000A {x1 x3}, cmp w9, w2 bhs G_M63387_IG09 mov w10, w9
- lsl x14, x10, #2 - str w7, [x1, x14]
+ str w7, [x1, x10, LSL #2]
cmp w9, w4 bhs G_M63387_IG09
- lsl x14, x10, #3 - add x14, x3, x14
+ add x14, x3, x10, LSL #3
; byrRegs +[x14] mov x15, x8 ; gcrRegs +[x15] @@ -105,7 +99,7 @@ G_M63387_IG07: ; bbWeight=4, gcrefRegs=0100 {x8}, byrefRegs=000A {x1 x3}, sxtw w0, w6 cmp w0, w5 blt G_M63387_IG03
- ;; size=60 bbWeight=4 PerfScore 44.00
+ ;; size=52 bbWeight=4 PerfScore 38.00
G_M63387_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x1 x3] ldp fp, lr, [sp], #0x10 @@ -117,7 +111,7 @@ G_M63387_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 8, PerfScore 332.00, instruction count 55, allocated bytes for code 220 (MethodHash=f6e30864) for method System.Collections.Generic.GenericArraySortHelper`2[int,System.__Canon]:InsertionSort(System.Span`1[int],System.Span`1[System.__Canon]) (FullOpts)
+; Total bytes of code 196, prolog size 8, PerfScore 306.00, instruction count 49, allocated bytes for code 196 (MethodHash=f6e30864) for method System.Collections.Generic.GenericArraySortHelper`2[int,System.__Canon]:InsertionSort(System.Span`1[int],System.Span`1[System.__Canon]) (FullOpts)
; ============================================================ Unwind Info: @@ -128,7 +122,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+4.11%) : 22966.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(int,byref):ubyte:this (FullOpts)

@@ -9,13 +9,13 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 10, 9 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer>
-; V01 arg1 [V01,T01] ( 10, 8.50) int -> x20 single-def
+; V01 arg1 [V01,T01] ( 9, 8 ) int -> x20 single-def
; V02 arg2 [V02,T07] ( 3, 3 ) byref -> x6 single-def ; V03 loc0 [V03,T09] ( 2, 2 ) ref -> x2 class-hnd single-def <<unknown class>> ; V04 loc1 [V04,T10] ( 2, 2 ) ref -> x3 class-hnd single-def <<unknown class>> ; V05 loc2 [V05,T11] ( 2, 2 ) ref -> x4 class-hnd single-def <<unknown class>> ; V06 loc3 [V06,T12] ( 2, 2 ) ref -> x5 class-hnd single-def <<unknown class>>
-; V07 loc4 [V07 ] ( 3, 2.50) struct (32) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte]>
+; V07 loc4 [V07 ] ( 3, 2.50) struct (32) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte]>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V10 tmp2 [V10,T02] ( 3, 6 ) ref -> x0 single-def "arr expr" @@ -23,22 +23,23 @@ ; V12 tmp4 [V12,T04] ( 3, 6 ) ref -> x0 single-def "arr expr" ; V13 tmp5 [V13,T05] ( 3, 6 ) ref -> x0 single-def "arr expr" ; V14 tmp6 [V14,T08] ( 3, 3 ) ref -> x14 single-def "arr expr"
-; V15 cse0 [V15,T06] ( 5, 5 ) long -> x1 "CSE - aggressive"
+; V15 cse0 [V15,T06] ( 6, 5.50) long -> x21 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M56432_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x30]
+ stp fp, lr, [sp, #-0x50]! + stp x19, x20, [sp, #0x38] + str x21, [sp, #0x48]
mov fp, sp
- stp xzr, xzr, [fp, #0x10] // [V07 loc4], [V07 loc4+0x08] - stp xzr, xzr, [fp, #0x20] // [V07 loc4+0x10], [V07 loc4+0x18]
+ stp xzr, xzr, [fp, #0x18] // [V07 loc4], [V07 loc4+0x08] + stp xzr, xzr, [fp, #0x28] // [V07 loc4+0x10], [V07 loc4+0x18]
mov x19, x0 ; gcrRegs +[x19] mov w20, w1 mov x6, x2 ; byrRegs +[x6]
- ;; size=32 bbWeight=1 PerfScore 6.00
+ ;; size=36 bbWeight=1 PerfScore 7.00
G_M56432_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0040 {x6}, byref, isz ldr x0, [x19, #0x60] ; gcrRegs +[x0] @@ -48,46 +49,46 @@ G_M56432_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0040 {x6}, add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ubfiz x1, x20, #3, #32 - ldr x2, [x0, x1]
+ mov w21, w20 + ldr x2, [x0, x21, LSL #3]
; gcrRegs +[x2] ldr x0, [x19, #0x30] ; gcrRegs +[x0] ; byrRegs -[x0]
- ldr w8, [x0, #0x08] - cmp w20, w8
+ ldr w1, [x0, #0x08] + cmp w20, w1
bhs G_M56432_IG07 add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ldr x3, [x0, x1]
+ ldr x3, [x0, x21, LSL #3]
; gcrRegs +[x3] ldr x0, [x19, #0x40] ; gcrRegs +[x0] ; byrRegs -[x0]
- ldr w8, [x0, #0x08] - cmp w20, w8
+ ldr w1, [x0, #0x08] + cmp w20, w1
bhs G_M56432_IG07 add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ldr x4, [x0, x1]
+ ldr x4, [x0, x21, LSL #3]
; gcrRegs +[x4] ldr x0, [x19, #0x38] ; gcrRegs +[x0] ; byrRegs -[x0]
- ldr w8, [x0, #0x08] - cmp w20, w8
+ ldr w1, [x0, #0x08] + cmp w20, w1
bhs G_M56432_IG07 add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ldr x5, [x0, x1]
+ ldr x5, [x0, x21, LSL #3]
; gcrRegs +[x5] ldp x0, x1, [x19, #0x08] ; gcrRegs +[x0-x1] ; byrRegs -[x0]
- add x8, fp, #16 // [V07 loc4]
+ add x8, fp, #24 // [V07 loc4]
movz x7, #0xD1FFAB1E // code for <unknown method> movk x7, #0xD1FFAB1E LSL #16 movk x7, #0xD1FFAB1E LSL #32 @@ -95,19 +96,20 @@ G_M56432_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0040 {x6}, blr x7 ; gcrRegs -[x0-x5] ; byrRegs -[x6]
- ldr x0, [fp, #0x18] // [V07 loc4+0x08]
+ ldr x0, [fp, #0x20] // [V07 loc4+0x08]
; gcrRegs +[x0] cbnz x0, G_M56432_IG05
- ;; size=136 bbWeight=1 PerfScore 58.00
+ ;; size=136 bbWeight=1 PerfScore 57.50
G_M56432_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0 x19] mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M56432_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x30] - ldp fp, lr, [sp], #0x40
+ ldr x21, [sp, #0x48] + ldp x19, x20, [sp, #0x38] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
G_M56432_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[x19] ldr x14, [x19, #0x28] @@ -115,12 +117,12 @@ G_M56432_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 ldr w13, [x14, #0x08] cmp w20, w13 bhs G_M56432_IG07
- ubfiz x13, x20, #5, #32
+ lsl x13, x21, #5
add x13, x13, #16 add x14, x14, x13 ; gcrRegs -[x14] ; byrRegs +[x14]
- add x13, fp, #16 // [V07 loc4]
+ add x13, fp, #24 // [V07 loc4]
; byrRegs +[x13] ldr x12, [x13], #0x08 str x12, [x14], #0x08 @@ -141,16 +143,17 @@ G_M56432_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 mov w0, #1 ;; size=88 bbWeight=0.50 PerfScore 13.50 G_M56432_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x30] - ldp fp, lr, [sp], #0x40
+ ldr x21, [sp, #0x48] + ldp x19, x20, [sp, #0x38] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
G_M56432_IG07: ; 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 292, prolog size 20, PerfScore 80.75, instruction count 73, allocated bytes for code 292 (MethodHash=1b1e238f) for method Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(int,byref):ubyte:this (FullOpts)
+; Total bytes of code 304, prolog size 24, PerfScore 83.25, instruction count 76, allocated bytes for code 304 (MethodHash=1b1e238f) for method Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(int,byref):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -161,7 +164,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 73 (0x00049) Actual length = 292 (0x000124)
+ Function Length : 76 (0x0004c) Actual length = 304 (0x000130)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -172,10 +175,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 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
+ 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]!
E4 end E4 end

+20 (+4.24%) : 665.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)

@@ -9,35 +9,36 @@ ; Final local variable assignments ; ; V00 this [V00,T04] ( 11, 7 ) byref -> x19 this single-def
-; V01 arg1 [V01,T06] ( 5, 3.50) int -> x1 single-def -; V02 loc0 [V02,T16] ( 3, 2.50) int -> x0
+; V01 arg1 [V01,T07] ( 5, 3.50) int -> x1 single-def +; V02 loc0 [V02,T17] ( 3, 2.50) int -> x0
; V03 loc1 [V03,T15] ( 5, 2.50) int -> x21
-; V04 loc2 [V04,T11] ( 5, 4 ) int -> x20 ld-addr-op -; V05 loc3 [V05,T00] ( 11, 29.50) int -> x22 -; V06 loc4 [V06,T01] ( 14, 22 ) int -> x23 -; V07 loc5 [V07,T18] ( 2, 1 ) int -> x0 -; V08 loc6 [V08,T09] ( 4, 5 ) int -> x1 -; V09 loc7 [V09,T03] ( 4, 10.50) int -> x2 -; V10 loc8 [V10,T05] ( 3, 6.50) int -> x3
+; V04 loc2 [V04,T16] ( 5, 2.50) int -> x20 ld-addr-op +; V05 loc3 [V05,T00] ( 13, 34.50) int -> x22 +; V06 loc4 [V06,T01] ( 14, 28 ) int -> x23 +; V07 loc5 [V07,T19] ( 2, 1 ) int -> x0 +; V08 loc6 [V08,T05] ( 4, 9 ) int -> x1 +; V09 loc7 [V09,T03] ( 6, 13.50) int -> x2 +; V10 loc8 [V10,T06] ( 4, 9 ) int -> x3
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp3 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V15 tmp4 [V15 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V16 tmp5 [V16,T07] ( 5, 5 ) long -> [fp+0x18] "Inlining Arg"
+; V16 tmp5 [V16,T09] ( 5, 5 ) long -> [fp+0x18] "Inlining Arg"
;* V17 tmp6 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V18 tmp7 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp8 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp9 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V21 tmp10 [V21 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V22 tmp11 [V22,T08] ( 5, 5 ) long -> [fp+0x10] spill-single-def "Inlining Arg"
+; V22 tmp11 [V22,T10] ( 5, 5 ) long -> [fp+0x10] spill-single-def "Inlining Arg"
;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V24 tmp13 [V24,T13] ( 3, 3 ) long -> x0 "Cast away GC" ; V25 tmp14 [V25,T14] ( 3, 3 ) long -> x0 "Cast away GC"
-; V26 cse0 [V26,T17] ( 3, 1.50) int -> x0 "CSE - moderate" -; V27 cse1 [V27,T02] ( 12, 18 ) byref -> x24 hoist multi-def "CSE - aggressive" -; V28 cse2 [V28,T10] ( 2, 4.50) int -> x0 hoist "CSE - aggressive" -; V29 cse3 [V29,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
+; V26 cse0 [V26,T18] ( 3, 1.50) int -> x0 "CSE - moderate" +; V27 cse1 [V27,T02] ( 13, 20.50) byref -> x24 hoist multi-def "CSE - aggressive" +; V28 cse2 [V28,T11] ( 3, 5 ) int -> x0 "CSE - aggressive" +; V29 cse3 [V29,T08] ( 4, 5.50) int -> x4 hoist multi-def "CSE - aggressive" +; V30 cse4 [V30,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
; ; Lcl frame size = 16 @@ -151,7 +152,7 @@ G_M38441_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=48 bbWeight=0.50 PerfScore 4.75
-G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add w0, w23, #1 str w0, [x19] neg w0, w20 @@ -159,42 +160,45 @@ G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, mov w1, wzr add x24, x19, #4 ; byrRegs +[x24]
+ ldr w2, [x24, w22, SXTW #2]
and w0, w0, #31
- b G_M38441_IG13 - ;; size=32 bbWeight=0.50 PerfScore 2.50 -G_M38441_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ lsr w3, w2, w0 + cmp w22, #0 + ble G_M38441_IG13 + and w4, w20, #31 + ;; size=48 bbWeight=0.50 PerfScore 4.75 +G_M38441_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
orr w1, w1, w3 str w1, [x24, w23, SXTW #2]
- lsl w1, w2, w20
+ lsl w1, w2, w4
sub w22, w22, #1 sub w23, w23, #1
- ;; size=20 bbWeight=2 PerfScore 6.00 -G_M38441_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w2, [x24, w22, SXTW #2] lsr w3, w2, w0 cmp w22, #0 bgt G_M38441_IG12
- ;; size=16 bbWeight=4 PerfScore 20.00 -G_M38441_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3 - str w0, [x24, w23, SXTW #2]
+ ;; size=36 bbWeight=4 PerfScore 32.00 +G_M38441_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w4, w1, w3 + str w4, [x24, w23, SXTW #2]
sub w0, w23, #1
- lsl w1, w2, w20
+ and w4, w20, #31 + lsl w1, w2, w4
str w1, [x24, w0, SXTW #2] mov x0, x24 lsl w1, w21, #2 mov w1, w1 str x1, [fp, #0x10] // [V22 tmp11]
- cbz x1, G_M38441_IG16
+ cbz x1, G_M38441_IG15
cmp x1, #0xD1FFAB1E
- bhi G_M38441_IG15
+ bhi G_M38441_IG14
mov w1, wzr ldr w2, [fp, #0x10] // [V22 tmp11] bl CORINFO_HELP_MEMSET ; gcr arg pop 0
- b G_M38441_IG16 - ;; size=64 bbWeight=0.50 PerfScore 6.75 -G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ b G_M38441_IG15 + ;; size=68 bbWeight=0.50 PerfScore 7.00 +G_M38441_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
ldr x1, [fp, #0x10] // [V22 tmp11] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -203,7 +207,7 @@ G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 blr x2 ; gcr arg pop 0 ;; size=24 bbWeight=0.50 PerfScore 3.75
-G_M38441_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w0, [x19] sub w0, w0, #1 ldr w1, [x24, w0, SXTW #2] @@ -212,7 +216,7 @@ G_M38441_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 b G_M38441_IG04 ;; size=24 bbWeight=0.50 PerfScore 4.75
-; Total bytes of code 472, prolog size 24, PerfScore 111.75, instruction count 118, allocated bytes for code 472 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
+; Total bytes of code 492, prolog size 24, PerfScore 120.25, instruction count 123, allocated bytes for code 492 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
; ============================================================ Unwind Info: @@ -223,7 +227,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 118 (0x00076) Actual length = 472 (0x0001d8)
+ Function Length : 123 (0x0007b) Actual length = 492 (0x0001ec)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+5.41%) : 14899.dasm - Microsoft.ML.Trainers.KMeansLloydsYinYangTrain+SharedState:UpdateYinYangBounds(int):this (FullOpts)

@@ -35,8 +35,9 @@ G_M25866_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre add x2, x2, #16 ; gcrRegs -[x2] ; byrRegs +[x2]
- ubfiz x3, x1, #2, #32 - add x2, x2, x3
+ mov w3, w1 + lsl x4, x3, #2 + add x2, x2, x4
ldr s16, [x2] ldp x4, x5, [x0, #0x10] ; gcrRegs +[x4-x5] @@ -46,7 +47,7 @@ G_M25866_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre add x5, x5, #16 ; gcrRegs -[x5] ; byrRegs +[x5]
- ldr w5, [x5, x3]
+ ldr w5, [x5, x3, LSL #2]
; byrRegs -[x5] ldr w6, [x4, #0x08] cmp w5, w6 @@ -66,24 +67,26 @@ G_M25866_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre bhs G_M25866_IG04 add x1, x2, #16 ; byrRegs +[x1]
- add x1, x1, x3
+ lsl x2, x3, #2 + ; gcrRegs -[x2] + add x1, x1, x2
ldr s16, [x1] ldr s17, [x0, #0x34] fsub s16, s16, s17 str s16, [x1]
- ;; size=124 bbWeight=1 PerfScore 55.00
+ ;; size=132 bbWeight=1 PerfScore 56.50
G_M25866_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00 G_M25866_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x2]
+ ; gcrRegs -[x0]
; byrRegs -[x1] bl CORINFO_HELP_RNGCHKFAIL brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 148, prolog size 8, PerfScore 58.50, instruction count 37, allocated bytes for code 148 (MethodHash=0d9c9af5) for method Microsoft.ML.Trainers.KMeansLloydsYinYangTrain+SharedState:UpdateYinYangBounds(int):this (FullOpts)
+; Total bytes of code 156, prolog size 8, PerfScore 60.00, instruction count 39, allocated bytes for code 156 (MethodHash=0d9c9af5) for method Microsoft.ML.Trainers.KMeansLloydsYinYangTrain+SharedState:UpdateYinYangBounds(int):this (FullOpts)
; ============================================================ Unwind Info: @@ -94,7 +97,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
---- 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

-12 (-11.11%) : 7114.dasm - System.Globalization.CultureData:ReescapeWin32Strings(System.String[]):System.String

@@ -8,25 +8,23 @@ ; control-flow guard enabled ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 6, 5 ) ref -> x19 class-hnd single-def <System.String[]> -; V01 loc0 [V01,T00] ( 5, 16.50) int -> x20
+; V00 arg0 [V00,T03] ( 6, 5 ) ref -> x19 class-hnd single-def <System.String[]> +; V01 loc0 [V01,T00] ( 6, 20.50) int -> x20
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 2, 16 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <System.String>
-; V04 cse0 [V04,T02] ( 3, 12 ) long -> x23 "CSE - aggressive" -; V05 cse1 [V05,T03] ( 3, 8.50) byref -> x22 hoist "CSE - aggressive" -; V06 cse2 [V06,T05] ( 3, 5 ) int -> x21 "CSE - aggressive"
+; V04 cse0 [V04,T02] ( 3, 8.50) byref -> x22 hoist "CSE - aggressive" +; V05 cse1 [V05,T04] ( 3, 5 ) int -> x21 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M31078_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]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M31078_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz cbz x19, G_M31078_IG05 ;; size=4 bbWeight=1 PerfScore 1.00 @@ -39,13 +37,12 @@ G_M31078_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; byrRegs +[x22] ;; size=20 bbWeight=0.50 PerfScore 2.75 G_M31078_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
- ubfiz x23, x20, #3, #32 - ldr x0, [x22, x23]
+ ldr x0, [x22, w20, UXTW #3]
; gcrRegs +[x0] bl <unknown method> mov x15, x0 ; gcrRegs +[x15]
- add x14, x22, x23
+ add x14, x22, x20, LSL #3
; byrRegs +[x14] bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x0 x15] @@ -53,21 +50,20 @@ G_M31078_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22 add w20, w20, #1 cmp w21, w20 bgt G_M31078_IG04
- ;; size=36 bbWeight=4 PerfScore 36.00
+ ;; size=32 bbWeight=4 PerfScore 34.00
G_M31078_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; byrRegs -[x22] mov x0, x19 ; gcrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50 G_M31078_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
+ 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 108, prolog size 20, PerfScore 51.25, instruction count 27, allocated bytes for code 108 (MethodHash=1c618699) for method System.Globalization.CultureData:ReescapeWin32Strings(System.String[]):System.String[] (FullOpts)
+; Total bytes of code 96, prolog size 16, PerfScore 46.25, instruction count 24, allocated bytes for code 96 (MethodHash=1c618699) for method System.Globalization.CultureData:ReescapeWin32Strings(System.String[]):System.String[] (FullOpts)
; ============================================================ Unwind Info: @@ -78,7 +74,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
+ 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) @@ -86,9 +82,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 (-11.11%) : 2240.dasm - System.Globalization.CultureData:ReescapeWin32Strings(System.String[]):System.String

@@ -7,25 +7,23 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 6, 5 ) ref -> x19 class-hnd single-def <System.String[]> -; V01 loc0 [V01,T00] ( 5, 16.50) int -> x20
+; V00 arg0 [V00,T03] ( 6, 5 ) ref -> x19 class-hnd single-def <System.String[]> +; V01 loc0 [V01,T00] ( 6, 20.50) int -> x20
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 2, 16 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <System.String>
-; V04 cse0 [V04,T02] ( 3, 12 ) long -> x23 "CSE - aggressive" -; V05 cse1 [V05,T03] ( 3, 8.50) byref -> x22 hoist "CSE - aggressive" -; V06 cse2 [V06,T05] ( 3, 5 ) int -> x21 "CSE - aggressive"
+; V04 cse0 [V04,T02] ( 3, 8.50) byref -> x22 hoist "CSE - aggressive" +; V05 cse1 [V05,T04] ( 3, 5 ) int -> x21 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M31078_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]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M31078_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz cbz x19, G_M31078_IG05 ;; size=4 bbWeight=1 PerfScore 1.00 @@ -38,13 +36,12 @@ G_M31078_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; byrRegs +[x22] ;; size=20 bbWeight=0.50 PerfScore 2.75 G_M31078_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
- ubfiz x23, x20, #3, #32 - ldr x0, [x22, x23]
+ ldr x0, [x22, w20, UXTW #3]
; gcrRegs +[x0] bl <unknown method> mov x15, x0 ; gcrRegs +[x15]
- add x14, x22, x23
+ add x14, x22, x20, LSL #3
; byrRegs +[x14] bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x0 x15] @@ -52,21 +49,20 @@ G_M31078_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22 add w20, w20, #1 cmp w21, w20 bgt G_M31078_IG04
- ;; size=36 bbWeight=4 PerfScore 36.00
+ ;; size=32 bbWeight=4 PerfScore 34.00
G_M31078_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; byrRegs -[x22] mov x0, x19 ; gcrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50 G_M31078_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
+ 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 108, prolog size 20, PerfScore 51.25, instruction count 27, allocated bytes for code 108 (MethodHash=1c618699) for method System.Globalization.CultureData:ReescapeWin32Strings(System.String[]):System.String[] (FullOpts)
+; Total bytes of code 96, prolog size 16, PerfScore 46.25, instruction count 24, allocated bytes for code 96 (MethodHash=1c618699) for method System.Globalization.CultureData:ReescapeWin32Strings(System.String[]):System.String[] (FullOpts)
; ============================================================ Unwind Info: @@ -77,7 +73,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
+ 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) @@ -85,9 +81,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

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

@@ -7,40 +7,38 @@ ; 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,T07] ( 6, 19 ) int -> x24
;* 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 cse0 [V18,T08] ( 2, 17 ) byref -> x25 hoist "CSE - aggressive" +; V19 cse1 [V19,T05] ( 4, 22 ) int -> [fp+0x1C] spill-single-def "CSE - aggressive" +; V20 cse2 [V20,T14] ( 3, 7 ) byref -> x19 hoist "CSE - aggressive" +; V21 cse3 [V21,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 +46,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[] @@ -60,7 +58,7 @@ G_M8664_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {} mov w23, wzr mov w24, wzr cmp w21, #0
- ble G_M8664_IG09
+ ble G_M8664_IG08
add x19, x19, #16 ; gcrRegs -[x19] ; byrRegs +[x19] @@ -69,66 +67,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, w24, UXTW #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] // [V19 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] // [V19 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] // [V19 cse1] + cmp w14, w28 + bgt G_M8664_IG07 + ldr x15, [x19, w24, UXTW #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 +124,51 @@ 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
+ ;; size=44 bbWeight=2 PerfScore 28.00 +G_M8664_IG07: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=2080000 {x19 x25}, byref, isz
add w24, w24, #1 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
+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] cmp w0, #0
- bls G_M8664_IG18
+ bls G_M8664_IG15
ldr x0, [x22, #0x10] ; gcrRegs +[x0] ;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M8664_IG15: ; bbWeight=0.50, epilog, nogc, extend
...

+4 (+4.00%) : 7396.dasm - Internal.TypeSystem.LockFreeReaderHashtableOfPointers`2[Internal.TypeSystem.TypeSystemContext+FunctionPointerTypeKey,System.RuntimeTypeHandle]:WaitForSentinelInHashtableToDisappear(long[],int):long (FullOpts)

@@ -15,9 +15,9 @@ ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp" ; V06 tmp2 [V06 ] ( 1, 4 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V02._count (fldOffset=0x0)" P-DEP
-; V07 cse0 [V07,T03] ( 2, 9 ) long -> x22 hoist "CSE - aggressive" -; V08 cse1 [V08,T04] ( 2, 9 ) int -> x20 hoist "CSE - aggressive" -; V09 cse2 [V09,T02] ( 2, 9 ) byref -> x21 hoist "CSE - aggressive"
+; V07 cse0 [V07,T03] ( 2, 9 ) int -> x20 hoist "CSE - aggressive" +; V08 cse1 [V08,T02] ( 2, 9 ) byref -> x21 hoist "CSE - aggressive" +; V09 cse2 [V09,T04] ( 2, 9 ) long -> x22 hoist "CSE - aggressive"
; ; Lcl frame size = 16 @@ -34,19 +34,20 @@ G_M40860_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldr w20, [x0, #0x08] add x21, x0, #16 ; byrRegs +[x21]
- ubfiz x22, x19, #3, #32 - ;; size=12 bbWeight=1 PerfScore 4.50
+ mov w22, w19 + ;; size=12 bbWeight=1 PerfScore 4.00
G_M40860_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz ; gcrRegs -[x0] cmp w19, w20 bhs G_M40860_IG06
- add x0, x21, x22
+ lsl x0, x22, #3 + add x0, x21, x0
; byrRegs +[x0] ldar x0, [x0] ; byrRegs -[x0] cmp x0, #1 bne G_M40860_IG05
- ;; size=24 bbWeight=8 PerfScore 52.00
+ ;; size=28 bbWeight=8 PerfScore 60.00
G_M40860_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref add x0, fp, #24 // [V02 loc0] mov w1, #20 @@ -65,7 +66,7 @@ G_M40860_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 100, prolog size 20, PerfScore 77.50, instruction count 25, allocated bytes for code 100 (MethodHash=64456063) for method Internal.TypeSystem.LockFreeReaderHashtableOfPointers`2[Internal.TypeSystem.TypeSystemContext+FunctionPointerTypeKey,System.RuntimeTypeHandle]:WaitForSentinelInHashtableToDisappear(long[],int):long (FullOpts)
+; Total bytes of code 104, prolog size 20, PerfScore 85.00, instruction count 26, allocated bytes for code 104 (MethodHash=64456063) for method Internal.TypeSystem.LockFreeReaderHashtableOfPointers`2[Internal.TypeSystem.TypeSystemContext+FunctionPointerTypeKey,System.RuntimeTypeHandle]:WaitForSentinelInHashtableToDisappear(long[],int):long (FullOpts)
; ============================================================ Unwind Info: @@ -76,7 +77,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ 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)

+20 (+5.00%) : 11969.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)

@@ -8,35 +8,36 @@ ; Final local variable assignments ; ; V00 this [V00,T04] ( 11, 7 ) byref -> x19 this single-def
-; V01 arg1 [V01,T06] ( 5, 3.50) int -> x1 single-def -; V02 loc0 [V02,T16] ( 3, 2.50) int -> x0
+; V01 arg1 [V01,T07] ( 5, 3.50) int -> x1 single-def +; V02 loc0 [V02,T17] ( 3, 2.50) int -> x0
; V03 loc1 [V03,T15] ( 5, 2.50) int -> x21
-; V04 loc2 [V04,T11] ( 5, 4 ) int -> x20 ld-addr-op -; V05 loc3 [V05,T00] ( 11, 29.50) int -> x22 -; V06 loc4 [V06,T01] ( 14, 22 ) int -> x23 -; V07 loc5 [V07,T18] ( 2, 1 ) int -> x0 -; V08 loc6 [V08,T09] ( 4, 5 ) int -> x1 -; V09 loc7 [V09,T03] ( 4, 10.50) int -> x2 -; V10 loc8 [V10,T05] ( 3, 6.50) int -> x3
+; V04 loc2 [V04,T16] ( 5, 2.50) int -> x20 ld-addr-op +; V05 loc3 [V05,T00] ( 13, 34.50) int -> x22 +; V06 loc4 [V06,T01] ( 14, 28 ) int -> x23 +; V07 loc5 [V07,T19] ( 2, 1 ) int -> x0 +; V08 loc6 [V08,T05] ( 4, 9 ) int -> x1 +; V09 loc7 [V09,T03] ( 6, 13.50) int -> x2 +; V10 loc8 [V10,T06] ( 4, 9 ) int -> x3
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp3 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V15 tmp4 [V15 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V16 tmp5 [V16,T07] ( 5, 5 ) long -> [fp+0x18] "Inlining Arg"
+; V16 tmp5 [V16,T09] ( 5, 5 ) long -> [fp+0x18] "Inlining Arg"
;* V17 tmp6 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V18 tmp7 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp8 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp9 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V21 tmp10 [V21 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V22 tmp11 [V22,T08] ( 5, 5 ) long -> [fp+0x10] spill-single-def "Inlining Arg"
+; V22 tmp11 [V22,T10] ( 5, 5 ) long -> [fp+0x10] spill-single-def "Inlining Arg"
;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V24 tmp13 [V24,T13] ( 3, 3 ) long -> x0 "Cast away GC" ; V25 tmp14 [V25,T14] ( 3, 3 ) long -> x0 "Cast away GC"
-; V26 cse0 [V26,T17] ( 3, 1.50) int -> x0 "CSE - moderate" -; V27 cse1 [V27,T02] ( 12, 18 ) byref -> x24 hoist multi-def "CSE - aggressive" -; V28 cse2 [V28,T10] ( 2, 4.50) int -> x0 hoist "CSE - aggressive" -; V29 cse3 [V29,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
+; V26 cse0 [V26,T18] ( 3, 1.50) int -> x0 "CSE - moderate" +; V27 cse1 [V27,T02] ( 13, 20.50) byref -> x24 hoist multi-def "CSE - aggressive" +; V28 cse2 [V28,T11] ( 3, 5 ) int -> x0 "CSE - aggressive" +; V29 cse3 [V29,T08] ( 4, 5.50) int -> x4 hoist multi-def "CSE - aggressive" +; V30 cse4 [V30,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
; ; Lcl frame size = 16 @@ -138,7 +139,7 @@ G_M38441_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=28 bbWeight=0.50 PerfScore 2.25
-G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add w0, w23, #1 str w0, [x19] neg w0, w20 @@ -146,47 +147,50 @@ G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, mov w1, wzr add x24, x19, #4 ; byrRegs +[x24]
+ ldr w2, [x24, w22, SXTW #2]
and w0, w0, #31
- b G_M38441_IG13 - ;; size=32 bbWeight=0.50 PerfScore 2.50 -G_M38441_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ lsr w3, w2, w0 + cmp w22, #0 + ble G_M38441_IG13 + and w4, w20, #31 + ;; size=48 bbWeight=0.50 PerfScore 4.75 +G_M38441_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
orr w1, w1, w3 str w1, [x24, w23, SXTW #2]
- lsl w1, w2, w20
+ lsl w1, w2, w4
sub w22, w22, #1 sub w23, w23, #1
- ;; size=20 bbWeight=2 PerfScore 6.00 -G_M38441_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w2, [x24, w22, SXTW #2] lsr w3, w2, w0 cmp w22, #0 bgt G_M38441_IG12
- ;; size=16 bbWeight=4 PerfScore 20.00 -G_M38441_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3 - str w0, [x24, w23, SXTW #2]
+ ;; size=36 bbWeight=4 PerfScore 32.00 +G_M38441_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w4, w1, w3 + str w4, [x24, w23, SXTW #2]
sub w0, w23, #1
- lsl w1, w2, w20
+ and w4, w20, #31 + lsl w1, w2, w4
str w1, [x24, w0, SXTW #2] mov x0, x24 lsl w1, w21, #2 mov w1, w1 str x1, [fp, #0x10] // [V22 tmp11]
- cbz x1, G_M38441_IG16
+ cbz x1, G_M38441_IG15
cmp x1, #0xD1FFAB1E
- bhi G_M38441_IG15
+ bhi G_M38441_IG14
mov w1, wzr ldr w2, [fp, #0x10] // [V22 tmp11] bl CORINFO_HELP_MEMSET ; gcr arg pop 0
- b G_M38441_IG16 - ;; size=64 bbWeight=0.50 PerfScore 6.75 -G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ b G_M38441_IG15 + ;; size=68 bbWeight=0.50 PerfScore 7.00 +G_M38441_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
ldr x1, [fp, #0x10] // [V22 tmp11] bl <unknown method> ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M38441_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w0, [x19] sub w0, w0, #1 ldr w1, [x24, w0, SXTW #2] @@ -195,7 +199,7 @@ G_M38441_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 b G_M38441_IG04 ;; size=24 bbWeight=0.50 PerfScore 4.75
-; Total bytes of code 400, prolog size 24, PerfScore 102.25, instruction count 100, allocated bytes for code 400 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
+; Total bytes of code 420, prolog size 24, PerfScore 110.75, instruction count 105, allocated bytes for code 420 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
; ============================================================ Unwind Info: @@ -206,7 +210,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 100 (0x00064) Actual length = 400 (0x000190)
+ Function Length : 105 (0x00069) Actual length = 420 (0x0001a4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+5.00%) : 6268.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)

@@ -9,35 +9,36 @@ ; Final local variable assignments ; ; V00 this [V00,T04] ( 11, 7 ) byref -> x19 this single-def
-; V01 arg1 [V01,T06] ( 5, 3.50) int -> x1 single-def -; V02 loc0 [V02,T16] ( 3, 2.50) int -> x0
+; V01 arg1 [V01,T07] ( 5, 3.50) int -> x1 single-def +; V02 loc0 [V02,T17] ( 3, 2.50) int -> x0
; V03 loc1 [V03,T15] ( 5, 2.50) int -> x21
-; V04 loc2 [V04,T11] ( 5, 4 ) int -> x20 ld-addr-op -; V05 loc3 [V05,T00] ( 11, 29.50) int -> x22 -; V06 loc4 [V06,T01] ( 14, 22 ) int -> x23 -; V07 loc5 [V07,T18] ( 2, 1 ) int -> x0 -; V08 loc6 [V08,T09] ( 4, 5 ) int -> x1 -; V09 loc7 [V09,T03] ( 4, 10.50) int -> x2 -; V10 loc8 [V10,T05] ( 3, 6.50) int -> x3
+; V04 loc2 [V04,T16] ( 5, 2.50) int -> x20 ld-addr-op +; V05 loc3 [V05,T00] ( 13, 34.50) int -> x22 +; V06 loc4 [V06,T01] ( 14, 28 ) int -> x23 +; V07 loc5 [V07,T19] ( 2, 1 ) int -> x0 +; V08 loc6 [V08,T05] ( 4, 9 ) int -> x1 +; V09 loc7 [V09,T03] ( 6, 13.50) int -> x2 +; V10 loc8 [V10,T06] ( 4, 9 ) int -> x3
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp3 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V15 tmp4 [V15 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V16 tmp5 [V16,T07] ( 5, 5 ) long -> [fp+0x18] "Inlining Arg"
+; V16 tmp5 [V16,T09] ( 5, 5 ) long -> [fp+0x18] "Inlining Arg"
;* V17 tmp6 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V18 tmp7 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp8 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp9 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V21 tmp10 [V21 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V22 tmp11 [V22,T08] ( 5, 5 ) long -> [fp+0x10] spill-single-def "Inlining Arg"
+; V22 tmp11 [V22,T10] ( 5, 5 ) long -> [fp+0x10] spill-single-def "Inlining Arg"
;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V24 tmp13 [V24,T13] ( 3, 3 ) long -> x0 "Cast away GC" ; V25 tmp14 [V25,T14] ( 3, 3 ) long -> x0 "Cast away GC"
-; V26 cse0 [V26,T17] ( 3, 1.50) int -> x0 "CSE - moderate" -; V27 cse1 [V27,T02] ( 12, 18 ) byref -> x24 hoist multi-def "CSE - aggressive" -; V28 cse2 [V28,T10] ( 2, 4.50) int -> x0 hoist "CSE - aggressive" -; V29 cse3 [V29,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
+; V26 cse0 [V26,T18] ( 3, 1.50) int -> x0 "CSE - moderate" +; V27 cse1 [V27,T02] ( 13, 20.50) byref -> x24 hoist multi-def "CSE - aggressive" +; V28 cse2 [V28,T11] ( 3, 5 ) int -> x0 "CSE - aggressive" +; V29 cse3 [V29,T08] ( 4, 5.50) int -> x4 hoist multi-def "CSE - aggressive" +; V30 cse4 [V30,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
; ; Lcl frame size = 16 @@ -139,7 +140,7 @@ G_M38441_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=28 bbWeight=0.50 PerfScore 2.25
-G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add w0, w23, #1 str w0, [x19] neg w0, w20 @@ -147,47 +148,50 @@ G_M38441_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, mov w1, wzr add x24, x19, #4 ; byrRegs +[x24]
+ ldr w2, [x24, w22, SXTW #2]
and w0, w0, #31
- b G_M38441_IG13 - ;; size=32 bbWeight=0.50 PerfScore 2.50 -G_M38441_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ lsr w3, w2, w0 + cmp w22, #0 + ble G_M38441_IG13 + and w4, w20, #31 + ;; size=48 bbWeight=0.50 PerfScore 4.75 +G_M38441_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
orr w1, w1, w3 str w1, [x24, w23, SXTW #2]
- lsl w1, w2, w20
+ lsl w1, w2, w4
sub w22, w22, #1 sub w23, w23, #1
- ;; size=20 bbWeight=2 PerfScore 6.00 -G_M38441_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w2, [x24, w22, SXTW #2] lsr w3, w2, w0 cmp w22, #0 bgt G_M38441_IG12
- ;; size=16 bbWeight=4 PerfScore 20.00 -G_M38441_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz - orr w0, w1, w3 - str w0, [x24, w23, SXTW #2]
+ ;; size=36 bbWeight=4 PerfScore 32.00 +G_M38441_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz + orr w4, w1, w3 + str w4, [x24, w23, SXTW #2]
sub w0, w23, #1
- lsl w1, w2, w20
+ and w4, w20, #31 + lsl w1, w2, w4
str w1, [x24, w0, SXTW #2] mov x0, x24 lsl w1, w21, #2 mov w1, w1 str x1, [fp, #0x10] // [V22 tmp11]
- cbz x1, G_M38441_IG16
+ cbz x1, G_M38441_IG15
cmp x1, #0xD1FFAB1E
- bhi G_M38441_IG15
+ bhi G_M38441_IG14
mov w1, wzr ldr w2, [fp, #0x10] // [V22 tmp11] bl CORINFO_HELP_MEMSET ; gcr arg pop 0
- b G_M38441_IG16 - ;; size=64 bbWeight=0.50 PerfScore 6.75 -G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ b G_M38441_IG15 + ;; size=68 bbWeight=0.50 PerfScore 7.00 +G_M38441_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
ldr x1, [fp, #0x10] // [V22 tmp11] bl <unknown method> ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M38441_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M38441_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
ldr w0, [x19] sub w0, w0, #1 ldr w1, [x24, w0, SXTW #2] @@ -196,7 +200,7 @@ G_M38441_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 b G_M38441_IG04 ;; size=24 bbWeight=0.50 PerfScore 4.75
-; Total bytes of code 400, prolog size 24, PerfScore 102.25, instruction count 100, allocated bytes for code 400 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
+; Total bytes of code 420, prolog size 24, PerfScore 110.75, instruction count 105, allocated bytes for code 420 (MethodHash=10c469d6) for method System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
; ============================================================ Unwind Info: @@ -207,7 +211,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 100 (0x00064) Actual length = 400 (0x000190)
+ Function Length : 105 (0x00069) Actual length = 420 (0x0001a4)
---- 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 503 302 57 144 -3,792 +512
benchmarks.run_pgo.windows.arm64.checked.mch 2,513 2,055 166 292 -21,132 +936
benchmarks.run_tiered.windows.arm64.checked.mch 707 580 33 94 -6,324 +252
coreclr_tests.run.windows.arm64.checked.mch 5,684 4,313 197 1,174 -31,712 +2,696
libraries.crossgen2.windows.arm64.checked.mch 1,891 1,231 123 537 -13,056 +1,200
libraries.pmi.windows.arm64.checked.mch 1,992 1,316 140 536 -13,684 +992
libraries_tests.run.windows.arm64.Release.mch 9,040 7,148 308 1,584 -78,580 +2,396
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 2,866 1,855 151 860 -17,544 +1,284
realworld.run.windows.arm64.checked.mch 542 363 40 139 -3,992 +620
smoke_tests.nativeaot.windows.arm64.checked.mch 529 327 53 149 -2,836 +260
26,267 19,490 1,268 5,509 -192,652 +11,148

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,280 362,592 232,688 124 (0.02%) 124 (0.02%)
libraries.crossgen2.windows.arm64.checked.mch 244,147 15 244,132 3 (0.00%) 5 (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,805 938,449 1,401,356 1,309 (0.06%) 1,312 (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: 10954208 (overridden on cmd)
Total bytes of delta: -3280 (-0.03 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          72 : 9711.dasm (0.86 % of base)
          52 : 2097.dasm (5.22 % of base)
          36 : 20288.dasm (3.56 % of base)
          28 : 15430.dasm (1.56 % of base)
          20 : 4748.dasm (2.26 % of base)
          20 : 668.dasm (4.24 % of base)
          16 : 23374.dasm (2.33 % of base)
          12 : 3198.dasm (1.29 % of base)
          12 : 10546.dasm (0.94 % of base)
           8 : 11746.dasm (0.62 % of base)
           8 : 2410.dasm (0.57 % of base)
           8 : 24107.dasm (4.55 % of base)
           8 : 24408.dasm (1.96 % of base)
           8 : 24409.dasm (1.96 % of base)
           8 : 14420.dasm (1.22 % of base)
           8 : 15886.dasm (2.25 % of base)
           8 : 15887.dasm (2.11 % of base)
           8 : 16383.dasm (1.18 % of base)
           8 : 21196.dasm (0.62 % of base)
           8 : 23637.dasm (1.09 % of base)

Top file improvements (bytes):
        -168 : 22604.dasm (-1.55 % of base)
        -168 : 19964.dasm (-1.86 % of base)
        -104 : 16376.dasm (-3.33 % of base)
        -100 : 22182.dasm (-6.23 % of base)
         -92 : 2818.dasm (-0.82 % of base)
         -88 : 21543.dasm (-5.38 % of base)
         -76 : 2430.dasm (-4.05 % of base)
         -72 : 5431.dasm (-2.05 % of base)
         -68 : 5620.dasm (-3.45 % of base)
         -68 : 9494.dasm (-0.20 % of base)
         -64 : 16375.dasm (-5.05 % of base)
         -64 : 20168.dasm (-19.51 % of base)
         -56 : 17581.dasm (-1.33 % of base)
         -56 : 22022.dasm (-3.02 % of base)
         -52 : 7354.dasm (-1.43 % of base)
         -52 : 21259.dasm (-0.14 % of base)
         -48 : 14427.dasm (-4.18 % of base)
         -48 : 3166.dasm (-4.17 % of base)
         -40 : 21993.dasm (-7.94 % of base)
         -36 : 16377.dasm (-3.57 % of base)

73 total files with Code Size differences (44 improved, 29 regressed), 20 unchanged.

Top method regressions (bytes):
          72 (0.86 % 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)
          52 (5.22 % of base) : 2097.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          36 (3.56 % of base) : 20288.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          28 (1.56 % of base) : 15430.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          20 (2.26 % of base) : 4748.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Span`1[System.__Canon]):int (FullOpts)
          20 (4.24 % of base) : 668.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
          16 (2.33 % of base) : 23374.dasm - SciMark2.FFT:transform_internal(double[],int) (FullOpts)
          12 (0.94 % of base) : 10546.dasm - EMFloat:AddSubInternalFPF(ubyte,byref,byref,byref) (FullOpts)
          12 (1.29 % of base) : 3198.dasm - System.Globalization.OrdinalCasing:ToUpperOrdinal(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]) (FullOpts)
           8 (1.22 % of base) : 14420.dasm - AssignJagged:Run():double:this (FullOpts)
           8 (4.55 % of base) : 24107.dasm - BenchmarksGame.ReverseComplement_1:InitComplements() (FullOpts)
           8 (1.96 % of base) : 24409.dasm - BenchmarksGame.SpectralNorm_1:MultiplyAtv(int,double[],double[]):this (FullOpts)
           8 (1.96 % of base) : 24408.dasm - BenchmarksGame.SpectralNorm_1:MultiplyAv(int,double[],double[]):this (FullOpts)
           8 (0.62 % of base) : 21196.dasm - Benchstone.BenchF.MatInv4:MinV1(float[],byref,byref,float[],float[]) (FullOpts)
           8 (1.09 % of base) : 23637.dasm - Burgers:GetCalculated3(int,int,double,double,double,double[]):double[] (FullOpts)
           8 (0.62 % of base) : 11746.dasm - EMFloatClass:AddSubInternalFPF(ubyte,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF) (FullOpts)
           8 (2.11 % of base) : 15887.dasm - NeuralJagged:adjust_mid_wts(int) (FullOpts)
           8 (2.25 % of base) : 15886.dasm - NeuralJagged:adjust_out_wts() (FullOpts)
           8 (0.57 % of base) : 2410.dasm - System.Diagnostics.StackFrameHelper:InitializeSourceInfo(int,ubyte,System.Exception):this (FullOpts)
           8 (1.18 % of base) : 16383.dasm - System.Text.Json.JsonCamelCaseNamingPolicy:FixCasing(System.Span`1[ushort]) (FullOpts)

Top method improvements (bytes):
        -168 (-1.86 % of base) : 19964.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
        -168 (-1.55 % of base) : 22604.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
        -104 (-3.33 % of base) : 16376.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
        -100 (-6.23 % of base) : 22182.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (FullOpts)
         -92 (-0.82 % of base) : 2818.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         -88 (-5.38 % of base) : 21543.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (FullOpts)
         -76 (-4.05 % of base) : 2430.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -72 (-2.05 % of base) : 5431.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
         -68 (-0.20 % of base) : 9494.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
         -68 (-3.45 % of base) : 5620.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
         -64 (-5.05 % of base) : 16375.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (FullOpts)
         -64 (-19.51 % of base) : 20168.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
         -56 (-3.02 % of base) : 22022.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,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)
         -52 (-1.43 % of base) : 7354.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -48 (-4.18 % of base) : 14427.dasm - AssignJagged:first_assignments(int[][],short[][]):int (FullOpts)
         -48 (-4.17 % of base) : 3166.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)
         -40 (-7.94 % of base) : 21993.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (FullOpts)
         -36 (-3.57 % of base) : 16377.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (FullOpts)

Top method regressions (percentages):
          52 (5.22 % of base) : 2097.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
           8 (4.55 % of base) : 24107.dasm - BenchmarksGame.ReverseComplement_1:InitComplements() (FullOpts)
          20 (4.24 % of base) : 668.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
           4 (3.57 % of base) : 14000.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (FullOpts)
          36 (3.56 % of base) : 20288.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
           4 (3.03 % of base) : 20678.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder:ToArray():Microsoft.CodeAnalysis.GreenNode[]:this (FullOpts)
           4 (2.70 % of base) : 22621.dasm - BenchmarksGame.Fasta_2:SelectRandom(BenchmarksGame.Fasta_2+Frequency[]):ubyte (FullOpts)
          16 (2.33 % of base) : 23374.dasm - SciMark2.FFT:transform_internal(double[],int) (FullOpts)
          20 (2.26 % of base) : 4748.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Span`1[System.__Canon]):int (FullOpts)
           8 (2.25 % of base) : 15886.dasm - NeuralJagged:adjust_out_wts() (FullOpts)
           4 (2.17 % of base) : 9919.dasm - System.Text.RegularExpressions.Symbolic.UnicodeCategoryConditions:GetCategory(int):System.Text.RegularExpressions.Symbolic.BDD (FullOpts)
           8 (2.11 % of base) : 15887.dasm - NeuralJagged:adjust_mid_wts(int) (FullOpts)
           8 (1.96 % of base) : 24409.dasm - BenchmarksGame.SpectralNorm_1:MultiplyAtv(int,double[],double[]):this (FullOpts)
           8 (1.96 % of base) : 24408.dasm - BenchmarksGame.SpectralNorm_1:MultiplyAv(int,double[],double[]):this (FullOpts)
           4 (1.85 % of base) : 20679.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList:List(Microsoft.CodeAnalysis.GreenNode[],int):Microsoft.CodeAnalysis.GreenNode (FullOpts)
           4 (1.85 % of base) : 11364.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,int]:SwapIfGreaterWithValues(System.Span`1[int],System.Span`1[int],int,int) (FullOpts)
           4 (1.72 % of base) : 20298.dasm - System.Number+BigInteger:Add(uint):this (FullOpts)
           4 (1.67 % of base) : 4999.dasm - System.UInt128:<op_Division>g__SubtractDivisor|111_3(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (FullOpts)
          28 (1.56 % of base) : 15430.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
           4 (1.52 % of base) : 15563.dasm - System.SpanHelpers:SequenceCompareTo[int](byref,int,byref,int):int (FullOpts)

Top method improvements (percentages):
         -64 (-19.51 % of base) : 20168.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
          -8 (-8.70 % of base) : 6284.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
         -40 (-7.94 % of base) : 21993.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (FullOpts)
        -100 (-6.23 % of base) : 22182.dasm - Benchstone.BenchF.Romber:Test():ubyte: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)
         -16 (-5.56 % of base) : 16331.dasm - Benchstone.BenchI.NDhrystone:Proc8(int[],int[][],int,int) (FullOpts)
         -88 (-5.38 % of base) : 21543.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (FullOpts)
         -64 (-5.05 % of base) : 16375.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (FullOpts)
          -8 (-5.00 % of base) : 14424.dasm - AssignJagged:CopyToAssign(int[][],int[][]) (FullOpts)
          -8 (-4.88 % of base) : 23766.dasm - NumericSortJagged:NumSift(int[],int,int) (FullOpts)
         -16 (-4.76 % of base) : 7395.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:HasCallbacks(int):ubyte:this (FullOpts)
          -4 (-4.76 % of base) : 20155.dasm - System.Collections.IndexerSet`1[System.__Canon]:Array():System.__Canon[]:this (FullOpts)
         -12 (-4.69 % of base) : 1829.dasm - System.Linq.OrderedEnumerable`1[double]:Fill(double[],System.Span`1[double]):this (FullOpts)
          -8 (-4.65 % of base) : 1770.dasm - System.Net.MultiArrayBuffer:Dispose():this (FullOpts)
          -4 (-4.55 % of base) : 15215.dasm - System.Collections.IndexerSetReverse`1[System.__Canon]:Array():System.__Canon[]:this (FullOpts)
          -8 (-4.55 % of base) : 23151.dasm - System.Globalization.GregorianCalendarHelper:get_Eras():int[]:this (FullOpts)
         -16 (-4.44 % of base) : 9443.dasm - System.Boolean:TrimWhiteSpaceAndNull(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
          -8 (-4.35 % of base) : 20496.dasm - Benchstone.BenchI.Puzzle:Fit(int,int):ubyte:this (FullOpts)
         -48 (-4.18 % of base) : 14427.dasm - AssignJagged:first_assignments(int[][],short[][]):int (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: 45422716 (overridden on cmd)
Total bytes of delta: -20196 (-0.04 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          36 : 46212.dasm (2.00 % of base)
          32 : 43280.dasm (7.14 % of base)
          24 : 47317.dasm (1.34 % of base)
          24 : 47322.dasm (1.34 % of base)
          20 : 94403.dasm (1.28 % of base)
          16 : 87530.dasm (2.50 % of base)
          16 : 87538.dasm (2.48 % of base)
          16 : 87540.dasm (2.33 % of base)
          12 : 13190.dasm (2.40 % of base)
          12 : 23706.dasm (2.40 % of base)
          12 : 28749.dasm (2.40 % of base)
          12 : 31127.dasm (2.40 % of base)
          12 : 42440.dasm (2.40 % of base)
          12 : 9554.dasm (2.13 % of base)
          12 : 24240.dasm (2.40 % of base)
          12 : 27855.dasm (2.13 % of base)
          12 : 51649.dasm (0.89 % of base)
           8 : 21836.dasm (1.68 % of base)
           8 : 47092.dasm (2.25 % of base)
           8 : 81872.dasm (1.08 % of base)

Top file improvements (bytes):
        -340 : 50043.dasm (-5.46 % of base)
        -204 : 90726.dasm (-10.83 % of base)
        -184 : 90725.dasm (-7.72 % of base)
        -164 : 79842.dasm (-1.51 % of base)
        -164 : 51652.dasm (-1.82 % of base)
        -128 : 65961.dasm (-2.13 % of base)
        -124 : 40712.dasm (-5.23 % of base)
        -116 : 78237.dasm (-6.55 % of base)
        -112 : 50903.dasm (-3.98 % of base)
        -112 : 95783.dasm (-3.16 % of base)
        -112 : 50042.dasm (-4.38 % of base)
        -112 : 64533.dasm (-3.87 % of base)
        -112 : 92602.dasm (-3.16 % of base)
        -108 : 50572.dasm (-3.21 % of base)
        -108 : 52246.dasm (-3.21 % of base)
        -108 : 65853.dasm (-3.21 % of base)
        -108 : 85659.dasm (-3.22 % of base)
         -92 : 50035.dasm (-2.84 % of base)
         -84 : 78489.dasm (-1.91 % of base)
         -80 : 79829.dasm (-0.70 % of base)

71 total files with Code Size differences (44 improved, 27 regressed), 20 unchanged.

Top method regressions (bytes):
          36 (2.00 % of base) : 46212.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
          32 (7.14 % of base) : 43280.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          24 (1.34 % of base) : 47317.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
          24 (1.34 % of base) : 47322.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
          20 (1.28 % of base) : 94403.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1)
          16 (2.33 % of base) : 87540.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1)
          16 (2.50 % of base) : 87530.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1-OSR)
          16 (2.48 % of base) : 87538.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1-OSR)
          12 (0.89 % of base) : 51649.dasm - Benchstone.BenchF.LLoops:Init():this (Tier1-OSR)
          12 (2.40 % of base) : 13190.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.40 % of base) : 23706.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.40 % of base) : 28749.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.40 % of base) : 31127.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.40 % of base) : 42440.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.13 % of base) : 9554.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.40 % of base) : 24240.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.13 % of base) : 27855.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
           8 (1.08 % of base) : 81872.dasm - Benchstone.BenchF.SqMtx:Inner(double[][],double[][],int) (Tier1)
           8 (2.25 % of base) : 47092.dasm - NeuralJagged:adjust_out_wts() (Tier1)
           8 (1.68 % of base) : 21836.dasm - System.Linq.Enumerable+SelectArrayIterator`2[double,System.__Canon]:Fill(System.ReadOnlySpan`1[double],System.Span`1[System.__Canon],System.Func`2[double,System.__Canon]) (Tier1-OSR)

Top method improvements (bytes):
        -340 (-5.46 % of base) : 50043.dasm - LUDecomp:Run():double:this (Tier1)
        -204 (-10.83 % of base) : 90726.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
        -184 (-7.72 % of base) : 90725.dasm - NumericSortJagged:Run():double:this (Tier1)
        -164 (-1.82 % of base) : 51652.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
        -164 (-1.51 % of base) : 79842.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
        -128 (-2.13 % of base) : 65961.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
        -124 (-5.23 % of base) : 40712.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
        -116 (-6.55 % of base) : 78237.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (Tier1-OSR)
        -112 (-4.38 % of base) : 50042.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (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.16 % of base) : 92602.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.21 % of base) : 65853.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)
         -92 (-2.84 % of base) : 50035.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
         -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.70 % of base) : 79829.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)

Top method regressions (percentages):
          32 (7.14 % of base) : 43280.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
           4 (3.57 % of base) : 84776.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
           4 (2.50 % of base) : 90701.dasm - NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
           4 (2.50 % of base) : 90723.dasm - NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
          16 (2.50 % of base) : 87530.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1-OSR)
           4 (2.50 % of base) : 41141.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1-OSR)
           4 (2.50 % of base) : 47722.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1-OSR)
           4 (2.50 % of base) : 84722.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1-OSR)
          16 (2.48 % of base) : 87538.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1-OSR)
           4 (2.44 % of base) : 84704.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1-OSR)
          12 (2.40 % of base) : 13190.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.40 % of base) : 23706.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.40 % of base) : 28749.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.40 % of base) : 31127.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.40 % of base) : 42440.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.40 % of base) : 24240.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          16 (2.33 % of base) : 87540.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1)
           8 (2.25 % of base) : 47092.dasm - NeuralJagged:adjust_out_wts() (Tier1)
          12 (2.13 % of base) : 9554.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
          12 (2.13 % of base) : 27855.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)

Top method improvements (percentages):
         -40 (-10.99 % of base) : 76548.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
        -204 (-10.83 % of base) : 90726.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
         -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)
        -184 (-7.72 % of base) : 90725.dasm - NumericSortJagged:Run():double:this (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)
         -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)
        -116 (-6.55 % of base) : 78237.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (Tier1-OSR)
         -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)
        -340 (-5.46 % of base) : 50043.dasm - LUDecomp:Run():double:this (Tier1)
         -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)
        -124 (-5.23 % of base) : 40712.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
         -28 (-5.22 % of base) : 29922.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (Instrumented Tier0)
         -28 (-5.22 % of base) : 29929.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (Instrumented Tier0)
          -8 (-5.00 % of base) : 40732.dasm - AssignJagged:CopyToAssign(int[][],int[][]) (Tier1)


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

Detail diffs



Top file regressions (bytes):
          28 : 30494.dasm (1.56 % of base)
          24 : 42960.dasm (1.19 % of base)
          20 : 5470.dasm (4.24 % of base)
          16 : 47280.dasm (2.48 % of base)
          16 : 47284.dasm (2.33 % of base)
          12 : 22983.dasm (0.94 % of base)
           8 : 27443.dasm (0.62 % of base)
           8 : 31230.dasm (2.25 % of base)
           8 : 31231.dasm (2.11 % of base)
           8 : 48859.dasm (0.87 % of base)
           8 : 19723.dasm (1.06 % of base)
           8 : 30543.dasm (0.80 % of base)
           8 : 47877.dasm (1.39 % of base)
           4 : 19724.dasm (0.86 % of base)
           4 : 28359.dasm (2.08 % of base)
           4 : 28664.dasm (2.50 % of base)
           4 : 46985.dasm (3.57 % of base)
           4 : 48176.dasm (2.50 % of base)
           4 : 12764.dasm (1.05 % of base)
           4 : 40351.dasm (0.32 % of base)

Top file improvements (bytes):
        -168 : 40354.dasm (-1.86 % of base)
        -168 : 46292.dasm (-1.55 % of base)
        -128 : 31906.dasm (-4.40 % of base)
        -112 : 40535.dasm (-4.83 % of base)
        -112 : 32264.dasm (-3.98 % of base)
        -104 : 31909.dasm (-3.33 % of base)
         -96 : 45218.dasm (-5.45 % of base)
         -76 : 9619.dasm (-4.05 % of base)
         -68 : 20450.dasm (-0.20 % of base)
         -68 : 3128.dasm (-0.78 % of base)
         -64 : 31913.dasm (-5.05 % of base)
         -60 : 29366.dasm (-4.98 % of base)
         -56 : 43390.dasm (-3.74 % of base)
         -56 : 38855.dasm (-1.35 % of base)
         -52 : 7563.dasm (-1.40 % of base)
         -52 : 8726.dasm (-3.23 % of base)
         -52 : 24053.dasm (-4.26 % of base)
         -52 : 30654.dasm (-3.28 % of base)
         -52 : 46883.dasm (-2.56 % of base)
         -48 : 29370.dasm (-4.18 % of base)

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

Top method regressions (bytes):
          28 (1.56 % of base) : 30494.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
          24 (1.19 % of base) : 42960.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1-OSR)
          20 (4.24 % of base) : 5470.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          16 (2.33 % of base) : 47284.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1)
          16 (2.48 % of base) : 47280.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1-OSR)
          12 (0.94 % of base) : 22983.dasm - EMFloat:AddSubInternalFPF(ubyte,byref,byref,byref) (Tier1)
           8 (1.39 % of base) : 47877.dasm - Burgers:GetCalculated3(int,int,double,double,double,double[]):double[] (Tier1-OSR)
           8 (0.62 % of base) : 27443.dasm - EMFloatClass:AddSubInternalFPF(ubyte,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF) (Tier1)
           8 (0.80 % of base) : 30543.dasm - IDEAEncryption:de_key_idea(ushort[],ushort[]) (Tier1)
           8 (2.11 % of base) : 31231.dasm - NeuralJagged:adjust_mid_wts(int) (Tier1)
           8 (2.25 % of base) : 31230.dasm - NeuralJagged:adjust_out_wts() (Tier1)
           8 (0.87 % of base) : 48859.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
           8 (1.06 % of base) : 19723.dasm - System.Collections.Frozen.FrozenHashTable:CalcNumBuckets(System.ReadOnlySpan`1[int],ubyte):int (Tier1-OSR)
           4 (0.32 % of base) : 40351.dasm - Benchstone.BenchF.LLoops:Init():this (Tier1-OSR)
           4 (1.32 % of base) : 32578.dasm - Benchstone.BenchI.Pi:ComputePi(int[]):int[] (Tier1-OSR)
           4 (0.32 % of base) : 27440.dasm - EMFloatClass:DivideInternalFPF(EMFloatClass+InternalFPF,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF) (Tier1)
           4 (2.50 % of base) : 48176.dasm - NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
           4 (0.86 % of base) : 19724.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
           4 (3.57 % of base) : 46985.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
           4 (2.50 % of base) : 28664.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1-OSR)

Top method improvements (bytes):
        -168 (-1.86 % of base) : 40354.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
        -168 (-1.55 % of base) : 46292.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
        -128 (-4.40 % of base) : 31906.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
        -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)
        -104 (-3.33 % of base) : 31909.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
         -96 (-5.45 % of base) : 45218.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (Tier1-OSR)
         -76 (-4.05 % of base) : 9619.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
         -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)
         -64 (-5.05 % of base) : 31913.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
         -60 (-4.98 % of base) : 29366.dasm - AssignJagged:first_assignments(int[][],short[][]):int (Tier1-OSR)
         -56 (-3.74 % of base) : 43390.dasm - Benchstone.BenchF.MatInv4:MinV2(float[],byref,byref,float[],float[]) (Tier1-OSR)
         -56 (-1.35 % of base) : 38855.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
         -52 (-1.40 % of base) : 7563.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier0-FullOpts)
         -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)

Top method regressions (percentages):
          20 (4.24 % of base) : 5470.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
           4 (3.57 % of base) : 46985.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
           4 (2.50 % of base) : 48176.dasm - NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
           4 (2.50 % of base) : 28664.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1-OSR)
          16 (2.48 % of base) : 47280.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1-OSR)
          16 (2.33 % of base) : 47284.dasm - SciMark2.FFT:transform_internal(double[],int) (Tier1)
           8 (2.25 % of base) : 31230.dasm - NeuralJagged:adjust_out_wts() (Tier1)
           8 (2.11 % of base) : 31231.dasm - NeuralJagged:adjust_mid_wts(int) (Tier1)
           4 (2.08 % of base) : 28359.dasm - System.Text.RegularExpressions.Symbolic.CharSetSolver:CreateBDDFromChar(ushort):System.Text.RegularExpressions.Symbolic.BDD:this (Tier1)
          28 (1.56 % of base) : 30494.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
           8 (1.39 % of base) : 47877.dasm - Burgers:GetCalculated3(int,int,double,double,double,double[]):double[] (Tier1-OSR)
           4 (1.32 % of base) : 32578.dasm - Benchstone.BenchI.Pi:ComputePi(int[]):int[] (Tier1-OSR)
          24 (1.19 % of base) : 42960.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1-OSR)
           8 (1.06 % of base) : 19723.dasm - System.Collections.Frozen.FrozenHashTable:CalcNumBuckets(System.ReadOnlySpan`1[int],ubyte):int (Tier1-OSR)
           4 (1.05 % of base) : 12764.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:CreateEntryNoResize(System.__Canon,System.__Canon):this (Tier1)
           4 (1.02 % of base) : 8295.dasm - System.Random+CompatPrng:Initialize(int):this (Tier1)
          12 (0.94 % of base) : 22983.dasm - EMFloat:AddSubInternalFPF(ubyte,byref,byref,byref) (Tier1)
           8 (0.87 % of base) : 48859.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
           4 (0.86 % of base) : 19724.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
           8 (0.80 % of base) : 30543.dasm - IDEAEncryption:de_key_idea(ushort[],ushort[]) (Tier1)

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)
         -36 (-9.57 % of base) : 44833.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
         -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)
         -16 (-5.56 % of base) : 31656.dasm - Benchstone.BenchI.NDhrystone:Proc8(int[],int[][],int,int) (Tier1)
         -24 (-5.56 % of base) : 1817.dasm - System.Collections.Generic.ArraySortHelper`1[int]:InsertionSort(System.Span`1[int],System.Comparison`1[int]) (Tier0)
         -96 (-5.45 % of base) : 45218.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (Tier1-OSR)
         -20 (-5.21 % of base) : 44831.dasm - Benchstone.BenchI.XposMatrix:Test():ubyte:this (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)
         -64 (-5.05 % of base) : 31913.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
          -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)


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: 495084120 (overridden on cmd)
Total bytes of diff: 495055104 (overridden on cmd)
Total bytes of delta: -29016 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

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)
         128 : 591592.dasm (1.15 % of base)
          60 : 321216.dasm (8.72 % of base)
          52 : 204183.dasm (5.22 % of base)
          36 : 324865.dasm (8.49 % of base)
          36 : 519046.dasm (8.49 % of base)
          36 : 521211.dasm (8.49 % of base)
          32 : 254504.dasm (24.24 % of base)
          28 : 241193.dasm (3.93 % of base)
          28 : 321458.dasm (6.60 % of base)
          28 : 522809.dasm (6.60 % of base)
          24 : 240502.dasm (3.68 % of base)
          20 : 509055.dasm (4.72 % of base)
          20 : 513876.dasm (4.72 % of base)
          20 : 563711.dasm (4.72 % of base)
          20 : 574903.dasm (4.72 % of base)
          20 : 422652.dasm (4.72 % of base)
          20 : 473800.dasm (4.72 % of base)

Top file improvements (bytes):
        -332 : 470783.dasm (-5.32 % of base)
        -208 : 470258.dasm (-4.17 % of base)
        -204 : 470249.dasm (-9.94 % of base)
        -168 : 205315.dasm (-1.55 % of base)
        -168 : 205258.dasm (-1.86 % of base)
        -124 : 181824.dasm (-3.97 % of base)
        -120 : 470482.dasm (-3.64 % of base)
        -112 : 470777.dasm (-4.38 % of base)
        -104 : 203927.dasm (-3.33 % of base)
        -104 : 399510.dasm (-4.29 % of base)
        -100 : 22372.dasm (-6.51 % of base)
        -100 : 246855.dasm (-2.43 % of base)
        -100 : 241201.dasm (-2.43 % of base)
         -92 : 470773.dasm (-2.84 % of base)
         -88 : 591599.dasm (-0.74 % of base)
         -80 : 187963.dasm (-2.70 % of base)
         -76 : 205590.dasm (-4.92 % of base)
         -76 : 342168.dasm (-3.45 % of base)
         -68 : 401102.dasm (-2.35 % of base)
         -68 : 21134.dasm (-4.23 % of base)

76 total files with Code Size differences (53 improved, 23 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)
         128 (1.15 % of base) : 591592.dasm - ILCompiler.ReadyToRunMetadataFieldLayoutAlgorithm+ModuleFieldLayoutMap:CalculateTypeLayout(Internal.TypeSystem.DefType,Internal.TypeSystem.Ecma.EcmaModule,byref):Internal.TypeSystem.FieldAndOffset[]:this (Tier1)
          60 (8.72 % of base) : 321216.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Instrumented Tier1)
          52 (5.22 % of base) : 204183.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          36 (8.49 % of base) : 324865.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          36 (8.49 % of base) : 519046.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          36 (8.49 % of base) : 521211.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          32 (24.24 % of base) : 254504.dasm - TestApp:test_2_2(int):int (FullOpts)
          28 (3.93 % of base) : 241193.dasm - struct1:ProcessJagged2DArray(byref) (FullOpts)
          28 (6.60 % of base) : 321458.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          28 (6.60 % of base) : 522809.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          24 (3.68 % of base) : 240502.dasm - class1:ProcessJagged2DArray(byref) (FullOpts)
          20 (4.72 % of base) : 509055.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 513876.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 563711.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 574903.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 422652.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 473800.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

Top method improvements (bytes):
        -332 (-5.32 % of base) : 470783.dasm - LUDecomp:Run():double:this (Tier1)
        -208 (-4.17 % of base) : 470258.dasm - NumericSortJagged:Run():double:this (Tier1)
        -204 (-9.94 % of base) : 470249.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
        -168 (-1.86 % of base) : 205258.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
        -168 (-1.55 % of base) : 205315.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
        -124 (-3.97 % of base) : 181824.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
        -120 (-3.64 % of base) : 470482.dasm - EMFloatClass:SetupCPUEmFloatArrays(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int) (Tier1)
        -112 (-4.38 % of base) : 470777.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
        -104 (-3.33 % of base) : 203927.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
        -104 (-4.29 % of base) : 399510.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
        -100 (-6.51 % of base) : 22372.dasm - Simple_Array_Test:TestEntryPoint():int (FullOpts)
        -100 (-2.43 % of base) : 246855.dasm - Test_structarr_InnerProd.intmm:TestEntryPoint():int (FullOpts)
        -100 (-2.43 % of base) : 241201.dasm - Test_structarr_InnerProd.intmm:TestEntryPoint():int (FullOpts)
         -92 (-2.84 % of base) : 470773.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
         -88 (-0.74 % of base) : 591599.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (Tier1)
         -80 (-2.70 % of base) : 187963.dasm - Test:TestEntryPoint():int (FullOpts)
         -76 (-4.92 % of base) : 205590.dasm - Benchstone.BenchF.Romber:Bench():ubyte (FullOpts)
         -76 (-3.45 % of base) : 342168.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
         -68 (-4.23 % of base) : 21134.dasm - Complex_Array_Test:TestEntryPoint():int (FullOpts)
         -68 (-2.35 % of base) : 401102.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)

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)
          32 (24.24 % of base) : 254504.dasm - TestApp:test_2_2(int):int (FullOpts)
          60 (8.72 % of base) : 321216.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Instrumented Tier1)
          36 (8.49 % of base) : 324865.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          36 (8.49 % of base) : 519046.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          36 (8.49 % of base) : 521211.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          28 (6.60 % of base) : 321458.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          28 (6.60 % of base) : 522809.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          52 (5.22 % of base) : 204183.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          20 (4.72 % of base) : 509055.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 513876.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 563711.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 574903.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 422652.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 473800.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 484800.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 496640.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.72 % of base) : 337408.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)

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)
         -40 (-10.99 % of base) : 475641.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
          -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)
        -204 (-9.94 % of base) : 470249.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
         -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) : 589438.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,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)
          -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) : 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: 59059712 (overridden on cmd)
Total bytes of diff: 59047856 (overridden on cmd)
Total bytes of delta: -11856 (-0.02 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          52 : 202034.dasm (5.22 % of base)
          52 : 243407.dasm (5.22 % of base)
          40 : 201997.dasm (2.08 % of base)
          36 : 73599.dasm (3.36 % of base)
          36 : 185417.dasm (2.18 % of base)
          36 : 31856.dasm (8.11 % of base)
          32 : 116508.dasm (1.14 % of base)
          32 : 24121.dasm (3.16 % of base)
          32 : 28557.dasm (5.16 % of base)
          28 : 25315.dasm (3.57 % of base)
          24 : 124381.dasm (0.54 % of base)
          24 : 184559.dasm (1.52 % of base)
          24 : 188568.dasm (1.95 % of base)
          20 : 10466.dasm (7.14 % of base)
          20 : 10467.dasm (7.14 % of base)
          20 : 220701.dasm (1.26 % of base)
          20 : 67127.dasm (1.69 % of base)
          20 : 10470.dasm (7.14 % of base)
          20 : 10464.dasm (7.25 % of base)
          20 : 10469.dasm (7.14 % of base)

Top file improvements (bytes):
        -376 : 142495.dasm (-1.38 % of base)
        -192 : 178430.dasm (-8.35 % of base)
        -176 : 169656.dasm (-7.12 % of base)
        -112 : 33690.dasm (-5.92 % of base)
        -100 : 170126.dasm (-2.65 % of base)
        -100 : 214293.dasm (-2.59 % of base)
         -96 : 4467.dasm (-0.83 % of base)
         -92 : 21133.dasm (-79.31 % of base)
         -92 : 21249.dasm (-79.31 % of base)
         -92 : 20891.dasm (-79.31 % of base)
         -88 : 210552.dasm (-3.35 % of base)
         -88 : 217464.dasm (-3.29 % of base)
         -84 : 4470.dasm (-3.52 % of base)
         -80 : 46028.dasm (-1.41 % of base)
         -80 : 124747.dasm (-1.12 % of base)
         -76 : 196193.dasm (-1.20 % of base)
         -72 : 187921.dasm (-2.32 % of base)
         -64 : 125085.dasm (-1.59 % of base)
         -64 : 67126.dasm (-4.02 % of base)
         -64 : 24347.dasm (-16.67 % of base)

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

Top method regressions (bytes):
          52 (5.22 % of base) : 202034.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          52 (5.22 % of base) : 243407.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          40 (2.08 % of base) : 201997.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          36 (3.36 % of base) : 73599.dasm - Microsoft.Diagnostics.Tracing.StackSources.StraceStackSource:ProcessRecord(System.Text.StringBuilder):this (FullOpts)
          36 (8.11 % of base) : 31856.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel+groupByRefTypeParallel@2301-1[System.__Canon,System.__Canon]:Invoke(int):this (FullOpts)
          36 (2.18 % of base) : 185417.dasm - System.Xml.XmlTextReaderImpl:ParseNumericCharRefInline(int,ubyte,System.Text.StringBuilder,byref,byref):int:this (FullOpts)
          32 (1.14 % of base) : 116508.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousTypeTemplateSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
          32 (5.16 % of base) : 28557.dasm - Microsoft.FSharp.Core.PrintfImpl+FormatString:findNextFormatSpecifier(System.String,byref):System.String (FullOpts)
          32 (3.16 % of base) : 24121.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Span`1[System.__Canon]):int (FullOpts)
          28 (3.57 % of base) : 25315.dasm - System.Resources.ResourceReader:UseReflectionToGetType(int):System.Type:this (FullOpts)
          24 (0.54 % of base) : 124381.dasm - System.Data.ExpressionParser:Parse():System.Data.ExpressionNode:this (FullOpts)
          24 (1.95 % of base) : 188568.dasm - System.Xml.Serialization.CodeGenerator:InitILGeneration(System.Type[],System.String[],ubyte):this (FullOpts)
          24 (1.52 % of base) : 184559.dasm - System.Xml.Serialization.XmlSerializer:FromMappings(System.Xml.Serialization.XmlMapping[],System.Type):System.Xml.Serialization.XmlSerializer[] (FullOpts)
          20 (1.69 % of base) : 67127.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)
          20 (1.26 % of base) : 220701.dasm - System.Management.ManagementEventWatcher:WaitForNextEvent():System.Management.ManagementBaseObject:this (FullOpts)
          20 (4.10 % of base) : 25176.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
          20 (7.14 % of base) : 10466.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[int],System.Runtime.Intrinsics.Vector512`1[int]):System.Runtime.Intrinsics.Vector512`1[int] (FullOpts)
          20 (7.14 % of base) : 10469.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[long],System.Runtime.Intrinsics.Vector512`1[long]):System.Runtime.Intrinsics.Vector512`1[long] (FullOpts)
          20 (7.25 % of base) : 10464.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[short],System.Runtime.Intrinsics.Vector512`1[short]):System.Runtime.Intrinsics.Vector512`1[short] (FullOpts)
          20 (7.14 % of base) : 10467.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[uint],System.Runtime.Intrinsics.Vector512`1[uint]):System.Runtime.Intrinsics.Vector512`1[uint] (FullOpts)

Top method improvements (bytes):
        -376 (-1.38 % 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)
        -192 (-8.35 % of base) : 178430.dasm - System.Data.OleDb.OleDbDataReader:CreateBindingsFromMetaData(ubyte):System.Data.OleDb.Bindings[]:this (FullOpts)
        -176 (-7.12 % of base) : 169656.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
        -112 (-5.92 % 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)
        -100 (-2.65 % of base) : 170126.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:Fix(int):ubyte:this (FullOpts)
        -100 (-2.59 % of base) : 214293.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,System.__Canon]:MergeSortCooperatively():this (FullOpts)
         -96 (-0.83 % of base) : 4467.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase: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 (-3.35 % of base) : 210552.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -88 (-3.29 % of base) : 217464.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -84 (-3.52 % of base) : 4470.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -80 (-1.41 % of base) : 46028.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)
         -80 (-1.12 % of base) : 124747.dasm - System.Data.RBTree`1[int]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
         -76 (-1.20 % of base) : 196193.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
         -72 (-2.32 % of base) : 187921.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
         -64 (-4.02 % of base) : 67126.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)
         -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)

Top method regressions (percentages):
          36 (8.11 % of base) : 31856.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel+groupByRefTypeParallel@2301-1[System.__Canon,System.__Canon]:Invoke(int):this (FullOpts)
          20 (7.25 % of base) : 10464.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[short],System.Runtime.Intrinsics.Vector512`1[short]):System.Runtime.Intrinsics.Vector512`1[short] (FullOpts)
          20 (7.25 % of base) : 10465.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[ushort],System.Runtime.Intrinsics.Vector512`1[ushort]):System.Runtime.Intrinsics.Vector512`1[ushort] (FullOpts)
          20 (7.14 % of base) : 10466.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[int],System.Runtime.Intrinsics.Vector512`1[int]):System.Runtime.Intrinsics.Vector512`1[int] (FullOpts)
          20 (7.14 % of base) : 10469.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[long],System.Runtime.Intrinsics.Vector512`1[long]):System.Runtime.Intrinsics.Vector512`1[long] (FullOpts)
          20 (7.14 % of base) : 10467.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[uint],System.Runtime.Intrinsics.Vector512`1[uint]):System.Runtime.Intrinsics.Vector512`1[uint] (FullOpts)
          20 (7.14 % of base) : 10470.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[ulong],System.Runtime.Intrinsics.Vector512`1[ulong]):System.Runtime.Intrinsics.Vector512`1[ulong] (FullOpts)
          52 (5.22 % of base) : 202034.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          52 (5.22 % of base) : 243407.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          32 (5.16 % of base) : 28557.dasm - Microsoft.FSharp.Core.PrintfImpl+FormatString:findNextFormatSpecifier(System.String,byref):System.String (FullOpts)
          12 (4.17 % of base) : 10471.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[double],System.Runtime.Intrinsics.Vector512`1[long]):System.Runtime.Intrinsics.Vector512`1[double] (FullOpts)
          12 (4.17 % of base) : 10468.dasm - System.Runtime.Intrinsics.Vector512:Shuffle(System.Runtime.Intrinsics.Vector512`1[float],System.Runtime.Intrinsics.Vector512`1[int]):System.Runtime.Intrinsics.Vector512`1[float] (FullOpts)
          20 (4.10 % of base) : 25176.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
           4 (3.70 % of base) : 226006.dasm - System.Numerics.BigIntegerCalculator:AddDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint]):uint (FullOpts)
          12 (3.57 % of base) : 39915.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(int,byref):ubyte:this (FullOpts)
          28 (3.57 % of base) : 25315.dasm - System.Resources.ResourceReader:UseReflectionToGetType(int):System.Type:this (FullOpts)
          36 (3.36 % of base) : 73599.dasm - Microsoft.Diagnostics.Tracing.StackSources.StraceStackSource:ProcessRecord(System.Text.StringBuilder):this (FullOpts)
           4 (3.23 % of base) : 226007.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (FullOpts)
          32 (3.16 % of base) : 24121.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Span`1[System.__Canon]):int (FullOpts)
           8 (3.03 % of base) : 10326.dasm - System.Runtime.Intrinsics.Vector256:Shuffle(System.Runtime.Intrinsics.Vector256`1[ushort],System.Runtime.Intrinsics.Vector256`1[ushort]):System.Runtime.Intrinsics.Vector256`1[ushort] (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)
         -56 (-8.81 % of base) : 18003.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -48 (-8.51 % of base) : 18002.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
        -192 (-8.35 % of base) : 178430.dasm - System.Data.OleDb.OleDbDataReader:CreateBindingsFromMetaData(ubyte):System.Data.OleDb.Bindings[]:this (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)
         -56 (-8.00 % of base) : 211250.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (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)
         -56 (-7.69 % of base) : 211249.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
         -56 (-7.69 % of base) : 218089.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase (FullOpts)
          -4 (-7.69 % of base) : 18633.dasm - System.Globalization.CharUnicodeInfo:GetNumericValueNoBoundsCheck(uint):double (FullOpts)
          -8 (-7.69 % of base) : 24559.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
         -56 (-7.53 % of base) : 218090.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo (FullOpts)
        -176 (-7.12 % of base) : 169656.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (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: 79814564 (overridden on cmd)
Total bytes of delta: -12692 (-0.02 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          52 : 285749.dasm (5.22 % of base)
          48 : 177578.dasm (1.58 % of base)
          36 : 280178.dasm (3.56 % of base)
          36 : 285668.dasm (3.56 % of base)
          32 : 95809.dasm (0.80 % of base)
          32 : 176386.dasm (7.84 % of base)
          32 : 176387.dasm (26.67 % of base)
          28 : 285673.dasm (1.56 % of base)
          20 : 278977.dasm (1.55 % of base)
          12 : 13683.dasm (4.48 % of base)
          12 : 13688.dasm (4.41 % of base)
          12 : 13699.dasm (4.48 % of base)
          12 : 281871.dasm (0.79 % of base)
          12 : 33448.dasm (4.11 % of base)
          12 : 13691.dasm (3.70 % of base)
          12 : 13700.dasm (4.41 % of base)
          12 : 13684.dasm (4.41 % of base)
          12 : 13687.dasm (4.48 % of base)
          12 : 13692.dasm (3.66 % of base)
          12 : 176295.dasm (1.15 % of base)

Top file improvements (bytes):
        -412 : 140512.dasm (-1.42 % of base)
        -156 : 92373.dasm (-2.80 % of base)
        -144 : 258859.dasm (-7.03 % of base)
        -132 : 39712.dasm (-3.09 % of base)
        -124 : 228120.dasm (-3.96 % of base)
        -120 : 39744.dasm (-1.92 % of base)
        -112 : 114074.dasm (-3.20 % of base)
         -96 : 272589.dasm (-2.54 % of base)
         -96 : 173731.dasm (-0.98 % of base)
         -88 : 23917.dasm (-6.29 % of base)
         -84 : 175945.dasm (-1.18 % of base)
         -84 : 272580.dasm (-2.18 % of base)
         -80 : 287961.dasm (-3.27 % of base)
         -80 : 241146.dasm (-3.20 % of base)
         -76 : 6272.dasm (-63.33 % of base)
         -76 : 8283.dasm (-63.33 % of base)
         -72 : 118604.dasm (-1.45 % of base)
         -72 : 204565.dasm (-1.95 % of base)
         -64 : 175889.dasm (-1.59 % of base)
         -64 : 199730.dasm (-1.97 % of base)

72 total files with Code Size differences (46 improved, 26 regressed), 20 unchanged.

Top method regressions (bytes):
          52 (5.22 % of base) : 285749.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          48 (1.58 % of base) : 177578.dasm - System.Data.ProviderBase.SchemaMapping:SetupSchemaWithoutKeyInfo(int,int,ubyte,System.Data.DataColumn,System.Object):System.Object[]:this (FullOpts)
          36 (3.56 % of base) : 280178.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          36 (3.56 % of base) : 285668.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          32 (0.80 % of base) : 95809.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:Create(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,int,byref):Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol (FullOpts)
          32 (26.67 % of base) : 176387.dasm - System.Data.ExpressionParser:ScanName():this (FullOpts)
          32 (7.84 % of base) : 176386.dasm - System.Data.ExpressionParser:ScanNumeric():this (FullOpts)
          28 (1.56 % of base) : 285673.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          20 (1.55 % of base) : 278977.dasm - System.Net.Mail.Message:EncodeHeaders(System.Net.Mime.HeaderCollection,ubyte):this (FullOpts)
          12 (4.11 % of base) : 33448.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(int,byref):ubyte:this (FullOpts)
          12 (3.70 % of base) : 13691.dasm - System.Collections.Generic.ObjectEqualityComparer`1[double]:IndexOf(double[],double,int,int):int:this (FullOpts)
          12 (3.66 % of base) : 13692.dasm - System.Collections.Generic.ObjectEqualityComparer`1[double]:LastIndexOf(double[],double,int,int):int:this (FullOpts)
          12 (4.48 % of base) : 13687.dasm - System.Collections.Generic.ObjectEqualityComparer`1[int]:IndexOf(int[],int,int,int):int:this (FullOpts)
          12 (4.41 % of base) : 13688.dasm - System.Collections.Generic.ObjectEqualityComparer`1[int]:LastIndexOf(int[],int,int,int):int:this (FullOpts)
          12 (4.48 % of base) : 13699.dasm - System.Collections.Generic.ObjectEqualityComparer`1[long]:IndexOf(long[],long,int,int):int:this (FullOpts)
          12 (4.41 % of base) : 13700.dasm - System.Collections.Generic.ObjectEqualityComparer`1[long]:LastIndexOf(long[],long,int,int):int:this (FullOpts)
          12 (4.48 % of base) : 13683.dasm - System.Collections.Generic.ObjectEqualityComparer`1[short]:IndexOf(short[],short,int,int):int:this (FullOpts)
          12 (4.41 % of base) : 13684.dasm - System.Collections.Generic.ObjectEqualityComparer`1[short]:LastIndexOf(short[],short,int,int):int:this (FullOpts)
          12 (1.15 % of base) : 176295.dasm - System.Data.UniqueConstraint:Clone(System.Data.DataTable):System.Data.UniqueConstraint:this (FullOpts)
          12 (0.79 % of base) : 281871.dasm - System.Net.CertificateValidationPal:GetRequestCertificateAuthorities(System.Net.Security.SafeDeleteContext):System.String[] (FullOpts)

Top method improvements (bytes):
        -412 (-1.42 % 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)
        -156 (-2.80 % 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)
        -144 (-7.03 % of base) : 258859.dasm - System.Data.OleDb.OleDbDataReader:CreateBindingsFromMetaData(ubyte):System.Data.OleDb.Bindings[]:this (FullOpts)
        -132 (-3.09 % of base) : 39712.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitFixedStatement(Microsoft.CodeAnalysis.CSharp.BoundFixedStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
        -124 (-3.96 % of base) : 228120.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
        -120 (-1.92 % 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)
        -112 (-3.20 % of base) : 114074.dasm - Microsoft.CodeAnalysis.VisualBasic.ExpressionLambdaRewriter:VisitObjectInitializer(Microsoft.CodeAnalysis.VisualBasic.BoundObjectInitializerExpression):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
         -96 (-0.98 % of base) : 173731.dasm - System.Data.XmlTreeGen:SchemaTree(System.Xml.XmlDocument,System.Xml.XmlWriter,System.Data.DataSet,System.Data.DataTable,ubyte):this (FullOpts)
         -96 (-2.54 % of base) : 272589.dasm - System.Linq.Parallel.SortHelper`2[ubyte,System.Nullable`1[int]]:MergeSortCooperatively():this (FullOpts)
         -88 (-6.29 % of base) : 23917.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)
         -84 (-1.18 % of base) : 175945.dasm - System.Data.RBTree`1[ubyte]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
         -84 (-2.18 % of base) : 272580.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,System.Nullable`1[int]]:MergeSortCooperatively():this (FullOpts)
         -80 (-3.27 % of base) : 287961.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -80 (-3.20 % of base) : 241146.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (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)
         -72 (-1.45 % of base) : 118604.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousTypeTemplateSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
         -72 (-1.95 % of base) : 204565.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
         -64 (-1.59 % of base) : 175889.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -64 (-1.97 % of base) : 199730.dasm - System.Xml.Schema.XmlSchemaValidator:EndElementIdentityConstraints(System.Object,System.String,System.Xml.Schema.XmlSchemaDatatype):this (FullOpts)

Top method regressions (percentages):
          32 (26.67 % of base) : 176387.dasm - System.Data.ExpressionParser:ScanName():this (FullOpts)
          32 (7.84 % of base) : 176386.dasm - System.Data.ExpressionParser:ScanNumeric():this (FullOpts)
          52 (5.22 % of base) : 285749.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          12 (4.48 % of base) : 13687.dasm - System.Collections.Generic.ObjectEqualityComparer`1[int]:IndexOf(int[],int,int,int):int:this (FullOpts)
          12 (4.48 % of base) : 13699.dasm - System.Collections.Generic.ObjectEqualityComparer`1[long]:IndexOf(long[],long,int,int):int:this (FullOpts)
          12 (4.48 % of base) : 13683.dasm - System.Collections.Generic.ObjectEqualityComparer`1[short]:IndexOf(short[],short,int,int):int:this (FullOpts)
          12 (4.41 % of base) : 13688.dasm - System.Collections.Generic.ObjectEqualityComparer`1[int]:LastIndexOf(int[],int,int,int):int:this (FullOpts)
          12 (4.41 % of base) : 13700.dasm - System.Collections.Generic.ObjectEqualityComparer`1[long]:LastIndexOf(long[],long,int,int):int:this (FullOpts)
          12 (4.41 % of base) : 13684.dasm - System.Collections.Generic.ObjectEqualityComparer`1[short]:LastIndexOf(short[],short,int,int):int:this (FullOpts)
           4 (4.17 % of base) : 290195.dasm - System.Numerics.BigIntegerCalculator:AddDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint]):uint (FullOpts)
          12 (4.11 % of base) : 33448.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(int,byref):ubyte:this (FullOpts)
          12 (3.70 % of base) : 13691.dasm - System.Collections.Generic.ObjectEqualityComparer`1[double]:IndexOf(double[],double,int,int):int:this (FullOpts)
          12 (3.66 % of base) : 13692.dasm - System.Collections.Generic.ObjectEqualityComparer`1[double]:LastIndexOf(double[],double,int,int):int:this (FullOpts)
           8 (3.64 % of base) : 13612.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,System.Nullable`1[int]]:Swap(System.Span`1[System.__Canon],System.Span`1[System.Nullable`1[int]],int,int) (FullOpts)
           4 (3.57 % of base) : 290196.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (FullOpts)
          36 (3.56 % of base) : 280178.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          36 (3.56 % of base) : 285668.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
           4 (3.45 % of base) : 152772.dasm - Microsoft.Build.Collections.ArrayDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
           4 (3.33 % of base) : 152773.dasm - Microsoft.Build.Collections.ArrayDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:get_CurrentDictionaryEntry():System.Collections.DictionaryEntry:this (FullOpts)
           4 (3.03 % of base) : 128698.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder:ToArray():Microsoft.CodeAnalysis.GreenNode[]:this (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)
          -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)
         -12 (-7.69 % of base) : 221256.dasm - ILCompiler.IBC.WriterExtensions:WriteEncodedString(System.IO.BinaryWriter,System.String) (FullOpts)
        -144 (-7.03 % of base) : 258859.dasm - System.Data.OleDb.OleDbDataReader:CreateBindingsFromMetaData(ubyte):System.Data.OleDb.Bindings[]:this (FullOpts)
         -12 (-6.52 % of base) : 254280.dasm - System.ComponentModel.PropertyDescriptorCollection:System.Collections.IDictionary.get_Keys():System.Collections.ICollection:this (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)
         -40 (-6.41 % of base) : 287964.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
         -40 (-6.41 % of base) : 241149.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase (FullOpts)
         -88 (-6.29 % of base) : 23917.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)
         -12 (-6.25 % of base) : 227533.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):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: 329375904 (overridden on cmd)
Total bytes of delta: -76184 (-0.02 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          96 : 511958.dasm (0.93 % of base)
          72 : 627462.dasm (2.26 % of base)
          60 : 100358.dasm (9.15 % of base)
          56 : 164688.dasm (2.32 % of base)
          52 : 124775.dasm (1.12 % of base)
          48 : 200470.dasm (4.41 % of base)
          48 : 127814.dasm (1.03 % of base)
          36 : 172649.dasm (9.18 % of base)
          36 : 614287.dasm (1.49 % of base)
          36 : 524499.dasm (0.40 % of base)
          28 : 205742.dasm (0.19 % of base)
          28 : 396266.dasm (1.54 % of base)
          28 : 168753.dasm (0.21 % of base)
          28 : 332623.dasm (1.56 % of base)
          28 : 389764.dasm (0.86 % of base)
          24 : 446866.dasm (5.77 % of base)
          24 : 117626.dasm (0.79 % of base)
          24 : 328651.dasm (5.77 % of base)
          20 : 468844.dasm (0.13 % of base)
          20 : 515452.dasm (0.13 % of base)

Top file improvements (bytes):
        -540 : 619730.dasm (-0.27 % of base)
        -360 : 359941.dasm (-2.56 % of base)
        -352 : 395065.dasm (-2.45 % of base)
        -256 : 580349.dasm (-3.99 % of base)
        -244 : 347780.dasm (-1.77 % of base)
        -228 : 314978.dasm (-4.70 % of base)
        -220 : 308466.dasm (-3.84 % of base)
        -204 : 277500.dasm (-1.53 % of base)
        -200 : 327386.dasm (-1.48 % of base)
        -196 : 333455.dasm (-1.46 % of base)
        -196 : 640371.dasm (-1.47 % of base)
        -176 : 490254.dasm (-1.29 % of base)
        -176 : 580239.dasm (-1.46 % of base)
        -164 : 389854.dasm (-1.79 % of base)
        -148 : 305978.dasm (-2.72 % of base)
        -140 : 525611.dasm (-1.05 % of base)
        -136 : 644253.dasm (-1.02 % of base)
        -132 : 373103.dasm (-1.04 % of base)
        -128 : 384895.dasm (-0.94 % of base)
        -128 : 93149.dasm (-0.96 % of base)

92 total files with Code Size differences (59 improved, 33 regressed), 20 unchanged.

Top method regressions (bytes):
          96 (0.93 % 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)
          72 (2.26 % of base) : 627462.dasm - Xunit.Sdk.TypeUtility:GetDisplayNameWithArguments(Xunit.Abstractions.IMethodInfo,System.String,System.Object[],Xunit.Abstractions.ITypeInfo[]):System.String (Tier1)
          60 (9.15 % of base) : 100358.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Instrumented Tier1)
          56 (2.32 % 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)
          52 (1.12 % of base) : 124775.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateArgumentCallSites(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain,System.Reflection.ParameterInfo[],ubyte):Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite[]:this (Tier1)
          48 (1.03 % of base) : 127814.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateArgumentCallSites(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain,System.Reflection.ParameterInfo[],ubyte):Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite[]:this (Tier1)
          48 (4.41 % of base) : 200470.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Span`1[System.__Canon]):int (Instrumented Tier1)
          36 (1.49 % of base) : 614287.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)
          36 (9.18 % of base) : 172649.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          36 (0.40 % of base) : 524499.dasm - System.Reflection.Emit.CustomAttributeBuilder:.ctor(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]):this (Tier1)
          28 (0.19 % 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)
          28 (0.21 % of base) : 168753.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
          28 (1.54 % of base) : 396266.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
          28 (1.56 % of base) : 332623.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
          28 (0.86 % of base) : 389764.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[float]:<Divide_TwoTensors_InPlace>b__141_0(int):this (Tier1)
          24 (0.79 % of base) : 117626.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryFindMatchingConstructor(System.Type,System.Type[],byref,byref):ubyte (Tier1)
          24 (5.77 % of base) : 446866.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          24 (5.77 % of base) : 328651.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (0.13 % 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)
          20 (0.13 % 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)
        -360 (-2.56 % 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)
        -352 (-2.45 % 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)
        -256 (-3.99 % of base) : 580349.dasm - System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver:PopulateParameterInfoValues(System.Text.Json.Serialization.Metadata.JsonTypeInfo) (Tier1)
        -244 (-1.77 % 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)
        -228 (-4.70 % of base) : 314978.dasm - System.Collections.Generic.ArraySortHelper`1[int]:PickPivotAndPartition(System.Span`1[int],System.Comparison`1[int]):int (Tier1)
        -220 (-3.84 % of base) : 308466.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)
        -204 (-1.53 % of base) : 277500.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -200 (-1.48 % of base) : 327386.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -196 (-1.46 % 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)
        -196 (-1.47 % of base) : 640371.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -176 (-1.29 % 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)
        -176 (-1.46 % of base) : 580239.dasm - Xunit.Sdk.TypeUtility:ResolveGenericTypes(Xunit.Abstractions.IMethodInfo,System.Object[]):Xunit.Abstractions.ITypeInfo[] (Tier1)
        -164 (-1.79 % of base) : 389854.dasm - System.Numerics.Tensors.Tests.GenericFloatingPointNumberTensorPrimitivesTests`1+<>c__DisplayClass59_0[System.Runtime.InteropServices.NFloat]:<SpanSpanSpanDestination_ThrowsForMismatchedLengths>b__0(int):this (Tier1)
        -148 (-2.72 % of base) : 305978.dasm - System.Linq.Parallel.SortHelper`2[System.Collections.Generic.KeyValuePair`2[int,int],System.Linq.Parallel.Pair`2[int,int]]:MergeSortCooperatively():this (Tier1)
        -140 (-1.05 % 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)
        -136 (-1.02 % of base) : 644253.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.04 % of base) : 373103.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -128 (-0.94 % of base) : 384895.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -128 (-0.96 % of base) : 93149.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)

Top method regressions (percentages):
          36 (9.18 % of base) : 172649.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          60 (9.15 % of base) : 100358.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Instrumented Tier1)
          24 (5.77 % of base) : 446866.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          24 (5.77 % of base) : 328651.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          20 (4.90 % of base) : 245374.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
          48 (4.41 % of base) : 200470.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Span`1[System.__Canon]):int (Instrumented Tier1)
          16 (3.77 % of base) : 488956.dasm - System.Number+BigInteger:ShiftLeft(uint):this (Tier1)
           4 (3.57 % of base) : 495073.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
           4 (3.45 % of base) : 458958.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
           4 (3.45 % of base) : 506522.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
           8 (3.23 % of base) : 200350.dasm - System.Linq.Enumerable+SelectListIterator`2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (Tier1)
           4 (3.03 % of base) : 598315.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder:ToArray():Microsoft.CodeAnalysis.GreenNode[]:this (Tier1)
          12 (2.61 % of base) : 594649.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow:GetText(int,int,ubyte):System.String:this (Tier1)
           4 (2.44 % of base) : 458033.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1-OSR)
           4 (2.44 % of base) : 458081.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1-OSR)
          56 (2.32 % 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)
          72 (2.26 % of base) : 627462.dasm - Xunit.Sdk.TypeUtility:GetDisplayNameWithArguments(Xunit.Abstractions.IMethodInfo,System.String,System.Object[],Xunit.Abstractions.ITypeInfo[]):System.String (Tier1)
           4 (2.04 % of base) : 420976.dasm - System.Xml.Schema.BitSet:And(System.Xml.Schema.BitSet):this (Tier1)
           4 (2.00 % of base) : 48228.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (Tier1)
           4 (2.00 % of base) : 365191.dasm - System.Linq.Enumerable+SelectListIterator`2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (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) : 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) : 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) : 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) : 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) : 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) : 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.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.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: 171540960 (overridden on cmd)
Total bytes of delta: -16260 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          64 : 242390.dasm (0.99 % of base)
          52 : 4122.dasm (5.22 % of base)
          48 : 97937.dasm (1.66 % of base)
          44 : 197201.dasm (4.37 % of base)
          44 : 197273.dasm (4.35 % of base)
          36 : 153177.dasm (3.56 % of base)
          36 : 153184.dasm (3.56 % of base)
          32 : 171122.dasm (1.24 % of base)
          32 : 208040.dasm (1.24 % of base)
          32 : 93544.dasm (26.67 % of base)
          32 : 93763.dasm (7.84 % of base)
          28 : 151028.dasm (1.56 % of base)
          28 : 170943.dasm (1.54 % of base)
          24 : 18297.dasm (0.17 % of base)
          24 : 46250.dasm (1.05 % of base)
          24 : 51950.dasm (1.05 % of base)
          20 : 157199.dasm (1.48 % of base)
          20 : 157733.dasm (1.55 % of base)
          20 : 215493.dasm (2.63 % of base)
          20 : 215617.dasm (2.65 % of base)

Top file improvements (bytes):
        -540 : 295278.dasm (-0.27 % of base)
        -420 : 59737.dasm (-1.45 % of base)
        -172 : 96388.dasm (-1.33 % of base)
        -144 : 97919.dasm (-7.03 % of base)
        -136 : 312154.dasm (-2.23 % of base)
        -132 : 200516.dasm (-4.20 % of base)
        -124 : 25185.dasm (-4.06 % of base)
        -104 : 192435.dasm (-1.89 % of base)
         -96 : 92771.dasm (-1.01 % of base)
         -96 : 136075.dasm (-2.56 % of base)
         -88 : 192444.dasm (-2.12 % of base)
         -84 : 136146.dasm (-2.20 % of base)
         -84 : 91427.dasm (-1.18 % of base)
         -76 : 166872.dasm (-3.18 % of base)
         -72 : 92163.dasm (-1.98 % of base)
         -68 : 295664.dasm (-1.47 % of base)
         -68 : 18698.dasm (-3.37 % of base)
         -68 : 77997.dasm (-4.03 % of base)
         -64 : 190121.dasm (-2.89 % of base)
         -64 : 209741.dasm (-1.61 % of base)

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

Top method regressions (bytes):
          64 (0.99 % of base) : 242390.dasm - System.Text.Encodings.Web.Tests.InboxEncoderCommonTestBase:_RunEncodeUtf16_Battery(System.String[],System.String[]):this (FullOpts)
          52 (5.22 % of base) : 4122.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          48 (1.66 % of base) : 97937.dasm - System.Data.ProviderBase.SchemaMapping:SetupSchemaWithoutKeyInfo(int,int,ubyte,System.Data.DataColumn,System.Object):System.Object[]:this (FullOpts)
          44 (4.37 % of base) : 197201.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512UInt16ShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
          44 (4.35 % of base) : 197273.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512UInt64ShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
          36 (3.56 % of base) : 153177.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          36 (3.56 % of base) : 153184.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          32 (26.67 % of base) : 93544.dasm - System.Data.ExpressionParser:ScanName():this (FullOpts)
          32 (7.84 % of base) : 93763.dasm - System.Data.ExpressionParser:ScanNumeric():this (FullOpts)
          32 (1.24 % of base) : 171122.dasm - System.Runtime.Serialization.Tests.Utils:CompareXElements(System.Xml.Linq.XElement,System.Xml.Linq.XElement):ubyte (FullOpts)
          32 (1.24 % of base) : 208040.dasm - System.Runtime.Serialization.Tests.Utils:CompareXElements(System.Xml.Linq.XElement,System.Xml.Linq.XElement):ubyte (FullOpts)
          28 (1.56 % of base) : 151028.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          28 (1.54 % of base) : 170943.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          24 (1.05 % of base) : 46250.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)
          24 (1.05 % of base) : 51950.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)
          24 (0.17 % of base) : 18297.dasm - Microsoft.Interop.JavaScript.JSGeneratorResolver:Create(Microsoft.Interop.TypePositionInfo,ubyte,int,int[],int,int[],System.Func`2[System.String,Microsoft.Interop.ResolvedGenerator]):Microsoft.Interop.ResolvedGenerator (FullOpts)
          20 (1.48 % of base) : 157199.dasm - System.Net.Mail.Message:EncodeHeaders(System.Net.Mime.HeaderCollection,ubyte):this (FullOpts)
          20 (1.55 % of base) : 157733.dasm - System.Net.Mail.Message:EncodeHeaders(System.Net.Mime.HeaderCollection,ubyte):this (FullOpts)
          20 (2.65 % of base) : 215617.dasm - System.Tests.DateTimeTests:Ctor_DateOnly_TimeOnly(int,int,int,int,int,int,int):this (FullOpts)
          20 (2.63 % of base) : 215493.dasm - System.Tests.DateTimeTests:Ctor_DateOnly_TimeOnly_DateTimeKind(int,int,int,int,int,int,int):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)
        -420 (-1.45 % 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)
        -172 (-1.33 % of base) : 96388.dasm - System.Data.Tests.DataTableTest2:GetChanges_ByDataRowState():this (FullOpts)
        -144 (-7.03 % of base) : 97919.dasm - System.Data.OleDb.OleDbDataReader:CreateBindingsFromMetaData(ubyte):System.Data.OleDb.Bindings[]:this (FullOpts)
        -136 (-2.23 % of base) : 312154.dasm - System.Threading.Tasks.Tests.TaskRtTests:RunFromResult() (FullOpts)
        -132 (-4.20 % of base) : 200516.dasm - System.Tests.ArrayTests:VerifyArray(System.Array,System.Type,int[],int[]) (FullOpts)
        -124 (-4.06 % of base) : 25185.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
        -104 (-1.89 % of base) : 192435.dasm - System.Reflection.Tests.ConstructorInfoInvokeArrayTests:Invoke_2DArrayConstructor():this (FullOpts)
         -96 (-1.01 % of base) : 92771.dasm - System.Data.XmlTreeGen:SchemaTree(System.Xml.XmlDocument,System.Xml.XmlWriter,System.Data.DataSet,System.Data.DataTable,ubyte):this (FullOpts)
         -96 (-2.56 % of base) : 136075.dasm - System.Linq.Parallel.SortHelper`2[double,int]:MergeSortCooperatively():this (FullOpts)
         -88 (-2.12 % of base) : 192444.dasm - System.Reflection.Tests.ConstructorInfoInvokeArrayTests:Invoke_JaggedArrayConstructor():this (FullOpts)
         -84 (-1.18 % of base) : 91427.dasm - System.Data.RBTree`1[int]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
         -84 (-2.20 % of base) : 136146.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,int]:MergeSortCooperatively():this (FullOpts)
         -76 (-3.18 % of base) : 166872.dasm - System.Numerics.Tests.Matrix4x4Tests:DecomposeScaleTest(float,float,float):this (FullOpts)
         -72 (-1.98 % of base) : 92163.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
         -68 (-3.37 % of base) : 18698.dasm - LibraryImportGenerator.IntegrationTests.ArrayTests:ArraysOfArrays():this (FullOpts)
         -68 (-4.03 % of base) : 77997.dasm - System.Collections.Tests.LinkedList_Generic_Tests`1[int]:AddFirst_LinkedListNode():this (FullOpts)
         -68 (-1.47 % of base) : 295664.dasm - System.Text.RegularExpressions.Tests.RegexMatchTests:<Match_Advanced>g__VerifyMatch|21_0(System.Text.RegularExpressions.Match,byref) (FullOpts)
         -64 (-2.89 % of base) : 190121.dasm - System.Reflection.Tests.IdentityTests:Identity_Handle1() (FullOpts)
         -64 (-1.61 % of base) : 209741.dasm - System.Tests.ArraySegment_Tests:GetSetItem_InRange(System.ArraySegment`1[int]) (FullOpts)

Top method regressions (percentages):
          32 (26.67 % of base) : 93544.dasm - System.Data.ExpressionParser:ScanName():this (FullOpts)
          32 (7.84 % of base) : 93763.dasm - System.Data.ExpressionParser:ScanNumeric():this (FullOpts)
          52 (5.22 % of base) : 4122.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          44 (4.37 % of base) : 197201.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512UInt16ShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
          44 (4.35 % of base) : 197273.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Vector512UInt64ShuffleOneInputWithDirectVectorAndNoCross256BitLaneTest():this (FullOpts)
           4 (4.17 % of base) : 201215.dasm - System.Numerics.BigIntegerCalculator:AddDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint]):uint (FullOpts)
          12 (4.11 % of base) : 12121.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(int,byref):ubyte:this (FullOpts)
           4 (3.70 % of base) : 225068.dasm - System.Security.Cryptography.Tests.EccTestBase+<>c:<InvertStringCase>b__19_0(System.Span`1[ushort],System.String):this (FullOpts)
           4 (3.70 % of base) : 232961.dasm - System.Security.Cryptography.Tests.EccTestBase+<>c:<InvertStringCase>b__19_0(System.Span`1[ushort],System.String):this (FullOpts)
           4 (3.57 % of base) : 31972.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (FullOpts)
          36 (3.56 % of base) : 153177.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          36 (3.56 % of base) : 153184.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
           4 (3.03 % of base) : 47053.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder:ToArray():Microsoft.CodeAnalysis.GreenNode[]:this (FullOpts)
           4 (3.03 % of base) : 51902.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder:ToArray():Microsoft.CodeAnalysis.GreenNode[]:this (FullOpts)
           4 (3.03 % of base) : 10631.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder:ToArray():Microsoft.CodeAnalysis.GreenNode[]:this (FullOpts)
          20 (2.65 % of base) : 215617.dasm - System.Tests.DateTimeTests:Ctor_DateOnly_TimeOnly(int,int,int,int,int,int,int):this (FullOpts)
          20 (2.63 % of base) : 215493.dasm - System.Tests.DateTimeTests:Ctor_DateOnly_TimeOnly_DateTimeKind(int,int,int,int,int,int,int):this (FullOpts)
           4 (2.27 % of base) : 80409.dasm - Microsoft.Internal.Collections.CollectionServices:IsArrayEqual[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
           4 (2.27 % of base) : 184352.dasm - System.Reflection.Context.CollectionServices:CompareArrays[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
           4 (2.27 % of base) : 185595.dasm - System.Reflection.TypeLoading.GetTypeCoreCache+Container:Add(int,System.Reflection.TypeLoading.RoDefinitionType):this (FullOpts)

Top method improvements (percentages):
         -16 (-11.43 % of base) : 135795.dasm - System.Linq.Parallel.OrderPreservingPipeliningMergeHelper`2+OrderedPipeliningMergeEnumerator[int,int]:TryGetPrivateElement(int,byref):ubyte:this (FullOpts)
         -12 (-7.69 % of base) : 215981.dasm - System.Collections.Generic.SortUtils:MoveNansToFront[float,System.__Canon](System.Span`1[float],System.Span`1[System.__Canon]):int (FullOpts)
         -12 (-7.32 % of base) : 40420.dasm - Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter:<GetClosedParameterType>g__CloseGenericParametersIfAny|44_0(System.Type[]):ubyte:this (FullOpts)
        -144 (-7.03 % of base) : 97919.dasm - System.Data.OleDb.OleDbDataReader:CreateBindingsFromMetaData(ubyte):System.Data.OleDb.Bindings[]:this (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)
         -40 (-6.41 % of base) : 185807.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (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)
         -16 (-6.06 % of base) : 54194.dasm - Castle.DynamicProxy.Generators.MethodSignatureComparer:EqualParameters(System.Reflection.MethodInfo,System.Reflection.MethodInfo):ubyte:this (FullOpts)
         -24 (-6.06 % of base) : 133801.dasm - System.IO.Ports.SerialPort:GetPortNames():System.String[] (FullOpts)
         -24 (-5.88 % of base) : 147003.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,ubyte]:InsertionSort(System.Span`1[System.__Canon],System.Span`1[ubyte],System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
         -12 (-5.77 % of base) : 71526.dasm - System.Collections.Generic.GenericArraySortHelper`2[byte,System.__Canon]:InsertionSort(System.Span`1[byte],System.Span`1[System.__Canon]) (FullOpts)
         -12 (-5.66 % of base) : 167411.dasm - System.Numerics.Tests.GenericVectorTests+<>c__DisplayClass403_0`1[short]:<TestDivisionWithScalarByZeroException>b__0():this (FullOpts)
         -16 (-5.63 % of base) : 237077.dasm - System.Security.Cryptography.Xml.Transform:AcceptsType(System.Type):ubyte:this (FullOpts)
          -4 (-5.56 % of base) : 17077.dasm - System.Net.Http.HPack.Huffman:Encode(int):System.ValueTuple`2[uint,int] (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: 15899152 (overridden on cmd)
Total bytes of delta: -3372 (-0.02 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         204 : 1152.dasm (5.59 % of base)
         116 : 1441.dasm (8.79 % of base)
          52 : 1688.dasm (5.22 % of base)
          36 : 13171.dasm (0.63 % of base)
          20 : 665.dasm (4.24 % of base)
          12 : 21011.dasm (0.54 % of base)
          12 : 22966.dasm (4.11 % of base)
          12 : 14944.dasm (0.34 % of base)
           8 : 1074.dasm (0.47 % of base)
           8 : 15090.dasm (0.81 % of base)
           8 : 22963.dasm (1.90 % of base)
           8 : 11001.dasm (0.57 % of base)
           8 : 14797.dasm (1.15 % of base)
           8 : 1094.dasm (0.96 % of base)
           8 : 14899.dasm (5.41 % of base)
           4 : 12662.dasm (0.98 % of base)
           4 : 14581.dasm (1.92 % of base)
           4 : 14900.dasm (0.61 % of base)
           4 : 14927.dasm (0.97 % of base)
           4 : 16194.dasm (3.03 % of base)

Top file improvements (bytes):
        -120 : 14788.dasm (-3.11 % of base)
        -104 : 15064.dasm (-1.88 % of base)
         -92 : 31129.dasm (-0.82 % of base)
         -92 : 5323.dasm (-1.58 % of base)
         -76 : 2153.dasm (-4.05 % of base)
         -68 : 4947.dasm (-7.39 % of base)
         -60 : 3286.dasm (-7.94 % of base)
         -60 : 13406.dasm (-0.68 % of base)
         -60 : 27319.dasm (-1.47 % of base)
         -60 : 5851.dasm (-8.47 % of base)
         -56 : 18227.dasm (-1.34 % of base)
         -52 : 13053.dasm (-1.40 % of base)
         -52 : 1466.dasm (-5.70 % of base)
         -48 : 17966.dasm (-4.17 % of base)
         -44 : 14949.dasm (-1.37 % of base)
         -44 : 1483.dasm (-5.76 % of base)
         -40 : 12394.dasm (-0.46 % of base)
         -40 : 4514.dasm (-12.35 % of base)
         -40 : 4949.dasm (-10.00 % of base)
         -36 : 460.dasm (-3.42 % of base)

65 total files with Code Size differences (36 improved, 29 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)
         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)
          52 (5.22 % of base) : 1688.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          36 (0.63 % 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)
          20 (4.24 % of base) : 665.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
          12 (4.11 % of base) : 22966.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(int,byref):ubyte:this (FullOpts)
          12 (0.54 % of base) : 21011.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)
          12 (0.34 % 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)
           8 (0.47 % of base) : 1074.dasm - BepuPhysics.Collidables.ConvexHullHelper:ReduceFace(byref,byref,System.Span`1[System.Numerics.Vector3],float,byref,byref,byref) (FullOpts)
           8 (0.96 % of base) : 1094.dasm - BepuUtilities.Collections.QuickSort:Sort[int,BepuPhysics.Trees.Tree+IndexMapComparer](byref,int,int,byref) (FullOpts)
           8 (1.90 % of base) : 22963.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:FixParameters(System.Func`3[Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer,int,ubyte],byref):int:this (FullOpts)
           8 (5.41 % of base) : 14899.dasm - Microsoft.ML.Trainers.KMeansLloydsYinYangTrain+SharedState:UpdateYinYangBounds(int):this (FullOpts)
           8 (1.15 % of base) : 14797.dasm - Microsoft.ML.Transforms.NormalizeTransform+Sng+MinMaxVecColumnFunctionBuilder:CreateColumnFunction():Microsoft.ML.Data.IColumnFunction:this (FullOpts)
           8 (0.81 % of base) : 15090.dasm - Microsoft.ML.Transforms.Text.NgramExtractingTransformer+Mapper:.ctor(Microsoft.ML.Transforms.Text.NgramExtractingTransformer,Microsoft.ML.DataViewSchema):this (FullOpts)
           8 (0.57 % of base) : 11001.dasm - System.Diagnostics.StackFrameHelper:InitializeSourceInfo(int,ubyte,System.Exception):this (FullOpts)
           4 (1.28 % of base) : 23492.dasm - Microsoft.CodeAnalysis.BitVector:UnionWith(byref):ubyte:this (FullOpts)
           4 (1.85 % of base) : 16199.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList:List(Microsoft.CodeAnalysis.GreenNode[],int):Microsoft.CodeAnalysis.GreenNode (FullOpts)
           4 (3.03 % of base) : 16194.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder:ToArray():Microsoft.CodeAnalysis.GreenNode[]:this (FullOpts)
           4 (0.97 % of base) : 14927.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:Apply[float](byref,Microsoft.ML.Internal.Utilities.VBufferUtils+SlotValueManipulator`1[float]) (FullOpts)
           4 (0.57 % of base) : 14892.dasm - Microsoft.ML.Numeric.VectorUtils:Add(byref,byref) (FullOpts)

Top method improvements (bytes):
        -120 (-3.11 % of base) : 14788.dasm - Microsoft.ML.Transforms.NormalizingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.IDataView,Microsoft.ML.Transforms.NormalizingEstimator+ColumnOptionsBase[]):Microsoft.ML.Transforms.NormalizingTransformer (FullOpts)
        -104 (-1.88 % 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)
         -92 (-1.58 % of base) : 5323.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)
         -92 (-0.82 % of base) : 31129.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         -76 (-4.05 % of base) : 2153.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (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)
         -60 (-1.47 % of base) : 27319.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitFixedStatement(Microsoft.CodeAnalysis.CSharp.BoundFixedStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
         -60 (-0.68 % of base) : 13406.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer: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)
         -52 (-1.40 % of base) : 13053.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -48 (-4.17 % of base) : 17966.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)
         -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 (-1.37 % of base) : 14949.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyInto[float,float,float](byref,byref,byref,System.Func`4[int,float,float,float]) (FullOpts)
         -40 (-12.35 % of base) : 4514.dasm - Internal.Utilities.Text.Parsing.Implementation+AssocTable:Read(int,int):int:this (FullOpts)
         -40 (-0.46 % of base) : 12394.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)
         -40 (-10.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)
         -36 (-3.42 % of base) : 460.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)

Top method regressions (percentages):
         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)
         204 (5.59 % of base) : 1152.dasm - BepuPhysics.CollisionDetection.CollisionTasks.CapsuleConvexHullTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
           8 (5.41 % of base) : 14899.dasm - Microsoft.ML.Trainers.KMeansLloydsYinYangTrain+SharedState:UpdateYinYangBounds(int):this (FullOpts)
          52 (5.22 % of base) : 1688.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          20 (4.24 % of base) : 665.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
          12 (4.11 % of base) : 22966.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(int,byref):ubyte:this (FullOpts)
           4 (3.03 % of base) : 16194.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder:ToArray():Microsoft.CodeAnalysis.GreenNode[]:this (FullOpts)
           4 (1.92 % of base) : 14581.dasm - System.Collections.Generic.GenericEqualityComparer`1[float]:IndexOf(float[],float,int,int):int:this (FullOpts)
           8 (1.90 % of base) : 22963.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:FixParameters(System.Func`3[Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer,int,ubyte],byref):int:this (FullOpts)
           4 (1.85 % of base) : 16199.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList:List(Microsoft.CodeAnalysis.GreenNode[],int):Microsoft.CodeAnalysis.GreenNode (FullOpts)
           4 (1.67 % of base) : 14878.dasm - Microsoft.ML.Trainers.KMeansBarBarInitialization+<>c__DisplayClass3_0:<Initialize>b__3(float[][],System.Random,byref):this (FullOpts)
           4 (1.28 % of base) : 23492.dasm - Microsoft.CodeAnalysis.BitVector:UnionWith(byref):ubyte:this (FullOpts)
           8 (1.15 % of base) : 14797.dasm - Microsoft.ML.Transforms.NormalizeTransform+Sng+MinMaxVecColumnFunctionBuilder:CreateColumnFunction():Microsoft.ML.Data.IColumnFunction:this (FullOpts)
           4 (1.05 % of base) : 279.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:CreateEntryNoResize(System.__Canon,System.__Canon):this (FullOpts)
           4 (1.02 % of base) : 677.dasm - System.Random+CompatPrng:Initialize(int):this (FullOpts)
           4 (0.98 % of base) : 12662.dasm - Microsoft.ML.Numeric.VectorUtils:AddMult(byref,System.Span`1[float],float) (FullOpts)
           4 (0.97 % of base) : 14927.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:Apply[float](byref,Microsoft.ML.Internal.Utilities.VBufferUtils+SlotValueManipulator`1[float]) (FullOpts)
           8 (0.96 % of base) : 1094.dasm - BepuUtilities.Collections.QuickSort:Sort[int,BepuPhysics.Trees.Tree+IndexMapComparer](byref,int,int,byref) (FullOpts)
           8 (0.81 % of base) : 15090.dasm - Microsoft.ML.Transforms.Text.NgramExtractingTransformer+Mapper:.ctor(Microsoft.ML.Transforms.Text.NgramExtractingTransformer,Microsoft.ML.DataViewSchema):this (FullOpts)
           4 (0.78 % of base) : 11551.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree:BuildCodes():this (FullOpts)

Top method improvements (percentages):
         -28 (-13.21 % of base) : 5849.dasm - System.Collections.Generic.GenericArraySortHelper`2[ushort,int]:InsertionSort(System.Span`1[ushort],System.Span`1[int]) (FullOpts)
         -40 (-12.35 % of base) : 4514.dasm - Internal.Utilities.Text.Parsing.Implementation+AssocTable:Read(int,int):int:this (FullOpts)
         -24 (-10.91 % of base) : 3288.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,System.__Canon]:InsertionSort(System.Span`1[int],System.Span`1[System.__Canon]) (FullOpts)
         -40 (-10.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)
         -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)
         -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)
         -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 (-6.15 % of base) : 31173.dasm - System.Management.Automation.Interpreter.LeaveExceptionHandlerInstruction:Create(int,ubyte):System.Management.Automation.Interpreter.LeaveExceptionHandlerInstruction (FullOpts)
          -8 (-6.06 % of base) : 16008.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (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)
         -12 (-4.69 % of base) : 904.dasm - System.Linq.OrderedEnumerable`1[double]:Fill(double[],System.Span`1[double]):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)
          -4 (-4.17 % of base) : 17495.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
         -48 (-4.17 % of base) : 17966.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)
         -76 (-4.05 % of base) : 2153.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase: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)
         -12 (-3.41 % of base) : 22904.dasm - Microsoft.CodeAnalysis.BitVector:IntersectWith(byref):ubyte:this (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: 3795972 (overridden on cmd)
Total bytes of delta: -2576 (-0.07 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          20 : 11969.dasm (5.00 % of base)
          20 : 6268.dasm (5.00 % of base)
          12 : 6498.dasm (1.50 % of base)
          12 : 2044.dasm (1.50 % of base)
           4 : 10664.dasm (1.10 % of base)
           4 : 11972.dasm (1.85 % of base)
           4 : 13842.dasm (4.00 % of base)
           4 : 2135.dasm (1.54 % of base)
           4 : 4744.dasm (0.30 % of base)
           4 : 5291.dasm (1.54 % of base)
           4 : 6503.dasm (1.37 % of base)
           4 : 7758.dasm (2.78 % of base)
           4 : 984.dasm (0.27 % of base)
           4 : 9951.dasm (0.79 % of base)
           4 : 10112.dasm (0.30 % of base)
           4 : 12905.dasm (4.00 % of base)
           4 : 14575.dasm (0.48 % of base)
           4 : 4872.dasm (1.49 % of base)
           4 : 10004.dasm (0.35 % of base)
           4 : 12555.dasm (0.97 % of base)

Top file improvements (bytes):
        -120 : 11394.dasm (-1.36 % of base)
         -80 : 11356.dasm (-4.27 % of base)
         -80 : 14719.dasm (-4.26 % of base)
         -68 : 6108.dasm (-2.87 % of base)
         -60 : 9971.dasm (-12.71 % of base)
         -60 : 5120.dasm (-10.87 % of base)
         -48 : 11993.dasm (-4.48 % of base)
         -48 : 6215.dasm (-4.17 % of base)
         -48 : 5137.dasm (-9.45 % of base)
         -48 : 9988.dasm (-10.71 % of base)
         -40 : 11783.dasm (-3.94 % of base)
         -40 : 8186.dasm (-3.58 % of base)
         -32 : 4829.dasm (-7.21 % of base)
         -32 : 1303.dasm (-7.21 % of base)
         -32 : 1415.dasm (-4.60 % of base)
         -32 : 4865.dasm (-4.44 % of base)
         -32 : 4897.dasm (-4.60 % of base)
         -32 : 1468.dasm (-4.60 % of base)
         -28 : 5637.dasm (-2.24 % of base)
         -28 : 4385.dasm (-2.39 % of base)

75 total files with Code Size differences (44 improved, 31 regressed), 20 unchanged.

Top method regressions (bytes):
          20 (5.00 % of base) : 11969.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
          20 (5.00 % of base) : 6268.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
          12 (1.50 % of base) : 6498.dasm - System.Globalization.OrdinalCasing:ToUpperOrdinal(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]) (FullOpts)
          12 (1.50 % of base) : 2044.dasm - System.Globalization.OrdinalCasing:ToUpperOrdinal(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]) (FullOpts)
           4 (0.35 % of base) : 10004.dasm - Internal.Reflection.Core.Execution.ExecutionDomain:GetMethod(System.RuntimeTypeHandle,System.Reflection.Runtime.General.QMethodDefinition,System.RuntimeTypeHandle[]):System.Reflection.MethodBase (FullOpts)
           4 (0.34 % of base) : 4644.dasm - Internal.Reflection.Core.Execution.ExecutionDomain:GetMethod(System.RuntimeTypeHandle,System.Reflection.Runtime.General.QMethodDefinition,System.RuntimeTypeHandle[]):System.Reflection.MethodBase (FullOpts)
           4 (0.48 % of base) : 14575.dasm - Internal.Reflection.Execution.ExecutionEnvironmentImplementation:GetInterfaceMap(System.Type,System.Type,byref,byref):this (FullOpts)
           4 (0.79 % of base) : 9951.dasm - Internal.Reflection.Execution.ExecutionEnvironmentImplementation:TryGetConstructedGenericTypeForComponents(System.RuntimeTypeHandle,System.RuntimeTypeHandle[],byref):ubyte:this (FullOpts)
           4 (0.30 % of base) : 4744.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:TryGetStaticRuntimeMethodHandleComponents(System.RuntimeMethodHandle,byref,byref,byref):ubyte:this (FullOpts)
           4 (0.30 % of base) : 10112.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:TryGetStaticRuntimeMethodHandleComponents(System.RuntimeMethodHandle,byref,byref,byref):ubyte:this (FullOpts)
           4 (2.78 % of base) : 7758.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[long,System.__Canon]:WaitForSentinelInHashtableToDisappear(System.__Canon[],int):System.__Canon:this (FullOpts)
           4 (2.78 % of base) : 2341.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[long,System.__Canon]:WaitForSentinelInHashtableToDisappear(System.__Canon[],int):System.__Canon:this (FullOpts)
           4 (4.00 % of base) : 12905.dasm - Internal.TypeSystem.LockFreeReaderHashtableOfPointers`2[Internal.TypeSystem.TypeSystemContext+FunctionPointerTypeKey,System.RuntimeTypeHandle]:WaitForSentinelInHashtableToDisappear(long[],int):long (FullOpts)
           4 (4.00 % of base) : 7396.dasm - Internal.TypeSystem.LockFreeReaderHashtableOfPointers`2[Internal.TypeSystem.TypeSystemContext+FunctionPointerTypeKey,System.RuntimeTypeHandle]:WaitForSentinelInHashtableToDisappear(long[],int):long (FullOpts)
           4 (4.00 % of base) : 13842.dasm - Internal.TypeSystem.LockFreeReaderHashtableOfPointers`2[System.__Canon,System.Runtime.InteropServices.GCHandle]:WaitForSentinelInHashtableToDisappear(long[],int):long (FullOpts)
           4 (4.00 % of base) : 8167.dasm - Internal.TypeSystem.LockFreeReaderHashtableOfPointers`2[System.__Canon,System.Runtime.InteropServices.GCHandle]:WaitForSentinelInHashtableToDisappear(long[],int):long (FullOpts)
           4 (1.54 % of base) : 2135.dasm - System.Collections.Concurrent.ConcurrentUnifier`2+Container[int,System.__Canon]:Add(int,int,System.__Canon):this (FullOpts)
           4 (1.54 % of base) : 5291.dasm - System.Collections.Concurrent.ConcurrentUnifier`2+Container[int,System.__Canon]:Add(int,int,System.__Canon):this (FullOpts)
           4 (1.49 % of base) : 4872.dasm - System.Collections.Concurrent.ConcurrentUnifier`2+Container[System.__Canon,System.__Canon]:Add(System.__Canon,int,System.__Canon):this (FullOpts)
           4 (1.49 % of base) : 1442.dasm - System.Collections.Concurrent.ConcurrentUnifier`2+Container[System.__Canon,System.__Canon]:Add(System.__Canon,int,System.__Canon):this (FullOpts)

Top method improvements (bytes):
        -120 (-1.36 % 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)
         -80 (-4.27 % of base) : 11356.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -80 (-4.26 % of base) : 14719.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -68 (-2.87 % of base) : 6108.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -60 (-12.71 % of base) : 9971.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -60 (-10.87 % of base) : 5120.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -48 (-9.45 % of base) : 5137.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
         -48 (-10.71 % of base) : 9988.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
         -48 (-4.48 % of base) : 11993.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)
         -48 (-4.17 % of base) : 6215.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)
         -40 (-3.94 % of base) : 11783.dasm - System.Type:GetEnumData(byref,byref):this (FullOpts)
         -40 (-3.58 % of base) : 8186.dasm - System.Type:GetEnumData(byref,byref):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.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) : 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) : 4829.dasm - System.Text.EncodingTable:GetCodePageDataItem(int):System.Text.CodePageDataItem (FullOpts)
         -32 (-7.21 % of base) : 1303.dasm - System.Text.EncodingTable:GetCodePageDataItem(int):System.Text.CodePageDataItem (FullOpts)
         -28 (-2.39 % of base) : 4385.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:MakeGenericType(System.Type[]):System.Type:this (FullOpts)
         -28 (-2.24 % of base) : 5637.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)

Top method regressions (percentages):
          20 (5.00 % of base) : 11969.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
          20 (5.00 % of base) : 6268.dasm - System.Number+BigInteger:ShiftLeft(uint):this (FullOpts)
           4 (4.00 % of base) : 12905.dasm - Internal.TypeSystem.LockFreeReaderHashtableOfPointers`2[Internal.TypeSystem.TypeSystemContext+FunctionPointerTypeKey,System.RuntimeTypeHandle]:WaitForSentinelInHashtableToDisappear(long[],int):long (FullOpts)
           4 (4.00 % of base) : 7396.dasm - Internal.TypeSystem.LockFreeReaderHashtableOfPointers`2[Internal.TypeSystem.TypeSystemContext+FunctionPointerTypeKey,System.RuntimeTypeHandle]:WaitForSentinelInHashtableToDisappear(long[],int):long (FullOpts)
           4 (4.00 % of base) : 13842.dasm - Internal.TypeSystem.LockFreeReaderHashtableOfPointers`2[System.__Canon,System.Runtime.InteropServices.GCHandle]:WaitForSentinelInHashtableToDisappear(long[],int):long (FullOpts)
           4 (4.00 % of base) : 8167.dasm - Internal.TypeSystem.LockFreeReaderHashtableOfPointers`2[System.__Canon,System.Runtime.InteropServices.GCHandle]:WaitForSentinelInHashtableToDisappear(long[],int):long (FullOpts)
           4 (2.78 % of base) : 7758.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[long,System.__Canon]:WaitForSentinelInHashtableToDisappear(System.__Canon[],int):System.__Canon:this (FullOpts)
           4 (2.78 % of base) : 2341.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[long,System.__Canon]:WaitForSentinelInHashtableToDisappear(System.__Canon[],int):System.__Canon:this (FullOpts)
           4 (1.85 % of base) : 11972.dasm - System.Number+BigInteger:Add(uint):this (FullOpts)
           4 (1.85 % of base) : 6271.dasm - System.Number+BigInteger:Add(uint):this (FullOpts)
           4 (1.54 % of base) : 2135.dasm - System.Collections.Concurrent.ConcurrentUnifier`2+Container[int,System.__Canon]:Add(int,int,System.__Canon):this (FullOpts)
           4 (1.54 % of base) : 5291.dasm - System.Collections.Concurrent.ConcurrentUnifier`2+Container[int,System.__Canon]:Add(int,int,System.__Canon):this (FullOpts)
          12 (1.50 % of base) : 6498.dasm - System.Globalization.OrdinalCasing:ToUpperOrdinal(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]) (FullOpts)
          12 (1.50 % of base) : 2044.dasm - System.Globalization.OrdinalCasing:ToUpperOrdinal(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]) (FullOpts)
           4 (1.49 % of base) : 4872.dasm - System.Collections.Concurrent.ConcurrentUnifier`2+Container[System.__Canon,System.__Canon]:Add(System.__Canon,int,System.__Canon):this (FullOpts)
           4 (1.49 % of base) : 1442.dasm - System.Collections.Concurrent.ConcurrentUnifier`2+Container[System.__Canon,System.__Canon]:Add(System.__Canon,int,System.__Canon):this (FullOpts)
           4 (1.43 % of base) : 1475.dasm - System.Collections.Concurrent.ConcurrentUnifier`2+Container[System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly+RuntimeAssemblyKey,System.__Canon]:Add(System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly+RuntimeAssemblyKey,int,System.__Canon):this (FullOpts)
           4 (1.43 % of base) : 4900.dasm - System.Collections.Concurrent.ConcurrentUnifier`2+Container[System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly+RuntimeAssemblyKey,System.__Canon]:Add(System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly+RuntimeAssemblyKey,int,System.__Canon):this (FullOpts)
           4 (1.37 % of base) : 6503.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:CreateEntryNoResize(System.__Canon,System.__Canon):this (FullOpts)
           4 (1.37 % of base) : 2068.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:CreateEntryNoResize(System.__Canon,System.__Canon):this (FullOpts)

Top method improvements (percentages):
         -60 (-12.71 % of base) : 9971.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -12 (-11.11 % of base) : 7114.dasm - System.Globalization.CultureData:ReescapeWin32Strings(System.String[]):System.String[] (FullOpts)
         -12 (-11.11 % of base) : 2240.dasm - System.Globalization.CultureData:ReescapeWin32Strings(System.String[]):System.String[] (FullOpts)
         -60 (-10.87 % of base) : 5120.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -48 (-10.71 % of base) : 9988.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
         -16 (-10.00 % of base) : 12959.dasm - System.Dynamic.Utils.TypeExtensions:MatchesArgumentTypes(System.Reflection.MethodInfo,System.Type[]):ubyte (FullOpts)
         -48 (-9.45 % of base) : 5137.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (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)
          -8 (-8.70 % of base) : 7754.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
          -8 (-8.70 % of base) : 2362.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
         -16 (-7.69 % of base) : 11785.dasm - System.Type:ImplementInterface(System.Type):ubyte:this (FullOpts)
         -32 (-7.21 % of base) : 4829.dasm - System.Text.EncodingTable:GetCodePageDataItem(int):System.Text.CodePageDataItem (FullOpts)
         -32 (-7.21 % of base) : 1303.dasm - System.Text.EncodingTable:GetCodePageDataItem(int):System.Text.CodePageDataItem (FullOpts)
         -16 (-6.90 % of base) : 9976.dasm - System.DefaultBinder:CompareMethodSig(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte (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)



windows x64

Diffs are based on 2,510,842 contexts (997,391 MinOpts, 1,513,451 FullOpts).

MISSED contexts: 1,370 (0.05%)

No diffs found.

Details

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
aspnet.run.windows.x64.checked.mch 129,268 61,702 67,566 22 (0.02%) 22 (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,842 997,391 1,513,451 1,370 (0.05%) 1,370 (0.05%)