Assembly Diffs
linux arm64
Diffs are based on 2,507,310 contexts (1,007,092 MinOpts, 1,500,218 FullOpts).
MISSED contexts: base: 0 (0.00%), diff: 8 (0.00%)
Overall (+584 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.linux.arm64.checked.mch |
80,094,172 |
+60 |
| benchmarks.run_tiered.linux.arm64.checked.mch |
24,600,952 |
+208 |
| coreclr_tests.run.linux.arm64.checked.mch |
508,772,940 |
+172 |
| libraries.crossgen2.linux.arm64.checked.mch |
55,844,024 |
+84 |
| libraries_tests.run.linux.arm64.Release.mch |
395,688,768 |
+60 |
FullOpts (+584 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.linux.arm64.checked.mch |
54,159,016 |
+60 |
| benchmarks.run_tiered.linux.arm64.checked.mch |
4,862,296 |
+208 |
| coreclr_tests.run.linux.arm64.checked.mch |
160,584,028 |
+172 |
| libraries.crossgen2.linux.arm64.checked.mch |
55,842,388 |
+84 |
| libraries_tests.run.linux.arm64.Release.mch |
180,556,816 |
+60 |
Example diffs
benchmarks.run_pgo.linux.arm64.checked.mch
+60 (+7.61%) : 102735.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
@@ -10,16 +10,16 @@
; 0 inlinees with PGO data; 0 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T13] ( 12, 103.91) ref -> x0 class-hnd single-def <float[][]>
+; V00 arg0 [V00,T13] ( 15, 104.11) ref -> x0 class-hnd single-def <float[][]>
; V01 arg1 [V01,T20] ( 7, 4.63) ref -> x1 class-hnd single-def <int[][]>
; V02 arg2 [V02,T21] ( 3, 3 ) ref -> x2 class-hnd single-def <double[]>
; V03 arg3 [V03,T23] ( 4, 2.21) ref -> x3 class-hnd single-def <JetStream.SampleVarianceUpperTriangularMatrix>
-; V04 arg4 [V04,T22] ( 4, 2.62) int -> x4 single-def
+; V04 arg4 [V04,T22] ( 5, 2.62) int -> x4 single-def
;* V05 loc0 [V05 ] ( 0, 0 ) int -> zero-ref
;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc2 [V07,T05] ( 20,1698.38) int -> x5
-; V08 loc3 [V08,T28] ( 5, 0.63) ref -> x8 class-hnd <float[]>
-; V09 loc4 [V09,T12] ( 12, 108.61) int -> x7
+; V07 loc2 [V07,T05] ( 25,1698.38) int -> x5
+; V08 loc3 [V08,T28] ( 6, 0.63) ref -> x8 class-hnd <float[]>
+; V09 loc4 [V09,T12] ( 13, 108.61) int -> x7
;* V10 loc5 [V10 ] ( 0, 0 ) ubyte -> zero-ref
; V11 loc6 [V11,T07] ( 18,1200.10) int -> x6
; V12 loc7 [V12,T31] ( 4, 199.58) float -> d16
@@ -45,7 +45,7 @@
; V32 cse2 [V32,T11] ( 5, 296.93) long -> xip0 "CSE - aggressive"
; V33 cse3 [V33,T25] ( 5, 3.00) long -> x15 "CSE - moderate"
; V34 cse4 [V34,T10] ( 16, 300.70) int -> x12 hoist multi-def "CSE - aggressive"
-; V35 cse5 [V35,T14] ( 7, 101.63) int -> x2 hoist "CSE - aggressive"
+; V35 cse5 [V35,T14] ( 9, 101.84) int -> x2 hoist "CSE - aggressive"
; V36 cse6 [V36,T15] ( 6, 101.28) byref -> x9 hoist "CSE - aggressive"
; V37 cse7 [V37,T18] ( 4, 100.00) int -> x10 hoist multi-def "CSE - aggressive"
; V38 cse8 [V38,T16] ( 4, 100.00) byref -> x11 hoist multi-def "CSE - aggressive"
@@ -75,18 +75,18 @@ G_M56974_IG02: ; bbWeight=1, gcrefRegs=010F {x0 x1 x2 x3 x8}, byrefRegs=0
;; size=8 bbWeight=1 PerfScore 3.50
G_M56974_IG03: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
cmp w2, w6
- ble G_M56974_IG12
+ ble G_M56974_IG17
;; size=8 bbWeight=0.21 PerfScore 0.32
G_M56974_IG04: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
- cbz x1, G_M56974_IG22
- cbz x0, G_M56974_IG22
- tbnz w6, #31, G_M56974_IG22
+ cbz x1, G_M56974_IG26
+ cbz x0, G_M56974_IG26
+ tbnz w6, #31, G_M56974_IG26
ldr w10, [x1, #0x08]
cmp w10, w2
- blt G_M56974_IG22
+ blt G_M56974_IG26
ldr w10, [x0, #0x08]
cmp w10, w2
- blt G_M56974_IG22
+ blt G_M56974_IG26
ldr w10, [x8, #0x08]
add x11, x8, #16
; byrRegs +[x11]
@@ -97,7 +97,7 @@ G_M56974_IG04: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0
;; size=56 bbWeight=0.21 PerfScore 4.20
G_M56974_IG05: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
cmp w7, w10
- bhs G_M56974_IG33
+ bhs G_M56974_IG37
ldr s16, [x11, x13]
ldr w15, [x14, #0x08]
cmp w15, w5
@@ -105,18 +105,45 @@ G_M56974_IG05: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefR
;; size=24 bbWeight=98.79 PerfScore 889.12
G_M56974_IG06: ; bbWeight=395.17, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
cmp w5, w6
- bne G_M56974_IG15
+ bne G_M56974_IG19
;; size=8 bbWeight=395.17 PerfScore 592.75
G_M56974_IG07: ; bbWeight=395.17, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref
movi v17.16b, #0
- b G_M56974_IG16
+ b G_M56974_IG20
;; size=8 bbWeight=395.17 PerfScore 592.75
G_M56974_IG08: ; bbWeight=0.21, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
; gcrRegs -[x8 x14]
; byrRegs -[x11]
+ cbz x0, G_M56974_IG16
+ tbnz w5, #31, G_M56974_IG16
+ ldr w7, [x0, #0x08]
+ cmp w7, w2
+ blt G_M56974_IG16
+ ;; size=20 bbWeight=0.21 PerfScore 1.34
+G_M56974_IG09: ; bbWeight=0.64, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref
+ b G_M56974_IG11
+ ;; size=4 bbWeight=0.64 PerfScore 0.64
+G_M56974_IG10: ; bbWeight=0.21, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
+ add x8, x0, #16
+ ; byrRegs +[x8]
+ ldr x8, [x8, w5, UXTW #3]
+ ; gcrRegs +[x8]
+ ; byrRegs -[x8]
+ mov w7, wzr
+ cmp w4, #0
+ bgt G_M56974_IG13
+ ;; size=20 bbWeight=0.21 PerfScore 1.15
+G_M56974_IG11: ; bbWeight=0.21, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
+ ; gcrRegs -[x8]
+ add w5, w5, #1
+ cmp w2, w5
+ ble G_M56974_IG38
+ b G_M56974_IG10
+ ;; size=16 bbWeight=0.21 PerfScore 0.63
+G_M56974_IG12: ; bbWeight=0.00, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
ldr w8, [x0, #0x08]
cmp w5, w8
- bhs G_M56974_IG33
+ bhs G_M56974_IG37
add x7, x0, #16
; byrRegs +[x7]
ldr x8, [x7, w5, UXTW #3]
@@ -124,52 +151,51 @@ G_M56974_IG08: ; bbWeight=0.21, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200
mov w7, wzr
; byrRegs -[x7]
cmp w4, #0
- bgt G_M56974_IG10
- ;; size=32 bbWeight=0.21 PerfScore 2.11
-G_M56974_IG09: ; bbWeight=0.21, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
- ; gcrRegs -[x8]
- add w5, w5, #1
- cmp w2, w5
- ble G_M56974_IG34
- b G_M56974_IG08
- ;; size=16 bbWeight=0.21 PerfScore 0.63
-G_M56974_IG10: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
- ; gcrRegs +[x8]
+ ble G_M56974_IG16
+ ;; size=32 bbWeight=0.00 PerfScore 0.02
+G_M56974_IG13: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
ldr w6, [x1, #0x08]
cmp w5, w6
- bhs G_M56974_IG33
+ bhs G_M56974_IG37
ldr x6, [x9, w5, UXTW #3]
; gcrRegs +[x6]
- tbnz w7, #31, G_M56974_IG12
+ tbnz w7, #31, G_M56974_IG17
;; size=20 bbWeight=0.21 PerfScore 1.79
-G_M56974_IG11: ; bbWeight=6.74, gcrefRegs=014B {x0 x1 x3 x6 x8}, byrefRegs=0200 {x9}, byref, isz
+G_M56974_IG14: ; bbWeight=6.74, gcrefRegs=014B {x0 x1 x3 x6 x8}, byrefRegs=0200 {x9}, byref, isz
ldr w6, [x6, #0x08]
; gcrRegs -[x6]
cmp w6, w7
- bgt G_M56974_IG14
+ ble G_M56974_IG17
;; size=12 bbWeight=6.74 PerfScore 30.33
-G_M56974_IG12: ; bbWeight=0.41, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
- add w7, w7, #1
- cmp w7, w4
- blt G_M56974_IG10
- ;; size=12 bbWeight=0.41 PerfScore 0.82
-G_M56974_IG13: ; bbWeight=0.21, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref
- ; gcrRegs -[x8]
- b G_M56974_IG09
- ;; size=4 bbWeight=0.21 PerfScore 0.21
-G_M56974_IG14: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref
- ; gcrRegs +[x8]
+G_M56974_IG15: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref
add w6, w5, #1
b G_M56974_IG03
;; size=8 bbWeight=0.21 PerfScore 0.32
-G_M56974_IG15: ; bbWeight=395.17, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
- ; gcrRegs +[x14]
+G_M56974_IG16: ; bbWeight=0.00, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
+ ; gcrRegs -[x8]
+ add w5, w5, #1
+ cmp w2, w5
+ ble G_M56974_IG38
+ b G_M56974_IG12
+ ;; size=16 bbWeight=0.00 PerfScore 0.01
+G_M56974_IG17: ; bbWeight=0.41, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
+ ; gcrRegs +[x8]
+ add w7, w7, #1
+ cmp w7, w4
+ blt G_M56974_IG13
+ ;; size=12 bbWeight=0.41 PerfScore 0.82
+G_M56974_IG18: ; bbWeight=0.21, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref
+ ; gcrRegs -[x8]
+ b G_M56974_IG08
+ ;; size=4 bbWeight=0.21 PerfScore 0.21
+G_M56974_IG19: ; bbWeight=395.17, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
+ ; gcrRegs +[x8 x14]
; byrRegs +[x11]
mov x15, x14
; gcrRegs +[x15]
ldr wip0, [x15, #0x08]
cmp w5, wip0
- bhs G_M56974_IG33
+ bhs G_M56974_IG37
add x15, x15, #16
; gcrRegs -[x15]
; byrRegs +[x15]
@@ -180,14 +206,14 @@ G_M56974_IG15: ; bbWeight=395.17, gcrefRegs=410B {x0 x1 x3 x8 x14}, byref
sub wip0, wip0, #1
ldr w19, [x15, #0x08]
cmp wip0, w19
- bhs G_M56974_IG33
+ bhs G_M56974_IG37
add x15, x15, #16
; gcrRegs -[x15]
; byrRegs +[x15]
ldr s17, [x15, wip0, UXTW #2]
fcvt d17, s17
;; size=56 bbWeight=395.17 PerfScore 8100.90
-G_M56974_IG16: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
+G_M56974_IG20: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
; byrRegs -[x15]
fcvt d16, s16
fadd d16, d16, d17
@@ -195,15 +221,15 @@ G_M56974_IG16: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefR
ldr x15, [x9, xip0]
; gcrRegs +[x15]
sxtw w19, w12
- tbnz w19, #31, G_M56974_IG21
+ tbnz w19, #31, G_M56974_IG25
;; size=24 bbWeight=98.79 PerfScore 1136.10
-G_M56974_IG17: ; bbWeight=3161.33, gcrefRegs=C10B {x0 x1 x3 x8 x14 x15}, byrefRegs=0A00 {x9 x11}, byref, isz
+G_M56974_IG21: ; bbWeight=3161.33, gcrefRegs=C10B {x0 x1 x3 x8 x14 x15}, byrefRegs=0A00 {x9 x11}, byref, isz
ldr w15, [x15, #0x08]
; gcrRegs -[x15]
cmp w15, w19
- ble G_M56974_IG21
+ ble G_M56974_IG25
;; size=12 bbWeight=3161.33 PerfScore 14225.97
-G_M56974_IG18: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
+G_M56974_IG22: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
add x15, x0, #16
; byrRegs +[x15]
ldr x15, [x15, xip0]
@@ -211,27 +237,27 @@ G_M56974_IG18: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefR
; byrRegs -[x15]
ldr w19, [x15, #0x08]
cmp w12, w19
- bhs G_M56974_IG33
+ bhs G_M56974_IG37
add x15, x15, #16
; gcrRegs -[x15]
; byrRegs +[x15]
ldr s17, [x15, w12, UXTW #2]
fcvt d17, s17
fcmp d17, d16
- bgt G_M56974_IG21
+ bgt G_M56974_IG25
;; size=40 bbWeight=98.79 PerfScore 1630.06
-G_M56974_IG19: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
+G_M56974_IG23: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
; byrRegs -[x15]
...
benchmarks.run_tiered.linux.arm64.checked.mch
+60 (+8.02%) : 50853.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
@@ -9,16 +9,16 @@
; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T08] ( 12, 12.04) ref -> x19 class-hnd single-def <float[][]>
+; V00 arg0 [V00,T08] ( 15, 12.06) ref -> x19 class-hnd single-def <float[][]>
; V01 arg1 [V01,T09] ( 9, 12.04) ref -> x20 class-hnd single-def <int[][]>
; V02 arg2 [V02,T21] ( 3, 3 ) ref -> x23 class-hnd single-def <double[]>
; V03 arg3 [V03,T20] ( 4, 6 ) ref -> x22 class-hnd single-def <JetStream.SampleVarianceUpperTriangularMatrix>
-; V04 arg4 [V04,T10] ( 4, 12 ) int -> x21 single-def
+; V04 arg4 [V04,T10] ( 5, 12 ) int -> x21 single-def
;* V05 loc0 [V05 ] ( 0, 0 ) int -> zero-ref
;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc2 [V07,T03] ( 12, 38.50) int -> x25
-; V08 loc3 [V08,T16] ( 5, 10 ) ref -> x27 class-hnd <float[]>
-; V09 loc4 [V09,T00] ( 12, 56 ) int -> x24
+; V07 loc2 [V07,T03] ( 17, 37.52) int -> x25
+; V08 loc3 [V08,T16] ( 6, 10 ) ref -> x27 class-hnd <float[]>
+; V09 loc4 [V09,T00] ( 13, 56 ) int -> x24
;* V10 loc5 [V10 ] ( 0, 0 ) ubyte -> zero-ref
; V11 loc6 [V11,T05] ( 16, 22.58) int -> x26
;* V12 loc7 [V12 ] ( 0, 0 ) float -> zero-ref
@@ -40,7 +40,7 @@
; V28 cse2 [V28,T15] ( 10, 10 ) long -> x8 multi-def "CSE - moderate"
; V29 cse3 [V29,T14] ( 4, 11.88) long -> x1 "CSE - aggressive"
; V30 cse4 [V30,T22] ( 4, 0.12) long -> x1 "CSE - conservative"
-; V31 cse5 [V31,T07] ( 7, 16 ) int -> x28 "CSE - aggressive"
+; V31 cse5 [V31,T07] ( 9, 17 ) int -> x28 "CSE - aggressive"
; V32 cse6 [V32,T06] ( 14, 18 ) int -> x5 multi-def "CSE - aggressive"
; TEMP_01 double -> [fp+0x10]
;
@@ -67,29 +67,58 @@ G_M56974_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr w26, [fp, #0x9C]
;; size=60 bbWeight=0.01 PerfScore 0.23
G_M56974_IG02: ; bbWeight=0.01, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref
- b G_M56974_IG11
+ b G_M56974_IG15
;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M56974_IG03: ; bbWeight=2, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG03: ; bbWeight=1, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x27]
+ cbz x19, G_M56974_IG08
+ tbnz w25, #31, G_M56974_IG08
ldr w0, [x19, #0x08]
- cmp w25, w0
- bhs G_M56974_IG22
+ cmp w0, w28
+ blt G_M56974_IG08
+ b G_M56974_IG05
+ ;; size=24 bbWeight=1 PerfScore 7.50
+G_M56974_IG04: ; bbWeight=1.98, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
add x0, x19, #16
; byrRegs +[x0]
ldr x27, [x0, w25, UXTW #3]
; gcrRegs +[x27]
mov w24, wzr
cmp w21, #0
- bgt G_M56974_IG06
- ;; size=32 bbWeight=2 PerfScore 20.00
-G_M56974_IG04: ; bbWeight=8, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
+ bgt G_M56974_IG10
+ ;; size=20 bbWeight=1.98 PerfScore 10.89
+G_M56974_IG05: ; bbWeight=7.92, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x27]
; byrRegs -[x0]
add w25, w25, #1
cmp w28, w25
- bgt G_M56974_IG03
- ;; size=12 bbWeight=8 PerfScore 16.00
-G_M56974_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ bgt G_M56974_IG04
+ ;; size=12 bbWeight=7.92 PerfScore 15.84
+G_M56974_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19-x20 x22-x23]
+ b G_M56974_IG09
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M56974_IG07: ; bbWeight=0.02, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x19-x20 x22-x23]
+ ldr w0, [x19, #0x08]
+ cmp w25, w0
+ bhs G_M56974_IG26
+ add x0, x19, #16
+ ; byrRegs +[x0]
+ ldr x27, [x0, w25, UXTW #3]
+ ; gcrRegs +[x27]
+ mov w24, wzr
+ cmp w21, #0
+ bgt G_M56974_IG10
+ ;; size=32 bbWeight=0.02 PerfScore 0.20
+G_M56974_IG08: ; bbWeight=0.08, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x27]
+ ; byrRegs -[x0]
+ add w25, w25, #1
+ cmp w28, w25
+ bgt G_M56974_IG07
+ ;; size=12 bbWeight=0.08 PerfScore 0.16
+G_M56974_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19-x20 x22-x23]
ldp x27, x28, [sp, #0x60]
ldp x25, x26, [sp, #0x50]
@@ -101,55 +130,55 @@ G_M56974_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
add sp, sp, #112
ret lr
;; size=36 bbWeight=1 PerfScore 9.50
-G_M56974_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M56974_IG10: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19-x20 x22-x23 x27]
ldr w0, [x20, #0x08]
cmp w25, w0
- bhs G_M56974_IG22
+ bhs G_M56974_IG26
add x0, x20, #16
; byrRegs +[x0]
ldr x0, [x0, w25, UXTW #3]
; gcrRegs +[x0]
; byrRegs -[x0]
- tbnz w24, #31, G_M56974_IG08
+ tbnz w24, #31, G_M56974_IG12
;; size=24 bbWeight=2 PerfScore 18.00
-G_M56974_IG07: ; bbWeight=16, gcrefRegs=8D80001 {x0 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG11: ; bbWeight=16, gcrefRegs=8D80001 {x0 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
cmp w0, w24
- bgt G_M56974_IG10
+ bgt G_M56974_IG14
;; size=12 bbWeight=16 PerfScore 72.00
-G_M56974_IG08: ; bbWeight=8, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG12: ; bbWeight=8, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
add w24, w24, #1
cmp w24, w21
- blt G_M56974_IG06
+ blt G_M56974_IG10
;; size=12 bbWeight=8 PerfScore 16.00
-G_M56974_IG09: ; bbWeight=1, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref
+G_M56974_IG13: ; bbWeight=1, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x27]
- b G_M56974_IG04
+ b G_M56974_IG03
;; size=4 bbWeight=1 PerfScore 1.00
-G_M56974_IG10: ; bbWeight=0.50, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref
+G_M56974_IG14: ; bbWeight=0.50, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref
; gcrRegs +[x27]
add w26, w25, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M56974_IG11: ; bbWeight=1, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG15: ; bbWeight=1, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
ldr w28, [x23, #0x08]
cmp w28, w26
- ble G_M56974_IG08
- cbz x20, G_M56974_IG17
- cbz x19, G_M56974_IG17
- tbnz w26, #31, G_M56974_IG17
+ ble G_M56974_IG12
+ cbz x20, G_M56974_IG21
+ cbz x19, G_M56974_IG21
+ tbnz w26, #31, G_M56974_IG21
ldr w0, [x20, #0x08]
cmp w0, w28
- blt G_M56974_IG17
+ blt G_M56974_IG21
ldr w0, [x19, #0x08]
cmp w0, w28
- blt G_M56974_IG17
+ blt G_M56974_IG21
;; size=48 bbWeight=1 PerfScore 16.50
-G_M56974_IG12: ; bbWeight=3.96, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG16: ; bbWeight=3.96, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
ldr w0, [x27, #0x08]
cmp w24, w0
- bhs G_M56974_IG22
+ bhs G_M56974_IG26
add x0, x27, #16
; byrRegs +[x0]
ldr s16, [x0, w24, UXTW #2]
@@ -179,15 +208,15 @@ G_M56974_IG12: ; bbWeight=3.96, gcrefRegs=8D80000 {x19 x20 x22 x23 x27},
; gcrRegs +[x4]
add w5, w24, #1
sxtw w6, w5
- tbnz w6, #31, G_M56974_IG15
+ tbnz w6, #31, G_M56974_IG19
;; size=100 bbWeight=3.96 PerfScore 134.64
-G_M56974_IG13: ; bbWeight=15.84, gcrefRegs=8D80018 {x3 x4 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG17: ; bbWeight=15.84, gcrefRegs=8D80018 {x3 x4 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
ldr w0, [x4, #0x08]
cmp w0, w6
- ble G_M56974_IG15
+ ble G_M56974_IG19
;; size=12 bbWeight=15.84 PerfScore 71.28
-G_M56974_IG14: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG18: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x4]
add x0, x19, #16
; byrRegs +[x0]
@@ -196,16 +225,16 @@ G_M56974_IG14: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27
ldr w0, [x7, #0x08]
; byrRegs -[x0]
cmp w5, w0
- bhs G_M56974_IG22
+ bhs G_M56974_IG26
add x0, x7, #16
; byrRegs +[x0]
ubfiz x8, x5, #2, #32
ldr s16, [x0, x8]
fcvt d16, s16
fcmp d16, d8
- ble G_M56974_IG16
+ ble G_M56974_IG20
;; size=44 bbWeight=1.98 PerfScore 34.65
-G_M56974_IG15: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG19: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x7]
; byrRegs -[x0]
add x8, x19, #16
@@ -215,7 +244,7 @@ G_M56974_IG15: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27
; byrRegs -[x8]
ldr w0, [x8, #0x08]
cmp w5, w0
- bhs G_M56974_IG22
+ bhs G_M56974_IG26
add x0, x8, #16
; byrRegs +[x0]
ubfiz x8, x5, #2, #32
@@ -225,23 +254,23 @@ G_M56974_IG15: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27
ldr w0, [x3, #0x08]
; byrRegs -[x0]
cmp w5, w0
- bhs G_M56974_IG22
+ bhs G_M56974_IG26
add x0, x3, #16
; byrRegs +[x0]
str w25, [x0, x8]
;; size=56 bbWeight=1.98 PerfScore 38.61
-G_M56974_IG16: ; bbWeight=3.96, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG20: ; bbWeight=3.96, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x3]
; byrRegs -[x0]
add w26, w26, #1
cmp w28, w26
- bgt G_M56974_IG12
- b G_M56974_IG08
+ bgt G_M56974_IG16
+ b G_M56974_IG12
;; size=16 bbWeight=3.96 PerfScore 11.88
-G_M56974_IG17: ; bbWeight=0.04, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG21: ; bbWeight=0.04, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
ldr w0, [x27, #0x08]
cmp w24, w0
- bhs G_M56974_IG22
...
+148 (+16.02%) : 35206.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
@@ -10,44 +10,47 @@
; Final local variable assignments
;
; V00 arg0 [V00,T16] ( 7, 10.09) ref -> x0 class-hnd single-def <double[][]>
-; V01 arg1 [V01,T13] ( 7, 14.21) ref -> x1 class-hnd single-def <double[]>
-; V02 arg2 [V02,T18] ( 9, 9.08) ref -> x20 class-hnd single-def <double[][][]>
-; V03 arg3 [V03,T19] ( 9, 9.08) ref -> x21 class-hnd single-def <double[][]>
-; V04 arg4 [V04,T12] ( 8, 17 ) int -> x19 single-def
-; V05 loc0 [V05,T09] ( 11, 20.08) ref -> x24 class-hnd <double[][]>
-; V06 loc1 [V06,T08] ( 10, 20.20) ref -> x23 class-hnd <double[]>
-; V07 loc2 [V07,T28] ( 2, 2 ) long -> x27
+; V01 arg1 [V01,T13] ( 9, 14.33) ref -> x1 class-hnd single-def <double[]>
+; V02 arg2 [V02,T18] ( 12, 9.10) ref -> x20 class-hnd single-def <double[][][]>
+; V03 arg3 [V03,T19] ( 12, 9.10) ref -> x21 class-hnd single-def <double[][]>
+; V04 arg4 [V04,T08] ( 12, 20 ) int -> x19 single-def
+; V05 loc0 [V05,T10] ( 12, 20.08) ref -> x24 class-hnd <double[][]>
+; V06 loc1 [V06,T09] ( 13, 20.32) ref -> x23 class-hnd <double[]>
+; V07 loc2 [V07,T28] ( 2, 2 ) long -> x25
; V08 loc3 [V08,T02] ( 14, 94.16) int -> x2
-; V09 loc4 [V09,T06] ( 6, 30 ) int -> x3
-; V10 loc5 [V10,T00] ( 32,127.52) int -> x22
+; V09 loc4 [V09,T07] ( 11, 27.04) int -> x3
+; V10 loc5 [V10,T00] ( 40,127.84) int -> x22
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T33] ( 4, 64 ) double -> d16 "Strict ordering of exceptions for Array store"
-; V13 tmp2 [V13,T01] ( 6, 96 ) ref -> x11 class-hnd "Strict ordering of exceptions for Array store" <double[]>
-; V14 tmp3 [V14,T34] ( 4, 64 ) double -> d16 "Strict ordering of exceptions for Array store"
+; V12 tmp1 [V12,T36] ( 6, 64.00) double -> d16 "Strict ordering of exceptions for Array store"
+; V13 tmp2 [V13,T01] ( 6, 96 ) ref -> x9 class-hnd "Strict ordering of exceptions for Array store" <double[]>
+; V14 tmp3 [V14,T37] ( 4, 64 ) double -> d16 "Strict ordering of exceptions for Array store"
;* V15 tmp4 [V15 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V16 tmp5 [V16,T20] ( 6, 10 ) ref -> registers class-hnd exact "Inline stloc first use temp" <<unknown class>>
; V17 tmp6 [V17 ] ( 4, 8 ) int -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V18 tmp7 [V18 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V19 tmp8 [V19,T03] ( 5, 64.32) ref -> x13 "arr expr"
-; V20 cse0 [V20,T10] ( 4, 20.04) ref -> x10 hoist multi-def "CSE - aggressive"
-; V21 cse1 [V21,T31] ( 2, 0.20) ref -> x7 hoist "CSE - conservative"
-; V22 cse2 [V22,T07] ( 6, 27.92) ref -> x7 multi-def "CSE - aggressive"
-; V23 cse3 [V23,T15] ( 6, 12.12) long -> x6 hoist multi-def "CSE - aggressive"
-; V24 cse4 [V24,T04] ( 3, 47.52) long -> x6 "CSE - aggressive"
-; V25 cse5 [V25,T05] ( 3, 47.52) long -> x9 "CSE - aggressive"
+; V19 tmp8 [V19,T03] ( 5, 64.32) ref -> x10 "arr expr"
+; V20 cse0 [V20,T11] ( 4, 20.04) ref -> x8 hoist multi-def "CSE - aggressive"
+; V21 cse1 [V21,T33] ( 2, 0.20) ref -> x5 hoist "CSE - conservative"
+; V22 cse2 [V22,T06] ( 6, 27.92) ref -> x5 multi-def "CSE - aggressive"
+; V23 cse3 [V23,T15] ( 6, 12.12) long -> x4 hoist multi-def "CSE - aggressive"
+; V24 cse4 [V24,T04] ( 3, 47.52) long -> x7 "CSE - aggressive"
+; V25 cse5 [V25,T05] ( 3, 47.04) long -> x4 "CSE - aggressive"
; V26 cse6 [V26,T17] ( 3, 11.88) long -> x0 "CSE - aggressive"
-; V27 cse7 [V27,T25] ( 3, 6 ) long -> x2 "CSE - aggressive"
-; V28 cse8 [V28,T29] ( 3, 0.48) long -> x6 "CSE - conservative"
-; V29 cse9 [V29,T30] ( 3, 0.48) long -> x8 "CSE - conservative"
-; V30 cse10 [V30,T32] ( 3, 0.12) long -> x0 "CSE - conservative"
-; V31 cse11 [V31,T27] ( 3, 4.05) byref -> x5 hoist "CSE - aggressive"
-; V32 cse12 [V32,T14] ( 3, 16.01) byref -> x4 hoist "CSE - aggressive"
-; V33 cse13 [V33,T24] ( 4, 8.08) int -> x8 hoist multi-def "CSE - aggressive"
-; V34 cse14 [V34,T23] ( 4, 8.08) byref -> x9 hoist multi-def "CSE - aggressive"
-; V35 cse15 [V35,T11] ( 4, 20.04) byref -> x2 hoist multi-def "CSE - aggressive"
-; V36 cse16 [V36,T26] ( 4, 5.04) long -> x28 hoist multi-def "CSE - aggressive"
-; V37 cse17 [V37,T21] ( 6, 9.04) byref -> x25 hoist multi-def "CSE - aggressive"
-; V38 cse18 [V38,T22] ( 6, 9.04) byref -> x26 hoist multi-def "CSE - aggressive"
+; V27 cse7 [V27,T25] ( 3, 5.94) long -> x2 "CSE - aggressive"
+; V28 cse8 [V28,T29] ( 3, 0.48) long -> x4 "CSE - conservative"
+; V29 cse9 [V29,T30] ( 3, 0.48) long -> x6 "CSE - conservative"
+; V30 cse10 [V30,T31] ( 3, 0.48) long -> x4 "CSE - conservative"
+; V31 cse11 [V31,T34] ( 3, 0.12) long -> x0 "CSE - conservative"
+; V32 cse12 [V32,T35] ( 3, 0.06) long -> x2 "CSE - conservative"
+; V33 cse13 [V33,T27] ( 3, 4.05) byref -> x26 hoist "CSE - aggressive"
+; V34 cse14 [V34,T14] ( 4, 16.01) byref -> x25 hoist "CSE - aggressive"
+; V35 cse15 [V35,T24] ( 4, 8.08) int -> x6 hoist multi-def "CSE - aggressive"
+; V36 cse16 [V36,T23] ( 4, 8.08) byref -> x7 hoist multi-def "CSE - aggressive"
+; V37 cse17 [V37,T12] ( 4, 19.84) byref -> x2 hoist multi-def "CSE - aggressive"
+; V38 cse18 [V38,T26] ( 4, 5.04) long -> x26 hoist multi-def "CSE - aggressive"
+; V39 cse19 [V39,T21] ( 8, 9.04) byref -> x27 hoist multi-def "CSE - aggressive"
+; V40 cse20 [V40,T22] ( 8, 9.04) byref -> x28 hoist multi-def "CSE - aggressive"
+; V41 cse21 [V41,T32] ( 2, 0.24) byref -> x2 hoist "CSE - conservative"
;
; Lcl frame size = 16
@@ -71,123 +74,186 @@ G_M9806_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
ldr w22, [fp, #0xA4]
;; size=56 bbWeight=0.01 PerfScore 0.22
G_M9806_IG02: ; bbWeight=0.01, gcrefRegs=1B00003 {x0 x1 x20 x21 x23 x24}, byrefRegs=0000 {}, byref
- add x4, x1, #16
- ; byrRegs +[x4]
- add x5, x0, #16
- ; byrRegs +[x5]
- b G_M9806_IG22
- ;; size=12 bbWeight=0.01 PerfScore 0.02
-G_M9806_IG03: ; bbWeight=2, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=0030 {x4 x5}, byref, isz
- ; gcrRegs -[x23-x24]
- ldr w2, [x20, #0x08]
- cmp w3, w2
- bhs G_M9806_IG30
- add x25, x20, #16
+ add x25, x1, #16
; byrRegs +[x25]
- ubfiz x2, x3, #3, #32
- ldr x24, [x25, x2]
- ; gcrRegs +[x24]
- ldr w6, [x21, #0x08]
- cmp w3, w6
- bhs G_M9806_IG30
- add x26, x21, #16
+ add x26, x0, #16
; byrRegs +[x26]
- ldr x23, [x26, x2]
+ b G_M9806_IG28
+ ;; size=12 bbWeight=0.01 PerfScore 0.02
+G_M9806_IG03: ; bbWeight=1, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=6000000 {x25 x26}, byref, isz
+ ; gcrRegs -[x24]
+ cbz x20, G_M9806_IG14
+ cbz x21, G_M9806_IG14
+ orr w2, w3, w19
+ tbnz w2, #31, G_M9806_IG14
+ ldr w2, [x20, #0x08]
+ cmp w2, w19
+ blt G_M9806_IG14
+ ldr w2, [x21, #0x08]
+ cmp w2, w19
+ blt G_M9806_IG14
+ b G_M9806_IG05
+ ;; size=44 bbWeight=1 PerfScore 13.50
+G_M9806_IG04: ; bbWeight=1.98, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=6000000 {x25 x26}, byref
+ ; gcrRegs -[x23]
+ add x27, x20, #16
+ ; byrRegs +[x27]
+ ubfiz x2, x3, #3, #32
+ ldr x24, [x27, x2]
+ ; gcrRegs +[x24]
+ add x28, x21, #16
+ ; byrRegs +[x28]
+ ldr x23, [x28, x2]
; gcrRegs +[x23]
mov w22, wzr
- b G_M9806_IG21
- ;; size=52 bbWeight=2 PerfScore 37.00
-G_M9806_IG04: ; bbWeight=8, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=0030 {x4 x5}, byref, isz
+ b G_M9806_IG27
+ ;; size=28 bbWeight=1.98 PerfScore 18.81
+G_M9806_IG05: ; bbWeight=7.92, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=6000000 {x25 x26}, byref, isz
; gcrRegs -[x24]
- ; byrRegs -[x25-x26]
+ ; byrRegs -[x27-x28]
mov w22, wzr
- cbz x1, G_M9806_IG08
- ;; size=8 bbWeight=8 PerfScore 12.00
-G_M9806_IG05: ; bbWeight=4, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=0030 {x4 x5}, byref, isz
- cbz x23, G_M9806_IG08
+ cbz x1, G_M9806_IG09
+ ;; size=8 bbWeight=7.92 PerfScore 11.88
+G_M9806_IG06: ; bbWeight=3.96, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=6000000 {x25 x26}, byref, isz
+ cbz x23, G_M9806_IG09
ldr w2, [x1, #0x08]
cmp w2, #101
- blt G_M9806_IG08
+ blt G_M9806_IG09
ldr w2, [x23, #0x08]
cmp w2, #101
- blt G_M9806_IG08
+ blt G_M9806_IG09
add x2, x23, #16
; byrRegs +[x2]
- ;; size=32 bbWeight=4 PerfScore 42.00
-G_M9806_IG06: ; bbWeight=15.84, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=0034 {x2 x4 x5}, byref, isz
+ ;; size=32 bbWeight=3.96 PerfScore 41.58
+G_M9806_IG07: ; bbWeight=15.68, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=6000004 {x2 x25 x26}, byref, isz
; gcrRegs -[x23]
- ubfiz x6, x22, #3, #32
- ldr d16, [x4, x6]
- str d16, [x2, x6]
+ ubfiz x4, x22, #3, #32
+ ldr d16, [x25, x4]
+ str d16, [x2, x4]
add w22, w22, #1
cmp w22, #101
- blt G_M9806_IG06
- ;; size=24 bbWeight=15.84 PerfScore 110.88
-G_M9806_IG07: ; bbWeight=8, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=0030 {x4 x5}, byref
+ blt G_M9806_IG07
+ ;; size=24 bbWeight=15.68 PerfScore 109.77
+G_M9806_IG08: ; bbWeight=7.92, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=6000000 {x25 x26}, byref
; byrRegs -[x2]
- b G_M9806_IG10
- ;; size=4 bbWeight=8 PerfScore 8.00
-G_M9806_IG08: ; bbWeight=0.04, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=0030 {x4 x5}, byref
+ b G_M9806_IG11
+ ;; size=4 bbWeight=7.92 PerfScore 7.92
+G_M9806_IG09: ; bbWeight=0.04, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=6000000 {x25 x26}, byref
; gcrRegs +[x23]
ldr wzr, [x1, #0x08]
add x2, x23, #16
; byrRegs +[x2]
;; size=8 bbWeight=0.04 PerfScore 0.14
-G_M9806_IG09: ; bbWeight=0.16, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=0034 {x2 x4 x5}, byref, isz
- ldr w6, [x1, #0x08]
- cmp w22, w6
- bhs G_M9806_IG30
- ubfiz x6, x22, #3, #32
- ldr d16, [x4, x6]
- ldr w7, [x23, #0x08]
- cmp w22, w7
- bhs G_M9806_IG30
- str d16, [x2, x6]
+G_M9806_IG10: ; bbWeight=0.16, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=6000004 {x2 x25 x26}, byref, isz
+ ldr w4, [x1, #0x08]
+ cmp w22, w4
+ bhs G_M9806_IG36
+ ubfiz x4, x22, #3, #32
+ ldr d16, [x25, x4]
+ ldr w5, [x23, #0x08]
+ cmp w22, w5
+ bhs G_M9806_IG36
+ str d16, [x2, x4]
add w22, w22, #1
cmp w22, #101
- blt G_M9806_IG09
- ;; size=48 bbWeight=0.16 PerfScore 2.56
-G_M9806_IG10: ; bbWeight=8, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=0030 {x4 x5}, byref, isz
+ blt G_M9806_IG10
+ ;; size=48 bbWeight=0.16 PerfScore 2.53
+G_M9806_IG11: ; bbWeight=7.92, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=6000000 {x25 x26}, byref, isz
; gcrRegs -[x23]
; byrRegs -[x2]
add w3, w3, #1
cmp w3, w19
- blt G_M9806_IG03
- ;; size=12 bbWeight=8 PerfScore 16.00
-G_M9806_IG11: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+ blt G_M9806_IG04
+ ;; size=12 bbWeight=7.92 PerfScore 15.84
+G_M9806_IG12: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x0-x1]
- ; byrRegs -[x4-x5]
+ ; byrRegs -[x25-x26]
+ b G_M9806_IG17
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M9806_IG13: ; bbWeight=0.02, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=6000000 {x25 x26}, byref, isz
+ ; gcrRegs +[x0-x1]
+ ; byrRegs +[x25-x26]
+ ldr w2, [x20, #0x08]
+ cmp w3, w2
+ bhs G_M9806_IG36
+ add x27, x20, #16
+ ; byrRegs +[x27]
+ ubfiz x2, x3, #3, #32
+ ldr x24, [x27, x2]
+ ; gcrRegs +[x24]
+ ldr w4, [x21, #0x08]
+ cmp w3, w4
...
coreclr_tests.run.linux.arm64.checked.mch
+172 (+47.78%) : 519607.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
@@ -10,114 +10,180 @@
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T06] ( 5, 3.54) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[NamedSet][]>
-; V01 loc0 [V01,T07] ( 5, 2.61) int -> x23
-; V02 loc1 [V02,T02] ( 8,123.59) ref -> x22 class-hnd <System.Collections.Generic.List`1[NamedSet]>
-; V03 loc2 [V03,T09] ( 2, 1.57) ubyte -> x21
-; V04 loc3 [V04,T03] ( 9, 75.20) int -> x20
-; V05 loc4 [V05,T01] ( 8,130.32) int -> x21
+; V00 arg0 [V00,T06] ( 9, 4.04) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[NamedSet][]>
+; V01 loc0 [V01,T07] ( 10, 2.59) int -> x23
+; V02 loc1 [V02,T02] ( 14,123.59) ref -> x22 class-hnd <System.Collections.Generic.List`1[NamedSet]>
+; V03 loc2 [V03,T08] ( 4, 1.57) ubyte -> x20
+; V04 loc3 [V04,T03] ( 18, 75.20) int -> x24
+; V05 loc4 [V05,T01] ( 10,130.32) int -> x21
; V06 loc5 [V06,T00] ( 6,380.48) int -> x20
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T04] ( 3, 63.57) ref -> x0 class-hnd "Inlining Arg" <<unknown class>>
-; V09 tmp2 [V09,T05] ( 3, 63.57) ref -> x0 "arr expr"
-; V10 cse0 [V10,T08] ( 3, 1.57) int -> x0 hoist multi-def "CSE - aggressive"
+; V08 tmp1 [V08,T04] ( 6, 63.57) ref -> x26 class-hnd "Inlining Arg" <<unknown class>>
+; V09 tmp2 [V09,T05] ( 6, 63.57) ref -> x25 "arr expr"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M3612_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, #-0x50]!
+ stp x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
+ stp x23, x24, [sp, #0x30]
+ stp x25, x26, [sp, #0x40]
mov fp, sp
- ldr x19, [fp, #0x78]
+ ldr x19, [fp, #0x88]
; gcrRegs +[x19]
- ldr w23, [fp, #0x74]
- ldr x22, [fp, #0x68]
+ ldr w23, [fp, #0x84]
+ ldr x22, [fp, #0x78]
; gcrRegs +[x22]
- ldp w20, w21, [fp, #0x58]
- ;; size=36 bbWeight=1 PerfScore 12.50
+ ldp w20, w21, [fp, #0x68]
+ ;; size=40 bbWeight=1 PerfScore 13.50
G_M3612_IG02: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
- b G_M3612_IG11
+ b G_M3612_IG17
;; size=4 bbWeight=1 PerfScore 1.00
-G_M3612_IG03: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M3612_IG03: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
- cmp w23, w0
- bhs G_M3612_IG15
add x0, x19, #16
; byrRegs +[x0]
ldr x22, [x0, w23, UXTW #3]
; gcrRegs +[x22]
- ;; size=16 bbWeight=0.52 PerfScore 2.61
+ ;; size=8 bbWeight=0.52 PerfScore 1.81
G_M3612_IG04: ; bbWeight=0.52, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
- mov w21, wzr
+ mov w20, wzr
ldr w0, [x22, #0x10]
- sub w20, w0, #2
- tbnz w20, #31, G_M3612_IG06
- ;; size=16 bbWeight=0.52 PerfScore 2.61
-G_M3612_IG05: ; bbWeight=10.59, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ sub w24, w0, #2
+ tbnz w24, #31, G_M3612_IG06
+ ;; size=16 bbWeight=0.52 PerfScore 2.58
+G_M3612_IG05: ; bbWeight=10.49, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
ldr w0, [x22, #0x10]
- cmp w20, w0
- bhs G_M3612_IG18
- ldr x0, [x22, #0x08]
- ; gcrRegs +[x0]
- ldr w1, [x0, #0x08]
- cmp w20, w1
- bhs G_M3612_IG15
- add x0, x0, #16
- ; gcrRegs -[x0]
+ cmp w24, w0
+ bhs G_M3612_IG24
+ ldr x25, [x22, #0x08]
+ ; gcrRegs +[x25]
+ ldr w0, [x25, #0x08]
+ cmp w24, w0
+ bhs G_M3612_IG21
+ add x0, x25, #16
; byrRegs +[x0]
- ldr x0, [x0, w20, UXTW #3]
+ ldr x0, [x0, w24, UXTW #3]
; gcrRegs +[x0]
; byrRegs -[x0]
- ldr x0, [x0, #0x08]
- ldr w1, [x0, #0x28]
- ldr w0, [x0, #0x30]
+ ldr x26, [x0, #0x08]
+ ; gcrRegs +[x26]
+ ldr w0, [x26, #0x28]
; gcrRegs -[x0]
- sub w0, w1, w0
+ ldr w1, [x26, #0x30]
+ sub w0, w0, w1
cbz w0, G_M3612_IG04
mov x0, x22
; gcrRegs +[x0]
- mov w1, w20
+ mov w1, w24
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x25-x26]
; gcr arg pop 0
- sub w20, w20, #1
- tbz w20, #31, G_M3612_IG05
- ;; size=92 bbWeight=10.59 PerfScore 360.21
-G_M3612_IG06: ; bbWeight=1.04, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- cbnz w21, G_M3612_IG04
- ;; size=4 bbWeight=1.04 PerfScore 1.04
+ sub w24, w24, #1
+ tbz w24, #31, G_M3612_IG05
+ ;; size=92 bbWeight=10.49 PerfScore 356.60
+G_M3612_IG06: ; bbWeight=1.03, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ cbnz w20, G_M3612_IG04
+ ;; size=4 bbWeight=1.03 PerfScore 1.03
G_M3612_IG07: ; bbWeight=0.52, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
ldr w0, [x22, #0x10]
sub w21, w0, #2
- tbz w21, #31, G_M3612_IG10
- ;; size=12 bbWeight=0.52 PerfScore 2.35
+ tbz w21, #31, G_M3612_IG16
+ ;; size=12 bbWeight=0.52 PerfScore 2.33
G_M3612_IG08: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22]
add w23, w23, #1
ldr w0, [x19, #0x08]
cmp w0, w23
- ble G_M3612_IG16
+ ble G_M3612_IG22
b G_M3612_IG03
- ;; size=20 bbWeight=0.52 PerfScore 3.13
-G_M3612_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=20 bbWeight=0.52 PerfScore 3.10
+G_M3612_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ cbz x19, G_M3612_IG15
+ tbnz w23, #31, G_M3612_IG15
ldr wzr, [x19, #0x08]
b G_M3612_IG08
- ;; size=8 bbWeight=0.50 PerfScore 1.98
-G_M3612_IG10: ; bbWeight=9.76, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=0.50 PerfScore 2.97
+G_M3612_IG10: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x19, #0x08]
+ cmp w23, w0
+ bhs G_M3612_IG21
+ add x0, x19, #16
+ ; byrRegs +[x0]
+ ldr x22, [x0, w23, UXTW #3]
+ ; gcrRegs +[x22]
+ ;; size=20 bbWeight=0.01 PerfScore 0.04
+G_M3612_IG11: ; bbWeight=0.01, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0]
+ mov w20, wzr
+ ldr w0, [x22, #0x10]
+ sub w24, w0, #2
+ tbnz w24, #31, G_M3612_IG13
+ ;; size=16 bbWeight=0.01 PerfScore 0.03
+G_M3612_IG12: ; bbWeight=0.11, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x22, #0x10]
+ cmp w24, w0
+ bhs G_M3612_IG24
+ ldr x25, [x22, #0x08]
+ ; gcrRegs +[x25]
+ ldr w0, [x25, #0x08]
+ cmp w24, w0
+ bhs G_M3612_IG21
+ add x0, x25, #16
+ ; byrRegs +[x0]
+ ldr x0, [x0, w24, UXTW #3]
+ ; gcrRegs +[x0]
+ ; byrRegs -[x0]
+ ldr x26, [x0, #0x08]
+ ; gcrRegs +[x26]
+ ldr w0, [x26, #0x28]
+ ; gcrRegs -[x0]
+ ldr w1, [x26, #0x30]
+ sub w0, w0, w1
+ cbz w0, G_M3612_IG11
+ mov x0, x22
+ ; gcrRegs +[x0]
+ mov w1, w24
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x0 x25-x26]
+ ; gcr arg pop 0
+ sub w24, w24, #1
+ tbz w24, #31, G_M3612_IG12
+ ;; size=92 bbWeight=0.11 PerfScore 3.60
+G_M3612_IG13: ; bbWeight=0.01, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ cbnz w20, G_M3612_IG11
+ ;; size=4 bbWeight=0.01 PerfScore 0.01
+G_M3612_IG14: ; bbWeight=0.01, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x22, #0x10]
+ sub w21, w0, #2
+ tbz w21, #31, G_M3612_IG16
+ ;; size=12 bbWeight=0.01 PerfScore 0.02
+G_M3612_IG15: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x22]
+ add w23, w23, #1
+ ldr w0, [x19, #0x08]
+ cmp w0, w23
+ ble G_M3612_IG22
+ b G_M3612_IG10
+ ;; size=20 bbWeight=0.01 PerfScore 0.03
+G_M3612_IG16: ; bbWeight=9.76, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs +[x22]
sub w20, w21, #1
;; size=4 bbWeight=9.76 PerfScore 4.88
-G_M3612_IG11: ; bbWeight=9.76, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- tbnz w20, #31, G_M3612_IG13
+G_M3612_IG17: ; bbWeight=9.76, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ tbnz w20, #31, G_M3612_IG19
;; size=4 bbWeight=9.76 PerfScore 9.76
-G_M3612_IG12: ; bbWeight=90.24, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M3612_IG18: ; bbWeight=90.24, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
mov x0, x22
; gcrRegs +[x0]
mov w1, w20
@@ -129,32 +195,33 @@ G_M3612_IG12: ; bbWeight=90.24, gcrefRegs=480000 {x19 x22}, byrefRegs=000
blr x3
; gcrRegs -[x0]
; gcr arg pop 0
- cbnz w0, G_M3612_IG17
+ cbnz w0, G_M3612_IG23
sub w20, w20, #1
- tbz w20, #31, G_M3612_IG12
...
libraries.crossgen2.linux.arm64.checked.mch
+84 (+8.47%) : 178155.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
@@ -12,30 +12,29 @@
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.VisualBasic.CompilerServices.VBBinder>
; V01 arg1 [V01,T16] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Reflection.MethodBase>
; V02 arg2 [V02,T17] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Reflection.MethodBase>
-; V03 loc0 [V03,T19] ( 3, 2 ) ubyte -> x0
-; V04 loc1 [V04,T15] ( 9, 5.58) ref -> x20 class-hnd single-def <<unknown class>>
+; V03 loc0 [V03,T18] ( 3, 2 ) ubyte -> x0
+; V04 loc1 [V04,T11] ( 13, 6.66) ref -> x20 class-hnd single-def <<unknown class>>
; V05 loc2 [V05,T06] ( 13, 9.62) ref -> x19 class-hnd single-def <<unknown class>>
-; V06 loc3 [V06,T00] ( 30, 55.62) int -> x22
+; V06 loc3 [V06,T00] ( 35, 52.16) int -> x22
; V07 loc4 [V07,T01] ( 10, 16 ) ref -> x27 class-hnd <<unknown class>>
-; V08 loc5 [V08,T02] ( 10, 16 ) ref -> x23 class-hnd <<unknown class>>
+; V08 loc5 [V08,T02] ( 10, 16 ) ref -> x26 class-hnd <<unknown class>>
; V09 loc6 [V09,T05] ( 8, 9 ) int -> x21 single-def
-;* V10 loc7 [V10,T23] ( 0, 0 ) int -> zero-ref single-def
-; V11 loc8 [V11,T18] ( 3, 5 ) int -> x25 single-def
-; V12 loc9 [V12,T12] ( 6, 6 ) int -> x21 single-def
+;* V10 loc7 [V10,T22] ( 0, 0 ) int -> zero-ref single-def
+; V11 loc8 [V11,T12] ( 6, 6 ) int -> x24 single-def
+; V12 loc9 [V12,T13] ( 6, 6 ) int -> x21 single-def
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T13] ( 3, 6 ) int -> x21 "non-inline candidate call"
-; V15 tmp2 [V15,T20] ( 2, 2 ) int -> x22 "non-inline candidate call"
-; V16 tmp3 [V16,T21] ( 2, 2 ) int -> x22 "non-inline candidate call"
-; V17 tmp4 [V17,T22] ( 2, 2 ) int -> x21 "Inline return value spill temp"
-; V18 tmp5 [V18,T14] ( 3, 6 ) int -> x0 "Inlining Arg"
-; V19 cse0 [V19,T04] ( 3, 11.88) long -> x23 "CSE - aggressive"
-; V20 cse1 [V20,T24] ( 3, 0.12) long -> x23 "CSE - conservative"
-; V21 cse2 [V21,T07] ( 6, 9.54) byref -> x24 hoist multi-def "CSE - aggressive"
-; V22 cse3 [V22,T11] ( 8, 7.58) int -> x23 multi-def "CSE - aggressive"
-; V23 cse4 [V23,T03] ( 8, 12.54) byref -> x28 hoist multi-def "CSE - aggressive"
-; V24 cse5 [V24,T08] ( 6, 9.04) long -> x25 hoist multi-def "CSE - aggressive"
-; V25 cse6 [V25,T09] ( 6, 9.04) long -> x26 hoist multi-def "CSE - aggressive"
-; V26 cse7 [V26,T10] ( 6, 9.04) long -> x26 hoist multi-def "CSE - aggressive"
+; V14 tmp1 [V14,T14] ( 3, 6 ) int -> x21 "non-inline candidate call"
+; V15 tmp2 [V15,T19] ( 2, 2 ) int -> x22 "non-inline candidate call"
+; V16 tmp3 [V16,T20] ( 2, 2 ) int -> x22 "non-inline candidate call"
+; V17 tmp4 [V17,T21] ( 2, 2 ) int -> x21 "Inline return value spill temp"
+; V18 tmp5 [V18,T15] ( 3, 6 ) int -> x0 "Inlining Arg"
+; V19 cse0 [V19,T04] ( 3, 11.88) long -> x26 "CSE - aggressive"
+; V20 cse1 [V20,T23] ( 3, 0.12) long -> x26 "CSE - conservative"
+; V21 cse2 [V21,T07] ( 8, 9.58) byref -> x23 hoist multi-def "CSE - aggressive"
+; V22 cse3 [V22,T03] ( 8, 12.54) byref -> x28 hoist multi-def "CSE - aggressive"
+; V23 cse4 [V23,T09] ( 6, 9.04) long -> x24 hoist multi-def "CSE - aggressive"
+; V24 cse5 [V24,T10] ( 6, 9.04) long -> x25 hoist multi-def "CSE - aggressive"
+; V25 cse6 [V25,T08] ( 8, 9.08) long -> x25 hoist multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -93,37 +92,37 @@ G_M40132_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {},
csel w21, w21, w0, le
mov w22, wzr
tbnz w21, #31, G_M40132_IG14
- ldr w23, [x20, #0x08]
- cmp w23, w21
+ ldr w0, [x20, #0x08]
+ cmp w0, w21
ble G_M40132_IG09
ldr w0, [x19, #0x08]
cmp w0, w21
ble G_M40132_IG09
- add x24, x20, #16
- ; byrRegs +[x24]
+ add x23, x20, #16
+ ; byrRegs +[x23]
+ 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]
;; size=176 bbWeight=1 PerfScore 50.50
-G_M40132_IG03: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=1000000 {x24}, byref, isz
- ubfiz x23, x22, #3, #32
- ldr x0, [x24, x23]
+G_M40132_IG03: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+ ubfiz x26, x22, #3, #32
+ ldr x0, [x23, x26]
; gcrRegs +[x0]
- mov x11, x25
+ mov x11, x24
ldr wzr, [x0]
ldr x1, [x11]
blr x1
mov x27, x0
; gcrRegs +[x27]
- mov x11, x26
+ mov x11, x25
ldr wzr, [x0]
ldr x1, [x11]
blr x1
; gcrRegs -[x0]
cbz w0, G_M40132_IG05
;; size=48 bbWeight=3.96 PerfScore 81.18
-G_M40132_IG04: ; bbWeight=1.98, gcrefRegs=8180000 {x19 x20 x27}, byrefRegs=1000000 {x24}, byref
+G_M40132_IG04: ; bbWeight=1.98, gcrefRegs=8180000 {x19 x20 x27}, byrefRegs=800000 {x23}, byref
mov x0, x27
; gcrRegs +[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -134,72 +133,72 @@ G_M40132_IG04: ; bbWeight=1.98, gcrefRegs=8180000 {x19 x20 x27}, byrefReg
mov x27, x0
; gcrRegs +[x27]
;; size=24 bbWeight=1.98 PerfScore 11.88
-G_M40132_IG05: ; bbWeight=3.96, gcrefRegs=8180000 {x19 x20 x27}, byrefRegs=1000000 {x24}, byref, isz
+G_M40132_IG05: ; bbWeight=3.96, gcrefRegs=8180000 {x19 x20 x27}, byrefRegs=800000 {x23}, byref, isz
; gcrRegs -[x0]
add x28, x19, #16
; byrRegs +[x28]
- ldr x0, [x28, x23]
+ ldr x0, [x28, x26]
; gcrRegs +[x0]
- mov x11, x25
+ mov x11, x24
ldr wzr, [x0]
ldr x1, [x11]
blr x1
; byrRegs -[x28]
- mov x23, x0
- ; gcrRegs +[x23]
- mov x11, x26
+ mov x26, x0
+ ; gcrRegs +[x26]
+ mov x11, x25
ldr wzr, [x0]
ldr x1, [x11]
blr x1
; gcrRegs -[x0]
cbz w0, G_M40132_IG07
;; size=48 bbWeight=3.96 PerfScore 79.20
-G_M40132_IG06: ; bbWeight=1.98, gcrefRegs=8980000 {x19 x20 x23 x27}, byrefRegs=1000000 {x24}, byref
- mov x0, x23
+G_M40132_IG06: ; bbWeight=1.98, gcrefRegs=C180000 {x19 x20 x26 x27}, byrefRegs=800000 {x23}, byref
+ mov x0, x26
; gcrRegs +[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
- ; gcrRegs -[x23]
- mov x23, x0
- ; gcrRegs +[x23]
+ ; gcrRegs -[x26]
+ mov x26, x0
+ ; gcrRegs +[x26]
;; size=24 bbWeight=1.98 PerfScore 11.88
-G_M40132_IG07: ; bbWeight=3.96, gcrefRegs=8980000 {x19 x20 x23 x27}, byrefRegs=1000000 {x24}, byref, isz
+G_M40132_IG07: ; bbWeight=3.96, gcrefRegs=C180000 {x19 x20 x26 x27}, byrefRegs=800000 {x23}, byref, isz
; gcrRegs -[x0]
- cmp x27, x23
+ cmp x27, x26
bne G_M40132_IG15
adds w22, w22, #1
- bvs G_M40132_IG25
+ bvs G_M40132_IG27
cmp w22, w21
ble G_M40132_IG03
;; size=24 bbWeight=3.96 PerfScore 17.82
G_M40132_IG08: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x23 x27]
- ; byrRegs -[x24]
+ ; gcrRegs -[x26-x27]
+ ; byrRegs -[x23]
b G_M40132_IG14
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M40132_IG09: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr w23, [x20, #0x08]
- cmp w22, w23
- bhs G_M40132_IG26
- add x24, x20, #16
- ; byrRegs +[x24]
- ubfiz x23, x22, #3, #32
- ldr x0, [x24, x23]
+ ldr w0, [x20, #0x08]
+ cmp w22, w0
+ bhs G_M40132_IG28
+ add x23, x20, #16
+ ; byrRegs +[x23]
+ ubfiz x26, x22, #3, #32
+ ldr x0, [x23, x26]
; gcrRegs +[x0]
- adrp x25, [HIGH RELOC #0xD1FFAB1E]
- add x25, x25, [LOW RELOC #0xD1FFAB1E]
- mov x11, x25
+ adrp x24, [HIGH RELOC #0xD1FFAB1E]
+ add x24, x24, [LOW RELOC #0xD1FFAB1E]
+ mov x11, x24
ldr wzr, [x0]
ldr x1, [x11]
blr x1
- ; byrRegs -[x24]
+ ; byrRegs -[x23]
mov x27, x0
; gcrRegs +[x27]
- adrp x26, [HIGH RELOC #0xD1FFAB1E]
- add x26, x26, [LOW RELOC #0xD1FFAB1E]
- mov x11, x26
+ adrp x25, [HIGH RELOC #0xD1FFAB1E]
+ add x25, x25, [LOW RELOC #0xD1FFAB1E]
+ mov x11, x25
ldr wzr, [x0]
ldr x1, [x11]
blr x1
@@ -221,53 +220,53 @@ G_M40132_IG11: ; bbWeight=0.04, gcrefRegs=8180000 {x19 x20 x27}, byrefReg
; gcrRegs -[x0]
ldr w0, [x19, #0x08]
cmp w22, w0
- bhs G_M40132_IG26
+ bhs G_M40132_IG28
add x28, x19, #16
; byrRegs +[x28]
- ldr x0, [x28, x23]
+ ldr x0, [x28, x26]
; gcrRegs +[x0]
- mov x11, x25
+ mov x11, x24
ldr wzr, [x0]
ldr x1, [x11]
blr x1
; byrRegs -[x28]
- mov x23, x0
- ; gcrRegs +[x23]
- mov x11, x26
+ mov x26, x0
+ ; gcrRegs +[x26]
+ mov x11, x25
ldr wzr, [x0]
ldr x1, [x11]
blr x1
; gcrRegs -[x0]
cbz w0, G_M40132_IG13
;; size=60 bbWeight=0.04 PerfScore 0.98
-G_M40132_IG12: ; bbWeight=0.02, gcrefRegs=8980000 {x19 x20 x23 x27}, byrefRegs=0000 {}, byref
- mov x0, x23
+G_M40132_IG12: ; bbWeight=0.02, gcrefRegs=C180000 {x19 x20 x26 x27}, byrefRegs=0000 {}, byref
+ mov x0, x26
; gcrRegs +[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E]
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
- ; gcrRegs -[x23]
- mov x23, x0
- ; gcrRegs +[x23]
+ ; gcrRegs -[x26]
+ mov x26, x0
+ ; gcrRegs +[x26]
;; size=24 bbWeight=0.02 PerfScore 0.12
-G_M40132_IG13: ; bbWeight=0.04, gcrefRegs=8980000 {x19 x20 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M40132_IG13: ; bbWeight=0.04, gcrefRegs=C180000 {x19 x20 x26 x27}, byrefRegs=0000 {}, byref, isz
...
libraries_tests.run.linux.arm64.Release.mch
+60 (+2.16%) : 303165.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
@@ -16,10 +16,10 @@
; V03 loc0 [V03,T50] ( 8, 300 ) ref -> x21 class-hnd exact <System.Collections.Generic.List`1[ushort]>
;* V04 loc1 [V04 ] ( 0, 0 ) ushort -> zero-ref
;* V05 loc2 [V05 ] ( 0, 0 ) ushort -> zero-ref
-; V06 loc3 [V06,T91] ( 2, 0.07) ref -> x27 class-hnd <int[]>
-; V07 loc4 [V07,T89] ( 5, 0.19) int -> x26
-; V08 loc5 [V08,T51] ( 4, 292.93) int -> x22
-; V09 loc6 [V09,T85] ( 8, 16.63) int -> x25
+; V06 loc3 [V06,T90] ( 6, 0.11) ref -> x27 class-hnd <int[]>
+; V07 loc4 [V07,T89] ( 10, 0.19) int -> x26
+; V08 loc5 [V08,T51] ( 5, 292.93) int -> x22
+; V09 loc6 [V09,T85] ( 9, 16.63) int -> x25
; V10 loc7 [V10,T53] ( 5, 200 ) ushort -> x23
; V11 loc8 [V11,T54] ( 4, 197.63) ushort -> x24
; V12 loc9 [V12,T09] ( 8, 590.52) int -> x20
@@ -28,13 +28,13 @@
; V15 loc12 [V15,T64] ( 2, 195.26) int -> [fp+0x1FC] spill-single-def tier0-frame
; V16 loc13 [V16,T65] ( 2, 195.26) int -> [fp+0x1F8] spill-single-def tier0-frame
; V17 loc14 [V17 ] ( 83,6346.90) struct (40) [fp+0x1D0] do-not-enreg[XS] addr-exposed ld-addr-op tier0-frame <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
-; V18 loc15 [V18,T94] ( 3, 0 ) ref -> x19 class-hnd <int[]>
-; V19 loc16 [V19,T93] ( 5, 0 ) int -> x20
-; V20 loc17 [V20,T92] ( 6, 0 ) ref -> x22 class-hnd exact <System.Globalization.Tests.CompareInfoCompareTests+<>c__DisplayClass11_0>
+; V18 loc15 [V18,T93] ( 3, 0 ) ref -> x19 class-hnd <int[]>
+; V19 loc16 [V19,T92] ( 5, 0 ) int -> x20
+; V20 loc17 [V20,T91] ( 6, 0 ) ref -> x22 class-hnd exact <System.Globalization.Tests.CompareInfoCompareTests+<>c__DisplayClass11_0>
;# V21 OutArgs [V21 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V22 tmp1 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[ushort]>
;* V23 tmp2 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Globalization.Tests.CompareInfoCompareTests+<>c__DisplayClass11_0>
-; V24 tmp3 [V24,T95] ( 3, 0 ) ref -> x23 class-hnd exact "NewObj constructor temp" <System.Func`1[System.Object]>
+; V24 tmp3 [V24,T94] ( 3, 0 ) ref -> x23 class-hnd exact "NewObj constructor temp" <System.Func`1[System.Object]>
;* V25 tmp4 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
;* V26 tmp5 [V26 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V27 tmp6 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
@@ -611,12 +611,11 @@
;* V598 tmp577 [V598 ] ( 0, 0 ) long -> zero-ref "Cast away GC"
;* V599 tmp578 [V599 ] ( 0, 0 ) long -> zero-ref "Cast away GC"
;* V600 tmp579 [V600 ] ( 0, 0 ) long -> zero-ref "Cast away GC"
-; V601 tmp580 [V601,T97] ( 3, 0 ) struct ( 8) [fp+0x90] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
+; V601 tmp580 [V601,T96] ( 3, 0 ) struct ( 8) [fp+0x90] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
; V602 tmp581 [V602,T86] ( 3, 14.22) ref -> x0 "arr expr"
-; V603 tmp582 [V603,T96] ( 3, 0 ) ref -> x0 "arr expr"
-; V604 cse0 [V604,T90] ( 3, 0.11) int -> x1 "CSE - conservative"
-; V605 cse1 [V605,T87] ( 4, 7.15) int -> x0 "CSE - conservative"
-; V606 cse2 [V606,T20] ( 10, 488.15) ref -> [fp+0x18] multi-def "CSE - moderate"
+; V603 tmp582 [V603,T95] ( 3, 0 ) ref -> x0 "arr expr"
+; V604 cse0 [V604,T87] ( 5, 7.15) int -> x0 "CSE - conservative"
+; V605 cse1 [V605,T20] ( 10, 488.15) ref -> [fp+0x18] multi-def "CSE - moderate"
;
; Lcl frame size = 224
@@ -646,16 +645,51 @@ G_M28013_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr w20, [fp, #0xD1FFAB1E]
;; size=80 bbWeight=1 PerfScore 28.50
G_M28013_IG02: ; bbWeight=1, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref
- b G_M28013_IG04
+ b G_M28013_IG09
;; size=4 bbWeight=1 PerfScore 1.00
-G_M28013_IG03: ; bbWeight=2.37, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref, isz
+G_M28013_IG03: ; bbWeight=0.04, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref, isz
+ cbz x27, G_M28013_IG22
+ tbnz w26, #31, G_M28013_IG22
+ ;; size=8 bbWeight=0.04 PerfScore 0.07
+G_M28013_IG04: ; bbWeight=0.07, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref
+ b G_M28013_IG06
+ ;; size=4 bbWeight=0.07 PerfScore 0.07
+G_M28013_IG05: ; bbWeight=0.04, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref, isz
+ add x1, x27, #16
+ ; byrRegs +[x1]
+ ldr w22, [x1, w26, UXTW #2]
+ mov w25, wzr
+ cmp w0, #0
+ bgt G_M28013_IG08
+ ;; size=20 bbWeight=0.04 PerfScore 0.20
+G_M28013_IG06: ; bbWeight=0.04, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x1]
+ add w26, w26, #1
+ ldr w1, [x27, #0x08]
+ cmp w1, w26
+ ble G_M28013_IG42
+ b G_M28013_IG05
+ ;; size=20 bbWeight=0.04 PerfScore 0.22
+G_M28013_IG07: ; bbWeight=0.00, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref, isz
+ ldr w1, [x27, #0x08]
+ cmp w26, w1
+ bhs G_M28013_IG23
+ add x1, x27, #16
+ ; byrRegs +[x1]
+ ldr w22, [x1, w26, UXTW #2]
+ mov w25, wzr
+ cmp w0, #0
+ ble G_M28013_IG22
+ ;; size=32 bbWeight=0.00 PerfScore 0.00
+G_M28013_IG08: ; bbWeight=2.37, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x1]
cmp w25, w0
- bhs G_M28013_IG37
+ bhs G_M28013_IG43
ldr x0, [x21, #0x08]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w25, w1
- bhs G_M28013_IG17
+ bhs G_M28013_IG23
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -665,20 +699,20 @@ G_M28013_IG03: ; bbWeight=2.37, gcrefRegs=8280000 {x19 x21 x27}, byrefReg
uxth w24, w0
sxtw w20, w25
;; size=44 bbWeight=2.37 PerfScore 33.19
-G_M28013_IG04: ; bbWeight=2.37, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref, isz
+G_M28013_IG09: ; bbWeight=2.37, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref, isz
ldr w0, [x21, #0x10]
cmp w20, w0
- bge G_M28013_IG15
+ bge G_M28013_IG20
;; size=12 bbWeight=2.37 PerfScore 10.67
-G_M28013_IG05: ; bbWeight=97.63, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref, isz
+G_M28013_IG10: ; bbWeight=97.63, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref, isz
ldr w0, [x21, #0x10]
cmp w20, w0
- bhs G_M28013_IG37
+ bhs G_M28013_IG43
ldr x0, [x21, #0x08]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w20, w1
- bhs G_M28013_IG17
+ bhs G_M28013_IG23
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -769,7 +803,7 @@ G_M28013_IG05: ; bbWeight=97.63, gcrefRegs=8280000 {x19 x21 x27}, byrefRe
ldr w0, [fp, #0xD1FFAB1E] // [V17 loc14+0x10]
ldr w1, [fp, #0xD1FFAB1E] // [V17 loc14+0x20]
cmp w0, w1
- bhi G_M28013_IG31
+ bhi G_M28013_IG37
ldr x1, [fp, #0xD1FFAB1E] // [V17 loc14+0x18]
; byrRegs +[x1]
ubfiz x2, x0, #1, #32
@@ -790,7 +824,7 @@ G_M28013_IG05: ; bbWeight=97.63, gcrefRegs=8280000 {x19 x21 x27}, byrefRe
; gcr arg pop 0
ldr w0, [fp, #0xEC] // [V32 tmp11]
cmp w0, #15
- blo G_M28013_IG18
+ blo G_M28013_IG24
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -805,15 +839,15 @@ G_M28013_IG05: ; bbWeight=97.63, gcrefRegs=8280000 {x19 x21 x27}, byrefRe
str w0, [fp, #0xD1FFAB1E] // [V17 loc14+0x10]
str w23, [fp, #0xE8] // [V39 tmp18]
ldrb w0, [fp, #0xD1FFAB1E] // [V17 loc14+0x14]
- cbnz w0, G_M28013_IG19
+ cbnz w0, G_M28013_IG25
;; size=396 bbWeight=97.63 PerfScore 11373.81
-G_M28013_IG06: ; bbWeight=97.63, gcVars=00000000000000000000000000000000 {}, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M28013_IG11: ; bbWeight=97.63, gcVars=00000000000000000000000000000000 {}, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[x1]
; GC ptr vars -{V33}
ldr w0, [fp, #0xD1FFAB1E] // [V17 loc14+0x10]
ldr w2, [fp, #0xD1FFAB1E] // [V17 loc14+0x20]
cmp w0, w2
- bhi G_M28013_IG31
+ bhi G_M28013_IG37
ldr x2, [fp, #0xD1FFAB1E] // [V17 loc14+0x18]
; byrRegs +[x2]
ubfiz x3, x0, #1, #32
@@ -850,8 +884,8 @@ G_M28013_IG06: ; bbWeight=97.63, gcVars=00000000000000000000000000000000
movz x8, #0xD1FFAB1E
movk x8, #0xD1FFAB1E LSL #16
movk x8, #0xD1FFAB1E LSL #32
- str x8, [fp, #0x18] // [V606 cse2]
- ; GC ptr vars +{V606}
+ str x8, [fp, #0x18] // [V605 cse1]
+ ; GC ptr vars +{V605}
add x2, x8, #12
; byrRegs +[x2]
ldr x4, [fp, #0xD1FFAB1E] // [V17 loc14]
@@ -872,17 +906,17 @@ G_M28013_IG06: ; bbWeight=97.63, gcVars=00000000000000000000000000000000
; gcrRegs -[x4]
; byrRegs -[x2 x5]
; gcr arg pop 0
- cbz w0, G_M28013_IG20
+ cbz w0, G_M28013_IG26
ldr w0, [fp, #0xD1FFAB1E] // [V17 loc14+0x10]
ldr w1, [fp, #0xE0] // [V41 tmp20]
add w0, w0, w1
str w0, [fp, #0xD1FFAB1E] // [V17 loc14+0x10]
;; size=200 bbWeight=97.63 PerfScore 5516.05
-G_M28013_IG07: ; bbWeight=97.63, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref, isz
+G_M28013_IG12: ; bbWeight=97.63, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #0xD1FFAB1E] // [V17 loc14+0x10]
ldr w1, [fp, #0xD1FFAB1E] // [V17 loc14+0x20]
cmp w0, w1
- bhi G_M28013_IG31
+ bhi G_M28013_IG37
ldr x1, [fp, #0xD1FFAB1E] // [V17 loc14+0x18]
; byrRegs +[x1]
ubfiz x2, x0, #1, #32
@@ -903,7 +937,7 @@ G_M28013_IG07: ; bbWeight=97.63, gcrefRegs=8280000 {x19 x21 x27}, byrefRe
; gcr arg pop 0
ldr w0, [fp, #0xD8] // [V115 tmp94]
cmp w0, #2
- blo G_M28013_IG21
+ blo G_M28013_IG27
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -915,15 +949,15 @@ G_M28013_IG07: ; bbWeight=97.63, gcrefRegs=8280000 {x19 x21 x27}, byrefRe
add w0, w0, #2
str w0, [fp, #0xD1FFAB1E] // [V17 loc14+0x10]
ldrb w0, [fp, #0xD1FFAB1E] // [V17 loc14+0x14]
- cbnz w0, G_M28013_IG22
+ cbnz w0, G_M28013_IG28
;; size=128 bbWeight=97.63 PerfScore 3661.10
-G_M28013_IG08: ; bbWeight=97.63, gcVars=00000000000000000000000000100000 {V606}, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M28013_IG13: ; bbWeight=97.63, gcVars=00000000000000000000000000100000 {V605}, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[x2]
; GC ptr vars -{V116}
ldr w0, [fp, #0xD1FFAB1E] // [V17 loc14+0x10]
ldr w1, [fp, #0xD1FFAB1E] // [V17 loc14+0x20]
cmp w0, w1
- bhi G_M28013_IG31
+ bhi G_M28013_IG37
ldr x1, [fp, #0xD1FFAB1E] // [V17 loc14+0x18]
; byrRegs +[x1]
ubfiz x2, x0, #1, #32
@@ -957,7 +991,7 @@ G_M28013_IG08: ; bbWeight=97.63, gcVars=00000000000000000000000000100000
blr x3
; byrRegs -[x1]
; gcr arg pop 0
- ldr x8, [fp, #0x18] // [V606 cse2]
+ ldr x8, [fp, #0x18] // [V605 cse1]
; gcrRegs +[x8]
add x2, x8, #12
; byrRegs +[x2]
@@ -979,17 +1013,17 @@ G_M28013_IG08: ; bbWeight=97.63, gcVars=00000000000000000000000000100000
; gcrRegs -[x4 x8]
; byrRegs -[x2 x5]
; gcr arg pop 0
- cbz w0, G_M28013_IG23
+ cbz w0, G_M28013_IG29
ldr w0, [fp, #0xD1FFAB1E] // [V17 loc14+0x10]
ldr w1, [fp, #0xD0] // [V124 tmp103]
add w0, w0, w1
str w0, [fp, #0xD1FFAB1E] // [V17 loc14+0x10]
;; size=188 bbWeight=97.63 PerfScore 5320.80
-G_M28013_IG09: ; bbWeight=97.63, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref, isz
...
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| benchmarks.run_pgo.linux.arm64.checked.mch |
1 |
0 |
1 |
0 |
-0 |
+60 |
| benchmarks.run_tiered.linux.arm64.checked.mch |
2 |
0 |
2 |
0 |
-0 |
+208 |
| coreclr_tests.run.linux.arm64.checked.mch |
1 |
0 |
1 |
0 |
-0 |
+172 |
| libraries.crossgen2.linux.arm64.checked.mch |
1 |
0 |
1 |
0 |
-0 |
+84 |
| libraries.pmi.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| libraries_tests.run.linux.arm64.Release.mch |
1 |
0 |
1 |
0 |
-0 |
+60 |
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| realworld.run.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| smoke_tests.nativeaot.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
6 |
0 |
6 |
0 |
-0 |
+584 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.linux.arm64.checked.mch |
33,710 |
2,779 |
30,931 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_pgo.linux.arm64.checked.mch |
152,900 |
61,290 |
91,610 |
0 (0.00%) |
4 (0.00%) |
| benchmarks.run_tiered.linux.arm64.checked.mch |
63,813 |
48,019 |
15,794 |
0 (0.00%) |
1 (0.00%) |
| coreclr_tests.run.linux.arm64.checked.mch |
625,273 |
382,318 |
242,955 |
0 (0.00%) |
3 (0.00%) |
| libraries.crossgen2.linux.arm64.checked.mch |
234,496 |
15 |
234,481 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.linux.arm64.checked.mch |
295,745 |
6 |
295,739 |
0 (0.00%) |
0 (0.00%) |
| libraries_tests.run.linux.arm64.Release.mch |
744,166 |
490,908 |
253,258 |
0 (0.00%) |
0 (0.00%) |
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
304,865 |
21,599 |
283,266 |
0 (0.00%) |
0 (0.00%) |
| realworld.run.linux.arm64.checked.mch |
33,309 |
151 |
33,158 |
0 (0.00%) |
0 (0.00%) |
| smoke_tests.nativeaot.linux.arm64.checked.mch |
19,033 |
7 |
19,026 |
0 (0.00%) |
0 (0.00%) |
|
2,507,310 |
1,007,092 |
1,500,218 |
0 (0.00%) |
8 (0.00%) |
jit-analyze output
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: 80094172 (overridden on cmd)
Total bytes of diff: 80094232 (overridden on cmd)
Total bytes of delta: 60 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
60 : 102735.dasm (7.61 % of base)
1 total files with Code Size differences (0 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
60 (7.61 % of base) : 102735.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
Top method regressions (percentages):
60 (7.61 % of base) : 102735.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
1 total methods with Code Size differences (0 improved, 1 regressed).
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: 24600952 (overridden on cmd)
Total bytes of diff: 24601160 (overridden on cmd)
Total bytes of delta: 208 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
148 : 35206.dasm (16.02 % of base)
60 : 50853.dasm (8.02 % of base)
2 total files with Code Size differences (0 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
148 (16.02 % of base) : 35206.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
60 (8.02 % of base) : 50853.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
Top method regressions (percentages):
148 (16.02 % of base) : 35206.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
60 (8.02 % of base) : 50853.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
2 total methods with Code Size differences (0 improved, 2 regressed).
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: 508772940 (overridden on cmd)
Total bytes of diff: 508773112 (overridden on cmd)
Total bytes of delta: 172 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
172 : 519607.dasm (47.78 % of base)
1 total files with Code Size differences (0 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
172 (47.78 % of base) : 519607.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
Top method regressions (percentages):
172 (47.78 % of base) : 519607.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
1 total methods with Code Size differences (0 improved, 1 regressed).
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: 55844024 (overridden on cmd)
Total bytes of diff: 55844108 (overridden on cmd)
Total bytes of delta: 84 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
84 : 178155.dasm (8.47 % of base)
1 total files with Code Size differences (0 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
84 (8.47 % of base) : 178155.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
Top method regressions (percentages):
84 (8.47 % of base) : 178155.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
1 total methods with Code Size differences (0 improved, 1 regressed).
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: 395688768 (overridden on cmd)
Total bytes of diff: 395688828 (overridden on cmd)
Total bytes of delta: 60 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
60 : 303165.dasm (2.16 % of base)
1 total files with Code Size differences (0 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
60 (2.16 % of base) : 303165.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
Top method regressions (percentages):
60 (2.16 % of base) : 303165.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
1 total methods with Code Size differences (0 improved, 1 regressed).
linux x64
Diffs are based on 2,517,901 contexts (991,070 MinOpts, 1,526,831 FullOpts).
MISSED contexts: base: 0 (0.00%), diff: 8 (0.00%)
Overall (+567 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.linux.x64.checked.mch |
71,590,553 |
+51 |
| benchmarks.run_tiered.linux.x64.checked.mch |
21,435,525 |
+218 |
| coreclr_tests.run.linux.x64.checked.mch |
403,710,934 |
+133 |
| libraries.crossgen2.linux.x64.checked.mch |
38,727,133 |
+59 |
| libraries_tests.run.linux.x64.Release.mch |
337,107,837 |
+106 |
FullOpts (+567 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.linux.x64.checked.mch |
47,790,564 |
+51 |
| benchmarks.run_tiered.linux.x64.checked.mch |
3,694,745 |
+218 |
| coreclr_tests.run.linux.x64.checked.mch |
123,956,232 |
+133 |
| libraries.crossgen2.linux.x64.checked.mch |
38,725,935 |
+59 |
| libraries_tests.run.linux.x64.Release.mch |
153,348,144 |
+106 |
Example diffs
benchmarks.run_pgo.linux.x64.checked.mch
+51 (+6.85%) : 112826.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
@@ -10,16 +10,16 @@
; 0 inlinees with PGO data; 0 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T12] ( 12, 103.73) ref -> rdi class-hnd single-def <float[][]>
+; V00 arg0 [V00,T12] ( 15, 103.93) ref -> rdi class-hnd single-def <float[][]>
; V01 arg1 [V01,T13] ( 11, 103.73) ref -> rsi class-hnd single-def <int[][]>
; V02 arg2 [V02,T21] ( 3, 2.21) ref -> [rbp+0x60] class-hnd single-def tier0-frame <double[]>
; V03 arg3 [V03,T14] ( 4, 101.79) ref -> rcx class-hnd single-def <JetStream.SampleVarianceUpperTriangularMatrix>
-; V04 arg4 [V04,T20] ( 4, 2.62) int -> r8 single-def
+; V04 arg4 [V04,T20] ( 5, 2.62) int -> r8 single-def
;* V05 loc0 [V05 ] ( 0, 0 ) int -> zero-ref
;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc2 [V07,T05] ( 20,1698.20) int -> rax
-; V08 loc3 [V08,T16] ( 5, 100.21) ref -> r11 class-hnd <float[]>
-; V09 loc4 [V09,T11] ( 12, 208.20) int -> r10
+; V07 loc2 [V07,T05] ( 25,1698.20) int -> rax
+; V08 loc3 [V08,T16] ( 6, 100.21) ref -> r11 class-hnd <float[]>
+; V09 loc4 [V09,T11] ( 13, 208.20) int -> r10
;* V10 loc5 [V10 ] ( 0, 0 ) ubyte -> zero-ref
; V11 loc6 [V11,T07] ( 24,1300.09) int -> r9
; V12 loc7 [V12,T27] ( 4, 199.58) float -> mm0
@@ -42,7 +42,7 @@
; V29 tmp14 [V29,T24] ( 6, 0.60) ref -> rdx "arr expr"
; V30 cse0 [V30,T09] ( 6, 598.73) ref -> r13 multi-def "CSE - moderate"
; V31 cse1 [V31,T10] ( 16, 399.56) int -> r12 multi-def "CSE - moderate"
-; V32 cse2 [V32,T15] ( 7, 100.84) int -> rbx "CSE - moderate"
+; V32 cse2 [V32,T15] ( 9, 101.05) int -> rbx "CSE - moderate"
; V33 cse3 [V33,T17] ( 4, 100.00) int -> r15 hoist multi-def "CSE - moderate"
; V34 cse4 [V34,T18] ( 4, 100.00) long -> r14 hoist multi-def "CSE - moderate"
;
@@ -79,94 +79,119 @@ G_M56974_IG02: ; bbWeight=0.21, gcrefRegs=08C6 {rcx rdx rsi rdi r11}, byr
; GC ptr vars +{V02}
mov ebx, dword ptr [rdx+0x08]
cmp ebx, r9d
- jle G_M56974_IG11
+ jle G_M56974_IG16
;; size=16 bbWeight=0.21 PerfScore 0.90
G_M56974_IG03: ; bbWeight=0.21, gcVars=0000000000200000 {V02}, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdx]
test rsi, rsi
- je G_M56974_IG21
+ je G_M56974_IG25
test rdi, rdi
- je G_M56974_IG21
+ je G_M56974_IG25
test r9d, r9d
- jl G_M56974_IG21
+ jl G_M56974_IG25
cmp dword ptr [rsi+0x08], ebx
- jl G_M56974_IG21
+ jl G_M56974_IG25
cmp dword ptr [rdi+0x08], ebx
- jl G_M56974_IG21
+ jl G_M56974_IG25
mov r15d, dword ptr [r11+0x08]
mov r14d, r10d
;; size=52 bbWeight=0.21 PerfScore 2.94
G_M56974_IG04: ; bbWeight=98.79, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref, isz
cmp r10d, r15d
- jae G_M56974_IG32
+ jae G_M56974_IG36
vmovss xmm0, dword ptr [r11+4*r14+0x10]
mov r13, gword ptr [rcx+0x08]
; gcrRegs +[r13]
cmp dword ptr [r13+0x08], eax
jle SHORT G_M56974_IG06
;; size=26 bbWeight=98.79 PerfScore 1111.40
-G_M56974_IG05: ; bbWeight=395.16, gcrefRegs=28C2 {rcx rsi rdi r11 r13}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG05: ; bbWeight=395.16, gcrefRegs=28C2 {rcx rsi rdi r11 r13}, byrefRegs=0000 {}, byref
cmp eax, r9d
- jne SHORT G_M56974_IG14
- ;; size=5 bbWeight=395.16 PerfScore 493.96
+ jne G_M56974_IG18
+ ;; size=9 bbWeight=395.16 PerfScore 493.96
G_M56974_IG06: ; bbWeight=395.16, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref
; gcrRegs -[r13]
vxorps xmm1, xmm1, xmm1
- jmp G_M56974_IG15
+ jmp G_M56974_IG19
;; size=9 bbWeight=395.16 PerfScore 922.05
G_M56974_IG07: ; bbWeight=0.21, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r11]
- cmp eax, dword ptr [rdi+0x08]
- jae G_M56974_IG32
+ test rdi, rdi
+ je SHORT G_M56974_IG15
+ test eax, eax
+ jl SHORT G_M56974_IG15
+ cmp dword ptr [rdi+0x08], ebx
+ jl SHORT G_M56974_IG15
+ ;; size=14 bbWeight=0.21 PerfScore 1.34
+G_M56974_IG08: ; bbWeight=0.64, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M56974_IG10
+ ;; size=2 bbWeight=0.64 PerfScore 1.29
+G_M56974_IG09: ; bbWeight=0.21, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov r11d, eax
mov r11, gword ptr [rdi+8*r11+0x10]
; gcrRegs +[r11]
xor r10d, r10d
test r8d, r8d
- jg SHORT G_M56974_IG09
- ;; size=25 bbWeight=0.21 PerfScore 1.64
-G_M56974_IG08: ; bbWeight=0.21, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ jg SHORT G_M56974_IG12
+ ;; size=16 bbWeight=0.21 PerfScore 0.78
+G_M56974_IG10: ; bbWeight=0.21, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r11]
inc eax
cmp ebx, eax
- jle G_M56974_IG33
- jmp SHORT G_M56974_IG07
- ;; size=12 bbWeight=0.21 PerfScore 0.74
-G_M56974_IG09: ; bbWeight=0.21, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref, isz
+ jle G_M56974_IG37
+ jmp SHORT G_M56974_IG09
+ ;; size=12 bbWeight=0.21 PerfScore 0.73
+G_M56974_IG11: ; bbWeight=0.00, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ cmp eax, dword ptr [rdi+0x08]
+ jae G_M56974_IG36
+ mov r11d, eax
+ mov r11, gword ptr [rdi+8*r11+0x10]
; gcrRegs +[r11]
+ xor r10d, r10d
+ test r8d, r8d
+ jle SHORT G_M56974_IG15
+ ;; size=25 bbWeight=0.00 PerfScore 0.02
+G_M56974_IG12: ; bbWeight=0.21, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref, isz
cmp eax, dword ptr [rsi+0x08]
- jae G_M56974_IG32
+ jae G_M56974_IG36
mov r9d, eax
mov r9, gword ptr [rsi+8*r9+0x10]
; gcrRegs +[r9]
test r10d, r10d
- jl SHORT G_M56974_IG11
+ jl SHORT G_M56974_IG16
;; size=22 bbWeight=0.21 PerfScore 1.58
-G_M56974_IG10: ; bbWeight=6.75, gcrefRegs=0AC2 {rcx rsi rdi r9 r11}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG13: ; bbWeight=6.75, gcrefRegs=0AC2 {rcx rsi rdi r9 r11}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [r9+0x08], r10d
- jg SHORT G_M56974_IG13
+ jle SHORT G_M56974_IG16
;; size=6 bbWeight=6.75 PerfScore 27.01
-G_M56974_IG11: ; bbWeight=0.41, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG14: ; bbWeight=0.21, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref
; gcrRegs -[r9]
- inc r10d
- cmp r10d, r8d
- jl SHORT G_M56974_IG09
- ;; size=8 bbWeight=0.41 PerfScore 0.62
-G_M56974_IG12: ; bbWeight=0.21, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r11]
- jmp SHORT G_M56974_IG08
- ;; size=2 bbWeight=0.21 PerfScore 0.41
-G_M56974_IG13: ; bbWeight=0.21, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r11]
lea r9d, [rax+0x01]
mov rdx, gword ptr [rbp+0x60]
; gcrRegs +[rdx]
jmp G_M56974_IG02
;; size=13 bbWeight=0.21 PerfScore 0.74
-G_M56974_IG14: ; bbWeight=395.16, gcrefRegs=28C2 {rcx rsi rdi r11 r13}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdx] +[r13]
+G_M56974_IG15: ; bbWeight=0.00, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdx r11]
+ inc eax
+ cmp ebx, eax
+ jle G_M56974_IG37
+ jmp SHORT G_M56974_IG11
+ ;; size=12 bbWeight=0.00 PerfScore 0.01
+G_M56974_IG16: ; bbWeight=0.41, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r11]
+ inc r10d
+ cmp r10d, r8d
+ jl SHORT G_M56974_IG12
+ ;; size=8 bbWeight=0.41 PerfScore 0.62
+G_M56974_IG17: ; bbWeight=0.21, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r11]
+ jmp G_M56974_IG07
+ ;; size=5 bbWeight=0.21 PerfScore 0.41
+G_M56974_IG18: ; bbWeight=395.16, gcrefRegs=28C2 {rcx rsi rdi r11 r13}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r11 r13]
cmp eax, dword ptr [r13+0x08]
- jae G_M56974_IG32
+ jae G_M56974_IG36
mov r12d, eax
mov r12, gword ptr [r13+8*r12+0x10]
; gcrRegs +[r12]
@@ -175,10 +200,10 @@ G_M56974_IG14: ; bbWeight=395.16, gcrefRegs=28C2 {rcx rsi rdi r11 r13}, b
sub r13d, eax
dec r13d
cmp r13d, dword ptr [r12+0x08]
- jae G_M56974_IG32
+ jae G_M56974_IG36
vcvtss2sd xmm1, xmm1, dword ptr [r12+4*r13+0x10]
;; size=45 bbWeight=395.16 PerfScore 7112.96
-G_M56974_IG15: ; bbWeight=98.79, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG19: ; bbWeight=98.79, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r12]
vcvtss2sd xmm0, xmm0, xmm0
vaddsd xmm0, xmm0, xmm1
@@ -188,39 +213,39 @@ G_M56974_IG15: ; bbWeight=98.79, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefR
lea r12d, [r10+0x01]
mov edx, r12d
test edx, edx
- jl SHORT G_M56974_IG20
+ jl SHORT G_M56974_IG24
;; size=27 bbWeight=98.79 PerfScore 1111.40
-G_M56974_IG16: ; bbWeight=3161.31, gcrefRegs=28C2 {rcx rsi rdi r11 r13}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG20: ; bbWeight=3161.31, gcrefRegs=28C2 {rcx rsi rdi r11 r13}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [r13+0x08], edx
- jle SHORT G_M56974_IG20
+ jle SHORT G_M56974_IG24
;; size=6 bbWeight=3161.31 PerfScore 12645.26
-G_M56974_IG17: ; bbWeight=98.79, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG21: ; bbWeight=98.79, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r13]
mov edx, r9d
mov rdx, gword ptr [rdi+8*rdx+0x10]
; gcrRegs +[rdx]
cmp r12d, dword ptr [rdx+0x08]
- jae G_M56974_IG32
+ jae G_M56974_IG36
mov r13d, r12d
vcvtss2sd xmm1, xmm1, dword ptr [rdx+4*r13+0x10]
vucomisd xmm1, xmm0
- ja SHORT G_M56974_IG20
+ ja SHORT G_M56974_IG24
;; size=34 bbWeight=98.79 PerfScore 1630.05
-G_M56974_IG18: ; bbWeight=98.79, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref
+G_M56974_IG22: ; bbWeight=98.79, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
inc r9d
cmp ebx, r9d
jg G_M56974_IG04
;; size=12 bbWeight=98.79 PerfScore 148.19
-G_M56974_IG19: ; bbWeight=0.41, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref
- jmp G_M56974_IG11
+G_M56974_IG23: ; bbWeight=0.41, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref
+ jmp G_M56974_IG16
;; size=5 bbWeight=0.41 PerfScore 0.82
-G_M56974_IG20: ; bbWeight=0.10, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG24: ; bbWeight=0.10, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref, isz
mov edx, r9d
mov rdx, gword ptr [rdi+8*rdx+0x10]
; gcrRegs +[rdx]
cmp r12d, dword ptr [rdx+0x08]
- jae G_M56974_IG32
+ jae G_M56974_IG36
...
benchmarks.run_tiered.linux.x64.checked.mch
+44 (+6.45%) : 54552.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
@@ -9,16 +9,16 @@
; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T08] ( 12, 12.04) ref -> rbx class-hnd single-def <float[][]>
+; V00 arg0 [V00,T08] ( 15, 12.06) ref -> rbx class-hnd single-def <float[][]>
; V01 arg1 [V01,T09] ( 9, 12.04) ref -> r15 class-hnd single-def <int[][]>
; V02 arg2 [V02,T19] ( 3, 3 ) ref -> r12 class-hnd single-def <double[]>
; V03 arg3 [V03,T18] ( 4, 6 ) ref -> r13 class-hnd single-def <JetStream.SampleVarianceUpperTriangularMatrix>
-; V04 arg4 [V04,T10] ( 4, 12 ) int -> r14 single-def
+; V04 arg4 [V04,T10] ( 5, 12 ) int -> r14 single-def
;* V05 loc0 [V05 ] ( 0, 0 ) int -> zero-ref
;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc2 [V07,T03] ( 12, 38.50) int -> [rbp+0x48] tier0-frame
-; V08 loc3 [V08,T14] ( 5, 10 ) ref -> [rbp+0x40] class-hnd tier0-frame <float[]>
-; V09 loc4 [V09,T00] ( 12, 56 ) int -> [rbp+0x3C] tier0-frame
+; V07 loc2 [V07,T03] ( 17, 37.52) int -> [rbp+0x48] tier0-frame
+; V08 loc3 [V08,T14] ( 6, 10 ) ref -> [rbp+0x40] class-hnd tier0-frame <float[]>
+; V09 loc4 [V09,T00] ( 13, 56 ) int -> [rbp+0x3C] tier0-frame
;* V10 loc5 [V10 ] ( 0, 0 ) ubyte -> zero-ref
; V11 loc6 [V11,T05] ( 20, 26.58) int -> [rbp+0x34] tier0-frame
;* V12 loc7 [V12 ] ( 0, 0 ) float -> zero-ref
@@ -37,7 +37,7 @@
; V25 tmp10 [V25,T13] ( 6, 12 ) ref -> rax "arr expr"
; V26 cse0 [V26,T20] ( 3, 0.10) ref -> rax "CSE - conservative"
; V27 cse1 [V27,T17] ( 3, 9.90) ref -> rax "CSE - moderate"
-; V28 cse2 [V28,T07] ( 7, 16 ) int -> [rbp-0x2C] spill-single-def "CSE - moderate"
+; V28 cse2 [V28,T07] ( 9, 17 ) int -> [rbp-0x2C] spill-single-def "CSE - moderate"
; V29 cse3 [V29,T06] ( 16, 20 ) int -> r9 multi-def "CSE - moderate"
; TEMP_01 double -> [rbp-0x34]
;
@@ -69,27 +69,55 @@ G_M56974_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov edi, dword ptr [rbp+0x3C]
mov ecx, dword ptr [rbp+0x34]
;; size=90 bbWeight=0.01 PerfScore 0.28
-G_M56974_IG02: ; bbWeight=0.01, gcrefRegs=B108 {rbx r8 r12 r13 r15}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M56974_IG11
- ;; size=2 bbWeight=0.01 PerfScore 0.02
-G_M56974_IG03: ; bbWeight=2, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG02: ; bbWeight=0.01, gcrefRegs=B108 {rbx r8 r12 r13 r15}, byrefRegs=0000 {}, byref
+ jmp G_M56974_IG15
+ ;; size=5 bbWeight=0.01 PerfScore 0.02
+G_M56974_IG03: ; bbWeight=1, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r8]
- cmp eax, dword ptr [rbx+0x08]
- jae G_M56974_IG28
+ test rbx, rbx
+ je SHORT G_M56974_IG08
+ test eax, eax
+ jl SHORT G_M56974_IG08
+ cmp dword ptr [rbx+0x08], r9d
+ jl SHORT G_M56974_IG08
+ jmp SHORT G_M56974_IG05
+ ;; size=17 bbWeight=1 PerfScore 8.50
+G_M56974_IG04: ; bbWeight=1.98, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
mov edi, eax
mov r8, gword ptr [rbx+8*rdi+0x10]
; gcrRegs +[r8]
xor edi, edi
test r14d, r14d
- jg SHORT G_M56974_IG06
- ;; size=23 bbWeight=2 PerfScore 15.50
-G_M56974_IG04: ; bbWeight=8, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+ jg SHORT G_M56974_IG10
+ ;; size=14 bbWeight=1.98 PerfScore 7.43
+G_M56974_IG05: ; bbWeight=7.92, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r8]
inc eax
cmp r9d, eax
- jg SHORT G_M56974_IG03
- ;; size=7 bbWeight=8 PerfScore 12.00
-G_M56974_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jg SHORT G_M56974_IG04
+ ;; size=7 bbWeight=7.92 PerfScore 11.88
+G_M56974_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx r12-r13 r15]
+ jmp SHORT G_M56974_IG09
+ ;; size=2 bbWeight=1 PerfScore 2.00
+G_M56974_IG07: ; bbWeight=0.02, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rbx r12-r13 r15]
+ cmp eax, dword ptr [rbx+0x08]
+ jae G_M56974_IG32
+ mov r8d, eax
+ mov r8, gword ptr [rbx+8*r8+0x10]
+ ; gcrRegs +[r8]
+ xor edi, edi
+ test r14d, r14d
+ jg SHORT G_M56974_IG10
+ ;; size=24 bbWeight=0.02 PerfScore 0.16
+G_M56974_IG08: ; bbWeight=0.08, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r8]
+ inc eax
+ cmp r9d, eax
+ jg SHORT G_M56974_IG07
+ ;; size=7 bbWeight=0.08 PerfScore 0.12
+G_M56974_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx r12-r13 r15]
add rsp, 184
pop rbx
@@ -100,53 +128,53 @@ G_M56974_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
pop rbp
ret
;; size=18 bbWeight=1 PerfScore 4.25
-G_M56974_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=B108 {rbx r8 r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M56974_IG10: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=B108 {rbx r8 r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx r8 r12-r13 r15]
cmp eax, dword ptr [r15+0x08]
- jae G_M56974_IG28
+ jae G_M56974_IG32
mov ecx, eax
mov rsi, gword ptr [r15+8*rcx+0x10]
; gcrRegs +[rsi]
test edi, edi
- jl SHORT G_M56974_IG08
+ jl SHORT G_M56974_IG12
;; size=21 bbWeight=2 PerfScore 15.00
-G_M56974_IG07: ; bbWeight=16, gcrefRegs=B148 {rbx rsi r8 r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG11: ; bbWeight=16, gcrefRegs=B148 {rbx rsi r8 r12 r13 r15}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rsi+0x08], edi
- jg SHORT G_M56974_IG10
+ jg SHORT G_M56974_IG14
;; size=5 bbWeight=16 PerfScore 64.00
-G_M56974_IG08: ; bbWeight=8, gcrefRegs=B108 {rbx r8 r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG12: ; bbWeight=8, gcrefRegs=B108 {rbx r8 r12 r13 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
inc edi
cmp edi, r14d
- jl SHORT G_M56974_IG06
+ jl SHORT G_M56974_IG10
;; size=7 bbWeight=8 PerfScore 12.00
-G_M56974_IG09: ; bbWeight=1, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG13: ; bbWeight=1, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r8]
- jmp SHORT G_M56974_IG04
+ jmp SHORT G_M56974_IG03
;; size=2 bbWeight=1 PerfScore 2.00
-G_M56974_IG10: ; bbWeight=0.50, gcrefRegs=B108 {rbx r8 r12 r13 r15}, byrefRegs=0000 {}, byref
+G_M56974_IG14: ; bbWeight=0.50, gcrefRegs=B108 {rbx r8 r12 r13 r15}, byrefRegs=0000 {}, byref
; gcrRegs +[r8]
lea ecx, [rax+0x01]
;; size=3 bbWeight=0.50 PerfScore 0.25
-G_M56974_IG11: ; bbWeight=1, gcrefRegs=B108 {rbx r8 r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG15: ; bbWeight=1, gcrefRegs=B108 {rbx r8 r12 r13 r15}, byrefRegs=0000 {}, byref, isz
mov r9d, dword ptr [r12+0x08]
mov dword ptr [rbp-0x2C], r9d
cmp r9d, ecx
- jle SHORT G_M56974_IG08
+ jle SHORT G_M56974_IG12
test r15, r15
- je G_M56974_IG22
+ je G_M56974_IG26
test rbx, rbx
- je G_M56974_IG21
+ je G_M56974_IG25
test ecx, ecx
- jl G_M56974_IG20
+ jl G_M56974_IG24
cmp dword ptr [r15+0x08], r9d
- jl G_M56974_IG19
+ jl G_M56974_IG23
cmp dword ptr [rbx+0x08], r9d
- jl G_M56974_IG22
+ jl G_M56974_IG26
;; size=60 bbWeight=1 PerfScore 16.00
-G_M56974_IG12: ; bbWeight=3.96, gcrefRegs=B108 {rbx r8 r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG16: ; bbWeight=3.96, gcrefRegs=B108 {rbx r8 r12 r13 r15}, byrefRegs=0000 {}, byref, isz
cmp edi, dword ptr [r8+0x08]
- jae G_M56974_IG28
+ jae G_M56974_IG32
mov dword ptr [rbp+0x3C], edi
mov esi, edi
mov gword ptr [rbp+0x40], r8
@@ -174,79 +202,79 @@ G_M56974_IG12: ; bbWeight=3.96, gcrefRegs=B108 {rbx r8 r12 r13 r15}, byre
lea r9d, [r8+0x01]
mov r10d, r9d
test r10d, r10d
- jl SHORT G_M56974_IG15
+ jl SHORT G_M56974_IG19
;; size=86 bbWeight=3.96 PerfScore 136.62
-G_M56974_IG13: ; bbWeight=15.84, gcrefRegs=B00B {rax rcx rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG17: ; bbWeight=15.84, gcrefRegs=B00B {rax rcx rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rcx+0x08], r10d
- jle SHORT G_M56974_IG15
+ jle SHORT G_M56974_IG19
;; size=6 bbWeight=15.84 PerfScore 63.36
-G_M56974_IG14: ; bbWeight=1.98, gcrefRegs=B009 {rax rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG18: ; bbWeight=1.98, gcrefRegs=B009 {rax rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
mov esi, edi
mov r11, gword ptr [rbx+8*rsi+0x10]
; gcrRegs +[r11]
cmp r9d, dword ptr [r11+0x08]
- jae G_M56974_IG28
+ jae G_M56974_IG32
mov esi, r9d
vcvtss2sd xmm1, xmm1, dword ptr [r11+4*rsi+0x10]
vucomisd xmm1, xmm0
- jbe SHORT G_M56974_IG18
+ jbe SHORT G_M56974_IG22
;; size=33 bbWeight=1.98 PerfScore 32.67
-G_M56974_IG15: ; bbWeight=1.98, gcrefRegs=B009 {rax rbx r12 r13 r15}, byrefRegs=0000 {}, byref
+G_M56974_IG19: ; bbWeight=1.98, gcrefRegs=B009 {rax rbx r12 r13 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r11]
mov esi, edi
mov rdx, gword ptr [rbx+8*rsi+0x10]
; gcrRegs +[rdx]
cmp r9d, dword ptr [rdx+0x08]
- jae G_M56974_IG28
+ jae G_M56974_IG32
mov esi, r9d
vcvtsd2ss xmm0, xmm0, xmm0
vmovss dword ptr [rdx+4*rsi+0x10], xmm0
cmp r9d, dword ptr [rax+0x08]
- jae G_M56974_IG28
+ jae G_M56974_IG32
mov esi, r9d
mov ecx, dword ptr [rbp+0x48]
mov dword ptr [rax+4*rsi+0x10], ecx
;; size=50 bbWeight=1.98 PerfScore 37.12
-G_M56974_IG16: ; bbWeight=3.96, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG20: ; bbWeight=3.96, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rdx]
inc edi
cmp dword ptr [rbp-0x2C], edi
- jg SHORT G_M56974_IG17
+ jg SHORT G_M56974_IG21
mov eax, ecx
mov edi, r8d
mov r8, gword ptr [rbp+0x40]
; gcrRegs +[r8]
mov r9d, dword ptr [rbp-0x2C]
- jmp G_M56974_IG08
+ jmp G_M56974_IG12
;; size=25 bbWeight=3.96 PerfScore 30.69
-G_M56974_IG17: ; bbWeight=1.98, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref
+G_M56974_IG21: ; bbWeight=1.98, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r8]
mov eax, ecx
mov ecx, edi
mov edi, r8d
mov r8, gword ptr [rbp+0x40]
; gcrRegs +[r8]
- jmp G_M56974_IG12
+ jmp G_M56974_IG16
;; size=16 bbWeight=1.98 PerfScore 7.42
-G_M56974_IG18: ; bbWeight=0.99, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG22: ; bbWeight=0.99, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r8]
mov ecx, dword ptr [rbp+0x48]
- jmp SHORT G_M56974_IG16
...
coreclr_tests.run.linux.x64.checked.mch
+133 (+48.90%) : 290999.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
@@ -10,17 +10,16 @@
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T06] ( 4, 3.04) ref -> rbx class-hnd single-def <System.Collections.Generic.List`1[NamedSet][]>
-; V01 loc0 [V01,T07] ( 5, 2.59) int -> r12
-; V02 loc1 [V02,T02] ( 8,123.42) ref -> r13 class-hnd <System.Collections.Generic.List`1[NamedSet]>
-; V03 loc2 [V03,T08] ( 2, 1.56) ubyte -> r14
-; V04 loc3 [V04,T03] ( 9, 74.67) int -> r15
-; V05 loc4 [V05,T01] ( 8,130.10) int -> r14
+; V00 arg0 [V00,T06] ( 8, 3.53) ref -> rbx class-hnd single-def <System.Collections.Generic.List`1[NamedSet][]>
+; V01 loc0 [V01,T07] ( 10, 2.57) int -> r12
+; V02 loc1 [V02,T02] ( 14,123.42) ref -> r13 class-hnd <System.Collections.Generic.List`1[NamedSet]>
+; V03 loc2 [V03,T08] ( 4, 1.56) ubyte -> r15
+; V04 loc3 [V04,T03] ( 18, 74.67) int -> r14
+; V05 loc4 [V05,T01] ( 10,130.10) int -> r14
; V06 loc5 [V06,T00] ( 6,380.62) int -> r15
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T04] ( 3, 63.11) ref -> rdi class-hnd "Inlining Arg" <<unknown class>>
-; V09 tmp2 [V09,T05] ( 3, 63.11) ref -> rdi "arr expr"
-; V10 cse0 [V10,T09] ( 3, 1.56) int -> rdi "CSE - moderate"
+; V08 tmp1 [V08,T04] ( 6, 63.11) ref -> rcx class-hnd "Inlining Arg" <<unknown class>>
+; V09 tmp2 [V09,T05] ( 6, 63.11) ref -> rax "arr expr"
;
; Lcl frame size = 8
@@ -42,70 +41,132 @@ G_M3612_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r14d, dword ptr [rbp+0x24]
mov r15d, dword ptr [rbp+0x20]
;; size=71 bbWeight=1 PerfScore 18.75
-G_M3612_IG02: ; bbWeight=1, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M3612_IG10
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M3612_IG03: ; bbWeight=0.52, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M3612_IG02: ; bbWeight=1, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
+ jmp G_M3612_IG17
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M3612_IG03: ; bbWeight=0.51, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[r13]
- cmp r12d, edi
- jae G_M3612_IG14
mov edi, r12d
mov r13, gword ptr [rbx+8*rdi+0x10]
; gcrRegs +[r13]
- ;; size=17 bbWeight=0.52 PerfScore 1.81
-G_M3612_IG04: ; bbWeight=0.52, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
- xor r14d, r14d
- mov r15d, dword ptr [r13+0x10]
- add r15d, -2
- js SHORT G_M3612_IG06
- ;; size=13 bbWeight=0.52 PerfScore 1.81
-G_M3612_IG05: ; bbWeight=10.52, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
- cmp r15d, dword ptr [r13+0x10]
- jae G_M3612_IG18
- mov rdi, gword ptr [r13+0x08]
- ; gcrRegs +[rdi]
- cmp r15d, dword ptr [rdi+0x08]
- jae SHORT G_M3612_IG14
- mov esi, r15d
- mov rdi, gword ptr [rdi+8*rsi+0x10]
- mov rdi, gword ptr [rdi+0x08]
- mov esi, dword ptr [rdi+0x28]
- sub esi, dword ptr [rdi+0x30]
- je SHORT G_M3612_IG04
- mov rdi, r13
- mov esi, r15d
- call [<unknown method>]
- ; gcrRegs -[rdi]
- ; gcr arg pop 0
- dec r15d
- jns SHORT G_M3612_IG05
- ;; size=57 bbWeight=10.52 PerfScore 262.96
-G_M3612_IG06: ; bbWeight=1.04, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
- test r14d, r14d
- jne SHORT G_M3612_IG04
- ;; size=5 bbWeight=1.04 PerfScore 1.30
-G_M3612_IG07: ; bbWeight=0.52, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+ ;; size=8 bbWeight=0.51 PerfScore 1.15
+G_M3612_IG04: ; bbWeight=0.51, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+ xor r15d, r15d
mov r14d, dword ptr [r13+0x10]
add r14d, -2
- jns SHORT G_M3612_IG09
- ;; size=10 bbWeight=0.52 PerfScore 1.68
-G_M3612_IG08: ; bbWeight=0.52, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ js SHORT G_M3612_IG06
+ ;; size=13 bbWeight=0.51 PerfScore 1.80
+G_M3612_IG05: ; bbWeight=10.41, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+ cmp r14d, dword ptr [r13+0x10]
+ jae G_M3612_IG25
+ mov rax, gword ptr [r13+0x08]
+ ; gcrRegs +[rax]
+ cmp r14d, dword ptr [rax+0x08]
+ jae G_M3612_IG21
+ mov edi, r14d
+ mov rdi, gword ptr [rax+8*rdi+0x10]
+ ; gcrRegs +[rdi]
+ mov rcx, gword ptr [rdi+0x08]
+ ; gcrRegs +[rcx]
+ mov edi, dword ptr [rcx+0x28]
+ ; gcrRegs -[rdi]
+ sub edi, dword ptr [rcx+0x30]
+ je SHORT G_M3612_IG04
+ mov rdi, r13
+ ; gcrRegs +[rdi]
+ mov esi, r14d
+ call [<unknown method>]
+ ; gcrRegs -[rax rcx rdi]
+ ; gcr arg pop 0
+ dec r14d
+ jns SHORT G_M3612_IG05
+ ;; size=61 bbWeight=10.41 PerfScore 260.33
+G_M3612_IG06: ; bbWeight=1.03, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+ test r15d, r15d
+ jne SHORT G_M3612_IG04
+ ;; size=5 bbWeight=1.03 PerfScore 1.28
+G_M3612_IG07: ; bbWeight=0.51, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
+ mov r14d, dword ptr [r13+0x10]
+ add r14d, -2
+ jns G_M3612_IG16
+ ;; size=14 bbWeight=0.51 PerfScore 1.67
+G_M3612_IG08: ; bbWeight=0.51, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r13]
inc r12d
- mov edi, dword ptr [rbx+0x08]
- cmp edi, r12d
- jle SHORT G_M3612_IG15
+ cmp dword ptr [rbx+0x08], r12d
+ jle G_M3612_IG22
jmp SHORT G_M3612_IG03
- ;; size=13 bbWeight=0.52 PerfScore 2.85
-G_M3612_IG09: ; bbWeight=9.69, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
+ ;; size=15 bbWeight=0.51 PerfScore 3.21
+G_M3612_IG09: ; bbWeight=0.49, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ test rbx, rbx
+ je SHORT G_M3612_IG15
+ test r12d, r12d
+ jl SHORT G_M3612_IG15
+ jmp SHORT G_M3612_IG08
+ ;; size=12 bbWeight=0.49 PerfScore 2.21
+G_M3612_IG10: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ cmp r12d, dword ptr [rbx+0x08]
+ jae G_M3612_IG21
+ mov edi, r12d
+ mov r13, gword ptr [rbx+8*rdi+0x10]
+ ; gcrRegs +[r13]
+ ;; size=18 bbWeight=0.01 PerfScore 0.03
+G_M3612_IG11: ; bbWeight=0.01, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+ xor r15d, r15d
+ mov r14d, dword ptr [r13+0x10]
+ add r14d, -2
+ js SHORT G_M3612_IG13
+ ;; size=13 bbWeight=0.01 PerfScore 0.02
+G_M3612_IG12: ; bbWeight=0.11, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+ cmp r14d, dword ptr [r13+0x10]
+ jae G_M3612_IG25
+ mov rax, gword ptr [r13+0x08]
+ ; gcrRegs +[rax]
+ cmp r14d, dword ptr [rax+0x08]
+ jae SHORT G_M3612_IG21
+ mov edi, r14d
+ mov rdi, gword ptr [rax+8*rdi+0x10]
+ ; gcrRegs +[rdi]
+ mov rcx, gword ptr [rdi+0x08]
+ ; gcrRegs +[rcx]
+ mov edi, dword ptr [rcx+0x28]
+ ; gcrRegs -[rdi]
+ sub edi, dword ptr [rcx+0x30]
+ je SHORT G_M3612_IG11
+ mov rdi, r13
+ ; gcrRegs +[rdi]
+ mov esi, r14d
+ call [<unknown method>]
+ ; gcrRegs -[rax rcx rdi]
+ ; gcr arg pop 0
+ dec r14d
+ jns SHORT G_M3612_IG12
+ ;; size=57 bbWeight=0.11 PerfScore 2.63
+G_M3612_IG13: ; bbWeight=0.01, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+ test r15d, r15d
+ jne SHORT G_M3612_IG11
+ ;; size=5 bbWeight=0.01 PerfScore 0.01
+G_M3612_IG14: ; bbWeight=0.01, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+ mov r14d, dword ptr [r13+0x10]
+ add r14d, -2
+ jns SHORT G_M3612_IG16
+ ;; size=10 bbWeight=0.01 PerfScore 0.02
+G_M3612_IG15: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r13]
+ inc r12d
+ cmp dword ptr [rbx+0x08], r12d
+ jle SHORT G_M3612_IG22
+ jmp SHORT G_M3612_IG10
+ ;; size=11 bbWeight=0.01 PerfScore 0.03
+G_M3612_IG16: ; bbWeight=9.69, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
; gcrRegs +[r13]
lea r15d, [r14-0x01]
;; size=4 bbWeight=9.69 PerfScore 4.84
-G_M3612_IG10: ; bbWeight=9.69, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+G_M3612_IG17: ; bbWeight=9.69, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
test r15d, r15d
- jl SHORT G_M3612_IG12
+ jl SHORT G_M3612_IG19
;; size=5 bbWeight=9.69 PerfScore 12.11
-G_M3612_IG11: ; bbWeight=90.31, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+G_M3612_IG18: ; bbWeight=90.31, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
mov rdi, r13
; gcrRegs +[rdi]
mov esi, r15d
@@ -114,27 +175,27 @@ G_M3612_IG11: ; bbWeight=90.31, gcrefRegs=2008 {rbx r13}, byrefRegs=0000
; gcrRegs -[rdi]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M3612_IG17
+ jne SHORT G_M3612_IG24
dec r15d
- jns SHORT G_M3612_IG11
+ jns SHORT G_M3612_IG18
;; size=24 bbWeight=90.31 PerfScore 564.44
-G_M3612_IG12: ; bbWeight=9.69, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+G_M3612_IG19: ; bbWeight=9.69, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
dec r14d
- jns SHORT G_M3612_IG09
+ jns SHORT G_M3612_IG16
;; size=5 bbWeight=9.69 PerfScore 12.11
-G_M3612_IG13: ; bbWeight=0.52, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M3612_IG20: ; bbWeight=0.49, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[r13]
- jmp SHORT G_M3612_IG08
- ;; size=2 bbWeight=0.52 PerfScore 1.04
-G_M3612_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jmp G_M3612_IG09
+ ;; size=5 bbWeight=0.49 PerfScore 0.98
+G_M3612_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M3612_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3612_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0 PerfScore 0.00
-G_M3612_IG16: ; bbWeight=0, epilog, nogc, extend
+G_M3612_IG23: ; bbWeight=0, epilog, nogc, extend
add rsp, 120
pop rbx
pop r12
@@ -144,7 +205,7 @@ G_M3612_IG16: ; bbWeight=0, epilog, nogc, extend
pop rbp
ret
...
libraries.crossgen2.linux.x64.checked.mch
+59 (+7.86%) : 201269.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
@@ -12,24 +12,23 @@
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.VisualBasic.CompilerServices.VBBinder>
; V01 arg1 [V01,T11] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Reflection.MethodBase>
; V02 arg2 [V02,T12] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Reflection.MethodBase>
-; V03 loc0 [V03,T14] ( 3, 2 ) ubyte -> rax
-; V04 loc1 [V04,T04] ( 9, 12.04) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc2 [V05,T03] ( 13, 13.08) ref -> rbx class-hnd single-def <<unknown class>>
-; V06 loc3 [V06,T00] ( 31, 55.66) int -> r13
+; V03 loc0 [V03,T13] ( 3, 2 ) ubyte -> rax
+; V04 loc1 [V04,T03] ( 13, 13.08) ref -> r15 class-hnd single-def <<unknown class>>
+; V05 loc2 [V05,T04] ( 13, 13.08) ref -> rbx class-hnd single-def <<unknown class>>
+; V06 loc3 [V06,T00] ( 36, 52.20) int -> r13
; V07 loc4 [V07,T01] ( 10, 16 ) ref -> [rbp-0x30] class-hnd <<unknown class>>
; V08 loc5 [V08,T02] ( 10, 16 ) ref -> [rbp-0x38] class-hnd <<unknown class>>
; V09 loc6 [V09,T06] ( 8, 9 ) int -> r14 single-def
-;* V10 loc7 [V10,T18] ( 0, 0 ) int -> zero-ref single-def
-; V11 loc8 [V11,T13] ( 3, 5 ) int -> r14 single-def
+;* V10 loc7 [V10,T17] ( 0, 0 ) int -> zero-ref single-def
+; V11 loc8 [V11,T07] ( 6, 6 ) int -> r14 single-def
; V12 loc9 [V12,T08] ( 6, 6 ) int -> r14 single-def
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V14 tmp1 [V14,T09] ( 3, 6 ) int -> r14 "non-inline candidate call"
-; V15 tmp2 [V15,T15] ( 2, 2 ) int -> r13 "non-inline candidate call"
-; V16 tmp3 [V16,T16] ( 2, 2 ) int -> r13 "non-inline candidate call"
-; V17 tmp4 [V17,T17] ( 2, 2 ) int -> r14 "Inline return value spill temp"
+; V15 tmp2 [V15,T14] ( 2, 2 ) int -> r13 "non-inline candidate call"
+; V16 tmp3 [V16,T15] ( 2, 2 ) int -> r13 "non-inline candidate call"
+; V17 tmp4 [V17,T16] ( 2, 2 ) int -> r14 "Inline return value spill temp"
; V18 tmp5 [V18,T10] ( 3, 6 ) int -> rax "Inlining Arg"
-; V19 cse0 [V19,T07] ( 8, 7.58) int -> r12 multi-def "CSE - aggressive"
-; V20 cse1 [V20,T05] ( 3, 11.88) long -> r12 "CSE - aggressive"
+; V19 cse0 [V19,T05] ( 3, 11.88) long -> r12 "CSE - aggressive"
;
; Lcl frame size = 24
@@ -83,12 +82,11 @@ G_M40132_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
xor r13d, r13d
test r14d, r14d
jl G_M40132_IG14
- mov r12d, dword ptr [r15+0x08]
- cmp r12d, r14d
+ cmp dword ptr [r15+0x08], r14d
jle G_M40132_IG09
cmp dword ptr [rbx+0x08], r14d
jle G_M40132_IG09
- ;; size=115 bbWeight=1 PerfScore 37.50
+ ;; size=112 bbWeight=1 PerfScore 38.25
G_M40132_IG03: ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov r12d, r13d
mov rdi, gword ptr [r15+8*r12+0x10]
@@ -153,7 +151,7 @@ G_M40132_IG07: ; bbWeight=3.96, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0
cmp rax, r12
jne G_M40132_IG15
add r13d, 1
- jo G_M40132_IG24
+ jo G_M40132_IG27
cmp r13d, r14d
jle G_M40132_IG03
;; size=32 bbWeight=3.96 PerfScore 18.81
@@ -163,9 +161,8 @@ G_M40132_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
jmp G_M40132_IG14
;; size=5 bbWeight=0.50 PerfScore 1.00
G_M40132_IG09: ; bbWeight=0.04, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov r12d, dword ptr [r15+0x08]
- cmp r13d, r12d
- jae G_M40132_IG25
+ cmp r13d, dword ptr [r15+0x08]
+ jae G_M40132_IG28
mov edi, r13d
mov rdi, gword ptr [r15+8*rdi+0x10]
; gcrRegs +[rdi]
@@ -183,7 +180,7 @@ G_M40132_IG09: ; bbWeight=0.04, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
; gcrRegs -[rax rdi]
test eax, eax
je SHORT G_M40132_IG11
- ;; size=55 bbWeight=0.04 PerfScore 0.81
+ ;; size=52 bbWeight=0.04 PerfScore 0.84
G_M40132_IG10: ; bbWeight=0.02, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref
mov rdi, r12
; gcrRegs +[rdi]
@@ -196,7 +193,7 @@ G_M40132_IG10: ; bbWeight=0.02, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0
G_M40132_IG11: ; bbWeight=0.04, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
cmp r13d, dword ptr [rbx+0x08]
- jae G_M40132_IG25
+ jae G_M40132_IG28
mov edi, r13d
mov rdi, gword ptr [rbx+8*rdi+0x10]
; gcrRegs +[rdi]
@@ -232,18 +229,18 @@ G_M40132_IG13: ; bbWeight=0.04, gcVars=0000000000000004 {V08}, gcrefRegs=
cmp r12, gword ptr [rbp-0x38]
jne SHORT G_M40132_IG15
add r13d, 1
- jo G_M40132_IG24
+ jo G_M40132_IG27
cmp r13d, r14d
jle G_M40132_IG09
;; size=25 bbWeight=0.04 PerfScore 0.22
G_M40132_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r12]
; GC ptr vars -{V08}
- mov r12d, dword ptr [r15+0x08]
- cmp r12d, dword ptr [rbx+0x08]
- jle SHORT G_M40132_IG18
+ mov edi, dword ptr [r15+0x08]
+ cmp edi, dword ptr [rbx+0x08]
+ jle G_M40132_IG21
add r14d, 1
- jo G_M40132_IG24
+ jo G_M40132_IG27
mov r13d, r14d
mov rdi, rbx
; gcrRegs +[rdi]
@@ -253,18 +250,23 @@ G_M40132_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
; gcrRegs -[rbx rdi]
mov r14d, eax
cmp r13d, r14d
- jg G_M40132_IG22
+ jg G_M40132_IG25
jmp SHORT G_M40132_IG16
- ;; size=52 bbWeight=0.50 PerfScore 7.50
+ ;; size=55 bbWeight=0.50 PerfScore 7.50
G_M40132_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r15]
xor eax, eax
- jmp G_M40132_IG23
+ jmp G_M40132_IG26
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M40132_IG16: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+G_M40132_IG16: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r15]
- cmp r13d, r12d
- jae G_M40132_IG25
+ mov edi, r13d
+ or edi, r14d
+ jl SHORT G_M40132_IG19
+ cmp dword ptr [r15+0x08], r14d
+ jle SHORT G_M40132_IG19
+ ;; size=14 bbWeight=0.50 PerfScore 2.75
+G_M40132_IG17: ; bbWeight=3.96, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
mov edi, r13d
mov rdi, gword ptr [r15+8*rdi+0x10]
; gcrRegs +[rdi]
@@ -275,21 +277,44 @@ G_M40132_IG16: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byr
test eax, eax
je SHORT G_M40132_IG15
add r13d, 1
- jo G_M40132_IG24
+ jo G_M40132_IG27
cmp r13d, r14d
- jle SHORT G_M40132_IG16
- ;; size=48 bbWeight=4 PerfScore 55.00
-G_M40132_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jle SHORT G_M40132_IG17
+ ;; size=39 bbWeight=3.96 PerfScore 49.50
+G_M40132_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r15]
- jmp G_M40132_IG22
+ jmp G_M40132_IG25
;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M40132_IG18: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M40132_IG19: ; bbWeight=0.04, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r15]
+ cmp r13d, dword ptr [r15+0x08]
+ jae G_M40132_IG28
+ mov edi, r13d
+ mov rdi, gword ptr [r15+8*rdi+0x10]
+ ; gcrRegs +[rdi]
+ lea r11, [(reloc)]
+ cmp dword ptr [rdi], edi
+ call [r11]<unknown method>
+ ; gcrRegs -[rdi]
+ test eax, eax
+ je SHORT G_M40132_IG15
+ add r13d, 1
+ jo G_M40132_IG27
+ cmp r13d, r14d
+ jle SHORT G_M40132_IG19
+ ;; size=49 bbWeight=0.04 PerfScore 0.66
+G_M40132_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r15]
+ jmp G_M40132_IG25
+ ;; size=5 bbWeight=0.50 PerfScore 1.00
+G_M40132_IG21: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx r15]
- cmp dword ptr [rbx+0x08], r12d
- jle G_M40132_IG22
+ mov edi, dword ptr [rbx+0x08]
+ cmp edi, dword ptr [r15+0x08]
+ jle G_M40132_IG25
mov r13d, r14d
add r13d, 1
- jo G_M40132_IG24
+ jo G_M40132_IG27
mov rdi, r15
; gcrRegs +[rdi]
lea r11, [(reloc)] ; function address
@@ -298,14 +323,14 @@ G_M40132_IG18: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
; gcrRegs -[rdi r15]
mov r14d, eax
cmp r13d, r14d
- jg SHORT G_M40132_IG22
+ jg SHORT G_M40132_IG25
mov edi, r13d
or edi, r14d
- jl SHORT G_M40132_IG21
+ jl SHORT G_M40132_IG24
cmp dword ptr [rbx+0x08], r14d
- jle SHORT G_M40132_IG21
- ;; size=60 bbWeight=0.50 PerfScore 8.25
-G_M40132_IG19: ; bbWeight=3.96, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jle SHORT G_M40132_IG24
+ ;; size=63 bbWeight=0.50 PerfScore 9.25
+G_M40132_IG22: ; bbWeight=3.96, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov edi, r13d
mov rdi, gword ptr [rbx+8*rdi+0x10]
; gcrRegs +[rdi]
@@ -316,18 +341,18 @@ G_M40132_IG19: ; bbWeight=3.96, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
test eax, eax
je G_M40132_IG15
add r13d, 1
- jo SHORT G_M40132_IG24
+ jo SHORT G_M40132_IG27
cmp r13d, r14d
- jle SHORT G_M40132_IG19
+ jle SHORT G_M40132_IG22
;; size=39 bbWeight=3.96 PerfScore 49.50
-G_M40132_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M40132_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
- jmp SHORT G_M40132_IG22
+ jmp SHORT G_M40132_IG25
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M40132_IG21: ; bbWeight=0.04, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M40132_IG24: ; bbWeight=0.04, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx]
cmp r13d, dword ptr [rbx+0x08]
- jae SHORT G_M40132_IG25
+ jae SHORT G_M40132_IG28
mov edi, r13d
mov rdi, gword ptr [rbx+8*rdi+0x10]
; gcrRegs +[rdi]
@@ -338,15 +363,15 @@ G_M40132_IG21: ; bbWeight=0.04, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
test eax, eax
je G_M40132_IG15
add r13d, 1
- jo SHORT G_M40132_IG24
+ jo SHORT G_M40132_IG27
cmp r13d, r14d
- jle SHORT G_M40132_IG21
...
libraries_tests.run.linux.x64.Release.mch
-20 (-1.38%) : 316001.dasm - System.Number:TryParseBinaryIntegerHexOrBinaryNumberStyle[ushort,ubyte,System.Number+HexParser1[ubyte]](System.ReadOnlySpan1[ushort],int,byref):int (Instrumented Tier1)
@@ -9,82 +9,82 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V01 arg1 [V01,T09] ( 5, 4 ) int -> r14 single-def
-; V02 arg2 [V02,T11] ( 5, 3.50) byref -> r13 single-def
-; V03 loc0 [V03,T00] ( 28, 83.50) int -> r12
-; V04 loc1 [V04,T01] ( 22, 42 ) int -> [rbp-0x2C]
-; V05 loc2 [V05,T24] ( 3, 1.50) ubyte -> [rbp-0x30]
-; V06 loc3 [V06,T04] ( 7, 17.50) ubyte -> [rbp-0x34]
-; V07 loc4 [V07,T15] ( 4, 2.50) int -> r14
-; V08 loc5 [V08,T14] ( 3, 3 ) ubyte -> r12
+; V01 arg1 [V01,T05] ( 5, 4 ) int -> r14 single-def
+; V02 arg2 [V02,T07] ( 5, 3.50) byref -> r13 single-def
+; V03 loc0 [V03,T00] ( 28, 69.50) int -> r12
+; V04 loc1 [V04,T01] ( 22, 33.25) int -> [rbp-0x2C]
+; V05 loc2 [V05,T21] ( 3, 1.50) ubyte -> [rbp-0x30]
+; V06 loc3 [V06,T10] ( 7, 3.50) ubyte -> [rbp-0x34]
+; V07 loc4 [V07,T12] ( 4, 2.50) int -> r14
+; V08 loc5 [V08,T11] ( 3, 3 ) ubyte -> r12
;* V09 loc6 [V09 ] ( 0, 0 ) ubyte -> zero-ref
; V10 loc7 [V10 ] ( 9, 6.50) struct (24) [rbp-0x50] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Diagnostics.Debug+AssertInterpolatedStringHandler>
-; V11 loc8 [V11,T25] ( 3, 1.50) ubyte -> rcx ld-addr-op
-; V12 loc9 [V12,T05] ( 4, 12.50) int -> [rbp-0x54]
+; V11 loc8 [V11,T22] ( 3, 1.50) ubyte -> rcx ld-addr-op
+;* V12 loc9 [V12,T37] ( 0, 0 ) int -> zero-ref
;* V13 loc10 [V13 ] ( 0, 0 ) int -> zero-ref
-; V14 loc11 [V14,T10] ( 3, 6 ) int -> rdi
+; V14 loc11 [V14,T06] ( 3, 6 ) int -> rdi
;# V15 OutArgs [V15 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V16 tmp1 [V16 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Diagnostics.Debug+AssertInterpolatedStringHandler>
; V17 tmp2 [V17,T40] ( 3, 0 ) ref -> [rbp-0x60] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.StringBuilder>
;* V18 tmp3 [V18 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.StringBuilder+AppendInterpolatedStringHandler>
-; V19 tmp4 [V19,T12] ( 5, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
-; V20 tmp5 [V20,T21] ( 3, 1.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V21 tmp6 [V21,T26] ( 3, 1.50) int -> rcx "Inline stloc first use temp"
-; V22 tmp7 [V22,T17] ( 3, 2 ) byref -> rsi single-def "Inlining Arg"
-; V23 tmp8 [V23,T35] ( 2, 1 ) byref -> rax single-def "Inline stloc first use temp"
+; V19 tmp4 [V19,T08] ( 5, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
+; V20 tmp5 [V20,T18] ( 3, 1.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V21 tmp6 [V21,T23] ( 3, 1.50) int -> rcx "Inline stloc first use temp"
+; V22 tmp7 [V22,T14] ( 3, 2 ) byref -> rsi single-def "Inlining Arg"
+; V23 tmp8 [V23,T33] ( 2, 1 ) byref -> rax single-def "Inline stloc first use temp"
;* V24 tmp9 [V24 ] ( 0, 0 ) long -> zero-ref "spilling arg"
-; V25 tmp10 [V25,T13] ( 5, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
-; V26 tmp11 [V26,T22] ( 3, 1.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V27 tmp12 [V27,T27] ( 3, 1.50) int -> rcx "Inline stloc first use temp"
-; V28 tmp13 [V28,T18] ( 3, 2 ) byref -> rsi single-def "Inlining Arg"
-; V29 tmp14 [V29,T36] ( 2, 1 ) byref -> rax single-def "Inline stloc first use temp"
+; V25 tmp10 [V25,T09] ( 5, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
+; V26 tmp11 [V26,T19] ( 3, 1.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V27 tmp12 [V27,T24] ( 3, 1.50) int -> rcx "Inline stloc first use temp"
+; V28 tmp13 [V28,T15] ( 3, 2 ) byref -> rsi single-def "Inlining Arg"
+; V29 tmp14 [V29,T34] ( 2, 1 ) byref -> rax single-def "Inline stloc first use temp"
;* V30 tmp15 [V30 ] ( 0, 0 ) long -> zero-ref "spilling arg"
;* V31 tmp16 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline return value spill temp" <System.String>
-; V32 tmp17 [V32,T16] ( 5, 2 ) ref -> rdi class-hnd exact single-def "Inline stloc first use temp" <System.Text.StringBuilder>
-; V33 tmp18 [V33,T33] ( 3, 1 ) ref -> rdi
+; V32 tmp17 [V32,T13] ( 5, 2 ) ref -> rdi class-hnd exact single-def "Inline stloc first use temp" <System.Text.StringBuilder>
+; V33 tmp18 [V33,T31] ( 3, 1 ) ref -> rdi
;* V34 tmp19 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.String>
;* V35 tmp20 [V35 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
;* V36 tmp21 [V36,T38] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V37 tmp22 [V37 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-;* V38 tmp23 [V38,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V39 tmp24 [V39,T28] ( 3, 1.50) long -> rdi "Inline stloc first use temp"
+;* V38 tmp23 [V38,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V39 tmp24 [V39,T25] ( 3, 1.50) long -> rdi "Inline stloc first use temp"
;* V40 tmp25 [V40 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V41 tmp26 [V41 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V42 tmp27 [V42 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V43 tmp28 [V43,T29] ( 3, 1.50) long -> rdi "Inline stloc first use temp"
+; V43 tmp28 [V43,T26] ( 3, 1.50) long -> rdi "Inline stloc first use temp"
;* V44 tmp29 [V44 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V45 tmp30 [V45 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V46 tmp31 [V46,T34] ( 3, 1 ) int -> rax "Inline return value spill temp"
+; V46 tmp31 [V46,T32] ( 3, 1 ) int -> rax "Inline return value spill temp"
;* V47 tmp32 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V48 tmp33 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V49 tmp34 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V50 tmp35 [V50,T37] ( 2, 1 ) ubyte -> rdx ld-addr-op "Inline ldloca(s) first use temp"
+; V50 tmp35 [V50,T35] ( 2, 1 ) ubyte -> rdx ld-addr-op "Inline ldloca(s) first use temp"
;* V51 tmp36 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V52 tmp37 [V52 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V53 tmp38 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V54 tmp39 [V54 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V55 tmp40 [V55,T07] ( 4, 10 ) int -> [rbp-0x58] "Inline return value spill temp"
+; V55 tmp40 [V55,T30] ( 4, 1.25) int -> [rbp-0x54] "Inline return value spill temp"
;* V56 tmp41 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V57 tmp42 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V58 tmp43 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V59 tmp44 [V59,T08] ( 2, 8 ) ubyte -> rdi ld-addr-op "Inline ldloca(s) first use temp"
+; V59 tmp44 [V59,T36] ( 2, 1 ) ubyte -> rdi ld-addr-op "Inline ldloca(s) first use temp"
;* V60 tmp45 [V60 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V61 tmp46 [V61 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V62 tmp47 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V63 tmp48 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V64 tmp49 [V64 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V65 tmp50 [V65,T30] ( 3, 1.50) long -> rdi "Inline stloc first use temp"
+; V65 tmp50 [V65,T27] ( 3, 1.50) long -> rdi "Inline stloc first use temp"
;* V66 tmp51 [V66 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V67 tmp52 [V67 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V68 tmp53 [V68 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V69 tmp54 [V69,T06] ( 3, 12 ) long -> rdi "Inline stloc first use temp"
+; V69 tmp54 [V69,T04] ( 3, 12 ) long -> rdi "Inline stloc first use temp"
;* V70 tmp55 [V70 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V71 tmp56 [V71 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V72 tmp57 [V72,T39] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V73 tmp58 [V73 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-;* V74 tmp59 [V74,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V75 tmp60 [V75,T03] ( 9, 20.50) byref -> r15 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V76 tmp61 [V76,T02] ( 11, 25.50) int -> rbx single-def "field V00._length (fldOffset=0x8)" P-INDEP
+;* V74 tmp59 [V74,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V75 tmp60 [V75,T03] ( 9, 17 ) byref -> r15 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V76 tmp61 [V76,T02] ( 11, 22 ) int -> rbx single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V77 tmp62 [V77 ] ( 0, 0 ) ref -> zero-ref single-def "field V18._stringBuilder (fldOffset=0x0)" P-INDEP
;* V78 tmp63 [V78 ] ( 0, 0 ) ref -> zero-ref single-def "field V18._provider (fldOffset=0x8)" P-INDEP
;* V79 tmp64 [V79 ] ( 0, 0 ) ubyte -> zero-ref "field V18._hasCustomFormatter (fldOffset=0x10)" P-INDEP
@@ -100,11 +100,11 @@
;* V89 tmp74 [V89 ] ( 0, 0 ) int -> zero-ref "field V57._length (fldOffset=0x8)" P-INDEP
;* V90 tmp75 [V90 ] ( 0, 0 ) byref -> zero-ref "field V58._reference (fldOffset=0x0)" P-INDEP
;* V91 tmp76 [V91 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP
-; V92 tmp77 [V92,T23] ( 3, 1.50) ref -> rax "V16.[000..008)"
+; V92 tmp77 [V92,T20] ( 3, 1.50) ref -> rax "V16.[000..008)"
;* V93 tmp78 [V93 ] ( 0, 0 ) ref -> zero-ref "V16.[008..016)"
;* V94 tmp79 [V94 ] ( 0, 0 ) ubyte -> zero-ref "V16.[016..017)"
-; V95 cse0 [V95,T31] ( 3, 1.50) int -> rdx "CSE - conservative"
-; V96 cse1 [V96,T32] ( 3, 1.50) int -> rdx "CSE - conservative"
+; V95 cse0 [V95,T28] ( 3, 1.50) int -> rdx "CSE - conservative"
+; V96 cse1 [V96,T29] ( 3, 1.50) int -> rdx "CSE - conservative"
;
; Lcl frame size = 56
@@ -134,7 +134,7 @@ G_M42207_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15},
test r14d, -516
sete r12b
test r12d, r12d
- je G_M42207_IG58
+ je G_M42207_IG57
;; size=23 bbWeight=1 PerfScore 2.75
G_M42207_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref
xor rax, rax
@@ -164,7 +164,7 @@ G_M42207_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r1
mov ecx, dword ptr [rdi+0x18]
lea edx, [rcx+0x18]
cmp dword ptr [rax+0x08], edx
- jb G_M42207_IG59
+ jb G_M42207_IG58
movsxd rcx, ecx
lea rax, bword ptr [rax+2*rcx+0x10]
; gcrRegs -[rax]
@@ -191,7 +191,7 @@ G_M42207_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r1
mov ecx, dword ptr [rdi+0x18]
lea edx, [rcx+0x07]
cmp dword ptr [rax+0x08], edx
- jb G_M42207_IG60
+ jb G_M42207_IG59
movsxd rcx, ecx
lea rax, bword ptr [rax+2*rcx+0x10]
; gcrRegs -[rax]
@@ -208,7 +208,7 @@ G_M42207_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15},
mov rdi, gword ptr [rbp-0x50]
; gcrRegs +[rdi]
test rdi, rdi
- jne G_M42207_IG61
+ jne G_M42207_IG60
;; size=13 bbWeight=1 PerfScore 2.25
G_M42207_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref
; gcrRegs -[rdi]
@@ -231,7 +231,7 @@ G_M42207_IG10: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=A000 {r13
;; size=16 bbWeight=0.50 PerfScore 1.62
G_M42207_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref
test ebx, ebx
- je G_M42207_IG44
+ je G_M42207_IG43
;; size=8 bbWeight=1 PerfScore 1.25
G_M42207_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref, isz
xor r12d, r12d
@@ -296,7 +296,7 @@ G_M42207_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r1
G_M42207_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref, isz
inc r12d
cmp r12d, ebx
- jae G_M42207_IG41
+ jae G_M42207_IG40
mov eax, r12d
movzx rax, word ptr [r15+2*rax]
cmp eax, 48
@@ -315,7 +315,7 @@ G_M42207_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r1
shlx rsi, rsi, rdi
add rdi, -64
and rdi, rsi
- jge G_M42207_IG46
+ jge G_M42207_IG45
;; size=34 bbWeight=0.50 PerfScore 1.88
G_M42207_IG22: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref
mov rdi, 0xD1FFAB1E
@@ -325,7 +325,7 @@ G_M42207_IG22: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r1
;; size=18 bbWeight=0.25 PerfScore 0.56
G_M42207_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref
cmp eax, 256
- jge G_M42207_IG62
+ jge G_M42207_IG61
mov edi, eax
mov rax, 0xD1FFAB1E ; static handle
movzx rax, byte ptr [rdi+rax]
@@ -334,42 +334,40 @@ G_M42207_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r1
movzx rdx, al
mov dword ptr [rbp-0x34], edx
inc r12d
- xor edx, edx
- mov dword ptr [rbp-0x54], edx
jmp SHORT G_M42207_IG27
- ;; size=16 bbWeight=0.50 PerfScore 2.38
+ ;; size=11 bbWeight=0.50 PerfScore 1.75
G_M42207_IG25: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref
; byrRegs -[r15]
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- jmp G_M42207_IG44
+ jmp G_M42207_IG43
;; size=20 bbWeight=0.25 PerfScore 0.81
G_M42207_IG26: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- jmp G_M42207_IG44
+ jmp G_M42207_IG43
;; size=20 bbWeight=0.25 PerfScore 0.81
-G_M42207_IG27: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref
+G_M42207_IG27: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref
; byrRegs +[r15]
cmp r12d, ebx
- jae G_M42207_IG38
+ jae G_M42207_IG37
mov edi, r12d
movzx rdi, word ptr [r15+2*rdi]
- mov esi, edi
- cmp esi, 256
- jge G_M42207_IG63
- ;; size=31 bbWeight=4 PerfScore 20.00
-G_M42207_IG28: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref
- mov edi, esi
- mov r8, 0xD1FFAB1E ; static handle
- movzx r8, byte ptr [rdi+r8]
- ;; size=17 bbWeight=2 PerfScore 5.00
-G_M42207_IG29: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref, isz
- mov dword ptr [rbp-0x58], r8d
- cmp r8d, 15
- ja G_M42207_IG37
...
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| benchmarks.run_pgo.linux.x64.checked.mch |
1 |
0 |
1 |
0 |
-0 |
+51 |
| benchmarks.run_tiered.linux.x64.checked.mch |
2 |
0 |
2 |
0 |
-0 |
+218 |
| coreclr_tests.run.linux.x64.checked.mch |
1 |
0 |
1 |
0 |
-0 |
+133 |
| libraries.crossgen2.linux.x64.checked.mch |
1 |
0 |
1 |
0 |
-0 |
+59 |
| libraries.pmi.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| libraries_tests.run.linux.x64.Release.mch |
2 |
1 |
1 |
0 |
-20 |
+126 |
| librariestestsnotieredcompilation.run.linux.x64.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| realworld.run.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| smoke_tests.nativeaot.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
7 |
1 |
6 |
0 |
-20 |
+587 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.linux.x64.checked.mch |
36,217 |
3,549 |
32,668 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_pgo.linux.x64.checked.mch |
160,323 |
63,207 |
97,116 |
0 (0.00%) |
4 (0.00%) |
| benchmarks.run_tiered.linux.x64.checked.mch |
65,385 |
50,236 |
15,149 |
0 (0.00%) |
1 (0.00%) |
| coreclr_tests.run.linux.x64.checked.mch |
599,010 |
355,942 |
243,068 |
0 (0.00%) |
3 (0.00%) |
| libraries.crossgen2.linux.x64.checked.mch |
234,329 |
15 |
234,314 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.linux.x64.checked.mch |
296,931 |
6 |
296,925 |
0 (0.00%) |
0 (0.00%) |
| libraries_tests.run.linux.x64.Release.mch |
759,766 |
496,184 |
263,582 |
0 (0.00%) |
0 (0.00%) |
| librariestestsnotieredcompilation.run.linux.x64.Release.mch |
305,443 |
21,912 |
283,531 |
0 (0.00%) |
0 (0.00%) |
| realworld.run.linux.x64.checked.mch |
33,083 |
9 |
33,074 |
0 (0.00%) |
0 (0.00%) |
| smoke_tests.nativeaot.linux.x64.checked.mch |
27,414 |
10 |
27,404 |
0 (0.00%) |
0 (0.00%) |
|
2,517,901 |
991,070 |
1,526,831 |
0 (0.00%) |
8 (0.00%) |
jit-analyze output
benchmarks.run_pgo.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 71590553 (overridden on cmd)
Total bytes of diff: 71590604 (overridden on cmd)
Total bytes of delta: 51 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
51 : 112826.dasm (6.85 % of base)
1 total files with Code Size differences (0 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
51 (6.85 % of base) : 112826.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
Top method regressions (percentages):
51 (6.85 % of base) : 112826.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
1 total methods with Code Size differences (0 improved, 1 regressed).
benchmarks.run_tiered.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 21435525 (overridden on cmd)
Total bytes of diff: 21435743 (overridden on cmd)
Total bytes of delta: 218 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
174 : 38622.dasm (20.59 % of base)
44 : 54552.dasm (6.45 % of base)
2 total files with Code Size differences (0 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
174 (20.59 % of base) : 38622.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
44 (6.45 % of base) : 54552.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
Top method regressions (percentages):
174 (20.59 % of base) : 38622.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
44 (6.45 % of base) : 54552.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
2 total methods with Code Size differences (0 improved, 2 regressed).
coreclr_tests.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 403710934 (overridden on cmd)
Total bytes of diff: 403711067 (overridden on cmd)
Total bytes of delta: 133 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
133 : 290999.dasm (48.90 % of base)
1 total files with Code Size differences (0 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
133 (48.90 % of base) : 290999.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
Top method regressions (percentages):
133 (48.90 % of base) : 290999.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
1 total methods with Code Size differences (0 improved, 1 regressed).
libraries.crossgen2.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 38727133 (overridden on cmd)
Total bytes of diff: 38727192 (overridden on cmd)
Total bytes of delta: 59 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
59 : 201269.dasm (7.86 % of base)
1 total files with Code Size differences (0 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
59 (7.86 % of base) : 201269.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
Top method regressions (percentages):
59 (7.86 % of base) : 201269.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
1 total methods with Code Size differences (0 improved, 1 regressed).
libraries_tests.run.linux.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 337107837 (overridden on cmd)
Total bytes of diff: 337107943 (overridden on cmd)
Total bytes of delta: 106 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
126 : 326348.dasm (6.92 % of base)
Top file improvements (bytes):
-20 : 316001.dasm (-1.38 % of base)
2 total files with Code Size differences (1 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
126 (6.92 % of base) : 326348.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
Top method improvements (bytes):
-20 (-1.38 % of base) : 316001.dasm - System.Number:TryParseBinaryIntegerHexOrBinaryNumberStyle[ushort,ubyte,System.Number+HexParser`1[ubyte]](System.ReadOnlySpan`1[ushort],int,byref):int (Instrumented Tier1)
Top method regressions (percentages):
126 (6.92 % of base) : 326348.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
Top method improvements (percentages):
-20 (-1.38 % of base) : 316001.dasm - System.Number:TryParseBinaryIntegerHexOrBinaryNumberStyle[ushort,ubyte,System.Number+HexParser`1[ubyte]](System.ReadOnlySpan`1[ushort],int,byref):int (Instrumented Tier1)
2 total methods with Code Size differences (1 improved, 1 regressed).