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