Assembly Diffs
osx arm64
Diffs are based on 2,270,861 contexts (932,669 MinOpts, 1,338,192 FullOpts).
MISSED contexts: base: 1 (0.00%), diff: 9 (0.00%)
Overall (+684 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.osx.arm64.checked.mch |
34,437,860 |
+60 |
| benchmarks.run_tiered.osx.arm64.checked.mch |
15,516,128 |
+208 |
| coreclr_tests.run.osx.arm64.checked.mch |
486,460,784 |
+172 |
| libraries.crossgen2.osx.arm64.checked.mch |
55,725,496 |
+84 |
| libraries.pmi.osx.arm64.checked.mch |
80,219,060 |
+72 |
| libraries_tests.run.osx.arm64.Release.mch |
324,580,556 |
+88 |
FullOpts (+684 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.osx.arm64.checked.mch |
18,136,188 |
+60 |
| benchmarks.run_tiered.osx.arm64.checked.mch |
4,011,424 |
+208 |
| coreclr_tests.run.osx.arm64.checked.mch |
153,807,100 |
+172 |
| libraries.crossgen2.osx.arm64.checked.mch |
55,723,868 |
+84 |
| libraries.pmi.osx.arm64.checked.mch |
80,097,932 |
+72 |
| libraries_tests.run.osx.arm64.Release.mch |
120,864,708 |
+88 |
Example diffs
benchmarks.run_pgo.osx.arm64.checked.mch
+60 (+7.61%) : 66989.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, 104.87) ref -> x0 class-hnd single-def <float[][]>
+; V00 arg0 [V00,T13] ( 15, 105.07) ref -> x0 class-hnd single-def <float[][]>
; V01 arg1 [V01,T22] ( 7, 4.62) ref -> x1 class-hnd single-def <int[][]>
; V02 arg2 [V02,T23] ( 3, 3 ) ref -> x2 class-hnd single-def <double[]>
; V03 arg3 [V03,T25] ( 4, 2.21) ref -> x3 class-hnd single-def <JetStream.SampleVarianceUpperTriangularMatrix>
-; V04 arg4 [V04,T24] ( 4, 2.62) int -> x4 single-def
+; V04 arg4 [V04,T24] ( 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,1699.35) int -> x5
-; V08 loc3 [V08,T28] ( 5, 0.63) ref -> x8 class-hnd <float[]>
-; V09 loc4 [V09,T12] ( 12, 108.54) int -> x7
+; V07 loc2 [V07,T05] ( 25,1699.35) int -> x5
+; V08 loc3 [V08,T28] ( 6, 0.63) ref -> x8 class-hnd <float[]>
+; V09 loc4 [V09,T12] ( 13, 108.54) int -> x7
;* V10 loc5 [V10 ] ( 0, 0 ) ubyte -> zero-ref
; V11 loc6 [V11,T07] ( 18,1200.13) int -> x6
; V12 loc7 [V12,T31] ( 4, 199.58) float -> d16
@@ -45,8 +45,8 @@
; V32 cse2 [V32,T17] ( 4, 100.00) long -> x13 hoist multi-def "CSE - aggressive"
; V33 cse3 [V33,T27] ( 5, 3.02) long -> x15 "CSE - moderate"
; V34 cse4 [V34,T10] ( 16, 304.52) int -> x12 hoist multi-def "CSE - aggressive"
-; V35 cse5 [V35,T14] ( 6, 102.23) byref -> x9 hoist "CSE - aggressive"
-; V36 cse6 [V36,T15] ( 7, 101.63) int -> x2 hoist "CSE - aggressive"
+; V35 cse5 [V35,T15] ( 9, 101.83) int -> x2 hoist "CSE - aggressive"
+; V36 cse6 [V36,T14] ( 6, 102.23) 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,20 +75,20 @@ 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_IG14
+ ble G_M56974_IG19
;; size=8 bbWeight=0.21 PerfScore 0.31
G_M56974_IG04: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
- cbz x1, G_M56974_IG24
+ cbz x1, G_M56974_IG28
;; size=4 bbWeight=0.21 PerfScore 0.21
G_M56974_IG05: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
- cbz x0, G_M56974_IG24
- tbnz w6, #31, G_M56974_IG24
+ cbz x0, G_M56974_IG28
+ tbnz w6, #31, G_M56974_IG28
ldr w10, [x1, #0x08]
cmp w10, w2
- blt G_M56974_IG24
+ blt G_M56974_IG28
ldr w10, [x0, #0x08]
cmp w10, w2
- blt G_M56974_IG24
+ blt G_M56974_IG28
;; size=32 bbWeight=0.21 PerfScore 2.29
G_M56974_IG06: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref
ldr w10, [x8, #0x08]
@@ -101,7 +101,7 @@ G_M56974_IG06: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0
;; size=20 bbWeight=0.21 PerfScore 1.67
G_M56974_IG07: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
cmp w7, w10
- bhs G_M56974_IG35
+ bhs G_M56974_IG39
ldr s16, [x11, x13]
ldr w15, [x14, #0x08]
cmp w15, w5
@@ -109,18 +109,45 @@ G_M56974_IG07: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefR
;; size=24 bbWeight=98.79 PerfScore 889.14
G_M56974_IG08: ; bbWeight=395.17, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
cmp w5, w6
- bne G_M56974_IG17
+ bne G_M56974_IG21
;; size=8 bbWeight=395.17 PerfScore 592.76
G_M56974_IG09: ; bbWeight=395.17, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref
movi v17.16b, #0
- b G_M56974_IG18
+ b G_M56974_IG22
;; size=8 bbWeight=395.17 PerfScore 592.76
-G_M56974_IG10: ; bbWeight=0.21, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
+G_M56974_IG10: ; bbWeight=0.20, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
; gcrRegs -[x8 x14]
; byrRegs -[x11]
+ cbz x0, G_M56974_IG18
+ tbnz w5, #31, G_M56974_IG18
+ ldr w7, [x0, #0x08]
+ cmp w7, w2
+ blt G_M56974_IG18
+ ;; size=20 bbWeight=0.20 PerfScore 1.33
+G_M56974_IG11: ; bbWeight=0.64, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref
+ b G_M56974_IG13
+ ;; size=4 bbWeight=0.64 PerfScore 0.64
+G_M56974_IG12: ; 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_IG15
+ ;; size=20 bbWeight=0.21 PerfScore 1.14
+G_M56974_IG13: ; 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_IG40
+ b G_M56974_IG12
+ ;; size=16 bbWeight=0.21 PerfScore 0.62
+G_M56974_IG14: ; bbWeight=0.00, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
ldr w8, [x0, #0x08]
cmp w5, w8
- bhs G_M56974_IG35
+ bhs G_M56974_IG39
add x7, x0, #16
; byrRegs +[x7]
ldr x8, [x7, w5, UXTW #3]
@@ -128,52 +155,51 @@ G_M56974_IG10: ; bbWeight=0.21, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200
mov w7, wzr
; byrRegs -[x7]
cmp w4, #0
- bgt G_M56974_IG12
- ;; size=32 bbWeight=0.21 PerfScore 2.09
-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_IG36
- b G_M56974_IG10
- ;; size=16 bbWeight=0.21 PerfScore 0.63
-G_M56974_IG12: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
- ; gcrRegs +[x8]
+ ble G_M56974_IG18
+ ;; size=32 bbWeight=0.00 PerfScore 0.02
+G_M56974_IG15: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
ldr w6, [x1, #0x08]
cmp w5, w6
- bhs G_M56974_IG35
+ bhs G_M56974_IG39
ldr x6, [x9, w5, UXTW #3]
; gcrRegs +[x6]
- tbnz w7, #31, G_M56974_IG14
+ tbnz w7, #31, G_M56974_IG19
;; size=20 bbWeight=0.21 PerfScore 1.78
-G_M56974_IG13: ; bbWeight=6.69, gcrefRegs=014B {x0 x1 x3 x6 x8}, byrefRegs=0200 {x9}, byref, isz
+G_M56974_IG16: ; bbWeight=6.69, gcrefRegs=014B {x0 x1 x3 x6 x8}, byrefRegs=0200 {x9}, byref, isz
ldr w6, [x6, #0x08]
; gcrRegs -[x6]
cmp w6, w7
- bgt G_M56974_IG16
+ ble G_M56974_IG19
;; size=12 bbWeight=6.69 PerfScore 30.10
-G_M56974_IG14: ; bbWeight=0.41, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
- add w7, w7, #1
- cmp w7, w4
- blt G_M56974_IG12
- ;; size=12 bbWeight=0.41 PerfScore 0.82
-G_M56974_IG15: ; bbWeight=0.20, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref
- ; gcrRegs -[x8]
- b G_M56974_IG11
- ;; size=4 bbWeight=0.20 PerfScore 0.20
-G_M56974_IG16: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref
- ; gcrRegs +[x8]
+G_M56974_IG17: ; 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.31
-G_M56974_IG17: ; bbWeight=395.17, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
- ; gcrRegs +[x14]
+G_M56974_IG18: ; 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_IG40
+ b G_M56974_IG14
+ ;; size=16 bbWeight=0.00 PerfScore 0.01
+G_M56974_IG19: ; 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_IG15
+ ;; size=12 bbWeight=0.41 PerfScore 0.82
+G_M56974_IG20: ; bbWeight=0.20, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref
+ ; gcrRegs -[x8]
+ b G_M56974_IG10
+ ;; size=4 bbWeight=0.20 PerfScore 0.20
+G_M56974_IG21: ; 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_IG35
+ bhs G_M56974_IG39
add x15, x15, #16
; gcrRegs -[x15]
; byrRegs +[x15]
@@ -184,14 +210,14 @@ G_M56974_IG17: ; 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_IG35
+ bhs G_M56974_IG39
add x15, x15, #16
; gcrRegs -[x15]
; byrRegs +[x15]
ldr s17, [x15, wip0, UXTW #2]
fcvt d17, s17
;; size=56 bbWeight=395.17 PerfScore 8101.03
-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
; byrRegs -[x15]
fcvt d16, s16
fadd d16, d16, d17
@@ -199,15 +225,15 @@ G_M56974_IG18: ; 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_IG23
+ tbnz w19, #31, G_M56974_IG27
;; size=24 bbWeight=98.79 PerfScore 1136.12
-G_M56974_IG19: ; bbWeight=3161.38, gcrefRegs=C10B {x0 x1 x3 x8 x14 x15}, byrefRegs=0A00 {x9 x11}, byref, isz
+G_M56974_IG23: ; bbWeight=3161.38, 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_IG23
+ ble G_M56974_IG27
;; size=12 bbWeight=3161.38 PerfScore 14226.20
-G_M56974_IG20: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
+G_M56974_IG24: ; 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]
@@ -215,27 +241,27 @@ G_M56974_IG20: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefR
; byrRegs -[x15]
ldr w19, [x15, #0x08]
cmp w12, w19
- bhs G_M56974_IG35
+ bhs G_M56974_IG39
add x15, x15, #16
; gcrRegs -[x15]
; byrRegs +[x15]
ldr s17, [x15, w12, UXTW #2]
fcvt d17, s17
fcmp d17, d16
- bgt G_M56974_IG23
...
benchmarks.run_tiered.osx.arm64.checked.mch
+60 (+8.02%) : 43605.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%) : 32752.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.osx.arm64.checked.mch
+172 (+47.78%) : 299093.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.53) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[NamedSet][]>
-; V01 loc0 [V01,T07] ( 5, 2.59) int -> x23
-; V02 loc1 [V02,T02] ( 8,123.41) ref -> x22 class-hnd <System.Collections.Generic.List`1[NamedSet]>
-; V03 loc2 [V03,T09] ( 2, 1.55) ubyte -> x21
-; V04 loc3 [V04,T03] ( 9, 74.64) int -> x20
-; V05 loc4 [V05,T01] ( 8,130.09) int -> x21
+; V00 arg0 [V00,T06] ( 9, 4.03) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[NamedSet][]>
+; V01 loc0 [V01,T07] ( 10, 2.57) int -> x23
+; V02 loc1 [V02,T02] ( 14,123.41) ref -> x22 class-hnd <System.Collections.Generic.List`1[NamedSet]>
+; V03 loc2 [V03,T08] ( 4, 1.55) ubyte -> x20
+; V04 loc3 [V04,T03] ( 18, 74.64) int -> x24
+; V05 loc4 [V05,T01] ( 10,130.09) int -> x21
; V06 loc5 [V06,T00] ( 6,380.63) int -> x20
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T04] ( 3, 63.09) ref -> x0 class-hnd "Inlining Arg" <<unknown class>>
-; V09 tmp2 [V09,T05] ( 3, 63.09) ref -> x0 "arr expr"
-; V10 cse0 [V10,T08] ( 3, 1.55) int -> x0 hoist multi-def "CSE - aggressive"
+; V08 tmp1 [V08,T04] ( 6, 63.09) ref -> x26 class-hnd "Inlining Arg" <<unknown class>>
+; V09 tmp2 [V09,T05] ( 6, 63.09) 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.51, 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.59
-G_M3612_IG04: ; bbWeight=0.52, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ ;; size=8 bbWeight=0.51 PerfScore 1.80
+G_M3612_IG04: ; bbWeight=0.51, 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.59
-G_M3612_IG05: ; bbWeight=10.51, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ sub w24, w0, #2
+ tbnz w24, #31, G_M3612_IG06
+ ;; size=16 bbWeight=0.51 PerfScore 2.57
+G_M3612_IG05: ; bbWeight=10.41, 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, #1 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.51 PerfScore 357.49
-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
-G_M3612_IG07: ; bbWeight=0.52, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ sub w24, w24, #1
+ tbz w24, #31, G_M3612_IG05
+ ;; size=92 bbWeight=10.41 PerfScore 353.92
+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.51, 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.33
-G_M3612_IG08: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ tbz w21, #31, G_M3612_IG16
+ ;; size=12 bbWeight=0.51 PerfScore 2.31
+G_M3612_IG08: ; bbWeight=0.51, 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.11
-G_M3612_IG09: ; bbWeight=0.49, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=20 bbWeight=0.51 PerfScore 3.08
+G_M3612_IG09: ; bbWeight=0.49, 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.49 PerfScore 1.97
-G_M3612_IG10: ; bbWeight=9.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=0.49 PerfScore 2.95
+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, #1 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.57
+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.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs +[x22]
sub w20, w21, #1
;; size=4 bbWeight=9.69 PerfScore 4.84
-G_M3612_IG11: ; bbWeight=9.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- tbnz w20, #31, G_M3612_IG13
+G_M3612_IG17: ; bbWeight=9.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ tbnz w20, #31, G_M3612_IG19
;; size=4 bbWeight=9.69 PerfScore 9.69
-G_M3612_IG12: ; bbWeight=90.31, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M3612_IG18: ; bbWeight=90.31, 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.31, gcrefRegs=480000 {x19 x22}, byrefRegs=000
blr x3
; gcrRegs -[x0]
; gcr arg pop 0
- cbnz w0, G_M3612_IG17
...
libraries.crossgen2.osx.arm64.checked.mch
+84 (+8.47%) : 141198.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.pmi.osx.arm64.checked.mch
+72 (+7.89%) : 189306.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
@@ -9,35 +9,35 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.VisualBasic.CompilerServices.VBBinder>
-; V01 arg1 [V01,T14] ( 4, 4 ) ref -> x1 class-hnd single-def <System.Reflection.MethodBase>
-; V02 arg2 [V02,T15] ( 4, 4 ) ref -> x19 class-hnd single-def <System.Reflection.MethodBase>
+; V01 arg1 [V01,T16] ( 4, 4 ) ref -> x1 class-hnd single-def <System.Reflection.MethodBase>
+; V02 arg2 [V02,T17] ( 4, 4 ) ref -> x19 class-hnd single-def <System.Reflection.MethodBase>
; V03 loc0 [V03,T20] ( 3, 2 ) ubyte -> x0
-; V04 loc1 [V04,T18] ( 9, 5.58) ref -> x20 class-hnd single-def <System.Reflection.ParameterInfo[]>
-; V05 loc2 [V05,T10] ( 13, 9.62) ref -> x19 class-hnd single-def <System.Reflection.ParameterInfo[]>
-; V06 loc3 [V06,T00] ( 30, 55.62) int -> x22
-; V07 loc4 [V07,T05] ( 14, 22 ) ref -> x25 class-hnd <System.Type>
-; V08 loc5 [V08,T06] ( 14, 22 ) ref -> x23 class-hnd <System.Type>
+; V04 loc1 [V04,T13] ( 13, 6.66) ref -> x20 class-hnd single-def <System.Reflection.ParameterInfo[]>
+; V05 loc2 [V05,T11] ( 13, 9.62) ref -> x19 class-hnd single-def <System.Reflection.ParameterInfo[]>
+; V06 loc3 [V06,T00] ( 35, 52.16) int -> x22
+; V07 loc4 [V07,T06] ( 13, 20.02) ref -> x25 class-hnd <System.Type>
+; V08 loc5 [V08,T05] ( 14, 22 ) ref -> x24 class-hnd <System.Type>
; V09 loc6 [V09,T09] ( 8, 9 ) int -> x21 single-def
;* V10 loc7 [V10,T24] ( 0, 0 ) int -> zero-ref single-def
-; V11 loc8 [V11,T19] ( 3, 5 ) int -> x25 single-def
-; V12 loc9 [V12,T13] ( 6, 6 ) int -> x21 single-def
+; V11 loc8 [V11,T14] ( 6, 6 ) int -> x24 single-def
+; V12 loc9 [V12,T15] ( 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,T16] ( 3, 6 ) int -> x21 "impAppendStmt"
+; V14 tmp1 [V14,T18] ( 3, 6 ) int -> x21 "impAppendStmt"
; V15 tmp2 [V15,T21] ( 2, 2 ) int -> x22 "impAppendStmt"
; V16 tmp3 [V16,T22] ( 2, 2 ) int -> x22 "impAppendStmt"
; V17 tmp4 [V17,T23] ( 2, 2 ) int -> x21 "Inline return value spill temp"
-; V18 tmp5 [V18,T17] ( 3, 6 ) int -> x0 "Inlining Arg"
+; V18 tmp5 [V18,T19] ( 3, 6 ) int -> x0 "Inlining Arg"
;* V19 tmp6 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.ParameterInfo>
;* V20 tmp7 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.ParameterInfo>
; V21 tmp8 [V21,T01] ( 6, 24 ) ref -> x0 "argument with side effect"
; V22 tmp9 [V22,T02] ( 6, 24 ) ref -> x0 "argument with side effect"
; V23 tmp10 [V23,T03] ( 6, 24 ) ref -> x0 "argument with side effect"
-; V24 tmp11 [V24,T04] ( 3, 24 ) ref -> x0 "argument with side effect"
-; V25 cse0 [V25,T08] ( 3, 11.88) long -> x23 "CSE - aggressive"
-; V26 cse1 [V26,T25] ( 3, 0.12) long -> x23 "CSE - conservative"
-; V27 cse2 [V27,T11] ( 6, 9.54) byref -> x24 hoist multi-def "CSE - aggressive"
-; V28 cse3 [V28,T12] ( 8, 7.58) int -> x23 multi-def "CSE - aggressive"
-; V29 cse4 [V29,T07] ( 8, 12.54) byref -> x26 hoist multi-def "CSE - aggressive"
+; V24 tmp11 [V24,T04] ( 6, 24 ) ref -> x0 "argument with side effect"
+; V25 cse0 [V25,T08] ( 3, 11.88) long -> x24 "CSE - aggressive"
+; V26 cse1 [V26,T25] ( 3, 0.12) long -> x24 "CSE - conservative"
+; V27 cse2 [V27,T12] ( 8, 9.58) byref -> x23 hoist multi-def "CSE - aggressive"
+; V28 cse3 [V28,T07] ( 8, 12.54) byref -> x26 hoist multi-def "CSE - aggressive"
+; V29 cse4 [V29,T10] ( 3, 9.90) long -> x26 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -94,18 +94,18 @@ 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]
;; size=160 bbWeight=1 PerfScore 53.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 x24, x22, #3, #32
+ ldr x0, [x23, x24]
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0x48]
@@ -113,83 +113,82 @@ G_M40132_IG03: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=100
blr x1
mov x25, x0
; gcrRegs +[x25]
- ldr x1, [x25]
- ldr x1, [x1, #0x60]
+ ldr x26, [x25]
+ ldr x1, [x26, #0x60]
ldr x1, [x1, #0x18]
blr x1
; gcrRegs -[x0]
cbz w0, G_M40132_IG05
;; size=48 bbWeight=3.96 PerfScore 100.98
-G_M40132_IG04: ; bbWeight=1.98, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=1000000 {x24}, byref
+G_M40132_IG04: ; bbWeight=1.98, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=800000 {x23}, byref
mov x0, x25
; gcrRegs +[x0]
- ldr x1, [x25]
- ldr x1, [x1, #0x70]
+ ldr x1, [x26, #0x70]
ldr x1, [x1, #0x08]
blr x1
; gcrRegs -[x25]
mov x25, x0
; gcrRegs +[x25]
- ;; size=24 bbWeight=1.98 PerfScore 21.78
-G_M40132_IG05: ; bbWeight=3.96, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=1000000 {x24}, byref, isz
+ ;; size=20 bbWeight=1.98 PerfScore 15.84
+G_M40132_IG05: ; bbWeight=3.96, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=800000 {x23}, byref, isz
; gcrRegs -[x0]
add x26, x19, #16
; byrRegs +[x26]
- ldr x0, [x26, x23]
+ ldr x0, [x26, x24]
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0x48]
ldr x1, [x1, #0x38]
blr x1
; byrRegs -[x26]
- mov x23, x0
- ; gcrRegs +[x23]
- ldr x1, [x23]
+ mov x24, x0
+ ; gcrRegs +[x24]
+ ldr x1, [x24]
ldr x1, [x1, #0x60]
ldr x1, [x1, #0x18]
blr x1
; gcrRegs -[x0]
cbz w0, G_M40132_IG07
;; size=48 bbWeight=3.96 PerfScore 99.00
-G_M40132_IG06: ; bbWeight=1.98, gcrefRegs=2980000 {x19 x20 x23 x25}, byrefRegs=1000000 {x24}, byref
- mov x0, x23
+G_M40132_IG06: ; bbWeight=1.98, gcrefRegs=3180000 {x19 x20 x24 x25}, byrefRegs=800000 {x23}, byref
+ mov x0, x24
; gcrRegs +[x0]
- ldr x1, [x23]
+ ldr x1, [x24]
ldr x1, [x1, #0x70]
ldr x1, [x1, #0x08]
blr x1
- ; gcrRegs -[x23]
- mov x23, x0
- ; gcrRegs +[x23]
+ ; gcrRegs -[x24]
+ mov x24, x0
+ ; gcrRegs +[x24]
;; size=24 bbWeight=1.98 PerfScore 21.78
-G_M40132_IG07: ; bbWeight=3.96, gcrefRegs=2980000 {x19 x20 x23 x25}, byrefRegs=1000000 {x24}, byref, isz
+G_M40132_IG07: ; bbWeight=3.96, gcrefRegs=3180000 {x19 x20 x24 x25}, byrefRegs=800000 {x23}, byref, isz
; gcrRegs -[x0]
- cmp x25, x23
+ cmp x25, x24
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 x25]
- ; byrRegs -[x24]
+ ; gcrRegs -[x24-x25]
+ ; 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 x24, x22, #3, #32
+ ldr x0, [x23, x24]
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0x48]
ldr x1, [x1, #0x38]
blr x1
- ; byrRegs -[x24]
+ ; byrRegs -[x23]
mov x25, x0
; gcrRegs +[x25]
ldr x1, [x25]
@@ -214,53 +213,53 @@ G_M40132_IG11: ; bbWeight=0.04, gcrefRegs=2180000 {x19 x20 x25}, byrefReg
; gcrRegs -[x0]
ldr w0, [x19, #0x08]
cmp w22, w0
- bhs G_M40132_IG26
+ bhs G_M40132_IG28
add x26, x19, #16
; byrRegs +[x26]
- ldr x0, [x26, x23]
+ ldr x0, [x26, x24]
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0x48]
ldr x1, [x1, #0x38]
blr x1
; byrRegs -[x26]
- mov x23, x0
- ; gcrRegs +[x23]
- ldr x1, [x23]
+ mov x24, x0
+ ; gcrRegs +[x24]
+ ldr x1, [x24]
ldr x1, [x1, #0x60]
ldr x1, [x1, #0x18]
blr x1
; gcrRegs -[x0]
cbz w0, G_M40132_IG13
;; size=60 bbWeight=0.04 PerfScore 1.18
-G_M40132_IG12: ; bbWeight=0.02, gcrefRegs=2980000 {x19 x20 x23 x25}, byrefRegs=0000 {}, byref
- mov x0, x23
+G_M40132_IG12: ; bbWeight=0.02, gcrefRegs=3180000 {x19 x20 x24 x25}, byrefRegs=0000 {}, byref
+ mov x0, x24
; gcrRegs +[x0]
- ldr x1, [x23]
+ ldr x1, [x24]
ldr x1, [x1, #0x70]
ldr x1, [x1, #0x08]
blr x1
- ; gcrRegs -[x23]
- mov x23, x0
- ; gcrRegs +[x23]
+ ; gcrRegs -[x24]
+ mov x24, x0
+ ; gcrRegs +[x24]
;; size=24 bbWeight=0.02 PerfScore 0.22
-G_M40132_IG13: ; bbWeight=0.04, gcrefRegs=2980000 {x19 x20 x23 x25}, byrefRegs=0000 {}, byref, isz
+G_M40132_IG13: ; bbWeight=0.04, gcrefRegs=3180000 {x19 x20 x24 x25}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cmp x25, x23
+ cmp x25, x24
bne G_M40132_IG15
adds w22, w22, #1
- bvs G_M40132_IG25
+ bvs G_M40132_IG27
cmp w22, w21
ble G_M40132_IG09
;; size=24 bbWeight=0.04 PerfScore 0.18
G_M40132_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
...
libraries_tests.run.osx.arm64.Release.mch
+88 (+1.91%) : 269088.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
@@ -13,13 +13,13 @@
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Globalization.Tests.CompareInfoCompareTests>
;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <int[]>
; V02 arg2 [V02,T154] ( 3, 2 ) ref -> [fp+0x2D8] class-hnd single-def tier0-frame <int[]>
-; V03 loc0 [V03,T112] ( 9, 302.41) ref -> [fp+0x2D0] class-hnd exact tier0-frame <System.Collections.Generic.List`1[ushort]>
+; V03 loc0 [V03,T112] ( 10, 302.41) ref -> [fp+0x2D0] class-hnd exact tier0-frame <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,T161] ( 2, 0.07) ref -> [fp+0x2C0] class-hnd tier0-frame <int[]>
-; V07 loc4 [V07,T159] ( 5, 0.19) int -> x26
-; V08 loc5 [V08,T71] ( 23, 2147.82) int -> x20
-; V09 loc6 [V09,T145] ( 8, 16.65) int -> x25
+; V06 loc3 [V06,T160] ( 6, 0.11) ref -> [fp+0x2C0] class-hnd tier0-frame <int[]>
+; V07 loc4 [V07,T159] ( 10, 0.19) int -> x26
+; V08 loc5 [V08,T71] ( 24, 2147.82) int -> x20
+; V09 loc6 [V09,T145] ( 9, 16.65) int -> x25
; V10 loc7 [V10,T116] ( 4, 200 ) ushort -> x23
; V11 loc8 [V11,T117] ( 3, 197.63) ushort -> x24
; V12 loc9 [V12,T83] ( 8, 590.51) int -> x21
@@ -28,13 +28,13 @@
; V15 loc12 [V15,T122] ( 2, 195.25) int -> x19
; V16 loc13 [V16,T123] ( 2, 195.25) int -> x22
; V17 loc14 [V17 ] ( 51, 14936.15) struct (40) [fp+0x270] do-not-enreg[XS] addr-exposed ld-addr-op tier0-frame <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
-; V18 loc15 [V18,T169] ( 3, 0 ) ref -> x19 class-hnd <int[]>
-; V19 loc16 [V19,T168] ( 5, 0 ) int -> x21
+; V18 loc15 [V18,T168] ( 3, 0 ) ref -> x19 class-hnd <int[]>
+; V19 loc16 [V19,T167] ( 5, 0 ) int -> x21
;* V20 loc17 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
;# 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,T167] ( 7, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V24 tmp3 [V24,T170] ( 3, 0 ) ref -> x23 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V23 tmp2 [V23,T166] ( 7, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V24 tmp3 [V24,T169] ( 3, 0 ) ref -> x23 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* 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>>
@@ -45,8 +45,8 @@
; V32 tmp11 [V32,T84] ( 3, 585.76) ref -> [fp+0xC0] class-hnd exact spill-single-def "Inlining Arg" <System.Globalization.CompareInfo>
;* V33 tmp12 [V33 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V34 tmp13 [V34 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V35 tmp14 [V35,T171] ( 3, 0 ) int -> x4 "Inline stloc first use temp"
-; V36 tmp15 [V36,T172] ( 3, 0 ) int -> x4
+; V35 tmp14 [V35,T170] ( 3, 0 ) int -> x4 "Inline stloc first use temp"
+; V36 tmp15 [V36,T171] ( 3, 0 ) int -> x4
;* V37 tmp16 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V38 tmp17 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V39 tmp18 [V39,T55] ( 2, 6248.10) int -> x4 "Inlining Arg"
@@ -107,8 +107,8 @@
; V94 tmp73 [V94,T85] ( 3, 585.76) ref -> x22 class-hnd exact "Inlining Arg" <System.Globalization.CompareInfo>
;* V95 tmp74 [V95 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V96 tmp75 [V96 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V97 tmp76 [V97,T173] ( 3, 0 ) int -> x4 "Inline stloc first use temp"
-; V98 tmp77 [V98,T174] ( 3, 0 ) int -> x4
+; V97 tmp76 [V97,T172] ( 3, 0 ) int -> x4 "Inline stloc first use temp"
+; V98 tmp77 [V98,T173] ( 3, 0 ) int -> x4
;* V99 tmp78 [V99 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V100 tmp79 [V100 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V101 tmp80 [V101,T57] ( 2, 6248.10) int -> x27 "Inlining Arg"
@@ -282,7 +282,7 @@
;* V269 tmp248 [V269,T28] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
;* V270 tmp249 [V270 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V271 tmp250 [V271 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V272 tmp251 [V272,T31] ( 6, 12691.46) ref -> registers class-hnd "Inline return value spill temp" <System.String>
+; V272 tmp251 [V272,T31] ( 6, 12691.46) ref -> x5 class-hnd "Inline return value spill temp" <System.String>
; V273 tmp252 [V273,T114] ( 5, 292.88) ref -> [fp+0xA8] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
;* V274 tmp253 [V274 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V275 tmp254 [V275 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -294,7 +294,7 @@
;* V281 tmp260 [V281 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[uint]>
;* V282 tmp261 [V282 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
;* V283 tmp262 [V283 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
-; V284 tmp263 [V284,T150] ( 3, 6.23) int -> registers "Inline return value spill temp"
+; V284 tmp263 [V284,T150] ( 3, 6.23) int -> x5 "Inline return value spill temp"
; V285 tmp264 [V285,T141] ( 5, 47.79) int -> x7 "Inline stloc first use temp"
;* V286 tmp265 [V286 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V287 tmp266 [V287,T140] ( 5, 48.89) int -> x8 "Inline stloc first use temp"
@@ -325,7 +325,7 @@
;* V312 tmp291 [V312 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V313 tmp292 [V313,T30] ( 6, 13249.94) int -> [fp+0x118] spill-single-def "Inlining Arg"
;* V314 tmp293 [V314 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V315 tmp294 [V315,T162] ( 3, 0.07) ref -> [fp+0xA0] class-hnd spill-single-def "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
+; V315 tmp294 [V315,T161] ( 3, 0.07) ref -> [fp+0xA0] class-hnd spill-single-def "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
;* V316 tmp295 [V316 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V317 tmp296 [V317 ] ( 0, 0 ) int -> zero-ref
;* V318 tmp297 [V318 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
@@ -340,7 +340,7 @@
;* V327 tmp306 [V327 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V328 tmp307 [V328 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V329 tmp308 [V329 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V330 tmp309 [V330,T163] ( 3, 0.07) int -> [fp+0x110] spill-single-def "Inline stloc first use temp"
+; V330 tmp309 [V330,T162] ( 3, 0.07) int -> [fp+0x110] spill-single-def "Inline stloc first use temp"
;* V331 tmp310 [V331 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V332 tmp311 [V332 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V333 tmp312 [V333 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -715,10 +715,10 @@
; V702 tmp681 [V702,T158] ( 2, 2.82) int -> x2 "field V321._length (fldOffset=0x8)" P-INDEP
;* V703 tmp682 [V703 ] ( 0, 0 ) byref -> zero-ref "field V322._reference (fldOffset=0x0)" P-INDEP
;* V704 tmp683 [V704 ] ( 0, 0 ) int -> zero-ref "field V322._length (fldOffset=0x8)" P-INDEP
-; V705 tmp684 [V705,T164] ( 2, 0.04) byref -> [fp+0x68] spill-single-def "field V327._reference (fldOffset=0x0)" P-INDEP
+; V705 tmp684 [V705,T163] ( 2, 0.04) byref -> [fp+0x68] spill-single-def "field V327._reference (fldOffset=0x0)" P-INDEP
;* V706 tmp685 [V706 ] ( 0, 0 ) int -> zero-ref "field V327._length (fldOffset=0x8)" P-INDEP
-; V707 tmp686 [V707,T165] ( 2, 0.04) byref -> x2 "field V331._reference (fldOffset=0x0)" P-INDEP
-; V708 tmp687 [V708,T166] ( 2, 0.04) int -> x3 "field V331._length (fldOffset=0x8)" P-INDEP
+; V707 tmp686 [V707,T164] ( 2, 0.04) byref -> x2 "field V331._reference (fldOffset=0x0)" P-INDEP
+; V708 tmp687 [V708,T165] ( 2, 0.04) int -> x3 "field V331._length (fldOffset=0x8)" P-INDEP
;* V709 tmp688 [V709 ] ( 0, 0 ) byref -> zero-ref "field V332._reference (fldOffset=0x0)" P-INDEP
;* V710 tmp689 [V710 ] ( 0, 0 ) int -> zero-ref "field V332._length (fldOffset=0x8)" P-INDEP
; V711 tmp690 [V711,T36] ( 3, 12567.13) byref -> x4 "field V337._reference (fldOffset=0x0)" P-INDEP
@@ -795,10 +795,9 @@
; V782 tmp761 [V782,T93] ( 2, 390.51) ref -> x1 "argument with side effect"
; V783 cse0 [V783,T07] ( 3, 56114.69) ref -> [fp+0x60] spill-single-def hoist "CSE - aggressive"
; V784 cse1 [V784,T113] ( 9, 292.88) int -> [fp+0xD8] multi-def "CSE - conservative"
-; V785 cse2 [V785,T160] ( 3, 0.11) int -> x0 "CSE - conservative"
-; V786 cse3 [V786,T27] ( 3, 18744.31) int -> x1 "CSE - moderate"
-; V787 cse4 [V787,T02] ( 36,182518.55) ref -> x0 multi-def "CSE - aggressive"
-; V788 cse5 [V788,T32] ( 4, 12691.46) int -> [fp+0xD4] spill-single-def "CSE - moderate"
+; V785 cse2 [V785,T27] ( 3, 18744.31) int -> x1 "CSE - moderate"
+; V786 cse3 [V786,T02] ( 36,182518.55) ref -> x0 multi-def "CSE - aggressive"
+; V787 cse4 [V787,T32] ( 4, 12691.46) int -> [fp+0xD4] spill-single-def "CSE - moderate"
;
; Lcl frame size = 384
@@ -826,8 +825,8 @@ G_M28013_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr w24, [fp, #0xD1FFAB1E]
ldr w21, [fp, #0xD1FFAB1E]
;; size=84 bbWeight=1 PerfScore 26.50
-G_M28013_IG02: ; bbWeight=1, gcVars=000000020400000000000000000000000000000000000000 {V02 V06}, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars +{V02 V06 V154}
+G_M28013_IG02: ; bbWeight=1, gcVars=000000010400000000000000000000000000000000000000 {V02 V06}, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars +{V02 V06 V154 V160}
add x0, fp, #32 // [V513 PInvokeFrame+0x08]
mov x1, x12
bl CORINFO_HELP_INIT_PINVOKE_FRAME
@@ -843,21 +842,92 @@ G_M28013_IG02: ; bbWeight=1, gcVars=0000000204000000000000000000000000000
; gcrRegs +[x1]
str x1, [fp, #0x60] // [V783 cse0]
; GC ptr vars +{V783}
- b G_M28013_IG04
+ b G_M28013_IG11
;; size=56 bbWeight=1 PerfScore 12.00
-G_M28013_IG03: ; bbWeight=2.37, gcVars=000000020400000000010000000000000000000000000080 {V02 V03 V06 V783}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x1 x22]
- ; GC ptr vars -{V154} +{V03 V112}
+G_M28013_IG03: ; bbWeight=0.04, gcVars=000000010400000000000000000000000000000000000080 {V02 V06 V783}, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x1]
+ ; GC ptr vars -{V154 V160}
+ ldr x27, [fp, #0xD1FFAB1E] // [V06 loc3]
+ ; gcrRegs +[x27]
+ cbz x27, G_M28013_IG129
+ tbnz w26, #31, G_M28013_IG129
+ ;; size=12 bbWeight=0.04 PerfScore 0.15
+G_M28013_IG04: ; bbWeight=0.07, gcVars=000000000400000000000000000000000000000000000080 {V02 V783}, gcrefRegs=8400000 {x22 x27}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars -{V06}
+ b G_M28013_IG06
+ ;; size=4 bbWeight=0.07 PerfScore 0.07
+G_M28013_IG05: ; bbWeight=0.04, gcrefRegs=8400000 {x22 x27}, byrefRegs=0000 {}, byref, isz
+ add x0, x27, #16
+ ; byrRegs +[x0]
+ ldr w20, [x0, w26, UXTW #2]
+ mov w25, wzr
+ mov x0, x22
+ ; gcrRegs +[x0]
+ ; byrRegs -[x0]
+ movz x1, #0xD1FFAB1E // code for <unknown method>
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ ldr x1, [x1]
+ blr x1
+ ; gcrRegs -[x0]
+ ; gcr arg pop 0
+ cmp w0, #0
+ bgt G_M28013_IG07
+ ;; size=44 bbWeight=0.04 PerfScore 0.43
+G_M28013_IG06: ; bbWeight=0.04, gcrefRegs=8400000 {x22 x27}, byrefRegs=0000 {}, byref, isz
+ add w26, w26, #1
+ ldr w0, [x27, #0x08]
+ cmp w0, w26
+ ble G_M28013_IG158
+ b G_M28013_IG05
+ ;; size=20 bbWeight=0.04 PerfScore 0.22
+G_M28013_IG07: ; bbWeight=0.02, gcrefRegs=8400000 {x22 x27}, byrefRegs=0000 {}, byref
+ str x22, [fp, #0xD1FFAB1E] // [V03 loc0]
+ ; GC ptr vars +{V03}
+ str x27, [fp, #0xD1FFAB1E] // [V06 loc3]
+ ; GC ptr vars +{V06}
+ b G_M28013_IG10
+ ;; size=12 bbWeight=0.02 PerfScore 0.06
+G_M28013_IG08: ; bbWeight=0.00, gcrefRegs=8400000 {x22 x27}, byrefRegs=0000 {}, byref, isz
+ ; GC ptr vars -{V03 V06}
+ ldr w0, [x27, #0x08]
+ cmp w26, w0
+ bhs G_M28013_IG130
+ add x0, x27, #16
+ ; byrRegs +[x0]
+ ldr w20, [x0, w26, UXTW #2]
+ mov w25, wzr
+ mov x0, x22
+ ; gcrRegs +[x0]
+ ; byrRegs -[x0]
+ movz x1, #0xD1FFAB1E // code for <unknown method>
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ ldr x1, [x1]
+ blr x1
+ ; gcrRegs -[x0]
+ ; gcr arg pop 0
+ cmp w0, #0
+ ble G_M28013_IG129
+ ;; size=56 bbWeight=0.00 PerfScore 0.01
+G_M28013_IG09: ; bbWeight=0.00, gcrefRegs=8400000 {x22 x27}, byrefRegs=0000 {}, byref
+ str x22, [fp, #0xD1FFAB1E] // [V03 loc0]
+ ; GC ptr vars +{V03}
+ str x27, [fp, #0xD1FFAB1E] // [V06 loc3]
+ ; GC ptr vars +{V06}
+ ;; size=8 bbWeight=0.00 PerfScore 0.00
+G_M28013_IG10: ; bbWeight=2.37, gcVars=000000010400000000010000000000000000000000000080 {V02 V03 V06 V783}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x22 x27]
ldr x22, [fp, #0xD1FFAB1E] // [V03 loc0]
; gcrRegs +[x22]
ldr w0, [x22, #0x10]
cmp w25, w0
- bhs G_M28013_IG145
+ bhs G_M28013_IG152
ldr x0, [x22, #0x08]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w25, w1
- bhs G_M28013_IG123
+ bhs G_M28013_IG130
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -867,8 +937,8 @@ G_M28013_IG03: ; bbWeight=2.37, gcVars=0000000204000000000100000000000000
uxth w24, w0
sxtw w21, w25
;; size=52 bbWeight=2.37 PerfScore 45.09
-G_M28013_IG04: ; bbWeight=2.37, gcVars=000000020400000000000000000000000000000000000080 {V02 V06 V783}, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars -{V03 V112}
+G_M28013_IG11: ; bbWeight=2.37, gcVars=000000010400000000000000000000000000000000000080 {V02 V06 V783}, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V03}
mov x0, x22
; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -880,19 +950,19 @@ G_M28013_IG04: ; bbWeight=2.37, gcVars=0000000204000000000000000000000000
; gcrRegs -[x0]
; gcr arg pop 0
cmp w0, w21
- ble G_M28013_IG45
+ ble G_M28013_IG52
...
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| benchmarks.run_pgo.osx.arm64.checked.mch |
1 |
0 |
1 |
0 |
-0 |
+60 |
| benchmarks.run_tiered.osx.arm64.checked.mch |
2 |
0 |
2 |
0 |
-0 |
+208 |
| coreclr_tests.run.osx.arm64.checked.mch |
1 |
0 |
1 |
0 |
-0 |
+172 |
| libraries.crossgen2.osx.arm64.checked.mch |
1 |
0 |
1 |
0 |
-0 |
+84 |
| libraries.pmi.osx.arm64.checked.mch |
1 |
0 |
1 |
0 |
-0 |
+72 |
| libraries_tests.run.osx.arm64.Release.mch |
1 |
0 |
1 |
0 |
-0 |
+88 |
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| realworld.run.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
7 |
0 |
7 |
0 |
-0 |
+684 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.osx.arm64.checked.mch |
24,860 |
4 |
24,856 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_pgo.osx.arm64.checked.mch |
83,813 |
48,088 |
35,725 |
0 (0.00%) |
4 (0.00%) |
| benchmarks.run_tiered.osx.arm64.checked.mch |
48,123 |
37,350 |
10,773 |
0 (0.00%) |
1 (0.00%) |
| coreclr_tests.run.osx.arm64.checked.mch |
585,884 |
356,765 |
229,119 |
1 (0.00%) |
4 (0.00%) |
| libraries.crossgen2.osx.arm64.checked.mch |
234,105 |
15 |
234,090 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.osx.arm64.checked.mch |
316,348 |
18 |
316,330 |
0 (0.00%) |
0 (0.00%) |
| libraries_tests.run.osx.arm64.Release.mch |
643,885 |
468,829 |
175,056 |
0 (0.00%) |
0 (0.00%) |
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
302,301 |
21,597 |
280,704 |
0 (0.00%) |
0 (0.00%) |
| realworld.run.osx.arm64.checked.mch |
31,542 |
3 |
31,539 |
0 (0.00%) |
0 (0.00%) |
|
2,270,861 |
932,669 |
1,338,192 |
1 (0.00%) |
9 (0.00%) |
jit-analyze output
benchmarks.run_pgo.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 34437860 (overridden on cmd)
Total bytes of diff: 34437920 (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 : 66989.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) : 66989.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
Top method regressions (percentages):
60 (7.61 % of base) : 66989.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.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15516128 (overridden on cmd)
Total bytes of diff: 15516336 (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 : 32752.dasm (16.02 % of base)
60 : 43605.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) : 32752.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
60 (8.02 % of base) : 43605.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
Top method regressions (percentages):
148 (16.02 % of base) : 32752.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
60 (8.02 % of base) : 43605.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.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 486460784 (overridden on cmd)
Total bytes of diff: 486460956 (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 : 299093.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) : 299093.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
Top method regressions (percentages):
172 (47.78 % of base) : 299093.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.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 55725496 (overridden on cmd)
Total bytes of diff: 55725580 (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 : 141198.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) : 141198.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
Top method regressions (percentages):
84 (8.47 % of base) : 141198.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.pmi.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 80219060 (overridden on cmd)
Total bytes of diff: 80219132 (overridden on cmd)
Total bytes of delta: 72 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
72 : 189306.dasm (7.89 % of base)
1 total files with Code Size differences (0 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
72 (7.89 % of base) : 189306.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
Top method regressions (percentages):
72 (7.89 % of base) : 189306.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.osx.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 324580556 (overridden on cmd)
Total bytes of diff: 324580644 (overridden on cmd)
Total bytes of delta: 88 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
88 : 269088.dasm (1.91 % of base)
1 total files with Code Size differences (0 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
88 (1.91 % of base) : 269088.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
Top method regressions (percentages):
88 (1.91 % of base) : 269088.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
1 total methods with Code Size differences (0 improved, 1 regressed).
windows arm64
Diffs are based on 2,341,109 contexts (938,449 MinOpts, 1,402,660 FullOpts).
MISSED contexts: base: 0 (0.00%), diff: 8 (0.00%)
Overall (+668 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.windows.arm64.checked.mch |
45,573,924 |
+60 |
| benchmarks.run_tiered.windows.arm64.checked.mch |
15,587,008 |
+208 |
| coreclr_tests.run.windows.arm64.checked.mch |
495,312,136 |
+172 |
| libraries.crossgen2.windows.arm64.checked.mch |
59,070,264 |
+84 |
| libraries_tests.run.windows.arm64.Release.mch |
330,792,704 |
+144 |
FullOpts (+668 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.windows.arm64.checked.mch |
29,562,156 |
+60 |
| benchmarks.run_tiered.windows.arm64.checked.mch |
4,409,600 |
+208 |
| coreclr_tests.run.windows.arm64.checked.mch |
156,582,272 |
+172 |
| libraries.crossgen2.windows.arm64.checked.mch |
59,068,628 |
+84 |
| libraries_tests.run.windows.arm64.Release.mch |
127,359,108 |
+144 |
Example diffs
benchmarks.run_pgo.windows.arm64.checked.mch
+60 (+7.61%) : 72896.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, 104.54) ref -> x0 class-hnd single-def <float[][]>
+; V00 arg0 [V00,T13] ( 15, 104.74) ref -> x0 class-hnd single-def <float[][]>
; V01 arg1 [V01,T20] ( 7, 4.63) ref -> x1 class-hnd single-def <int[][]>
; V02 arg2 [V02,T23] ( 3, 3 ) ref -> x2 class-hnd single-def <double[]>
; V03 arg3 [V03,T25] ( 4, 2.21) ref -> x3 class-hnd single-def <JetStream.SampleVarianceUpperTriangularMatrix>
-; V04 arg4 [V04,T24] ( 4, 2.62) int -> x4 single-def
+; V04 arg4 [V04,T24] ( 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,1699.01) int -> x5
-; V08 loc3 [V08,T28] ( 5, 0.63) ref -> x8 class-hnd <float[]>
-; V09 loc4 [V09,T12] ( 12, 108.60) int -> x7
+; V07 loc2 [V07,T05] ( 25,1699.01) int -> x5
+; V08 loc3 [V08,T28] ( 6, 0.63) ref -> x8 class-hnd <float[]>
+; V09 loc4 [V09,T12] ( 13, 108.60) int -> x7
;* V10 loc5 [V10 ] ( 0, 0 ) ubyte -> zero-ref
; V11 loc6 [V11,T07] ( 18,1200.11) int -> x6
; V12 loc7 [V12,T31] ( 4, 199.58) float -> d16
@@ -45,8 +45,8 @@
; V32 cse2 [V32,T11] ( 5, 298.16) long -> xip0 "CSE - aggressive"
; V33 cse3 [V33,T27] ( 5, 3.01) long -> x15 "CSE - moderate"
; V34 cse4 [V34,T10] ( 16, 303.19) int -> x12 hoist multi-def "CSE - aggressive"
-; V35 cse5 [V35,T14] ( 6, 101.90) byref -> x9 hoist "CSE - aggressive"
-; V36 cse6 [V36,T15] ( 7, 101.63) int -> x2 hoist "CSE - aggressive"
+; V35 cse5 [V35,T15] ( 9, 101.83) int -> x2 hoist "CSE - aggressive"
+; V36 cse6 [V36,T14] ( 6, 101.90) 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.19
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.13
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.62
+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.10
-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.73, gcrefRegs=014B {x0 x1 x3 x6 x8}, byrefRegs=0200 {x9}, byref, isz
+G_M56974_IG14: ; bbWeight=6.73, 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.73 PerfScore 30.30
-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.92
-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 14226.01
-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
...
benchmarks.run_tiered.windows.arm64.checked.mch
+60 (+8.02%) : 43870.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%) : 31904.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.windows.arm64.checked.mch
+172 (+47.78%) : 511543.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.62) 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.29) int -> x20
-; V05 loc4 [V05,T01] ( 8,130.36) 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.62) 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.29) int -> x24
+; V05 loc4 [V05,T01] ( 10,130.36) int -> x21
; V06 loc5 [V06,T00] ( 6,380.46) int -> x20
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T04] ( 3, 63.64) ref -> x0 class-hnd "Inlining Arg" <<unknown class>>
-; V09 tmp2 [V09,T05] ( 3, 63.64) ref -> x0 "arr expr"
-; V10 cse0 [V10,T08] ( 3, 1.57) int -> x0 hoist multi-def "CSE - aggressive"
+; V08 tmp1 [V08,T04] ( 6, 63.64) ref -> x26 class-hnd "Inlining Arg" <<unknown class>>
+; V09 tmp2 [V09,T05] ( 6, 63.64) 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.61, 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.59
+G_M3612_IG05: ; bbWeight=10.50, 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.61 PerfScore 360.62
-G_M3612_IG06: ; bbWeight=1.05, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- cbnz w21, G_M3612_IG04
- ;; size=4 bbWeight=1.05 PerfScore 1.05
+ sub w24, w24, #1
+ tbz w24, #31, G_M3612_IG05
+ ;; size=92 bbWeight=10.50 PerfScore 357.01
+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.14
-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.77, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=0.50 PerfScore 2.98
+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.61
+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.77, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs +[x22]
sub w20, w21, #1
;; size=4 bbWeight=9.77 PerfScore 4.89
-G_M3612_IG11: ; bbWeight=9.77, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- tbnz w20, #31, G_M3612_IG13
+G_M3612_IG17: ; bbWeight=9.77, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ tbnz w20, #31, G_M3612_IG19
;; size=4 bbWeight=9.77 PerfScore 9.77
-G_M3612_IG12: ; bbWeight=90.23, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M3612_IG18: ; bbWeight=90.23, 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.23, 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.windows.arm64.checked.mch
+84 (+8.47%) : 143221.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.windows.arm64.Release.mch
+60 (+2.22%) : 271752.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
@@ -16,10 +16,10 @@
; V03 loc0 [V03,T71] ( 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,T92] ( 2, 0.08) ref -> x27 class-hnd <int[]>
-; V07 loc4 [V07,T90] ( 5, 0.19) int -> x26
-; V08 loc5 [V08,T72] ( 4, 292.88) int -> x22
-; V09 loc6 [V09,T86] ( 8, 16.74) int -> x25
+; V06 loc3 [V06,T91] ( 6, 0.11) ref -> x27 class-hnd <int[]>
+; V07 loc4 [V07,T90] ( 10, 0.19) int -> x26
+; V08 loc5 [V08,T72] ( 5, 292.88) int -> x22
+; V09 loc6 [V09,T86] ( 9, 16.74) int -> x25
; V10 loc7 [V10,T74] ( 4, 200 ) ushort -> x23
; V11 loc8 [V11,T75] ( 3, 197.61) ushort -> x24
; V12 loc9 [V12,T47] ( 8, 590.45) int -> x20
@@ -28,13 +28,13 @@
; V15 loc12 [V15,T77] ( 2, 195.23) int -> [fp+0x1CC] spill-single-def tier0-frame
; V16 loc13 [V16,T78] ( 2, 195.23) int -> [fp+0x1C8] spill-single-def tier0-frame
; V17 loc14 [V17 ] ( 79,98883.20) struct (40) [fp+0x1A0] do-not-enreg[XS] addr-exposed ld-addr-op tier0-frame <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
-; V18 loc15 [V18,T95] ( 3, 0 ) ref -> x19 class-hnd <int[]>
-; V19 loc16 [V19,T94] ( 5, 0 ) int -> x20
-; V20 loc17 [V20,T93] ( 6, 0 ) ref -> x22 class-hnd exact <System.Globalization.Tests.CompareInfoCompareTests+<>c__DisplayClass11_0>
+; 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>
;# 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,T96] ( 3, 0 ) ref -> x23 class-hnd exact "NewObj constructor temp" <System.Func`1[System.Object]>
+; V24 tmp3 [V24,T95] ( 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>>
@@ -680,13 +680,12 @@
;* V667 tmp646 [V667 ] ( 0, 0 ) long -> zero-ref "Cast away GC"
;* V668 tmp647 [V668 ] ( 0, 0 ) long -> zero-ref "Cast away GC"
;* V669 tmp648 [V669 ] ( 0, 0 ) long -> zero-ref "Cast away GC"
-; V670 tmp649 [V670,T98] ( 3, 0 ) struct ( 8) [fp+0x70] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
+; V670 tmp649 [V670,T97] ( 3, 0 ) struct ( 8) [fp+0x70] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
; V671 tmp650 [V671,T87] ( 3, 14.32) ref -> x0 "arr expr"
-; V672 tmp651 [V672,T97] ( 3, 0 ) ref -> x0 "arr expr"
-; V673 cse0 [V673,T91] ( 3, 0.11) int -> x1 "CSE - conservative"
-; V674 cse1 [V674,T88] ( 4, 7.20) int -> x0 "CSE - conservative"
-; V675 cse2 [V675,T00] ( 27,98394.14) ref -> x1 multi-def "CSE - aggressive"
-; V676 cse3 [V676,T01] ( 10,70281.53) ref -> [fp+0x18] multi-def "CSE - aggressive"
+; V672 tmp651 [V672,T96] ( 3, 0 ) ref -> x0 "arr expr"
+; V673 cse0 [V673,T88] ( 5, 7.20) int -> x0 "CSE - conservative"
+; V674 cse1 [V674,T00] ( 27,98394.14) ref -> x1 multi-def "CSE - aggressive"
+; V675 cse2 [V675,T01] ( 10,70281.53) ref -> [fp+0x18] multi-def "CSE - aggressive"
;
; Lcl frame size = 176
@@ -716,16 +715,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.39, 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_IG56
+ tbnz w26, #31, G_M28013_IG56
+ ;; size=8 bbWeight=0.04 PerfScore 0.07
+G_M28013_IG04: ; bbWeight=0.08, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref
+ b G_M28013_IG06
+ ;; size=4 bbWeight=0.08 PerfScore 0.08
+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_IG68
+ 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_IG57
+ add x1, x27, #16
+ ; byrRegs +[x1]
+ ldr w22, [x1, w26, UXTW #2]
+ mov w25, wzr
+ cmp w0, #0
+ ble G_M28013_IG56
+ ;; size=32 bbWeight=0.00 PerfScore 0.00
+G_M28013_IG08: ; bbWeight=2.39, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x1]
cmp w25, w0
- bhs G_M28013_IG63
+ bhs G_M28013_IG69
ldr x0, [x21, #0x08]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w25, w1
- bhs G_M28013_IG51
+ bhs G_M28013_IG57
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -735,20 +769,20 @@ G_M28013_IG03: ; bbWeight=2.39, gcrefRegs=8280000 {x19 x21 x27}, byrefReg
uxth w24, w0
sxtw w20, w25
;; size=44 bbWeight=2.39 PerfScore 33.41
-G_M28013_IG04: ; bbWeight=2.39, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref, isz
+G_M28013_IG09: ; bbWeight=2.39, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref, isz
ldr w0, [x21, #0x10]
cmp w20, w0
- bge G_M28013_IG49
+ bge G_M28013_IG54
;; size=12 bbWeight=2.39 PerfScore 10.74
-G_M28013_IG05: ; bbWeight=97.61, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref, isz
+G_M28013_IG10: ; bbWeight=97.61, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref, isz
ldr w0, [x21, #0x10]
cmp w20, w0
- bhs G_M28013_IG63
+ bhs G_M28013_IG69
ldr x0, [x21, #0x08]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w20, w1
- bhs G_M28013_IG51
+ bhs G_M28013_IG57
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -839,7 +873,7 @@ G_M28013_IG05: ; bbWeight=97.61, 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_IG57
+ bhi G_M28013_IG63
ldr x1, [fp, #0xD1FFAB1E] // [V17 loc14+0x18]
; byrRegs +[x1]
ubfiz x2, x0, #1, #32
@@ -851,9 +885,9 @@ G_M28013_IG05: ; bbWeight=97.61, gcrefRegs=8280000 {x19 x21 x27}, byrefRe
; byrRegs -[x1]
sub w3, w1, w0
str w3, [fp, #0xBC] // [V32 tmp11]
- tbz w3, #31, G_M28013_IG07
+ tbz w3, #31, G_M28013_IG12
;; size=304 bbWeight=97.61 PerfScore 8638.77
-G_M28013_IG06: ; bbWeight=1561.81, gcVars=00000000000000000080000000000000 {V33}, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, gcvars, byref
+G_M28013_IG11: ; bbWeight=1561.81, gcVars=00000000000000000080000000000000 {V33}, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[x2]
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
@@ -868,10 +902,10 @@ G_M28013_IG06: ; bbWeight=1561.81, gcVars=0000000000000000008000000000000
; gcrRegs -[x0]
; gcr arg pop 0
;; size=36 bbWeight=1561.81 PerfScore 11713.59
-G_M28013_IG07: ; bbWeight=97.61, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref, isz
+G_M28013_IG12: ; bbWeight=97.61, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #0xBC] // [V32 tmp11]
cmp w0, #15
- blo G_M28013_IG52
+ blo G_M28013_IG58
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -885,22 +919,22 @@ G_M28013_IG07: ; bbWeight=97.61, gcrefRegs=8280000 {x19 x21 x27}, byrefRe
add w0, w0, #15
str w0, [fp, #0xD1FFAB1E] // [V17 loc14+0x10]
;; size=56 bbWeight=97.61 PerfScore 1805.84
-G_M28013_IG08: ; bbWeight=97.61, gcVars=00000000000000000000000000000000 {}, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M28013_IG13: ; bbWeight=97.61, gcVars=00000000000000000000000000000000 {}, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[x1]
; GC ptr vars -{V33}
sxtw w3, w23
str w3, [fp, #0xB8] // [V40 tmp19]
ldrb w0, [fp, #0xD1FFAB1E] // [V17 loc14+0x14]
- cbz w0, G_M28013_IG11
+ cbz w0, G_M28013_IG16
;; size=16 bbWeight=97.61 PerfScore 439.26
-G_M28013_IG09: ; bbWeight=1561.81, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref
+G_M28013_IG14: ; bbWeight=1561.81, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref
add x0, fp, #0xD1FFAB1E // [V17 loc14]
mov w1, w3
movz x4, #0xD1FFAB1E
movk x4, #0xD1FFAB1E LSL #16
movk x4, #0xD1FFAB1E LSL #32
- str x4, [fp, #0x18] // [V676 cse3]
- ; GC ptr vars +{V676}
+ str x4, [fp, #0x18] // [V675 cse2]
+ ; GC ptr vars +{V675}
mov x2, x4
; gcrRegs +[x2]
movz x3, #0xD1FFAB1E // code for <unknown method>
@@ -910,10 +944,10 @@ G_M28013_IG09: ; bbWeight=1561.81, gcrefRegs=8280000 {x19 x21 x27}, byref
blr x3
; gcrRegs -[x2]
; gcr arg pop 0
- b G_M28013_IG15
+ b G_M28013_IG20
;; size=52 bbWeight=1561.81 PerfScore 16399.02
-G_M28013_IG10: ; bbWeight=6247.25, gcVars=00000000000000000000000000000000 {}, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V676}
+G_M28013_IG15: ; bbWeight=6247.25, gcVars=00000000000000000000000000000000 {}, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars -{V675}
add x0, fp, #0xD1FFAB1E // [V17 loc14]
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
@@ -923,11 +957,11 @@ G_M28013_IG10: ; bbWeight=6247.25, gcVars=0000000000000000000000000000000
; gcr arg pop 0
ldr w3, [fp, #0xB8] // [V40 tmp19]
;; size=28 bbWeight=6247.25 PerfScore 49977.97
-G_M28013_IG11: ; bbWeight=97.61, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref, isz
+G_M28013_IG16: ; bbWeight=97.61, 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_IG57
+ bhi G_M28013_IG63
ldr x1, [fp, #0xD1FFAB1E] // [V17 loc14+0x18]
; byrRegs +[x1]
ubfiz x2, x0, #1, #32
@@ -941,9 +975,9 @@ G_M28013_IG11: ; bbWeight=97.61, gcrefRegs=8280000 {x19 x21 x27}, byrefRe
; byrRegs -[x2]
sxtw w6, w2
str w6, [fp, #0xAC] // [V47 tmp26]
- tbz w6, #31, G_M28013_IG13
+ tbz w6, #31, G_M28013_IG18
;; size=52 bbWeight=97.61 PerfScore 1464.20
-G_M28013_IG12: ; bbWeight=6247.25, gcVars=00000000000000000000000000004000 {V48}, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, gcvars, byref
+G_M28013_IG17: ; bbWeight=6247.25, gcVars=00000000000000000000000000004000 {V48}, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, gcvars, byref
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -957,7 +991,7 @@ G_M28013_IG12: ; bbWeight=6247.25, gcVars=0000000000000000000000000000400
; gcrRegs -[x0]
; gcr arg pop 0
;; size=36 bbWeight=6247.25 PerfScore 46854.35
-G_M28013_IG13: ; bbWeight=12494.49, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref, isz
+G_M28013_IG18: ; bbWeight=12494.49, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref, isz
ldr x5, [fp, #0x60] // [V48 tmp27]
; byrRegs +[x5]
ldr w6, [fp, #0xAC] // [V47 tmp26]
@@ -966,8 +1000,8 @@ G_M28013_IG13: ; bbWeight=12494.49, gcrefRegs=8280000 {x19 x21 x27}, byre
movk x4, #0xD1FFAB1E LSL #32
mov x8, x4
; gcrRegs +[x8]
- str x8, [fp, #0x18] // [V676 cse3]
...
+84 (+3.98%) : 276066.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
@@ -13,13 +13,13 @@
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Globalization.Tests.CompareInfoCompareTests>
;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <int[]>
; V02 arg2 [V02,T59] ( 3, 2 ) ref -> x19 class-hnd single-def <int[]>
-; V03 loc0 [V03,T40] ( 9, 302.42) ref -> x22 class-hnd exact <System.Collections.Generic.List`1[ushort]>
+; V03 loc0 [V03,T40] ( 10, 302.42) ref -> x22 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,T62] ( 2, 0.08) ref -> x27 class-hnd <int[]>
-; V07 loc4 [V07,T60] ( 5, 0.19) int -> x26
-; V08 loc5 [V08,T08] ( 5, 1854.72) int -> x20
-; V09 loc6 [V09,T57] ( 8, 16.73) int -> x25
+; V06 loc3 [V06,T61] ( 6, 0.11) ref -> x27 class-hnd <int[]>
+; V07 loc4 [V07,T60] ( 10, 0.19) int -> x26
+; V08 loc5 [V08,T08] ( 6, 1854.72) int -> x20
+; V09 loc6 [V09,T57] ( 9, 16.73) int -> x25
; V10 loc7 [V10,T47] ( 4, 200 ) ushort -> x23
; V11 loc8 [V11,T48] ( 3, 197.62) ushort -> x24
; V12 loc9 [V12,T14] ( 8, 590.46) int -> x21
@@ -28,13 +28,13 @@
; V15 loc12 [V15,T49] ( 2, 195.23) int -> [fp+0x19C] spill-single-def tier0-frame
; V16 loc13 [V16,T50] ( 2, 195.23) int -> [fp+0x198] spill-single-def tier0-frame
; V17 loc14 [V17 ] ( 45,26747.52) struct (40) [fp+0x170] do-not-enreg[XS] addr-exposed ld-addr-op tier0-frame <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
-; V18 loc15 [V18,T65] ( 3, 0 ) ref -> x19 class-hnd <int[]>
-; V19 loc16 [V19,T64] ( 5, 0 ) int -> x20
+; V18 loc15 [V18,T64] ( 3, 0 ) ref -> x19 class-hnd <int[]>
+; V19 loc16 [V19,T63] ( 5, 0 ) int -> x20
;* V20 loc17 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
;# 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,T63] ( 7, 0 ) ref -> x21 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V24 tmp3 [V24,T66] ( 3, 0 ) ref -> x23 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V23 tmp2 [V23,T62] ( 7, 0 ) ref -> x21 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V24 tmp3 [V24,T65] ( 3, 0 ) ref -> x23 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* 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>>
@@ -720,14 +720,13 @@
;* V707 tmp686 [V707 ] ( 0, 0 ) long -> zero-ref "Cast away GC"
;* V708 tmp687 [V708 ] ( 0, 0 ) long -> zero-ref "Cast away GC"
; V709 tmp688 [V709,T39] ( 2, 390.46) ref -> x1 "argument with side effect"
-; V710 cse0 [V710,T61] ( 3, 0.11) int -> x0 "CSE - conservative"
-; V711 cse1 [V711,T21] ( 5, 488.08) ref -> [fp+0x18] spill-single-def "CSE - moderate"
-; V712 cse2 [V712,T42] ( 3, 292.85) int -> x1 "CSE - moderate"
-; V713 cse3 [V713,T43] ( 3, 292.85) int -> x1 "CSE - moderate"
-; V714 cse4 [V714,T44] ( 3, 292.85) int -> x1 "CSE - moderate"
-; V715 cse5 [V715,T45] ( 3, 292.85) int -> x1 "CSE - moderate"
-; V716 cse6 [V716,T46] ( 3, 292.85) int -> x1 "CSE - moderate"
-; V717 cse7 [V717,T07] ( 3,12689.95) int -> x1 "CSE - moderate"
+; V710 cse0 [V710,T21] ( 5, 488.08) ref -> [fp+0x18] spill-single-def "CSE - moderate"
+; V711 cse1 [V711,T42] ( 3, 292.85) int -> x1 "CSE - moderate"
+; V712 cse2 [V712,T43] ( 3, 292.85) int -> x1 "CSE - moderate"
+; V713 cse3 [V713,T44] ( 3, 292.85) int -> x1 "CSE - moderate"
+; V714 cse4 [V714,T45] ( 3, 292.85) int -> x1 "CSE - moderate"
+; V715 cse5 [V715,T46] ( 3, 292.85) int -> x1 "CSE - moderate"
+; V716 cse6 [V716,T07] ( 3,12689.95) int -> x1 "CSE - moderate"
;
; Lcl frame size = 128
@@ -752,17 +751,70 @@ G_M28013_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr w21, [fp, #0xD1FFAB1E]
;; size=64 bbWeight=1 PerfScore 24.50
G_M28013_IG02: ; bbWeight=1, gcrefRegs=8480000 {x19 x22 x27}, byrefRegs=0000 {}, byref
- b G_M28013_IG04
+ b G_M28013_IG09
;; size=4 bbWeight=1 PerfScore 1.00
-G_M28013_IG03: ; bbWeight=2.38, gcrefRegs=8480000 {x19 x22 x27}, byrefRegs=0000 {}, byref, isz
+G_M28013_IG03: ; bbWeight=0.04, gcrefRegs=8480000 {x19 x22 x27}, byrefRegs=0000 {}, byref, isz
+ cbz x27, G_M28013_IG24
+ tbnz w26, #31, G_M28013_IG24
+ ;; size=8 bbWeight=0.04 PerfScore 0.07
+G_M28013_IG04: ; bbWeight=0.08, gcrefRegs=8480000 {x19 x22 x27}, byrefRegs=0000 {}, byref
+ b G_M28013_IG06
+ ;; size=4 bbWeight=0.08 PerfScore 0.08
+G_M28013_IG05: ; bbWeight=0.04, gcrefRegs=8480000 {x19 x22 x27}, byrefRegs=0000 {}, byref, isz
+ add x0, x27, #16
+ ; byrRegs +[x0]
+ ldr w20, [x0, w26, UXTW #2]
+ mov w25, wzr
+ mov x0, x22
+ ; gcrRegs +[x0]
+ ; byrRegs -[x0]
+ movz x1, #0xD1FFAB1E // code for <unknown method>
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
+ blr x1
+ ; gcrRegs -[x0]
+ ; gcr arg pop 0
+ cmp w0, #0
+ bgt G_M28013_IG08
+ ;; size=44 bbWeight=0.04 PerfScore 0.43
+G_M28013_IG06: ; bbWeight=0.04, gcrefRegs=8480000 {x19 x22 x27}, byrefRegs=0000 {}, byref, isz
+ add w26, w26, #1
+ ldr w0, [x27, #0x08]
+ cmp w0, w26
+ ble G_M28013_IG36
+ b G_M28013_IG05
+ ;; size=20 bbWeight=0.04 PerfScore 0.22
+G_M28013_IG07: ; bbWeight=0.00, gcrefRegs=8480000 {x19 x22 x27}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x27, #0x08]
+ cmp w26, w0
+ bhs G_M28013_IG25
+ add x0, x27, #16
+ ; byrRegs +[x0]
+ ldr w20, [x0, w26, UXTW #2]
+ mov w25, wzr
+ mov x0, x22
+ ; gcrRegs +[x0]
+ ; byrRegs -[x0]
+ movz x1, #0xD1FFAB1E // code for <unknown method>
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
+ blr x1
+ ; gcrRegs -[x0]
+ ; gcr arg pop 0
+ cmp w0, #0
+ ble G_M28013_IG24
+ ;; size=56 bbWeight=0.00 PerfScore 0.01
+G_M28013_IG08: ; bbWeight=2.38, gcrefRegs=8480000 {x19 x22 x27}, byrefRegs=0000 {}, byref, isz
ldr w0, [x22, #0x10]
cmp w25, w0
- bhs G_M28013_IG25
+ bhs G_M28013_IG31
ldr x0, [x22, #0x08]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w25, w1
- bhs G_M28013_IG19
+ bhs G_M28013_IG25
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -772,7 +824,7 @@ G_M28013_IG03: ; bbWeight=2.38, gcrefRegs=8480000 {x19 x22 x27}, byrefReg
uxth w24, w0
sxtw w21, w25
;; size=48 bbWeight=2.38 PerfScore 40.54
-G_M28013_IG04: ; bbWeight=2.38, gcrefRegs=8480000 {x19 x22 x27}, byrefRegs=0000 {}, byref, isz
+G_M28013_IG09: ; bbWeight=2.38, gcrefRegs=8480000 {x19 x22 x27}, byrefRegs=0000 {}, byref, isz
mov x0, x22
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -784,17 +836,17 @@ G_M28013_IG04: ; bbWeight=2.38, gcrefRegs=8480000 {x19 x22 x27}, byrefReg
; gcrRegs -[x0]
; gcr arg pop 0
cmp w0, w21
- ble G_M28013_IG17
+ ble G_M28013_IG22
;; size=36 bbWeight=2.38 PerfScore 25.04
-G_M28013_IG05: ; bbWeight=97.62, gcrefRegs=8480000 {x19 x22 x27}, byrefRegs=0000 {}, byref, isz
+G_M28013_IG10: ; bbWeight=97.62, gcrefRegs=8480000 {x19 x22 x27}, byrefRegs=0000 {}, byref, isz
ldr w0, [x22, #0x10]
cmp w21, w0
- bhs G_M28013_IG25
+ bhs G_M28013_IG31
ldr x0, [x22, #0x08]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w21, w1
- bhs G_M28013_IG19
+ bhs G_M28013_IG25
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -885,7 +937,7 @@ G_M28013_IG05: ; bbWeight=97.62, gcrefRegs=8480000 {x19 x22 x27}, byrefRe
ldr w0, [fp, #0xD1FFAB1E] // [V17 loc14+0x10]
ldr w1, [fp, #0xD1FFAB1E] // [V17 loc14+0x20]
cmp w0, w1
- bhi G_M28013_IG26
+ bhi G_M28013_IG32
ldr x2, [fp, #0xD1FFAB1E] // [V17 loc14+0x18]
; byrRegs +[x2]
ubfiz x3, x0, #1, #32
@@ -905,7 +957,7 @@ G_M28013_IG05: ; bbWeight=97.62, gcrefRegs=8480000 {x19 x22 x27}, byrefRe
; gcr arg pop 0
ldr w0, [fp, #0x8C] // [V32 tmp11]
cmp w0, #15
- blo G_M28013_IG20
+ blo G_M28013_IG26
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -919,7 +971,7 @@ G_M28013_IG05: ; bbWeight=97.62, gcrefRegs=8480000 {x19 x22 x27}, byrefRe
add w0, w0, #15
str w0, [fp, #0xD1FFAB1E] // [V17 loc14+0x10]
;; size=380 bbWeight=97.62 PerfScore 10786.46
-G_M28013_IG06: ; bbWeight=97.62, gcVars=00000000000000000000000000000000 {}, gcrefRegs=8480000 {x19 x22 x27}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M28013_IG11: ; bbWeight=97.62, gcVars=00000000000000000000000000000000 {}, gcrefRegs=8480000 {x19 x22 x27}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[x1]
; GC ptr vars -{V33}
add x0, fp, #0xD1FFAB1E // [V17 loc14]
@@ -927,8 +979,8 @@ G_M28013_IG06: ; bbWeight=97.62, gcVars=00000000000000000000000000000000
movz x3, #0xD1FFAB1E
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
- str x3, [fp, #0x18] // [V711 cse1]
- ; GC ptr vars +{V711}
+ str x3, [fp, #0x18] // [V710 cse0]
+ ; GC ptr vars +{V710}
mov x2, x3
; gcrRegs +[x2]
movz x4, #0xD1FFAB1E // code for <unknown method>
@@ -941,7 +993,7 @@ G_M28013_IG06: ; bbWeight=97.62, gcVars=00000000000000000000000000000000
ldr w0, [fp, #0xD1FFAB1E] // [V17 loc14+0x10]
ldr w1, [fp, #0xD1FFAB1E] // [V17 loc14+0x20]
cmp w0, w1
- bhi G_M28013_IG26
+ bhi G_M28013_IG32
ldr x2, [fp, #0xD1FFAB1E] // [V17 loc14+0x18]
; byrRegs +[x2]
ubfiz x3, x0, #1, #32
@@ -961,7 +1013,7 @@ G_M28013_IG06: ; bbWeight=97.62, gcVars=00000000000000000000000000000000
; gcr arg pop 0
ldr w0, [fp, #0x88] // [V41 tmp20]
cmp w0, #2
- blo G_M28013_IG21
+ blo G_M28013_IG27
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -973,12 +1025,12 @@ G_M28013_IG06: ; bbWeight=97.62, gcVars=00000000000000000000000000000000
add w0, w0, #2
str w0, [fp, #0xD1FFAB1E] // [V17 loc14+0x10]
;; size=164 bbWeight=97.62 PerfScore 4099.83
-G_M28013_IG07: ; bbWeight=97.62, gcVars=00000000000000000000000000200000 {V711}, gcrefRegs=8480000 {x19 x22 x27}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M28013_IG12: ; bbWeight=97.62, gcVars=00000000000000000000000000200000 {V710}, gcrefRegs=8480000 {x19 x22 x27}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[x2]
; GC ptr vars -{V42}
add x0, fp, #0xD1FFAB1E // [V17 loc14]
mov w1, w28
- ldr x2, [fp, #0x18] // [V711 cse1]
+ ldr x2, [fp, #0x18] // [V710 cse0]
; gcrRegs +[x2]
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
@@ -990,7 +1042,7 @@ G_M28013_IG07: ; bbWeight=97.62, gcVars=00000000000000000000000000200000
ldr w0, [fp, #0xD1FFAB1E] // [V17 loc14+0x10]
ldr w1, [fp, #0xD1FFAB1E] // [V17 loc14+0x20]
cmp w0, w1
- bhi G_M28013_IG26
+ bhi G_M28013_IG32
ldr x2, [fp, #0xD1FFAB1E] // [V17 loc14+0x18]
; byrRegs +[x2]
ubfiz x3, x0, #1, #32
@@ -1009,7 +1061,7 @@ G_M28013_IG07: ; bbWeight=97.62, gcVars=00000000000000000000000000200000
; gcr arg pop 0
ldr w0, [fp, #0x84] // [V50 tmp29]
cmp w0, #13
- blo G_M28013_IG22
...
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| benchmarks.run_pgo.windows.arm64.checked.mch |
1 |
0 |
1 |
0 |
-0 |
+60 |
| benchmarks.run_tiered.windows.arm64.checked.mch |
2 |
0 |
2 |
0 |
-0 |
+208 |
| coreclr_tests.run.windows.arm64.checked.mch |
1 |
0 |
1 |
0 |
-0 |
+172 |
| libraries.crossgen2.windows.arm64.checked.mch |
1 |
0 |
1 |
0 |
-0 |
+84 |
| libraries.pmi.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| libraries_tests.run.windows.arm64.Release.mch |
2 |
0 |
2 |
0 |
-0 |
+144 |
| librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| realworld.run.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| smoke_tests.nativeaot.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
7 |
0 |
7 |
0 |
-0 |
+668 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.windows.arm64.checked.mch |
24,446 |
4 |
24,442 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_pgo.windows.arm64.checked.mch |
96,117 |
48,079 |
48,038 |
0 (0.00%) |
4 (0.00%) |
| benchmarks.run_tiered.windows.arm64.checked.mch |
49,359 |
36,713 |
12,646 |
0 (0.00%) |
1 (0.00%) |
| coreclr_tests.run.windows.arm64.checked.mch |
595,401 |
362,592 |
232,809 |
0 (0.00%) |
3 (0.00%) |
| libraries.crossgen2.windows.arm64.checked.mch |
244,152 |
15 |
244,137 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.windows.arm64.checked.mch |
305,578 |
6 |
305,572 |
0 (0.00%) |
0 (0.00%) |
| libraries_tests.run.windows.arm64.Release.mch |
651,606 |
469,431 |
182,175 |
0 (0.00%) |
0 (0.00%) |
| librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
317,077 |
21,598 |
295,479 |
0 (0.00%) |
0 (0.00%) |
| realworld.run.windows.arm64.checked.mch |
33,211 |
3 |
33,208 |
0 (0.00%) |
0 (0.00%) |
| smoke_tests.nativeaot.windows.arm64.checked.mch |
24,162 |
8 |
24,154 |
0 (0.00%) |
0 (0.00%) |
|
2,341,109 |
938,449 |
1,402,660 |
0 (0.00%) |
8 (0.00%) |
jit-analyze output
benchmarks.run_pgo.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 45573924 (overridden on cmd)
Total bytes of diff: 45573984 (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 : 72896.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) : 72896.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
Top method regressions (percentages):
60 (7.61 % of base) : 72896.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.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15587008 (overridden on cmd)
Total bytes of diff: 15587216 (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 : 31904.dasm (16.02 % of base)
60 : 43870.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) : 31904.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
60 (8.02 % of base) : 43870.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
Top method regressions (percentages):
148 (16.02 % of base) : 31904.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
60 (8.02 % of base) : 43870.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.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 495312136 (overridden on cmd)
Total bytes of diff: 495312308 (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 : 511543.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) : 511543.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
Top method regressions (percentages):
172 (47.78 % of base) : 511543.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.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 59070264 (overridden on cmd)
Total bytes of diff: 59070348 (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 : 143221.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) : 143221.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
Top method regressions (percentages):
84 (8.47 % of base) : 143221.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.windows.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 330792704 (overridden on cmd)
Total bytes of diff: 330792848 (overridden on cmd)
Total bytes of delta: 144 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
84 : 276066.dasm (3.98 % of base)
60 : 271752.dasm (2.22 % of base)
2 total files with Code Size differences (0 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
84 (3.98 % of base) : 276066.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
60 (2.22 % of base) : 271752.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
Top method regressions (percentages):
84 (3.98 % of base) : 276066.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
60 (2.22 % of base) : 271752.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
2 total methods with Code Size differences (0 improved, 2 regressed).
windows x64
Diffs are based on 2,512,204 contexts (997,391 MinOpts, 1,514,813 FullOpts).
MISSED contexts: base: 0 (0.00%), diff: 8 (0.00%)
Overall (+630 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.windows.x64.checked.mch |
36,236,339 |
+68 |
| benchmarks.run_tiered.windows.x64.checked.mch |
12,415,933 |
+178 |
| coreclr_tests.run.windows.x64.checked.mch |
393,193,287 |
+152 |
| libraries.crossgen2.windows.x64.checked.mch |
39,486,146 |
+56 |
| libraries_tests.run.windows.x64.Release.mch |
282,112,885 |
+176 |
FullOpts (+630 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.windows.x64.checked.mch |
22,065,683 |
+68 |
| benchmarks.run_tiered.windows.x64.checked.mch |
3,316,694 |
+178 |
| coreclr_tests.run.windows.x64.checked.mch |
120,404,433 |
+152 |
| libraries.crossgen2.windows.x64.checked.mch |
39,484,959 |
+56 |
| libraries_tests.run.windows.x64.Release.mch |
106,254,567 |
+176 |
Example diffs
benchmarks.run_pgo.windows.x64.checked.mch
+68 (+8.41%) : 80126.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, 108.86) ref -> rcx class-hnd single-def <float[][]>
+; V00 arg0 [V00,T13] ( 15, 109.08) ref -> rcx class-hnd single-def <float[][]>
; V01 arg1 [V01,T14] ( 11, 108.86) ref -> rdx class-hnd single-def <int[][]>
; V02 arg2 [V02,T22] ( 3, 3 ) ref -> r8 class-hnd single-def <double[]>
; V03 arg3 [V03,T21] ( 4, 3.50) ref -> r9 class-hnd single-def <JetStream.SampleVarianceUpperTriangularMatrix>
-; V04 arg4 [V04,T23] ( 2, 3.21) int -> [rsp+0x140] single-def tier0-frame
+; V04 arg4 [V04,T23] ( 3, 3.21) int -> [rsp+0x140] single-def tier0-frame
;* V05 loc0 [V05 ] ( 0, 0 ) int -> zero-ref
;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc2 [V07,T05] ( 20,1708.59) int -> r10
-; V08 loc3 [V08,T16] ( 5, 102.79) ref -> rsi class-hnd <float[]>
-; V09 loc4 [V09,T12] ( 12, 257.40) int -> rbx
+; V07 loc2 [V07,T05] ( 25,1707.95) int -> r10
+; V08 loc3 [V08,T16] ( 6, 102.79) ref -> rsi class-hnd <float[]>
+; V09 loc4 [V09,T12] ( 13, 257.40) int -> rbx
;* V10 loc5 [V10 ] ( 0, 0 ) ubyte -> zero-ref
; V11 loc6 [V11,T07] ( 21,1205.60) int -> r11
; V12 loc7 [V12,T28] ( 4, 199.58) float -> mm0
@@ -31,21 +31,21 @@
; V18 tmp3 [V18,T26] ( 6, 898.12) double -> mm1 "Inline return value spill temp"
;* V19 tmp4 [V19,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V20 tmp5 [V20,T00] ( 6,6785.76) int -> registers "Inlining Arg"
-; V21 tmp6 [V21,T01] ( 4,6586.18) ref -> r12 class-hnd "Inlining Arg" <int[]>
+; V21 tmp6 [V21,T01] ( 4,6586.18) ref -> r15 class-hnd "Inlining Arg" <int[]>
;* V22 tmp7 [V22 ] ( 0, 0 ) ref -> zero-ref "arr expr"
;* V23 tmp8 [V23 ] ( 0, 0 ) ref -> zero-ref "arr expr"
; V24 tmp9 [V24,T02] ( 6,2394.97) ref -> r13 "arr expr"
; V25 tmp10 [V25,T04] ( 6,2394.97) int -> r12 "index expr"
; V26 tmp11 [V26,T03] ( 6,2394.97) ref -> r15 "arr expr"
; V27 tmp12 [V27,T08] ( 6, 598.74) ref -> registers "arr expr"
-; V28 tmp13 [V28,T24] ( 6, 0.59) ref -> registers "arr expr"
-; V29 tmp14 [V29,T25] ( 6, 0.59) ref -> r15 "arr expr"
+; V28 tmp13 [V28,T24] ( 6, 0.59) ref -> r15 "arr expr"
+; V29 tmp14 [V29,T25] ( 6, 0.59) ref -> registers "arr expr"
; V30 cse0 [V30,T09] ( 6, 500.45) ref -> r14 hoist multi-def "CSE - aggressive"
-; V31 cse1 [V31,T10] ( 16, 399.56) int -> r13 multi-def "CSE - aggressive"
-; V32 cse2 [V32,T15] ( 7, 106.97) int -> r8 hoist "CSE - moderate"
+; V31 cse1 [V31,T10] ( 16, 399.56) int -> r12 multi-def "CSE - aggressive"
+; V32 cse2 [V32,T15] ( 9, 107.83) int -> r8 hoist "CSE - moderate"
; V33 cse3 [V33,T17] ( 4, 101.29) int -> rdi hoist multi-def "CSE - moderate"
; V34 cse4 [V34,T18] ( 4, 101.29) long -> rbp hoist multi-def "CSE - moderate"
-; V35 cse5 [V35,T11] ( 5, 296.57) long -> r15 "CSE - aggressive"
+; V35 cse5 [V35,T11] ( 5, 296.57) long -> r13 "CSE - aggressive"
;
; Lcl frame size = 40
@@ -74,100 +74,128 @@ G_M56974_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov ebx, dword ptr [rsp+0xBC]
mov r11d, dword ptr [rsp+0xB4]
;; size=133 bbWeight=1 PerfScore 26.25
-G_M56974_IG02: ; bbWeight=1, gcrefRegs=0346 {rcx rdx rsi r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG02: ; bbWeight=1, gcrefRegs=0346 {rcx rdx rsi r8 r9}, byrefRegs=0000 {}, byref
mov r8d, dword ptr [r8+0x08]
; gcrRegs -[r8]
- jmp SHORT G_M56974_IG10
- ;; size=6 bbWeight=1 PerfScore 4.00
-G_M56974_IG03: ; bbWeight=1.51, gcrefRegs=0206 {rcx rdx r9}, byrefRegs=0000 {}, byref, isz
+ jmp G_M56974_IG13
+ ;; size=9 bbWeight=1 PerfScore 4.00
+G_M56974_IG03: ; bbWeight=1.49, gcrefRegs=0206 {rcx rdx r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
- cmp r10d, dword ptr [rcx+0x08]
- jae G_M56974_IG32
mov r11d, r10d
mov rsi, gword ptr [rcx+8*r11+0x10]
; gcrRegs +[rsi]
xor ebx, ebx
- cmp dword ptr [rsp+0x140], 0
- jg SHORT G_M56974_IG05
- ;; size=30 bbWeight=1.51 PerfScore 14.31
-G_M56974_IG04: ; bbWeight=1.51, gcrefRegs=0206 {rcx rdx r9}, byrefRegs=0000 {}, byref, isz
+ mov eax, dword ptr [rsp+0x140]
+ test eax, eax
+ mov dword ptr [rsp+0x140], eax
+ jg SHORT G_M56974_IG08
+ ;; size=28 bbWeight=1.49 PerfScore 8.57
+G_M56974_IG04: ; bbWeight=1.49, gcrefRegs=0206 {rcx rdx r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
inc r10d
cmp r8d, r10d
- jle G_M56974_IG33
+ jle G_M56974_IG36
jmp SHORT G_M56974_IG03
- ;; size=14 bbWeight=1.51 PerfScore 5.27
-G_M56974_IG05: ; bbWeight=1.51, gcrefRegs=0246 {rcx rdx rsi r9}, byrefRegs=0000 {}, byref, isz
+ ;; size=14 bbWeight=1.49 PerfScore 5.22
+G_M56974_IG05: ; bbWeight=0.85, gcrefRegs=0206 {rcx rdx r9}, byrefRegs=0000 {}, byref, isz
+ test rcx, rcx
+ je SHORT G_M56974_IG07
+ test r10d, r10d
+ jl SHORT G_M56974_IG07
+ cmp dword ptr [rcx+0x08], r8d
+ jl SHORT G_M56974_IG07
+ jmp SHORT G_M56974_IG04
+ ;; size=18 bbWeight=0.85 PerfScore 7.25
+G_M56974_IG06: ; bbWeight=0.02, gcrefRegs=0206 {rcx rdx r9}, byrefRegs=0000 {}, byref, isz
+ cmp r10d, dword ptr [rcx+0x08]
+ jae G_M56974_IG35
+ mov r11d, r10d
+ mov rsi, gword ptr [rcx+8*r11+0x10]
+ ; gcrRegs +[rsi]
+ xor ebx, ebx
+ mov eax, dword ptr [rsp+0x140]
+ test eax, eax
+ mov dword ptr [rsp+0x140], eax
+ jg SHORT G_M56974_IG08
+ ;; size=38 bbWeight=0.02 PerfScore 0.15
+G_M56974_IG07: ; bbWeight=0.02, gcrefRegs=0206 {rcx rdx r9}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rsi]
+ inc r10d
+ cmp r8d, r10d
+ jle G_M56974_IG36
+ jmp SHORT G_M56974_IG06
+ ;; size=14 bbWeight=0.02 PerfScore 0.05
+G_M56974_IG08: ; bbWeight=1.51, gcrefRegs=0246 {rcx rdx rsi r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
cmp r10d, dword ptr [rdx+0x08]
- jae G_M56974_IG32
+ jae G_M56974_IG35
mov r11d, r10d
mov r11, gword ptr [rdx+8*r11+0x10]
; gcrRegs +[r11]
test ebx, ebx
mov eax, dword ptr [rsp+0x140]
- jl SHORT G_M56974_IG07
+ jl SHORT G_M56974_IG10
;; size=29 bbWeight=1.51 PerfScore 12.80
-G_M56974_IG06: ; bbWeight=48.19, gcrefRegs=0A46 {rcx rdx rsi r9 r11}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG09: ; bbWeight=48.19, gcrefRegs=0A46 {rcx rdx rsi r9 r11}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [r11+0x08], ebx
- jg SHORT G_M56974_IG09
+ jg SHORT G_M56974_IG12
;; size=6 bbWeight=48.19 PerfScore 192.77
-G_M56974_IG07: ; bbWeight=1.71, gcrefRegs=0246 {rcx rdx rsi r9}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG10: ; bbWeight=1.71, gcrefRegs=0246 {rcx rdx rsi r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r11]
inc ebx
mov dword ptr [rsp+0x140], eax
cmp ebx, eax
- jl SHORT G_M56974_IG05
+ jl SHORT G_M56974_IG08
;; size=13 bbWeight=1.71 PerfScore 4.26
-G_M56974_IG08: ; bbWeight=0.85, gcrefRegs=0206 {rcx rdx r9}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG11: ; bbWeight=0.85, gcrefRegs=0206 {rcx rdx r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
- jmp SHORT G_M56974_IG04
+ jmp SHORT G_M56974_IG05
;; size=2 bbWeight=0.85 PerfScore 1.71
-G_M56974_IG09: ; bbWeight=1.51, gcrefRegs=0246 {rcx rdx rsi r9}, byrefRegs=0000 {}, byref
+G_M56974_IG12: ; bbWeight=1.51, gcrefRegs=0246 {rcx rdx rsi r9}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
lea r11d, [r10+0x01]
;; size=4 bbWeight=1.51 PerfScore 0.75
-G_M56974_IG10: ; bbWeight=1.51, gcrefRegs=0246 {rcx rdx rsi r9}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG13: ; bbWeight=1.51, gcrefRegs=0246 {rcx rdx rsi r9}, byrefRegs=0000 {}, byref, isz
cmp r8d, r11d
- jle SHORT G_M56974_IG07
+ jle SHORT G_M56974_IG10
;; size=5 bbWeight=1.51 PerfScore 1.88
-G_M56974_IG11: ; bbWeight=1.48, gcrefRegs=0246 {rcx rdx rsi r9}, byrefRegs=0000 {}, byref
+G_M56974_IG14: ; bbWeight=1.48, gcrefRegs=0246 {rcx rdx rsi r9}, byrefRegs=0000 {}, byref
test rdx, rdx
- je G_M56974_IG22
+ je G_M56974_IG25
test rcx, rcx
- je G_M56974_IG22
+ je G_M56974_IG25
test r11d, r11d
- jl G_M56974_IG22
+ jl G_M56974_IG25
cmp dword ptr [rdx+0x08], r8d
- jl G_M56974_IG22
+ jl G_M56974_IG25
cmp dword ptr [rcx+0x08], r8d
- jl G_M56974_IG22
+ jl G_M56974_IG25
mov edi, dword ptr [rsi+0x08]
mov ebp, ebx
mov r14, gword ptr [r9+0x08]
; gcrRegs +[r14]
;; size=56 bbWeight=1.48 PerfScore 23.69
-G_M56974_IG12: ; bbWeight=98.79, gcrefRegs=4246 {rcx rdx rsi r9 r14}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG15: ; bbWeight=98.79, gcrefRegs=4246 {rcx rdx rsi r9 r14}, byrefRegs=0000 {}, byref, isz
cmp ebx, edi
- jae G_M56974_IG32
+ jae G_M56974_IG35
vmovss xmm0, dword ptr [rsi+4*rbp+0x10]
cmp dword ptr [r14+0x08], r10d
- jle SHORT G_M56974_IG14
+ jle SHORT G_M56974_IG17
;; size=20 bbWeight=98.79 PerfScore 913.83
-G_M56974_IG13: ; bbWeight=395.17, gcrefRegs=4246 {rcx rdx rsi r9 r14}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG16: ; bbWeight=395.17, gcrefRegs=4246 {rcx rdx rsi r9 r14}, byrefRegs=0000 {}, byref, isz
cmp r10d, r11d
- jne SHORT G_M56974_IG15
+ jne SHORT G_M56974_IG18
;; size=5 bbWeight=395.17 PerfScore 493.96
-G_M56974_IG14: ; bbWeight=395.17, gcrefRegs=4246 {rcx rdx rsi r9 r14}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG17: ; bbWeight=395.17, gcrefRegs=4246 {rcx rdx rsi r9 r14}, byrefRegs=0000 {}, byref, isz
vxorps xmm1, xmm1, xmm1
mov dword ptr [rsp+0x140], eax
- jmp SHORT G_M56974_IG16
+ jmp SHORT G_M56974_IG19
;; size=13 bbWeight=395.17 PerfScore 1317.24
-G_M56974_IG15: ; bbWeight=395.17, gcrefRegs=4246 {rcx rdx rsi r9 r14}, byrefRegs=0000 {}, byref
+G_M56974_IG18: ; bbWeight=395.17, gcrefRegs=4246 {rcx rdx rsi r9 r14}, byrefRegs=0000 {}, byref
mov r15, r14
; gcrRegs +[r15]
cmp r10d, dword ptr [r15+0x08]
- jae G_M56974_IG32
+ jae G_M56974_IG35
mov r13d, r10d
mov r13, gword ptr [r15+8*r13+0x10]
; gcrRegs +[r13]
@@ -175,95 +203,94 @@ G_M56974_IG15: ; bbWeight=395.17, gcrefRegs=4246 {rcx rdx rsi r9 r14}, by
sub r12d, r10d
dec r12d
cmp r12d, dword ptr [r13+0x08]
- jae G_M56974_IG32
+ jae G_M56974_IG35
mov r15d, r12d
; gcrRegs -[r15]
vcvtss2sd xmm1, xmm1, dword ptr [r13+4*r15+0x10]
mov dword ptr [rsp+0x140], eax
;; size=57 bbWeight=395.17 PerfScore 7705.83
-G_M56974_IG16: ; bbWeight=98.79, gcrefRegs=4246 {rcx rdx rsi r9 r14}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG19: ; bbWeight=98.79, gcrefRegs=4246 {rcx rdx rsi r9 r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r13]
vcvtss2sd xmm0, xmm0, xmm0
vaddsd xmm0, xmm0, xmm1
- mov r15d, r11d
- mov r12, gword ptr [rdx+8*r15+0x10]
- ; gcrRegs +[r12]
- lea r13d, [rbx+0x01]
- mov eax, r13d
+ mov r13d, r11d
+ mov r15, gword ptr [rdx+8*r13+0x10]
+ ; gcrRegs +[r15]
+ lea r12d, [rbx+0x01]
+ mov eax, r12d
test eax, eax
- jl SHORT G_M56974_IG21
+ jl SHORT G_M56974_IG24
;; size=27 bbWeight=98.79 PerfScore 1111.42
-G_M56974_IG17: ; bbWeight=3161.37, gcrefRegs=5246 {rcx rdx rsi r9 r12 r14}, byrefRegs=0000 {}, byref, isz
- cmp dword ptr [r12+0x08], eax
...
benchmarks.run_tiered.windows.x64.checked.mch
+52 (+7.09%) : 46672.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 -> rsi class-hnd single-def <int[][]>
; V02 arg2 [V02,T19] ( 3, 3 ) ref -> r14 class-hnd single-def <double[]>
; V03 arg3 [V03,T18] ( 4, 6 ) ref -> rbp class-hnd single-def <JetStream.SampleVarianceUpperTriangularMatrix>
-; V04 arg4 [V04,T15] ( 2, 10 ) int -> rdi single-def
+; V04 arg4 [V04,T15] ( 3, 10 ) int -> rdi 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 -> r13
-; V08 loc3 [V08,T13] ( 5, 10 ) ref -> [rsp+0xE0] class-hnd tier0-frame <float[]>
-; V09 loc4 [V09,T00] ( 12, 56 ) int -> r15
+; V07 loc2 [V07,T03] ( 17, 37.52) int -> r13
+; V08 loc3 [V08,T13] ( 6, 10 ) ref -> [rsp+0xE0] class-hnd tier0-frame <float[]>
+; V09 loc4 [V09,T00] ( 13, 56 ) int -> r15
;* V10 loc5 [V10 ] ( 0, 0 ) ubyte -> zero-ref
; V11 loc6 [V11,T05] ( 20, 26.58) int -> r12
;* V12 loc7 [V12 ] ( 0, 0 ) float -> zero-ref
@@ -37,7 +37,7 @@
; V25 tmp10 [V25,T12] ( 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 -> [rsp+0x24] spill-single-def "CSE - aggressive"
+; V28 cse2 [V28,T07] ( 9, 17 ) int -> [rsp+0x24] spill-single-def "CSE - aggressive"
; V29 cse3 [V29,T06] ( 16, 20 ) int -> r9 multi-def "CSE - aggressive"
; TEMP_01 double -> [rsp+0x28]
;
@@ -69,13 +69,20 @@ G_M56974_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov r15d, dword ptr [rsp+0xDC]
mov r12d, dword ptr [rsp+0xD4]
;; size=143 bbWeight=0.01 PerfScore 0.28
-G_M56974_IG02: ; bbWeight=0.01, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M56974_IG11
- ;; size=2 bbWeight=0.01 PerfScore 0.02
-G_M56974_IG03: ; bbWeight=2, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG02: ; bbWeight=0.01, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref
+ jmp G_M56974_IG15
+ ;; size=5 bbWeight=0.01 PerfScore 0.02
+G_M56974_IG03: ; bbWeight=1, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- cmp r13d, dword ptr [rbx+0x08]
- jae G_M56974_IG26
+ test rbx, rbx
+ je SHORT G_M56974_IG08
+ test r13d, r13d
+ jl SHORT G_M56974_IG08
+ cmp dword ptr [rbx+0x08], r10d
+ jl SHORT G_M56974_IG08
+ jmp SHORT G_M56974_IG05
+ ;; size=18 bbWeight=1 PerfScore 8.50
+G_M56974_IG04: ; bbWeight=1.98, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
mov eax, r13d
mov rax, gword ptr [rbx+8*rax+0x10]
; gcrRegs +[rax]
@@ -84,15 +91,38 @@ G_M56974_IG03: ; bbWeight=2, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=
xor r15d, r15d
test edi, edi
mov rax, r12
- jg SHORT G_M56974_IG06
- ;; size=31 bbWeight=2 PerfScore 16.50
-G_M56974_IG04: ; bbWeight=8, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+ jg SHORT G_M56974_IG10
+ ;; size=21 bbWeight=1.98 PerfScore 8.42
+G_M56974_IG05: ; bbWeight=7.92, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax r12]
inc r13d
cmp r10d, r13d
- jg SHORT G_M56974_IG03
- ;; size=8 bbWeight=8 PerfScore 12.00
-G_M56974_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jg SHORT G_M56974_IG04
+ ;; size=8 bbWeight=7.92 PerfScore 11.88
+G_M56974_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx rbp rsi r14]
+ jmp SHORT G_M56974_IG09
+ ;; size=2 bbWeight=1 PerfScore 2.00
+G_M56974_IG07: ; bbWeight=0.02, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rbx rbp rsi r14]
+ cmp r13d, dword ptr [rbx+0x08]
+ jae G_M56974_IG30
+ mov eax, r13d
+ mov r12, gword ptr [rbx+8*rax+0x10]
+ ; gcrRegs +[r12]
+ xor r15d, r15d
+ test edi, edi
+ mov rax, r12
+ ; gcrRegs +[rax]
+ jg SHORT G_M56974_IG10
+ ;; size=28 bbWeight=0.02 PerfScore 0.16
+G_M56974_IG08: ; bbWeight=0.08, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax r12]
+ inc r13d
+ cmp r10d, r13d
+ jg SHORT G_M56974_IG07
+ ;; size=8 bbWeight=0.08 PerfScore 0.12
+G_M56974_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx rbp rsi r14]
vmovaps xmm6, xmmword ptr [rsp+0x30]
add rsp, 248
@@ -106,53 +136,53 @@ G_M56974_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
pop rbp
ret
;; size=26 bbWeight=1 PerfScore 9.25
-G_M56974_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M56974_IG10: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rax rbx rbp rsi r14]
cmp r13d, dword ptr [rsi+0x08]
- jae G_M56974_IG26
+ jae G_M56974_IG30
mov ecx, r13d
mov rcx, gword ptr [rsi+8*rcx+0x10]
; gcrRegs +[rcx]
test r15d, r15d
- jl SHORT G_M56974_IG08
+ jl SHORT G_M56974_IG12
;; size=23 bbWeight=2 PerfScore 15.00
-G_M56974_IG07: ; bbWeight=16, gcrefRegs=406B {rax rcx rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG11: ; bbWeight=16, gcrefRegs=406B {rax rcx rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rcx+0x08], r15d
- jg SHORT G_M56974_IG10
+ jg SHORT G_M56974_IG14
;; size=6 bbWeight=16 PerfScore 64.00
-G_M56974_IG08: ; bbWeight=8, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG12: ; bbWeight=8, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
inc r15d
cmp r15d, edi
- jl SHORT G_M56974_IG06
+ jl SHORT G_M56974_IG10
;; size=8 bbWeight=8 PerfScore 12.00
-G_M56974_IG09: ; bbWeight=1, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG13: ; bbWeight=1, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- jmp SHORT G_M56974_IG04
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M56974_IG10: ; bbWeight=0.50, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref
+ jmp G_M56974_IG03
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M56974_IG14: ; bbWeight=0.50, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref
; gcrRegs +[rax]
lea r12d, [r13+0x01]
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M56974_IG11: ; bbWeight=1, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG15: ; bbWeight=1, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
mov r10d, dword ptr [r14+0x08]
mov dword ptr [rsp+0x24], r10d
cmp r10d, r12d
- jle SHORT G_M56974_IG08
+ jle SHORT G_M56974_IG12
test rsi, rsi
- je G_M56974_IG20
+ je G_M56974_IG24
test rbx, rbx
- je G_M56974_IG19
+ je G_M56974_IG23
test r12d, r12d
- jl G_M56974_IG18
+ jl G_M56974_IG22
cmp dword ptr [rsi+0x08], r10d
- jl G_M56974_IG17
+ jl G_M56974_IG21
cmp dword ptr [rbx+0x08], r10d
- jl G_M56974_IG20
+ jl G_M56974_IG24
;; size=61 bbWeight=1 PerfScore 16.00
-G_M56974_IG12: ; bbWeight=3.96, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG16: ; bbWeight=3.96, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
cmp r15d, dword ptr [rax+0x08]
- jae G_M56974_IG26
+ jae G_M56974_IG30
mov ecx, r15d
mov gword ptr [rsp+0xE0], rax
; GC ptr vars +{V08}
@@ -175,61 +205,61 @@ G_M56974_IG12: ; bbWeight=3.96, gcrefRegs=4069 {rax rbx rbp rsi r14}, byr
lea r9d, [r15+0x01]
mov r11d, r9d
test r11d, r11d
- jl SHORT G_M56974_IG15
+ jl SHORT G_M56974_IG19
;; size=79 bbWeight=3.96 PerfScore 116.82
-G_M56974_IG13: ; bbWeight=15.84, gcrefRegs=4469 {rax rbx rbp rsi r10 r14}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG17: ; bbWeight=15.84, gcrefRegs=4469 {rax rbx rbp rsi r10 r14}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [r10+0x08], r11d
- 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=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG18: ; bbWeight=1.98, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r10]
mov ecx, r12d
mov r8, gword ptr [rbx+8*rcx+0x10]
; gcrRegs +[r8]
cmp r9d, dword ptr [r8+0x08]
- jae G_M56974_IG26
+ jae G_M56974_IG30
mov ecx, r9d
vcvtss2sd xmm0, xmm0, dword ptr [r8+4*rcx+0x10]
vucomisd xmm0, xmm6
- jbe SHORT G_M56974_IG16
+ jbe SHORT G_M56974_IG20
;; size=34 bbWeight=1.98 PerfScore 32.67
-G_M56974_IG15: ; bbWeight=1.98, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref
+G_M56974_IG19: ; bbWeight=1.98, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[r8]
mov ecx, r12d
mov rdx, gword ptr [rbx+8*rcx+0x10]
; gcrRegs +[rdx]
cmp r9d, dword ptr [rdx+0x08]
- jae G_M56974_IG26
+ jae G_M56974_IG30
mov ecx, r9d
vcvtsd2ss xmm0, xmm0, xmm6
vmovss dword ptr [rdx+4*rcx+0x10], xmm0
cmp r9d, dword ptr [rax+0x08]
- jae G_M56974_IG26
+ jae G_M56974_IG30
mov ecx, r9d
mov dword ptr [rax+4*rcx+0x10], r13d
;; size=49 bbWeight=1.98 PerfScore 35.14
-G_M56974_IG16: ; bbWeight=3.96, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref
+G_M56974_IG20: ; bbWeight=3.96, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rdx]
inc r12d
cmp dword ptr [rsp+0x24], r12d
mov rax, gword ptr [rsp+0xE0]
; gcrRegs +[rax]
- jg G_M56974_IG12
+ jg G_M56974_IG16
mov r10d, dword ptr [rsp+0x24]
- jmp G_M56974_IG08
+ jmp G_M56974_IG12
;; size=32 bbWeight=3.96 PerfScore 28.71
-G_M56974_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M56974_IG21: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V08}
- jmp SHORT G_M56974_IG20
+ jmp SHORT G_M56974_IG24
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M56974_IG18: ; bbWeight=0.50, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M56974_IG20
+G_M56974_IG22: ; bbWeight=0.50, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M56974_IG24
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M56974_IG19: ; bbWeight=0.50, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG23: ; bbWeight=0.50, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
;; size=0 bbWeight=0.50 PerfScore 0.00
...
+126 (+16.22%) : 33472.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
@@ -9,19 +9,19 @@
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T12] ( 8, 14.12) ref -> rcx class-hnd single-def <double[][]>
-; V01 arg1 [V01,T06] ( 8, 30.20) ref -> rdx class-hnd single-def <double[]>
-; V02 arg2 [V02,T14] ( 9, 12.04) ref -> rsi class-hnd single-def <double[][][]>
-; V03 arg3 [V03,T15] ( 9, 12.04) ref -> rdi class-hnd single-def <double[][]>
-; V04 arg4 [V04,T13] ( 6, 15 ) int -> rbx single-def
-; V05 loc0 [V05,T10] ( 11, 20.08) ref -> r15 class-hnd <double[][]>
-; V06 loc1 [V06,T07] ( 10, 32.16) ref -> r14 class-hnd <double[]>
+; V00 arg0 [V00,T13] ( 8, 14.12) ref -> rcx class-hnd single-def <double[][]>
+; V01 arg1 [V01,T06] ( 11, 30.32) ref -> rdx class-hnd single-def <double[]>
+; V02 arg2 [V02,T14] ( 12, 12.06) ref -> rsi class-hnd single-def <double[][][]>
+; V03 arg3 [V03,T15] ( 12, 12.06) ref -> rdi class-hnd single-def <double[][]>
+; V04 arg4 [V04,T12] ( 10, 18 ) int -> rbx single-def
+; V05 loc0 [V05,T10] ( 12, 20.08) ref -> r15 class-hnd <double[][]>
+; V06 loc1 [V06,T07] ( 13, 32.24) ref -> r14 class-hnd <double[]>
; V07 loc2 [V07,T20] ( 2, 2 ) long -> r13
; V08 loc3 [V08,T02] ( 15, 94.32) int -> rax
-; V09 loc4 [V09,T08] ( 7, 32 ) int -> r8
-; V10 loc5 [V10,T00] ( 34,127.72) int -> rbp
+; V09 loc4 [V09,T08] ( 13, 29.04) int -> r8
+; V10 loc5 [V10,T00] ( 43,128.20) int -> rbp
; V11 OutArgs [V11 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T22] ( 4, 64 ) double -> mm0 "Strict ordering of exceptions for Array store"
+; V12 tmp1 [V12,T22] ( 6, 64.00) double -> mm0 "Strict ordering of exceptions for Array store"
; V13 tmp2 [V13,T01] ( 6, 96 ) ref -> r10 class-hnd "Strict ordering of exceptions for Array store" <double[]>
; V14 tmp3 [V14,T23] ( 4, 64 ) double -> mm0 "Strict ordering of exceptions for Array store"
;* V15 tmp4 [V15 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
@@ -34,8 +34,8 @@
; V22 cse2 [V22,T09] ( 6, 27.92) ref -> r9 multi-def "CSE - aggressive"
; V23 cse3 [V23,T19] ( 4, 8.08) int -> r11 hoist multi-def "CSE - aggressive"
; V24 cse4 [V24,T16] ( 6, 12.12) long -> r10 hoist multi-def "CSE - aggressive"
-; V25 cse5 [V25,T04] ( 3, 47.52) long -> rax "CSE - aggressive"
-; V26 cse6 [V26,T05] ( 3, 47.52) long -> r12 "CSE - aggressive"
+; V25 cse5 [V25,T04] ( 3, 47.52) long -> r12 "CSE - aggressive"
+; V26 cse6 [V26,T05] ( 3, 47.04) long -> rax "CSE - aggressive"
; V27 cse7 [V27,T17] ( 3, 11.88) long -> rcx "CSE - aggressive"
;
; Lcl frame size = 40
@@ -70,90 +70,144 @@ G_M9806_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
mov ebp, dword ptr [rsp+0xB4]
;; size=147 bbWeight=0.01 PerfScore 0.29
G_M9806_IG02: ; bbWeight=0.01, gcrefRegs=C0C6 {rcx rdx rsi rdi r14 r15}, byrefRegs=0000 {}, byref
- jmp G_M9806_IG22
+ jmp G_M9806_IG28
;; size=5 bbWeight=0.01 PerfScore 0.02
-G_M9806_IG03: ; bbWeight=2, gcrefRegs=00C6 {rcx rdx rsi rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r14-r15]
- cmp r8d, dword ptr [rsi+0x08]
- jae G_M9806_IG29
+G_M9806_IG03: ; bbWeight=1, gcrefRegs=40C6 {rcx rdx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r15]
+ test rsi, rsi
+ je G_M9806_IG14
+ test rdi, rdi
+ je G_M9806_IG14
+ mov eax, r8d
+ or eax, ebx
+ jl G_M9806_IG14
+ cmp dword ptr [rsi+0x08], ebx
+ jl G_M9806_IG14
+ cmp dword ptr [rdi+0x08], ebx
+ jl G_M9806_IG14
+ jmp SHORT G_M9806_IG05
+ ;; size=49 bbWeight=1 PerfScore 14.00
+G_M9806_IG04: ; bbWeight=1.98, gcrefRegs=00C6 {rcx rdx rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14]
mov eax, r8d
mov r15, gword ptr [rsi+8*rax+0x10]
; gcrRegs +[r15]
- cmp r8d, dword ptr [rdi+0x08]
- jae G_M9806_IG29
mov eax, r8d
mov r14, gword ptr [rdi+8*rax+0x10]
; gcrRegs +[r14]
xor ebp, ebp
- jmp G_M9806_IG21
- ;; size=43 bbWeight=2 PerfScore 29.50
-G_M9806_IG04: ; bbWeight=8, gcrefRegs=40C6 {rcx rdx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+ jmp G_M9806_IG27
+ ;; size=23 bbWeight=1.98 PerfScore 13.36
+G_M9806_IG05: ; bbWeight=7.92, gcrefRegs=40C6 {rcx rdx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15]
xor ebp, ebp
test rdx, rdx
- je SHORT G_M9806_IG08
- ;; size=7 bbWeight=8 PerfScore 12.00
-G_M9806_IG05: ; bbWeight=4, gcrefRegs=40C6 {rcx rdx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M9806_IG09
+ ;; size=7 bbWeight=7.92 PerfScore 11.88
+G_M9806_IG06: ; bbWeight=3.96, gcrefRegs=40C6 {rcx rdx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
test r14, r14
- je SHORT G_M9806_IG08
+ je SHORT G_M9806_IG09
cmp dword ptr [rdx+0x08], 101
- jl SHORT G_M9806_IG08
+ jl SHORT G_M9806_IG09
cmp dword ptr [r14+0x08], 101
- jl SHORT G_M9806_IG08
- ;; size=18 bbWeight=4 PerfScore 37.00
-G_M9806_IG06: ; bbWeight=15.84, gcrefRegs=40C6 {rcx rdx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+ jl SHORT G_M9806_IG09
+ ;; size=18 bbWeight=3.96 PerfScore 36.63
+G_M9806_IG07: ; bbWeight=15.68, gcrefRegs=40C6 {rcx rdx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
mov eax, ebp
vmovsd xmm0, qword ptr [rdx+8*rax+0x10]
vmovsd qword ptr [r14+8*rax+0x10], xmm0
inc ebp
cmp ebp, 101
- jl SHORT G_M9806_IG06
- ;; size=22 bbWeight=15.84 PerfScore 122.76
-G_M9806_IG07: ; bbWeight=8, gcrefRegs=00C6 {rcx rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ jl SHORT G_M9806_IG07
+ ;; size=22 bbWeight=15.68 PerfScore 121.53
+G_M9806_IG08: ; bbWeight=7.92, gcrefRegs=00C6 {rcx rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r14]
- jmp SHORT G_M9806_IG10
- ;; size=2 bbWeight=8 PerfScore 16.00
-G_M9806_IG08: ; bbWeight=0.04, gcrefRegs=40C6 {rcx rdx rsi rdi r14}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M9806_IG11
+ ;; size=2 bbWeight=7.92 PerfScore 15.84
+G_M9806_IG09: ; bbWeight=0.04, gcrefRegs=40C6 {rcx rdx rsi rdi r14}, byrefRegs=0000 {}, byref
; gcrRegs +[r14]
mov eax, dword ptr [rdx+0x08]
;; size=3 bbWeight=0.04 PerfScore 0.08
-G_M9806_IG09: ; bbWeight=0.16, gcrefRegs=40C6 {rcx rdx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+G_M9806_IG10: ; bbWeight=0.16, gcrefRegs=40C6 {rcx rdx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
cmp ebp, dword ptr [rdx+0x08]
- jae G_M9806_IG29
+ jae G_M9806_IG36
mov eax, ebp
vmovsd xmm0, qword ptr [rdx+8*rax+0x10]
cmp ebp, dword ptr [r14+0x08]
- jae G_M9806_IG29
+ jae G_M9806_IG36
mov eax, ebp
vmovsd qword ptr [r14+8*rax+0x10], xmm0
inc ebp
cmp ebp, 101
- jl SHORT G_M9806_IG09
- ;; size=43 bbWeight=0.16 PerfScore 2.56
-G_M9806_IG10: ; bbWeight=8, gcrefRegs=00C6 {rcx rdx rsi rdi}, byrefRegs=0000 {}, byref
+ jl SHORT G_M9806_IG10
+ ;; size=43 bbWeight=0.16 PerfScore 2.53
+G_M9806_IG11: ; bbWeight=7.92, gcrefRegs=00C6 {rcx rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r14]
inc r8d
cmp r8d, ebx
- jl G_M9806_IG03
- ;; size=12 bbWeight=8 PerfScore 12.00
-G_M9806_IG11: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
+ jl SHORT G_M9806_IG04
+ ;; size=8 bbWeight=7.92 PerfScore 11.88
+G_M9806_IG12: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx rdx]
+ jmp SHORT G_M9806_IG17
+ ;; size=2 bbWeight=1 PerfScore 2.00
+G_M9806_IG13: ; bbWeight=0.02, gcrefRegs=00C6 {rcx rdx rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rcx rdx]
+ cmp r8d, dword ptr [rsi+0x08]
+ jae G_M9806_IG36
+ mov eax, r8d
+ mov r15, gword ptr [rsi+8*rax+0x10]
+ ; gcrRegs +[r15]
+ cmp r8d, dword ptr [rdi+0x08]
+ jae G_M9806_IG36
+ mov eax, r8d
+ mov r14, gword ptr [rdi+8*rax+0x10]
+ ; gcrRegs +[r14]
+ xor ebp, ebp
+ jmp G_M9806_IG27
+ ;; size=43 bbWeight=0.02 PerfScore 0.30
+G_M9806_IG14: ; bbWeight=0.08, gcrefRegs=40C6 {rcx rdx rsi rdi r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r15]
+ xor ebp, ebp
+ mov eax, dword ptr [rdx+0x08]
+ ;; size=5 bbWeight=0.08 PerfScore 0.18
+G_M9806_IG15: ; bbWeight=0.16, gcrefRegs=40C6 {rcx rdx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+ cmp ebp, dword ptr [rdx+0x08]
+ jae G_M9806_IG36
+ mov eax, ebp
+ vmovsd xmm0, qword ptr [rdx+8*rax+0x10]
+ cmp ebp, dword ptr [r14+0x08]
+ jae G_M9806_IG36
+ mov eax, ebp
+ vmovsd qword ptr [r14+8*rax+0x10], xmm0
+ inc ebp
+ cmp ebp, 101
+ jl SHORT G_M9806_IG15
+ ;; size=43 bbWeight=0.16 PerfScore 2.56
+G_M9806_IG16: ; bbWeight=0.08, gcrefRegs=00C6 {rcx rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r14]
+ inc r8d
+ cmp r8d, ebx
+ jl SHORT G_M9806_IG13
+ ;; size=8 bbWeight=0.08 PerfScore 0.12
+G_M9806_IG17: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx rdx]
call <unknown method>
; gcr arg pop 0
movsxd r13, eax
xor ebp, ebp
test ebx, ebx
- jle G_M9806_IG19
+ jle G_M9806_IG25
test rsi, rsi
- je SHORT G_M9806_IG16
+ je SHORT G_M9806_IG22
test rdi, rdi
- je SHORT G_M9806_IG16
+ je SHORT G_M9806_IG22
cmp dword ptr [rsi+0x08], ebx
- jl SHORT G_M9806_IG16
+ jl SHORT G_M9806_IG22
cmp dword ptr [rdi+0x08], ebx
- jl SHORT G_M9806_IG16
+ jl SHORT G_M9806_IG22
;; size=38 bbWeight=1 PerfScore 13.25
-G_M9806_IG12: ; bbWeight=3.96, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M9806_IG18: ; bbWeight=3.96, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
mov ecx, ebp
mov r15, gword ptr [rsi+8*rcx+0x10]
; gcrRegs +[r15]
@@ -178,9 +232,9 @@ G_M9806_IG12: ; bbWeight=3.96, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {
; gcrRegs -[rax rcx r8]
; gcr arg pop 0
test eax, eax
- je SHORT G_M9806_IG14
+ je SHORT G_M9806_IG20
;; size=67 bbWeight=3.96 PerfScore 50.49
-G_M9806_IG13: ; bbWeight=1.98, gcrefRegs=D0C0 {rsi rdi r12 r14 r15}, byrefRegs=0000 {}, byref
+G_M9806_IG19: ; bbWeight=1.98, gcrefRegs=D0C0 {rsi rdi r12 r14 r15}, byrefRegs=0000 {}, byref
mov rcx, r15
; gcrRegs +[rcx]
mov r9, r14
@@ -192,24 +246,24 @@ G_M9806_IG13: ; bbWeight=1.98, gcrefRegs=D0C0 {rsi rdi r12 r14 r15}, byre
; gcrRegs -[rcx r8-r9 r12 r14-r15]
; gcr arg pop 0
;; size=20 bbWeight=1.98 PerfScore 7.92
-G_M9806_IG14: ; bbWeight=3.96, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M9806_IG20: ; bbWeight=3.96, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
inc ebp
cmp ebp, ebx
- jl SHORT G_M9806_IG12
+ jl SHORT G_M9806_IG18
;; size=6 bbWeight=3.96 PerfScore 5.94
-G_M9806_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M9806_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
...
coreclr_tests.run.windows.x64.checked.mch
+152 (+59.38%) : 281444.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
@@ -10,102 +10,162 @@
; 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 -> rbx class-hnd single-def <System.Collections.Generic.List`1[NamedSet][]>
-; V01 loc0 [V01,T07] ( 5, 2.61) int -> r14
-; V02 loc1 [V02,T02] ( 8,123.55) ref -> rbp class-hnd <System.Collections.Generic.List`1[NamedSet]>
-; V03 loc2 [V03,T09] ( 2, 1.56) ubyte -> rdi
-; V04 loc3 [V04,T03] ( 9, 75.09) int -> rsi
-; V05 loc4 [V05,T01] ( 8,130.27) int -> rdi
+; V00 arg0 [V00,T06] ( 9, 4.04) ref -> rbx class-hnd single-def <System.Collections.Generic.List`1[NamedSet][]>
+; V01 loc0 [V01,T07] ( 10, 2.59) int -> r14
+; V02 loc1 [V02,T02] ( 14,123.55) ref -> rbp class-hnd <System.Collections.Generic.List`1[NamedSet]>
+; V03 loc2 [V03,T08] ( 4, 1.56) ubyte -> rsi
+; V04 loc3 [V04,T03] ( 18, 75.09) int -> rdi
+; V05 loc4 [V05,T01] ( 10,130.27) int -> rdi
; V06 loc5 [V06,T00] ( 6,380.51) int -> rsi
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T04] ( 3, 63.47) ref -> rcx class-hnd "Inlining Arg" <<unknown class>>
-; V09 tmp2 [V09,T05] ( 3, 63.47) ref -> rcx "arr expr"
-; V10 cse0 [V10,T08] ( 3, 1.56) int -> rcx hoist multi-def "CSE - aggressive"
+; V08 tmp1 [V08,T04] ( 6, 63.47) ref -> r13 class-hnd "Inlining Arg" <<unknown class>>
+; V09 tmp2 [V09,T05] ( 6, 63.47) ref -> r15 "arr expr"
;
; Lcl frame size = 32
G_M3612_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 72
- mov qword ptr [rsp+0xC8], r14
+ sub rsp, 88
+ mov qword ptr [rsp+0xD8], r15
+ mov qword ptr [rsp+0xD0], r14
+ mov qword ptr [rsp+0xC8], r13
mov qword ptr [rsp+0xC0], rdi
mov qword ptr [rsp+0xB8], rsi
mov qword ptr [rsp+0xB0], rbx
- mov rbx, gword ptr [rsp+0xE0]
+ mov rbx, gword ptr [rsp+0xF0]
; gcrRegs +[rbx]
- mov r14d, dword ptr [rsp+0x94]
- mov rbp, gword ptr [rsp+0x88]
+ mov r14d, dword ptr [rsp+0xA4]
+ mov rbp, gword ptr [rsp+0x98]
; gcrRegs +[rbp]
- mov edi, dword ptr [rsp+0x7C]
- mov esi, dword ptr [rsp+0x78]
- ;; size=68 bbWeight=1 PerfScore 14.25
-G_M3612_IG02: ; bbWeight=1, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M3612_IG11
- ;; size=2 bbWeight=1 PerfScore 2.00
+ mov edi, dword ptr [rsp+0x8C]
+ mov esi, dword ptr [rsp+0x88]
+ ;; size=90 bbWeight=1 PerfScore 16.25
+G_M3612_IG02: ; bbWeight=1, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
+ jmp G_M3612_IG17
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M3612_IG03: ; bbWeight=0.52, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp]
- cmp r14d, ecx
- jae G_M3612_IG15
mov ecx, r14d
mov rbp, gword ptr [rbx+8*rcx+0x10]
; gcrRegs +[rbp]
- ;; size=17 bbWeight=0.52 PerfScore 1.82
+ ;; size=8 bbWeight=0.52 PerfScore 1.16
G_M3612_IG04: ; bbWeight=0.52, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
- xor edi, edi
- mov esi, dword ptr [rbp+0x10]
- add esi, -2
- js SHORT G_M3612_IG06
- ;; size=10 bbWeight=0.52 PerfScore 1.82
-G_M3612_IG05: ; bbWeight=10.58, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
- cmp esi, dword ptr [rbp+0x10]
- jae G_M3612_IG19
- mov rcx, gword ptr [rbp+0x08]
- ; gcrRegs +[rcx]
- cmp esi, dword ptr [rcx+0x08]
- jae SHORT G_M3612_IG15
- mov edx, esi
- mov rcx, gword ptr [rcx+8*rdx+0x10]
- mov rcx, gword ptr [rcx+0x08]
- mov edx, dword ptr [rcx+0x28]
- sub edx, dword ptr [rcx+0x30]
- je SHORT G_M3612_IG04
- mov rcx, rbp
- mov edx, esi
- call [<unknown method>]
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- dec esi
- jns SHORT G_M3612_IG05
- ;; size=52 bbWeight=10.58 PerfScore 264.45
-G_M3612_IG06: ; bbWeight=1.04, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
- test edi, edi
- jne SHORT G_M3612_IG04
- ;; size=4 bbWeight=1.04 PerfScore 1.30
-G_M3612_IG07: ; bbWeight=0.52, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+ xor esi, esi
mov edi, dword ptr [rbp+0x10]
add edi, -2
- jns SHORT G_M3612_IG10
- ;; size=8 bbWeight=0.52 PerfScore 1.69
+ js SHORT G_M3612_IG06
+ ;; size=10 bbWeight=0.52 PerfScore 1.81
+G_M3612_IG05: ; bbWeight=10.47, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+ cmp edi, dword ptr [rbp+0x10]
+ jae G_M3612_IG25
+ mov r15, gword ptr [rbp+0x08]
+ ; gcrRegs +[r15]
+ cmp edi, dword ptr [r15+0x08]
+ jae G_M3612_IG21
+ mov ecx, edi
+ mov rcx, gword ptr [r15+8*rcx+0x10]
+ ; gcrRegs +[rcx]
+ mov r13, gword ptr [rcx+0x08]
+ ; gcrRegs +[r13]
+ mov ecx, dword ptr [r13+0x28]
+ ; gcrRegs -[rcx]
+ sub ecx, dword ptr [r13+0x30]
+ je SHORT G_M3612_IG04
+ mov rcx, rbp
+ ; gcrRegs +[rcx]
+ mov edx, edi
+ call [<unknown method>]
+ ; gcrRegs -[rcx r13 r15]
+ ; gcr arg pop 0
+ dec edi
+ jns SHORT G_M3612_IG05
+ ;; size=59 bbWeight=10.47 PerfScore 261.81
+G_M3612_IG06: ; bbWeight=1.03, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+ test esi, esi
+ jne SHORT G_M3612_IG04
+ ;; size=4 bbWeight=1.03 PerfScore 1.29
+G_M3612_IG07: ; bbWeight=0.52, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
+ mov edi, dword ptr [rbp+0x10]
+ add edi, -2
+ jns G_M3612_IG16
+ ;; size=12 bbWeight=0.52 PerfScore 1.68
G_M3612_IG08: ; bbWeight=0.52, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp]
inc r14d
- mov ecx, dword ptr [rbx+0x08]
- cmp ecx, r14d
- jle SHORT G_M3612_IG16
+ cmp dword ptr [rbx+0x08], r14d
+ jle G_M3612_IG22
jmp SHORT G_M3612_IG03
- ;; size=13 bbWeight=0.52 PerfScore 2.87
+ ;; size=15 bbWeight=0.52 PerfScore 3.23
G_M3612_IG09: ; bbWeight=0.49, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ test rbx, rbx
+ je SHORT G_M3612_IG15
+ test r14d, r14d
+ jl SHORT G_M3612_IG15
mov ecx, dword ptr [rbx+0x08]
jmp SHORT G_M3612_IG08
- ;; size=5 bbWeight=0.49 PerfScore 1.98
-G_M3612_IG10: ; bbWeight=9.74, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
+ ;; size=15 bbWeight=0.49 PerfScore 3.22
+G_M3612_IG10: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ cmp r14d, dword ptr [rbx+0x08]
+ jae G_M3612_IG21
+ mov ecx, r14d
+ mov rbp, gword ptr [rbx+8*rcx+0x10]
+ ; gcrRegs +[rbp]
+ ;; size=18 bbWeight=0.01 PerfScore 0.03
+G_M3612_IG11: ; bbWeight=0.01, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+ xor esi, esi
+ mov edi, dword ptr [rbp+0x10]
+ add edi, -2
+ js SHORT G_M3612_IG13
+ ;; size=10 bbWeight=0.01 PerfScore 0.02
+G_M3612_IG12: ; bbWeight=0.11, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+ cmp edi, dword ptr [rbp+0x10]
+ jae G_M3612_IG25
+ mov r15, gword ptr [rbp+0x08]
+ ; gcrRegs +[r15]
+ cmp edi, dword ptr [r15+0x08]
+ jae SHORT G_M3612_IG21
+ mov ecx, edi
+ mov rcx, gword ptr [r15+8*rcx+0x10]
+ ; gcrRegs +[rcx]
+ mov r13, gword ptr [rcx+0x08]
+ ; gcrRegs +[r13]
+ mov ecx, dword ptr [r13+0x28]
+ ; gcrRegs -[rcx]
+ sub ecx, dword ptr [r13+0x30]
+ je SHORT G_M3612_IG11
+ mov rcx, rbp
+ ; gcrRegs +[rcx]
+ mov edx, edi
+ call [<unknown method>]
+ ; gcrRegs -[rcx r13 r15]
+ ; gcr arg pop 0
+ dec edi
+ jns SHORT G_M3612_IG12
+ ;; size=55 bbWeight=0.11 PerfScore 2.64
+G_M3612_IG13: ; bbWeight=0.01, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+ test esi, esi
+ jne SHORT G_M3612_IG11
+ ;; size=4 bbWeight=0.01 PerfScore 0.01
+G_M3612_IG14: ; bbWeight=0.01, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+ mov edi, dword ptr [rbp+0x10]
+ add edi, -2
+ jns SHORT G_M3612_IG16
+ ;; size=8 bbWeight=0.01 PerfScore 0.02
+G_M3612_IG15: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbp]
+ inc r14d
+ cmp dword ptr [rbx+0x08], r14d
+ jle SHORT G_M3612_IG22
+ jmp SHORT G_M3612_IG10
+ ;; size=11 bbWeight=0.01 PerfScore 0.03
+G_M3612_IG16: ; bbWeight=9.74, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
; gcrRegs +[rbp]
lea esi, [rdi-0x01]
;; size=3 bbWeight=9.74 PerfScore 4.87
-G_M3612_IG11: ; bbWeight=9.74, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+G_M3612_IG17: ; bbWeight=9.74, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
test esi, esi
- jl SHORT G_M3612_IG13
+ jl SHORT G_M3612_IG19
;; size=4 bbWeight=9.74 PerfScore 12.18
-G_M3612_IG12: ; bbWeight=90.26, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+G_M3612_IG18: ; bbWeight=90.26, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
mov rcx, rbp
; gcrRegs +[rcx]
mov edx, esi
@@ -114,36 +174,38 @@ G_M3612_IG12: ; bbWeight=90.26, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M3612_IG18
+ jne SHORT G_M3612_IG24
dec esi
- jns SHORT G_M3612_IG12
+ jns SHORT G_M3612_IG18
;; size=22 bbWeight=90.26 PerfScore 564.10
-G_M3612_IG13: ; bbWeight=9.74, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+G_M3612_IG19: ; bbWeight=9.74, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
dec edi
- jns SHORT G_M3612_IG10
+ jns SHORT G_M3612_IG16
;; size=4 bbWeight=9.74 PerfScore 12.18
-G_M3612_IG14: ; bbWeight=0.49, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M3612_IG20: ; bbWeight=0.49, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp]
- jmp SHORT G_M3612_IG09
- ;; size=2 bbWeight=0.49 PerfScore 0.99
-G_M3612_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
...
libraries.crossgen2.windows.x64.checked.mch
+56 (+8.10%) : 38578.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
@@ -13,14 +13,14 @@
; V01 arg1 [V01,T11] ( 3, 3 ) ref -> rdx 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 -> rsi class-hnd single-def <<unknown class>>
+; V04 loc1 [V04,T04] ( 10, 12.04) ref -> rsi 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 -> rbp
+; V06 loc3 [V06,T00] ( 36, 52.20) int -> rbp
; V07 loc4 [V07,T01] ( 10, 16 ) ref -> r15 class-hnd <<unknown class>>
; V08 loc5 [V08,T02] ( 10, 16 ) ref -> r14 class-hnd <<unknown class>>
; V09 loc6 [V09,T06] ( 8, 9 ) int -> rdi single-def
;* V10 loc7 [V10,T18] ( 0, 0 ) int -> zero-ref single-def
-; V11 loc8 [V11,T13] ( 3, 5 ) int -> rdi single-def
+; V11 loc8 [V11,T07] ( 6, 6 ) int -> rdi single-def
; V12 loc9 [V12,T08] ( 6, 6 ) int -> rdi single-def
; V13 OutArgs [V13 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V14 tmp1 [V14,T09] ( 3, 6 ) int -> rdi "non-inline candidate call"
@@ -28,7 +28,7 @@
; V16 tmp3 [V16,T16] ( 2, 2 ) int -> rbp "non-inline candidate call"
; V17 tmp4 [V17,T17] ( 2, 2 ) int -> rdi "Inline return value spill temp"
; V18 tmp5 [V18,T10] ( 3, 6 ) int -> rax "Inlining Arg"
-; V19 cse0 [V19,T07] ( 8, 7.58) int -> r14 multi-def "CSE - aggressive"
+; V19 cse0 [V19,T13] ( 9, 4.12) int -> r14 multi-def "CSE - aggressive"
; V20 cse1 [V20,T05] ( 3, 11.88) long -> r14 "CSE - aggressive"
;
; Lcl frame size = 40
@@ -159,7 +159,7 @@ G_M40132_IG07: ; bbWeight=3.96, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRe
cmp r15, r14
jne G_M40132_IG15
add ebp, 1
- jo G_M40132_IG24
+ jo G_M40132_IG27
cmp ebp, edi
jle G_M40132_IG03
;; size=26 bbWeight=3.96 PerfScore 14.85
@@ -170,7 +170,7 @@ G_M40132_IG08: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
G_M40132_IG09: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov r14d, dword ptr [rsi+0x08]
cmp ebp, r14d
- jae G_M40132_IG25
+ jae G_M40132_IG28
mov ecx, ebp
mov rcx, gword ptr [rsi+8*rcx+0x10]
; gcrRegs +[rcx]
@@ -204,7 +204,7 @@ G_M40132_IG10: ; bbWeight=0.02, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0
G_M40132_IG11: ; bbWeight=0.04, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
cmp ebp, dword ptr [rbx+0x08]
- jae G_M40132_IG25
+ jae G_M40132_IG28
mov ecx, ebp
mov rcx, gword ptr [rbx+8*rcx+0x10]
; gcrRegs +[rcx]
@@ -240,7 +240,7 @@ G_M40132_IG13: ; bbWeight=0.04, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRe
cmp r15, r14
jne SHORT G_M40132_IG15
add ebp, 1
- jo G_M40132_IG24
+ jo G_M40132_IG27
cmp ebp, edi
jle G_M40132_IG09
;; size=22 bbWeight=0.04 PerfScore 0.15
@@ -248,9 +248,9 @@ G_M40132_IG14: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcrRegs -[r14-r15]
mov r14d, dword ptr [rsi+0x08]
cmp r14d, dword ptr [rbx+0x08]
- jle SHORT G_M40132_IG18
+ jle G_M40132_IG21
add edi, 1
- jo G_M40132_IG24
+ jo G_M40132_IG27
mov ebp, edi
mov rcx, rbx
; gcrRegs +[rcx]
@@ -261,18 +261,23 @@ G_M40132_IG14: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcr arg pop 0
mov edi, eax
cmp ebp, edi
- jg G_M40132_IG22
+ jg G_M40132_IG25
jmp SHORT G_M40132_IG16
- ;; size=48 bbWeight=0.50 PerfScore 7.50
+ ;; size=52 bbWeight=0.50 PerfScore 7.50
G_M40132_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
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=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M40132_IG16: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
- cmp ebp, r14d
- jae G_M40132_IG25
+ mov ecx, ebp
+ or ecx, edi
+ jl SHORT G_M40132_IG19
+ cmp r14d, edi
+ jle SHORT G_M40132_IG19
+ ;; size=11 bbWeight=0.50 PerfScore 1.38
+G_M40132_IG17: ; bbWeight=3.96, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov ecx, ebp
mov rcx, gword ptr [rsi+8*rcx+0x10]
; gcrRegs +[rcx]
@@ -284,21 +289,44 @@ G_M40132_IG16: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
test eax, eax
je SHORT G_M40132_IG15
add ebp, 1
- jo G_M40132_IG24
+ jo G_M40132_IG27
cmp ebp, edi
- jle SHORT G_M40132_IG16
- ;; size=45 bbWeight=4 PerfScore 55.00
-G_M40132_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jle SHORT G_M40132_IG17
+ ;; size=36 bbWeight=3.96 PerfScore 49.50
+G_M40132_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
- jmp G_M40132_IG22
+ jmp G_M40132_IG25
;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M40132_IG18: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M40132_IG19: ; bbWeight=0.04, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rsi]
+ cmp ebp, r14d
+ jae G_M40132_IG28
+ mov ecx, ebp
+ mov rcx, gword ptr [rsi+8*rcx+0x10]
+ ; gcrRegs +[rcx]
+ lea r11, [(reloc)]
+ cmp dword ptr [rcx], ecx
+ call [r11]<unknown method>
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
+ test eax, eax
+ je SHORT G_M40132_IG15
+ add ebp, 1
+ jo G_M40132_IG27
+ cmp ebp, edi
+ jle SHORT G_M40132_IG19
+ ;; size=45 bbWeight=0.04 PerfScore 0.55
+G_M40132_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi]
+ jmp G_M40132_IG25
+ ;; size=5 bbWeight=0.50 PerfScore 1.00
+G_M40132_IG21: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rsi]
cmp dword ptr [rbx+0x08], r14d
- jle SHORT G_M40132_IG22
+ jle SHORT G_M40132_IG25
mov ebp, edi
add ebp, 1
- jo G_M40132_IG24
+ jo G_M40132_IG27
mov rcx, rsi
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
@@ -308,14 +336,14 @@ G_M40132_IG18: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcr arg pop 0
mov edi, eax
cmp ebp, edi
- jg SHORT G_M40132_IG22
+ jg SHORT G_M40132_IG25
mov ecx, ebp
or ecx, edi
- jl SHORT G_M40132_IG21
+ jl SHORT G_M40132_IG24
cmp dword ptr [rbx+0x08], edi
- jle SHORT G_M40132_IG21
+ jle SHORT G_M40132_IG24
;; size=49 bbWeight=0.50 PerfScore 8.25
-G_M40132_IG19: ; bbWeight=3.96, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M40132_IG22: ; bbWeight=3.96, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov ecx, ebp
mov rcx, gword ptr [rbx+8*rcx+0x10]
; gcrRegs +[rcx]
@@ -327,18 +355,18 @@ G_M40132_IG19: ; bbWeight=3.96, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
test eax, eax
je G_M40132_IG15
add ebp, 1
- jo SHORT G_M40132_IG24
+ jo SHORT G_M40132_IG27
cmp ebp, edi
- jle SHORT G_M40132_IG19
+ jle SHORT G_M40132_IG22
;; size=36 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 ebp, dword ptr [rbx+0x08]
- jae SHORT G_M40132_IG25
+ jae SHORT G_M40132_IG28
mov ecx, ebp
mov rcx, gword ptr [rbx+8*rcx+0x10]
; gcrRegs +[rcx]
@@ -350,15 +378,15 @@ G_M40132_IG21: ; bbWeight=0.04, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
test eax, eax
je G_M40132_IG15
add ebp, 1
- jo SHORT G_M40132_IG24
+ jo SHORT G_M40132_IG27
cmp ebp, edi
- jle SHORT G_M40132_IG21
+ jle SHORT G_M40132_IG24
;; size=41 bbWeight=0.04 PerfScore 0.66
-G_M40132_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M40132_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M40132_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M40132_IG26: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
add rsp, 40
pop rbx
pop rbp
@@ -368,18 +396,18 @@ G_M40132_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
pop r15
ret
;; size=13 bbWeight=1 PerfScore 4.25
-G_M40132_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M40132_IG27: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [CORINFO_HELP_OVERFLOW]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M40132_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M40132_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [CORINFO_HELP_RNGCHKFAIL]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 691, prolog size 12, PerfScore 339.71, instruction count 205, allocated bytes for code 691 (MethodHash=c1c1633b) for method Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
+; Total bytes of code 747, prolog size 12, PerfScore 337.13, instruction count 222, allocated bytes for code 747 (MethodHash=c1c1633b) for method Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
libraries_tests.run.windows.x64.Release.mch
+73 (+2.37%) : 295517.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
@@ -16,10 +16,10 @@
; V03 loc0 [V03,T51] ( 8, 300 ) ref -> rdi 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,T92] ( 2, 0.08) ref -> [rsp+0x260] class-hnd tier0-frame <int[]>
-; V07 loc4 [V07,T90] ( 5, 0.19) int -> r12
-; V08 loc5 [V08,T52] ( 4, 292.80) int -> rbp
-; V09 loc6 [V09,T86] ( 8, 16.92) int -> r13
+; V06 loc3 [V06,T91] ( 6, 0.11) ref -> [rsp+0x260] class-hnd tier0-frame <int[]>
+; V07 loc4 [V07,T90] ( 10, 0.19) int -> r12
+; V08 loc5 [V08,T52] ( 5, 292.80) int -> rbp
+; V09 loc6 [V09,T86] ( 9, 16.92) int -> r13
; V10 loc7 [V10,T54] ( 5, 200 ) ushort -> r14
; V11 loc8 [V11,T55] ( 4, 197.59) ushort -> r15
; V12 loc9 [V12,T10] ( 8, 590.35) int -> rsi
@@ -28,13 +28,13 @@
; V15 loc12 [V15,T65] ( 2, 195.18) int -> [rsp+0x23C] spill-single-def tier0-frame
; V16 loc13 [V16,T66] ( 2, 195.18) int -> [rsp+0x238] spill-single-def tier0-frame
; V17 loc14 [V17 ] ( 83, 6344.24) struct (40) [rsp+0x210] do-not-enreg[XS] addr-exposed ld-addr-op tier0-frame <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
-; V18 loc15 [V18,T95] ( 3, 0 ) ref -> rbx class-hnd <int[]>
-; V19 loc16 [V19,T94] ( 5, 0 ) int -> rsi
-; V20 loc17 [V20,T93] ( 6, 0 ) ref -> rbp class-hnd exact <System.Globalization.Tests.CompareInfoCompareTests+<>c__DisplayClass11_0>
+; V18 loc15 [V18,T94] ( 3, 0 ) ref -> rbx class-hnd <int[]>
+; V19 loc16 [V19,T93] ( 5, 0 ) int -> rsi
+; V20 loc17 [V20,T92] ( 6, 0 ) ref -> rbp class-hnd exact <System.Globalization.Tests.CompareInfoCompareTests+<>c__DisplayClass11_0>
; V21 OutArgs [V21 ] ( 1, 1 ) struct (48) [rsp+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,T96] ( 3, 0 ) ref -> r14 class-hnd exact "NewObj constructor temp" <System.Func`1[System.Object]>
+; V24 tmp3 [V24,T95] ( 3, 0 ) ref -> r14 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>>
@@ -687,13 +687,12 @@
;* V674 tmp653 [V674 ] ( 0, 0 ) long -> zero-ref "Cast away GC"
;* V675 tmp654 [V675 ] ( 0, 0 ) long -> zero-ref "Cast away GC"
;* V676 tmp655 [V676 ] ( 0, 0 ) long -> zero-ref "Cast away GC"
-; V677 tmp656 [V677,T98] ( 3, 0 ) struct ( 8) [rsp+0xA0] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
+; V677 tmp656 [V677,T97] ( 3, 0 ) struct ( 8) [rsp+0xA0] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
; V678 tmp657 [V678,T87] ( 3, 14.47) ref -> rcx "arr expr"
-; V679 tmp658 [V679,T97] ( 3, 0 ) ref -> rcx "arr expr"
-; V680 cse0 [V680,T91] ( 3, 0.11) int -> rdx "CSE - conservative"
-; V681 cse1 [V681,T88] ( 4, 7.27) int -> rcx "CSE - conservative"
-; V682 cse2 [V682,T00] ( 27,98369.01) ref -> rdx multi-def "CSE - aggressive"
-; V683 cse3 [V683,T21] ( 10, 487.94) ref -> [rsp+0x30] multi-def "CSE - moderate"
+; V679 tmp658 [V679,T96] ( 3, 0 ) ref -> rcx "arr expr"
+; V680 cse0 [V680,T88] ( 5, 7.27) int -> rcx "CSE - conservative"
+; V681 cse1 [V681,T00] ( 27,98369.01) ref -> rdx multi-def "CSE - aggressive"
+; V682 cse2 [V682,T21] ( 10, 487.94) ref -> [rsp+0x30] multi-def "CSE - moderate"
;
; Lcl frame size = 296
@@ -725,17 +724,62 @@ G_M28013_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r15d, dword ptr [rsp+0x24C]
mov esi, dword ptr [rsp+0x248]
;; size=178 bbWeight=1 PerfScore 33.83
-G_M28013_IG02: ; bbWeight=1, gcVars=00000000100000000000000000000000 {V06}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M28013_IG02: ; bbWeight=1, gcVars=00000000080000000000000000000000 {V06}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V06}
- jmp SHORT G_M28013_IG04
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M28013_IG03: ; bbWeight=2.41, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ jmp G_M28013_IG11
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M28013_IG03: ; bbWeight=0.04, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ mov rsi, gword ptr [rsp+0x260]
+ ; gcrRegs +[rsi]
+ test rsi, rsi
+ je G_M28013_IG47
+ test r12d, r12d
+ jl G_M28013_IG47
+ ;; size=26 bbWeight=0.04 PerfScore 0.13
+G_M28013_IG04: ; bbWeight=0.08, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V06}
+ jmp SHORT G_M28013_IG06
+ ;; size=2 bbWeight=0.08 PerfScore 0.15
+G_M28013_IG05: ; bbWeight=0.04, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ mov edx, r12d
+ mov ebp, dword ptr [rsi+4*rdx+0x10]
+ xor r13d, r13d
+ test ecx, ecx
+ jg SHORT G_M28013_IG07
+ ;; size=14 bbWeight=0.04 PerfScore 0.14
+G_M28013_IG06: ; bbWeight=0.04, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ inc r12d
+ cmp dword ptr [rsi+0x08], r12d
+ jle G_M28013_IG71
+ jmp SHORT G_M28013_IG05
+ ;; size=15 bbWeight=0.04 PerfScore 0.23
+G_M28013_IG07: ; bbWeight=0.02, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ mov gword ptr [rsp+0x260], rsi
+ ; GC ptr vars +{V06}
+ jmp SHORT G_M28013_IG10
+ ;; size=10 bbWeight=0.02 PerfScore 0.06
+G_M28013_IG08: ; bbWeight=0.00, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ ; GC ptr vars -{V06}
+ cmp r12d, dword ptr [rsi+0x08]
+ jae G_M28013_IG48
+ mov edx, r12d
+ mov ebp, dword ptr [rsi+4*rdx+0x10]
+ xor r13d, r13d
+ test ecx, ecx
+ jle G_M28013_IG47
+ ;; size=28 bbWeight=0.00 PerfScore 0.00
+G_M28013_IG09: ; bbWeight=0.00, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ mov gword ptr [rsp+0x260], rsi
+ ; GC ptr vars +{V06}
+ ;; size=8 bbWeight=0.00 PerfScore 0.00
+G_M28013_IG10: ; bbWeight=2.41, gcVars=00000000080000000000000000000000 {V06}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rsi]
cmp r13d, ecx
- jae G_M28013_IG64
+ jae G_M28013_IG72
mov rcx, gword ptr [rdi+0x08]
; gcrRegs +[rcx]
cmp r13d, dword ptr [rcx+0x08]
- jae G_M28013_IG40
+ jae G_M28013_IG48
mov edx, r13d
movzx r14, word ptr [rcx+2*rdx+0x10]
lea ecx, [r14+0x60]
@@ -743,17 +787,17 @@ G_M28013_IG03: ; bbWeight=2.41, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
movzx r15, cx
mov esi, r13d
;; size=43 bbWeight=2.41 PerfScore 25.32
-G_M28013_IG04: ; bbWeight=2.41, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+G_M28013_IG11: ; bbWeight=2.41, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
cmp esi, dword ptr [rdi+0x10]
- jge G_M28013_IG34
+ jge G_M28013_IG41
;; size=9 bbWeight=2.41 PerfScore 9.65
-G_M28013_IG05: ; bbWeight=97.59, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+G_M28013_IG12: ; bbWeight=97.59, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
cmp esi, dword ptr [rdi+0x10]
- jae G_M28013_IG64
+ jae G_M28013_IG72
mov rcx, gword ptr [rdi+0x08]
; gcrRegs +[rcx]
cmp esi, dword ptr [rcx+0x08]
- jae G_M28013_IG40
+ jae G_M28013_IG48
mov edx, esi
movzx r8, word ptr [rcx+2*rdx+0x10]
mov dword ptr [rsp+0x244], r8d
@@ -823,12 +867,12 @@ G_M28013_IG05: ; bbWeight=97.59, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
mov edx, 54
mov r8d, 5
;; size=241 bbWeight=97.59 PerfScore 4977.00
-G_M28013_IG06: ; bbWeight=97.59, isz, extend
+G_M28013_IG13: ; bbWeight=97.59, isz, extend
call [<unknown method>]
; gcr arg pop 0
mov ecx, dword ptr [rsp+0x220]
cmp ecx, dword ptr [rsp+0x230]
- ja G_M28013_IG58
+ ja G_M28013_IG66
mov rdx, bword ptr [rsp+0x228]
; byrRegs +[rdx]
mov eax, ecx
@@ -840,9 +884,9 @@ G_M28013_IG06: ; bbWeight=97.59, isz, extend
sub r8d, ecx
mov dword ptr [rsp+0x124], r8d
test r8d, r8d
- jge SHORT G_M28013_IG08
+ jge SHORT G_M28013_IG15
;; size=72 bbWeight=97.59 PerfScore 1293.05
-G_M28013_IG07: ; bbWeight=1561.41, gcVars=00000000100000000000000008000000 {V06 V33}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref
+G_M28013_IG14: ; bbWeight=1561.41, gcVars=00000000080000000000000008000000 {V06 V33}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[rax rdx]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
@@ -852,9 +896,9 @@ G_M28013_IG07: ; bbWeight=1561.41, gcVars=0000000010000000000000000800000
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=19 bbWeight=1561.41 PerfScore 5464.94
-G_M28013_IG08: ; bbWeight=97.59, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+G_M28013_IG15: ; bbWeight=97.59, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
cmp dword ptr [rsp+0x124], 15
- jb G_M28013_IG41
+ jb G_M28013_IG49
mov rcx, 0xD1FFAB1E
; byrRegs +[rcx]
mov rdx, bword ptr [rsp+0x98]
@@ -869,14 +913,14 @@ G_M28013_IG08: ; bbWeight=97.59, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
mov dword ptr [rsp+0x220], ecx
mov dword ptr [rsp+0x120], r14d
cmp byte ptr [rsp+0x224], 0
- jne G_M28013_IG39
+ jne G_M28013_IG46
;; size=89 bbWeight=97.59 PerfScore 2195.74
-G_M28013_IG09: ; bbWeight=97.59, gcVars=00000000100000000000000000000000 {V06}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M28013_IG16: ; bbWeight=97.59, gcVars=00000000080000000000000000000000 {V06}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[rdx]
; GC ptr vars -{V33}
mov ecx, dword ptr [rsp+0x220]
cmp ecx, dword ptr [rsp+0x230]
- ja G_M28013_IG58
+ ja G_M28013_IG66
mov rdx, bword ptr [rsp+0x228]
; byrRegs +[rdx]
mov r8d, ecx
@@ -888,9 +932,9 @@ G_M28013_IG09: ; bbWeight=97.59, gcVars=00000000100000000000000000000000
sub r10d, ecx
mov dword ptr [rsp+0x114], r10d
test r10d, r10d
- jge SHORT G_M28013_IG11
+ jge SHORT G_M28013_IG18
;; size=67 bbWeight=97.59 PerfScore 1000.28
-G_M28013_IG10: ; bbWeight=6245.65, gcVars=00000000100000000000000020000000 {V06 V49}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref
+G_M28013_IG17: ; bbWeight=6245.65, gcVars=00000000080000000000000020000000 {V06 V49}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[rdx r8]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
@@ -900,14 +944,14 @@ G_M28013_IG10: ; bbWeight=6245.65, gcVars=0000000010000000000000002000000
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=19 bbWeight=6245.65 PerfScore 21859.78
-G_M28013_IG11: ; bbWeight=97.59, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+G_M28013_IG18: ; bbWeight=97.59, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
mov r8, bword ptr [rsp+0x90]
; byrRegs +[r8]
mov ecx, dword ptr [rsp+0x114]
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
mov gword ptr [rsp+0x30], rax
- ; GC ptr vars +{V683}
+ ; GC ptr vars +{V682}
lea r9, bword ptr [rax+0x0C]
; byrRegs +[r9]
mov rdx, gword ptr [rsp+0x210]
@@ -933,15 +977,15 @@ G_M28013_IG11: ; bbWeight=97.59, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcrRegs -[rax r9]
; gcr arg pop 0
test eax, eax
- je G_M28013_IG44
+ je G_M28013_IG52
mov ecx, dword ptr [rsp+0x220]
add ecx, dword ptr [rsp+0x118]
mov dword ptr [rsp+0x220], ecx
;; size=160 bbWeight=97.59 PerfScore 2146.94
-G_M28013_IG12: ; bbWeight=97.59, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M28013_IG19: ; bbWeight=97.59, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
mov ecx, dword ptr [rsp+0x220]
cmp ecx, dword ptr [rsp+0x230]
- ja G_M28013_IG58
+ ja G_M28013_IG66
mov rdx, bword ptr [rsp+0x228]
; byrRegs +[rdx]
mov eax, ecx
@@ -953,9 +997,9 @@ G_M28013_IG12: ; bbWeight=97.59, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
...
+103 (+2.90%) : 299020.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
@@ -13,13 +13,13 @@
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Globalization.Tests.CompareInfoCompareTests>
;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <int[]>
; V02 arg2 [V02,T112] ( 3, 2 ) ref -> rbx class-hnd single-def <int[]>
-; V03 loc0 [V03,T66] ( 9, 302.43) ref -> rbp class-hnd exact <System.Collections.Generic.List`1[ushort]>
+; V03 loc0 [V03,T66] ( 10, 302.43) ref -> rbp 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,T119] ( 2, 0.08) ref -> [rsp+0x2B0] class-hnd tier0-frame <int[]>
-; V07 loc4 [V07,T117] ( 5, 0.19) int -> [rsp+0x2AC] tier0-frame
-; V08 loc5 [V08,T25] ( 5, 1854.63) int -> rsi
-; V09 loc6 [V09,T103] ( 8, 16.77) int -> r13
+; V06 loc3 [V06,T118] ( 6, 0.11) ref -> [rsp+0x2B0] class-hnd tier0-frame <int[]>
+; V07 loc4 [V07,T117] ( 10, 0.19) int -> [rsp+0x2AC] tier0-frame
+; V08 loc5 [V08,T25] ( 6, 1854.63) int -> rsi
+; V09 loc6 [V09,T103] ( 9, 16.77) int -> r13
; V10 loc7 [V10,T71] ( 4, 200 ) ushort -> r14
; V11 loc8 [V11,T72] ( 3, 197.61) ushort -> r15
; V12 loc9 [V12,T33] ( 8, 590.44) int -> rdi
@@ -28,13 +28,13 @@
; V15 loc12 [V15,T76] ( 2, 195.22) int -> [rsp+0x28C] spill-single-def tier0-frame
; V16 loc13 [V16,T77] ( 2, 195.22) int -> [rsp+0x288] spill-single-def tier0-frame
; V17 loc14 [V17 ] ( 51, 14935.34) struct (40) [rsp+0x260] do-not-enreg[XS] addr-exposed ld-addr-op tier0-frame <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
-; V18 loc15 [V18,T127] ( 3, 0 ) ref -> rbx class-hnd <int[]>
-; V19 loc16 [V19,T126] ( 5, 0 ) int -> rsi
+; V18 loc15 [V18,T126] ( 3, 0 ) ref -> rbx class-hnd <int[]>
+; V19 loc16 [V19,T125] ( 5, 0 ) int -> rsi
;* V20 loc17 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
; V21 OutArgs [V21 ] ( 1, 1 ) struct (40) [rsp+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,T125] ( 7, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V24 tmp3 [V24,T128] ( 3, 0 ) ref -> r14 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V23 tmp2 [V23,T124] ( 7, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V24 tmp3 [V24,T127] ( 3, 0 ) ref -> r14 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* 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>>
@@ -197,7 +197,7 @@
;* V184 tmp163 [V184 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V185 tmp164 [V185,T26] ( 6, 974.91) int -> [rsp+0x120] spill-single-def "Inlining Arg"
;* V186 tmp165 [V186 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V187 tmp166 [V187,T120] ( 3, 0.06) ref -> [rsp+0x78] class-hnd spill-single-def "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
+; V187 tmp166 [V187,T119] ( 3, 0.06) ref -> [rsp+0x78] class-hnd spill-single-def "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
;* V188 tmp167 [V188 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V189 tmp168 [V189 ] ( 0, 0 ) int -> zero-ref
;* V190 tmp169 [V190 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
@@ -212,7 +212,7 @@
;* V199 tmp178 [V199 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V200 tmp179 [V200 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V201 tmp180 [V201 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V202 tmp181 [V202,T121] ( 3, 0.06) int -> [rsp+0x118] spill-single-def "Inline stloc first use temp"
+; V202 tmp181 [V202,T120] ( 3, 0.06) int -> [rsp+0x118] spill-single-def "Inline stloc first use temp"
;* V203 tmp182 [V203 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V204 tmp183 [V204 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V205 tmp184 [V205 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -245,7 +245,7 @@
;* V232 tmp211 [V232 ] ( 0, 0 ) int -> zero-ref
;* V233 tmp212 [V233 ] ( 0, 0 ) long -> zero-ref
;* V234 tmp213 [V234 ] ( 0, 0 ) long -> zero-ref
-; V235 tmp214 [V235,T04] ( 2, 99742.46) ref -> rdx
+; V235 tmp214 [V235,T04] ( 2, 99742.46) ref -> rax
;* V236 tmp215 [V236 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V237 tmp216 [V237 ] ( 0, 0 ) int -> zero-ref
;* V238 tmp217 [V238 ] ( 0, 0 ) long -> zero-ref
@@ -597,10 +597,10 @@
; V584 tmp563 [V584,T116] ( 2, 2.74) int -> rdx "field V193._length (fldOffset=0x8)" P-INDEP
;* V585 tmp564 [V585 ] ( 0, 0 ) byref -> zero-ref "field V194._reference (fldOffset=0x0)" P-INDEP
;* V586 tmp565 [V586 ] ( 0, 0 ) int -> zero-ref "field V194._length (fldOffset=0x8)" P-INDEP
-; V587 tmp566 [V587,T122] ( 2, 0.04) byref -> [rsp+0x60] spill-single-def "field V199._reference (fldOffset=0x0)" P-INDEP
+; V587 tmp566 [V587,T121] ( 2, 0.04) byref -> [rsp+0x60] spill-single-def "field V199._reference (fldOffset=0x0)" P-INDEP
;* V588 tmp567 [V588 ] ( 0, 0 ) int -> zero-ref "field V199._length (fldOffset=0x8)" P-INDEP
-; V589 tmp568 [V589,T123] ( 2, 0.04) byref -> r8 "field V203._reference (fldOffset=0x0)" P-INDEP
-; V590 tmp569 [V590,T124] ( 2, 0.04) int -> r9 "field V203._length (fldOffset=0x8)" P-INDEP
+; V589 tmp568 [V589,T122] ( 2, 0.04) byref -> r8 "field V203._reference (fldOffset=0x0)" P-INDEP
+; V590 tmp569 [V590,T123] ( 2, 0.04) int -> r9 "field V203._length (fldOffset=0x8)" P-INDEP
;* V591 tmp570 [V591 ] ( 0, 0 ) byref -> zero-ref "field V204._reference (fldOffset=0x0)" P-INDEP
;* V592 tmp571 [V592 ] ( 0, 0 ) int -> zero-ref "field V204._length (fldOffset=0x8)" P-INDEP
; V593 tmp572 [V593,T69] ( 3, 292.21) byref -> [rsp+0x58] spill-single-def "field V209._reference (fldOffset=0x0)" P-INDEP
@@ -753,10 +753,9 @@
; V740 tmp719 [V740,T63] ( 2, 389.62) long -> rdx "Cast away GC"
; V741 tmp720 [V741,T61] ( 2, 390.44) ref -> rdx "argument with side effect"
; V742 cse0 [V742,T05] ( 4, 68572.94) ref -> [rsp+0x30] hoist multi-def "CSE - aggressive"
-; V743 cse1 [V743,T118] ( 3, 0.11) int -> rcx "CSE - conservative"
-; V744 cse2 [V744,T14] ( 3, 18741.14) int -> rcx "CSE - moderate"
-; V745 cse3 [V745,T21] ( 4, 6539.63) int -> [rsp+0xC4] spill-single-def "CSE - moderate"
-;* V746 cse4 [V746,T75] ( 0, 0 ) ref -> zero-ref "CSE - moderate"
+; V743 cse1 [V743,T14] ( 3, 18741.14) int -> rcx "CSE - moderate"
+; V744 cse2 [V744,T21] ( 4, 6539.63) int -> [rsp+0xC4] spill-single-def "CSE - moderate"
+;* V745 cse3 [V745,T75] ( 0, 0 ) ref -> zero-ref "CSE - moderate"
;
; Lcl frame size = 376
@@ -788,17 +787,79 @@ G_M28013_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r15d, dword ptr [rsp+0x29C]
mov edi, dword ptr [rsp+0x298]
;; size=179 bbWeight=1 PerfScore 33.83
-G_M28013_IG02: ; bbWeight=1, gcVars=000000000000000000800000000000000000000000000000 {V06}, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M28013_IG02: ; bbWeight=1, gcVars=00400000000000000000000000000000 {V06}, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V06}
- jmp SHORT G_M28013_IG04
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M28013_IG03: ; bbWeight=2.39, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
+ jmp G_M28013_IG12
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M28013_IG03: ; bbWeight=0.04, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+ mov rdi, gword ptr [rsp+0x2B0]
+ ; gcrRegs +[rdi]
+ test rdi, rdi
+ je G_M28013_IG86
+ mov r12d, dword ptr [rsp+0x2AC]
+ test r12d, r12d
+ jl SHORT G_M28013_IG05
+ ;; size=30 bbWeight=0.04 PerfScore 0.17
+G_M28013_IG04: ; bbWeight=0.08, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V06}
+ jmp SHORT G_M28013_IG07
+ ;; size=2 bbWeight=0.08 PerfScore 0.15
+G_M28013_IG05: ; bbWeight=0.02, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref
+ mov dword ptr [rsp+0x2AC], r12d
+ jmp G_M28013_IG86
+ ;; size=13 bbWeight=0.02 PerfScore 0.06
+G_M28013_IG06: ; bbWeight=0.04, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref, isz
+ mov ecx, r12d
+ mov esi, dword ptr [rdi+4*rcx+0x10]
+ xor r13d, r13d
+ mov rcx, rbp
+ ; gcrRegs +[rcx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
+ test eax, eax
+ jg SHORT G_M28013_IG08
+ ;; size=23 bbWeight=0.04 PerfScore 0.26
+G_M28013_IG07: ; bbWeight=0.04, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref, isz
+ inc r12d
+ cmp dword ptr [rdi+0x08], r12d
+ jle G_M28013_IG103
+ jmp SHORT G_M28013_IG06
+ ;; size=15 bbWeight=0.04 PerfScore 0.23
+G_M28013_IG08: ; bbWeight=0.02, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref, isz
+ mov dword ptr [rsp+0x2AC], r12d
+ mov gword ptr [rsp+0x2B0], rdi
+ ; GC ptr vars +{V06}
+ jmp SHORT G_M28013_IG11
+ ;; size=18 bbWeight=0.02 PerfScore 0.07
+G_M28013_IG09: ; bbWeight=0.00, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref
+ ; GC ptr vars -{V06}
+ cmp r12d, dword ptr [rdi+0x08]
+ jae G_M28013_IG87
+ mov ecx, r12d
+ mov esi, dword ptr [rdi+4*rcx+0x10]
+ xor r13d, r13d
+ mov rcx, rbp
+ ; gcrRegs +[rcx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
+ test eax, eax
+ mov dword ptr [rsp+0x2AC], r12d
+ jle G_M28013_IG86
+ ;; size=45 bbWeight=0.00 PerfScore 0.00
+G_M28013_IG10: ; bbWeight=0.00, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref
+ mov gword ptr [rsp+0x2B0], rdi
+ ; GC ptr vars +{V06}
+ ;; size=8 bbWeight=0.00 PerfScore 0.00
+G_M28013_IG11: ; bbWeight=2.39, gcVars=00400000000000000000000000000000 {V06}, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rdi]
cmp r13d, dword ptr [rbp+0x10]
- jae G_M28013_IG89
+ jae G_M28013_IG98
mov rcx, gword ptr [rbp+0x08]
; gcrRegs +[rcx]
cmp r13d, dword ptr [rcx+0x08]
- jae G_M28013_IG78
+ jae G_M28013_IG87
mov eax, r13d
movzx r14, word ptr [rcx+2*rax+0x10]
lea ecx, [r14+0x60]
@@ -806,7 +867,7 @@ G_M28013_IG03: ; bbWeight=2.39, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000
movzx r15, cx
mov edi, r13d
;; size=44 bbWeight=2.39 PerfScore 31.67
-G_M28013_IG04: ; bbWeight=2.39, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
+G_M28013_IG12: ; bbWeight=2.39, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
mov rcx, rbp
; gcrRegs +[rcx]
cmp dword ptr [rcx], ecx
@@ -814,15 +875,15 @@ G_M28013_IG04: ; bbWeight=2.39, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000
; gcrRegs -[rcx]
; gcr arg pop 0
cmp eax, edi
- jle G_M28013_IG60
+ jle G_M28013_IG68
;; size=19 bbWeight=2.39 PerfScore 17.92
-G_M28013_IG05: ; bbWeight=97.61, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
+G_M28013_IG13: ; bbWeight=97.61, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
cmp edi, dword ptr [rbp+0x10]
- jae G_M28013_IG89
+ jae G_M28013_IG98
mov rcx, gword ptr [rbp+0x08]
; gcrRegs +[rcx]
cmp edi, dword ptr [rcx+0x08]
- jae G_M28013_IG78
+ jae G_M28013_IG87
mov edx, edi
movzx rax, word ptr [rcx+2*rdx+0x10]
mov dword ptr [rsp+0x294], eax
@@ -892,12 +953,12 @@ G_M28013_IG05: ; bbWeight=97.61, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000
mov edx, 54
mov r8d, 5
;; size=238 bbWeight=97.61 PerfScore 4978.11
-G_M28013_IG06: ; bbWeight=97.61, extend
+G_M28013_IG14: ; bbWeight=97.61, extend
call [<unknown method>]
; gcr arg pop 0
mov ecx, dword ptr [rsp+0x270]
cmp ecx, dword ptr [rsp+0x280]
- ja G_M28013_IG90
+ ja G_M28013_IG99
mov rax, bword ptr [rsp+0x278]
; byrRegs +[rax]
mov edx, ecx
@@ -914,7 +975,7 @@ G_M28013_IG06: ; bbWeight=97.61, extend
; byrRegs -[rax]
; gcr arg pop 0
cmp dword ptr [rsp+0x174], 15
- jb G_M28013_IG79
+ jb G_M28013_IG88
mov rcx, 0xD1FFAB1E
; byrRegs +[rcx]
mov rdx, bword ptr [rsp+0xB8]
@@ -928,7 +989,7 @@ G_M28013_IG06: ; bbWeight=97.61, extend
add ecx, 15
mov dword ptr [rsp+0x270], ecx
;; size=144 bbWeight=97.61 PerfScore 3367.55
-G_M28013_IG07: ; bbWeight=97.61, gcVars=000000000000000000800000000000000000000000000000 {V06}, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, gcvars, byref
+G_M28013_IG15: ; bbWeight=97.61, gcVars=00400000000000000000000000000000 {V06}, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[rdx]
; GC ptr vars -{V33}
lea rcx, [rsp+0x260]
@@ -940,7 +1001,7 @@ G_M28013_IG07: ; bbWeight=97.61, gcVars=000000000000000000800000000000000
; gcr arg pop 0
mov ecx, dword ptr [rsp+0x270]
cmp ecx, dword ptr [rsp+0x280]
- ja G_M28013_IG90
+ ja G_M28013_IG99
mov rax, bword ptr [rsp+0x278]
; byrRegs +[rax]
mov edx, ecx
@@ -957,7 +1018,7 @@ G_M28013_IG07: ; bbWeight=97.61, gcVars=000000000000000000800000000000000
...
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| aspnet.run.windows.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| benchmarks.run.windows.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| benchmarks.run_pgo.windows.x64.checked.mch |
1 |
0 |
1 |
0 |
-0 |
+68 |
| benchmarks.run_tiered.windows.x64.checked.mch |
2 |
0 |
2 |
0 |
-0 |
+178 |
| coreclr_tests.run.windows.x64.checked.mch |
1 |
0 |
1 |
0 |
-0 |
+152 |
| libraries.crossgen2.windows.x64.checked.mch |
1 |
0 |
1 |
0 |
-0 |
+56 |
| libraries.pmi.windows.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| libraries_tests.run.windows.x64.Release.mch |
2 |
0 |
2 |
0 |
-0 |
+176 |
| librariestestsnotieredcompilation.run.windows.x64.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| realworld.run.windows.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| smoke_tests.nativeaot.windows.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
7 |
0 |
7 |
0 |
-0 |
+630 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| aspnet.run.windows.x64.checked.mch |
129,290 |
61,702 |
67,588 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run.windows.x64.checked.mch |
27,926 |
4 |
27,922 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_pgo.windows.x64.checked.mch |
103,179 |
50,327 |
52,852 |
0 (0.00%) |
4 (0.00%) |
| benchmarks.run_tiered.windows.x64.checked.mch |
53,510 |
36,872 |
16,638 |
0 (0.00%) |
1 (0.00%) |
| coreclr_tests.run.windows.x64.checked.mch |
574,382 |
341,481 |
232,901 |
0 (0.00%) |
3 (0.00%) |
| libraries.crossgen2.windows.x64.checked.mch |
243,731 |
15 |
243,716 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.windows.x64.checked.mch |
309,228 |
6 |
309,222 |
0 (0.00%) |
0 (0.00%) |
| libraries_tests.run.windows.x64.Release.mch |
681,424 |
485,046 |
196,378 |
0 (0.00%) |
0 (0.00%) |
| librariestestsnotieredcompilation.run.windows.x64.Release.mch |
320,536 |
21,924 |
298,612 |
0 (0.00%) |
0 (0.00%) |
| realworld.run.windows.x64.checked.mch |
36,610 |
3 |
36,607 |
0 (0.00%) |
0 (0.00%) |
| smoke_tests.nativeaot.windows.x64.checked.mch |
32,388 |
11 |
32,377 |
0 (0.00%) |
0 (0.00%) |
|
2,512,204 |
997,391 |
1,514,813 |
0 (0.00%) |
8 (0.00%) |
jit-analyze output
benchmarks.run_pgo.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 36236339 (overridden on cmd)
Total bytes of diff: 36236407 (overridden on cmd)
Total bytes of delta: 68 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
68 : 80126.dasm (8.41 % of base)
1 total files with Code Size differences (0 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
68 (8.41 % of base) : 80126.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
Top method regressions (percentages):
68 (8.41 % of base) : 80126.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.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 12415933 (overridden on cmd)
Total bytes of diff: 12416111 (overridden on cmd)
Total bytes of delta: 178 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
126 : 33472.dasm (16.22 % of base)
52 : 46672.dasm (7.09 % of base)
2 total files with Code Size differences (0 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
126 (16.22 % of base) : 33472.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
52 (7.09 % of base) : 46672.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
Top method regressions (percentages):
126 (16.22 % of base) : 33472.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
52 (7.09 % of base) : 46672.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.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 393193287 (overridden on cmd)
Total bytes of diff: 393193439 (overridden on cmd)
Total bytes of delta: 152 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
152 : 281444.dasm (59.38 % of base)
1 total files with Code Size differences (0 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
152 (59.38 % of base) : 281444.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
Top method regressions (percentages):
152 (59.38 % of base) : 281444.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.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 39486146 (overridden on cmd)
Total bytes of diff: 39486202 (overridden on cmd)
Total bytes of delta: 56 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
56 : 38578.dasm (8.10 % of base)
1 total files with Code Size differences (0 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
56 (8.10 % of base) : 38578.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
Top method regressions (percentages):
56 (8.10 % of base) : 38578.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.windows.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 282112885 (overridden on cmd)
Total bytes of diff: 282113061 (overridden on cmd)
Total bytes of delta: 176 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
103 : 299020.dasm (2.90 % of base)
73 : 295517.dasm (2.37 % of base)
2 total files with Code Size differences (0 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
103 (2.90 % of base) : 299020.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
73 (2.37 % of base) : 295517.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
Top method regressions (percentages):
103 (2.90 % of base) : 299020.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
73 (2.37 % of base) : 295517.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
2 total methods with Code Size differences (0 improved, 2 regressed).