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