Assembly Diffs
linux arm64
Diffs are based on 2,507,286 contexts (1,007,092 MinOpts, 1,500,194 FullOpts).
MISSED contexts: base: 27 (0.00%), diff: 32 (0.00%)
Overall (+1,719,060 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.arm64.checked.mch |
15,557,856 |
+27,216 |
| benchmarks.run_pgo.linux.arm64.checked.mch |
80,097,444 |
+360,784 |
| benchmarks.run_tiered.linux.arm64.checked.mch |
24,601,848 |
+14,124 |
| coreclr_tests.run.linux.arm64.checked.mch |
508,729,840 |
+334,212 |
| libraries.crossgen2.linux.arm64.checked.mch |
55,844,176 |
+78,032 |
| libraries.pmi.linux.arm64.checked.mch |
76,294,380 |
+89,360 |
| libraries_tests.run.linux.arm64.Release.mch |
395,716,116 |
+669,880 |
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
165,002,020 |
+115,260 |
| realworld.run.linux.arm64.checked.mch |
15,904,164 |
+20,608 |
| smoke_tests.nativeaot.linux.arm64.checked.mch |
2,946,828 |
+9,584 |
FullOpts (+1,719,060 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.arm64.checked.mch |
15,252,928 |
+27,216 |
| benchmarks.run_pgo.linux.arm64.checked.mch |
54,162,660 |
+360,784 |
| benchmarks.run_tiered.linux.arm64.checked.mch |
4,863,412 |
+14,124 |
| coreclr_tests.run.linux.arm64.checked.mch |
160,581,688 |
+334,212 |
| libraries.crossgen2.linux.arm64.checked.mch |
55,842,540 |
+78,032 |
| libraries.pmi.linux.arm64.checked.mch |
76,174,396 |
+89,360 |
| libraries_tests.run.linux.arm64.Release.mch |
180,584,164 |
+669,880 |
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
151,504,556 |
+115,260 |
| realworld.run.linux.arm64.checked.mch |
15,323,240 |
+20,608 |
| smoke_tests.nativeaot.linux.arm64.checked.mch |
2,945,840 |
+9,584 |
Example diffs
benchmarks.run.linux.arm64.checked.mch
-20 (-2.34%) : 38.dasm - System.Collections.Generic.Dictionary`2[ushort,System.__Canon]:Resize(int,ubyte):this (FullOpts)
@@ -11,12 +11,12 @@
; V00 this [V00,T01] ( 14, 14 ) ref -> x19 this class-hnd single-def <System.Collections.Generic.Dictionary`2[ushort,System.__Canon]>
; V01 arg1 [V01,T08] ( 6, 6 ) int -> x20 single-def
; V02 arg2 [V02,T15] ( 3, 3 ) ubyte -> x2 single-def
-; V03 loc0 [V03,T04] ( 11, 12.04) ref -> x21 class-hnd exact single-def <<unknown class>>
+; V03 loc0 [V03,T04] ( 9, 12 ) ref -> x21 class-hnd exact single-def <<unknown class>>
; V04 loc1 [V04,T09] ( 6, 8 ) int -> x22
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V07 loc4 [V07 ] ( 0, 0 ) int -> zero-ref
-; V08 loc5 [V08,T00] ( 14, 19.08) int -> x20
+;* V08 loc5 [V08,T20] ( 0, 0 ) int -> zero-ref
; V09 loc6 [V09,T12] ( 6, 6 ) byref -> x26
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11,T19] ( 0, 0 ) int -> zero-ref
@@ -35,12 +35,15 @@
;* V24 tmp14 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp15 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V26 tmp16 [V26,T18] ( 2, 4 ) long -> x0 "argument with side effect"
-; V27 cse0 [V27,T05] ( 4, 11.88) long -> x23 "CSE - aggressive"
-; V28 cse1 [V28,T06] ( 14, 10 ) ref -> x1 multi-def "CSE - aggressive"
-; V29 cse2 [V29,T13] ( 3, 5.94) int -> x26 "CSE - aggressive"
-; V30 rat0 [V30,T16] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V31 rat1 [V31,T17] ( 3, 4 ) long -> x0 "runtime lookup"
-; V32 rat2 [V32,T14] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V27 tmp17 [V27,T21] ( 7, 0.23) long -> x20 "Widened primary induction variable"
+; V28 tmp18 [V28,T00] ( 6, 18.82) long -> x20 "Widened primary induction variable"
+; V29 cse0 [V29,T22] ( 4, 0.12) byref -> x23 "CSE - conservative"
+; V30 cse1 [V30,T05] ( 4, 11.88) long -> x23 "CSE - aggressive"
+; V31 cse2 [V31,T06] ( 14, 10 ) ref -> x1 multi-def "CSE - aggressive"
+; V32 cse3 [V32,T13] ( 3, 5.94) int -> x26 "CSE - aggressive"
+; V33 rat0 [V33,T16] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V34 rat1 [V34,T17] ( 3, 4 ) long -> x0 "runtime lookup"
+; V35 rat2 [V35,T14] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
@@ -171,28 +174,28 @@ G_M47473_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
movn x0, #0
mov w1, w20
cmp x1, #0
- beq G_M47473_IG24
+ beq G_M47473_IG25
udiv x0, x0, x1
add x0, x0, #1
str x0, [x19, #0x30]
- mov w20, wzr
cmp w22, #0
- ble G_M47473_IG21
+ ble G_M47473_IG22
ldr w0, [x21, #0x08]
cmp w0, w22
blt G_M47473_IG17
+ mov x20, xzr
;; size=132 bbWeight=1 PerfScore 49.00
G_M47473_IG12: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mov w0, #24
- mov x1, #16
- umaddl x23, w20, w0, x1
+ mov x0, #24
+ mul x0, x20, x0
+ add x23, x0, #16
add x0, x21, x23
; byrRegs +[x0]
ldr w0, [x0, #0x0C]
; byrRegs -[x0]
cmn w0, #1
blt G_M47473_IG15
- ;; size=28 bbWeight=3.96 PerfScore 43.56
+ ;; size=28 bbWeight=3.96 PerfScore 31.68
G_M47473_IG13: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
add x0, x21, x23
; byrRegs +[x0]
@@ -211,7 +214,7 @@ G_M47473_IG13: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=000
mul x0, x0, x1
lsr x28, x0, #32
cmp w2, #0
- beq G_M47473_IG24
+ beq G_M47473_IG25
udiv w0, w24, w2
msub w0, w0, w2, w24
cmp w0, w28
@@ -231,7 +234,7 @@ G_M47473_IG13: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=000
;; size=112 bbWeight=1.98 PerfScore 87.12
G_M47473_IG14: ; bbWeight=1.98, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
cmp w28, w26
- bhs G_M47473_IG23
+ bhs G_M47473_IG24
add x0, x25, #16
; byrRegs +[x0]
ubfiz x1, x28, #2, #32
@@ -249,40 +252,37 @@ G_M47473_IG14: ; bbWeight=1.98, gcrefRegs=2280000 {x19 x21 x25}, byrefReg
G_M47473_IG15: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
; byrRegs -[x26]
- add w20, w20, #1
+ add w0, w20, #1
+ mov w20, w0
cmp w20, w22
blt G_M47473_IG12
- ;; size=12 bbWeight=3.96 PerfScore 7.92
+ ;; size=16 bbWeight=3.96 PerfScore 9.90
G_M47473_IG16: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
- b G_M47473_IG21
+ b G_M47473_IG22
;; size=4 bbWeight=1 PerfScore 1.00
-G_M47473_IG17: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M47473_IG17: ; bbWeight=0.01, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ mov x20, xzr
+ ;; size=4 bbWeight=0.01 PerfScore 0.01
+G_M47473_IG18: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x21, #0x08]
cmp w20, w0
- bhs G_M47473_IG23
- mov w0, #24
- mov x1, #16
- umaddl x0, w20, w0, x1
- add x0, x21, x0
- ; byrRegs +[x0]
- ldr w0, [x0, #0x0C]
- ; byrRegs -[x0]
+ bhs G_M47473_IG24
+ mov x0, #24
+ mul x0, x20, x0
+ add x0, x0, #16
+ add x23, x21, x0
+ ; byrRegs +[x23]
+ ldr w0, [x23, #0x0C]
cmn w0, #1
- blt G_M47473_IG20
- ;; size=40 bbWeight=0.04 PerfScore 0.62
-G_M47473_IG18: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mov w0, #24
- mov x1, #16
- umaddl x0, w20, w0, x1
- add x0, x21, x0
- ; byrRegs +[x0]
- ldr w24, [x0, #0x08]
+ blt G_M47473_IG21
+ ;; size=40 bbWeight=0.04 PerfScore 0.50
+G_M47473_IG19: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=800000 {x23}, byref, isz
+ ldr w24, [x23, #0x08]
ldr x25, [x19, #0x08]
; gcrRegs +[x25]
ldr w2, [x25, #0x08]
ldr x27, [x19, #0x30]
mov w0, w24
- ; byrRegs -[x0]
mul x0, x27, x0
lsr x0, x0, #32
add x0, x0, #1
@@ -290,11 +290,11 @@ G_M47473_IG18: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=000
mul x0, x0, x1
lsr x28, x0, #32
cmp w2, #0
- beq G_M47473_IG24
+ beq G_M47473_IG25
udiv w0, w24, w2
msub w0, w0, w2, w24
cmp w0, w28
- beq G_M47473_IG19
+ beq G_M47473_IG20
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -307,38 +307,33 @@ G_M47473_IG18: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=000
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=120 bbWeight=0.02 PerfScore 0.99
-G_M47473_IG19: ; bbWeight=0.02, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
+ ;; size=104 bbWeight=0.02 PerfScore 0.86
+G_M47473_IG20: ; bbWeight=0.02, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=800000 {x23}, byref, isz
ldr w14, [x25, #0x08]
cmp w28, w14
- bhs G_M47473_IG23
+ bhs G_M47473_IG24
add x14, x25, #16
; byrRegs +[x14]
ubfiz x15, x28, #2, #32
add x26, x14, x15
; byrRegs +[x26]
- mov w14, #24
- ; byrRegs -[x14]
- mov x15, #16
- umaddl x14, w20, w14, x15
- add x14, x21, x14
- ; byrRegs +[x14]
- add x14, x14, #12
+ add x14, x23, #12
ldr w15, [x26]
sub w15, w15, #1
str w15, [x14]
add w14, w20, #1
; byrRegs -[x14]
str w14, [x26]
- ;; size=64 bbWeight=0.02 PerfScore 0.39
-G_M47473_IG20: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=48 bbWeight=0.02 PerfScore 0.26
+G_M47473_IG21: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
- ; byrRegs -[x26]
- add w20, w20, #1
+ ; byrRegs -[x23 x26]
+ add w14, w20, #1
+ mov w20, w14
cmp w20, w22
- blt G_M47473_IG17
- ;; size=12 bbWeight=0.04 PerfScore 0.08
-G_M47473_IG21: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ blt G_M47473_IG18
+ ;; size=16 bbWeight=0.04 PerfScore 0.10
+G_M47473_IG22: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
add x14, x19, #16
; byrRegs +[x14]
mov x15, x21
@@ -347,7 +342,7 @@ G_M47473_IG21: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
; gcrRegs -[x15 x21]
; byrRegs -[x14]
;; size=12 bbWeight=1 PerfScore 2.00
-G_M47473_IG22: ; bbWeight=1, epilog, nogc, extend
+G_M47473_IG23: ; bbWeight=1, epilog, nogc, extend
ldp x27, x28, [sp, #0x60]
ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40]
@@ -356,17 +351,17 @@ G_M47473_IG22: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x70
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M47473_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M47473_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M47473_IG24: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M47473_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROWDIVZERO
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 856, prolog size 40, PerfScore 268.42, instruction count 214, allocated bytes for code 856 (MethodHash=bf55468e) for method System.Collections.Generic.Dictionary`2[ushort,System.__Canon]:Resize(int,ubyte):this (FullOpts)
+; Total bytes of code 836, prolog size 40, PerfScore 258.17, instruction count 209, allocated bytes for code 836 (MethodHash=bf55468e) for method System.Collections.Generic.Dictionary`2[ushort,System.__Canon]:Resize(int,ubyte):this (FullOpts)
; ============================================================
Unwind Info:
@@ -377,7 +372,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
...
-16 (-2.01%) : 4726.dasm - System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory+ServiceDescriptorCacheItem]:Resize(int,ubyte):this (FullOpts)
@@ -11,12 +11,12 @@
; V00 this [V00,T03] ( 13, 13 ) ref -> x19 this class-hnd single-def <System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory+ServiceDescriptorCacheItem]>
; V01 arg1 [V01,T07] ( 6, 6 ) int -> x20 single-def
; V02 arg2 [V02,T13] ( 3, 3 ) ubyte -> x2 single-def
-; V03 loc0 [V03,T04] ( 11, 12.04) ref -> x21 class-hnd exact single-def <<unknown class>>
+; V03 loc0 [V03,T04] ( 10, 12.02) ref -> x21 class-hnd exact single-def <<unknown class>>
; V04 loc1 [V04,T08] ( 6, 8 ) int -> x22
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V07 loc4 [V07 ] ( 0, 0 ) int -> zero-ref
-; V08 loc5 [V08,T00] ( 14, 19.08) int -> x20
+;* V08 loc5 [V08,T15] ( 0, 0 ) int -> zero-ref
; V09 loc6 [V09,T11] ( 6, 6 ) byref -> x26
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V11 tmp1 [V11,T14] ( 2, 2 ) int -> x0
@@ -27,8 +27,12 @@
; V16 tmp6 [V16,T02] ( 8, 16 ) int -> x27 "Inlining Arg"
; V17 tmp7 [V17,T09] ( 4, 8 ) long -> x28 "Inlining Arg"
; V18 tmp8 [V18,T06] ( 8, 8 ) int -> x28 "Inline stloc first use temp"
-; V19 cse0 [V19,T05] ( 4, 11.88) long -> x23 "CSE - aggressive"
-; V20 cse1 [V20,T12] ( 3, 5.94) int -> x26 "CSE - aggressive"
+; V19 tmp9 [V19,T16] ( 7, 0.23) long -> x20 "Widened primary induction variable"
+; V20 tmp10 [V20,T00] ( 6, 18.82) long -> x20 "Widened primary induction variable"
+; V21 cse0 [V21,T17] ( 3, 0.10) byref -> x23 "CSE - conservative"
+; V22 cse1 [V22,T05] ( 4, 11.88) long -> x23 "CSE - aggressive"
+; V23 cse2 [V23,T18] ( 3, 0.10) long -> x0 "CSE - conservative"
+; V24 cse3 [V24,T12] ( 3, 5.94) int -> x26 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -123,28 +127,28 @@ G_M35343_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
movn x0, #0
mov w1, w20
cmp x1, #0
- beq G_M35343_IG15
+ beq G_M35343_IG16
udiv x0, x0, x1
add x0, x0, #1
str x0, [x19, #0x30]
- mov w20, wzr
cmp w22, #0
- ble G_M35343_IG12
+ ble G_M35343_IG13
ldr w0, [x21, #0x08]
cmp w0, w22
blt G_M35343_IG09
+ mov x20, xzr
;; size=180 bbWeight=1 PerfScore 63.00
G_M35343_IG05: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mov w0, #40
- mov x1, #16
- umaddl x23, w20, w0, x1
+ mov x0, #40
+ mul x0, x20, x0
+ add x23, x0, #16
add x0, x21, x23
; byrRegs +[x0]
ldr w0, [x0, #0x04]
; byrRegs -[x0]
cmn w0, #1
blt G_M35343_IG07
- ;; size=28 bbWeight=3.96 PerfScore 43.56
+ ;; size=28 bbWeight=3.96 PerfScore 31.68
G_M35343_IG06: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w24, [x21, x23]
ldr x25, [x19, #0x08]
@@ -167,7 +171,7 @@ G_M35343_IG06: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=000
mul x0, x0, x1
lsr x28, x0, #32
cmp w27, #0
- beq G_M35343_IG15
+ beq G_M35343_IG16
udiv w0, w24, w27
msub w0, w0, w27, w24
cmp w0, w28
@@ -179,7 +183,7 @@ G_M35343_IG06: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=000
blr x1
; gcr arg pop 0
cmp w28, w26
- bhs G_M35343_IG14
+ bhs G_M35343_IG15
add x0, x25, #16
; byrRegs +[x0]
ubfiz x1, x28, #2, #32
@@ -197,31 +201,31 @@ G_M35343_IG06: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=000
G_M35343_IG07: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
; byrRegs -[x26]
- add w20, w20, #1
+ add w0, w20, #1
+ mov w20, w0
cmp w20, w22
blt G_M35343_IG05
- ;; size=12 bbWeight=3.96 PerfScore 7.92
+ ;; size=16 bbWeight=3.96 PerfScore 9.90
G_M35343_IG08: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
- b G_M35343_IG12
+ b G_M35343_IG13
;; size=4 bbWeight=1 PerfScore 1.00
-G_M35343_IG09: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M35343_IG09: ; bbWeight=0.01, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ mov x20, xzr
+ ;; size=4 bbWeight=0.01 PerfScore 0.01
+G_M35343_IG10: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x21, #0x08]
cmp w20, w0
- bhs G_M35343_IG14
- mov w0, #40
- mov x1, #16
- umaddl x0, w20, w0, x1
- add x0, x21, x0
- ; byrRegs +[x0]
- ldr w0, [x0, #0x04]
- ; byrRegs -[x0]
- cmn w0, #1
- blt G_M35343_IG11
- ;; size=40 bbWeight=0.04 PerfScore 0.62
-G_M35343_IG10: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mov w0, #40
- mov x1, #16
- umaddl x0, w20, w0, x1
+ bhs G_M35343_IG15
+ mov x0, #40
+ mul x0, x20, x0
+ add x0, x0, #16
+ add x23, x21, x0
+ ; byrRegs +[x23]
+ ldr w1, [x23, #0x04]
+ cmn w1, #1
+ blt G_M35343_IG12
+ ;; size=40 bbWeight=0.04 PerfScore 0.50
+G_M35343_IG11: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=800000 {x23}, byref, isz
ldr w24, [x21, x0]
ldr x25, [x19, #0x08]
; gcrRegs +[x25]
@@ -242,7 +246,7 @@ G_M35343_IG10: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=000
mul x0, x0, x1
lsr x28, x0, #32
cmp w27, #0
- beq G_M35343_IG15
+ beq G_M35343_IG16
udiv w0, w24, w27
msub w0, w0, w27, w24
cmp w0, w28
@@ -255,34 +259,29 @@ G_M35343_IG10: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=000
; gcr arg pop 0
ldr w14, [x25, #0x08]
cmp w28, w14
- bhs G_M35343_IG14
+ bhs G_M35343_IG15
add x14, x25, #16
; byrRegs +[x14]
ubfiz x15, x28, #2, #32
add x26, x14, x15
; byrRegs +[x26]
- mov w14, #40
- ; byrRegs -[x14]
- mov x15, #16
- umaddl x14, w20, w14, x15
- add x14, x21, x14
- ; byrRegs +[x14]
- add x14, x14, #4
+ add x14, x23, #4
ldr w15, [x26]
sub w15, w15, #1
str w15, [x14]
add w14, w20, #1
; byrRegs -[x14]
str w14, [x26]
- ;; size=188 bbWeight=0.02 PerfScore 1.44
-G_M35343_IG11: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=160 bbWeight=0.02 PerfScore 1.19
+G_M35343_IG12: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
- ; byrRegs -[x26]
- add w20, w20, #1
+ ; byrRegs -[x23 x26]
+ add w14, w20, #1
+ mov w20, w14
cmp w20, w22
- blt G_M35343_IG09
- ;; size=12 bbWeight=0.04 PerfScore 0.08
-G_M35343_IG12: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ blt G_M35343_IG10
+ ;; size=16 bbWeight=0.04 PerfScore 0.10
+G_M35343_IG13: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
add x14, x19, #16
; byrRegs +[x14]
mov x15, x21
@@ -291,7 +290,7 @@ G_M35343_IG12: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
; gcrRegs -[x15 x19 x21]
; byrRegs -[x14]
;; size=12 bbWeight=1 PerfScore 2.00
-G_M35343_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M35343_IG14: ; bbWeight=1, epilog, nogc, extend
ldp x27, x28, [sp, #0x50]
ldp x25, x26, [sp, #0x40]
ldp x23, x24, [sp, #0x30]
@@ -300,17 +299,17 @@ G_M35343_IG13: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x60
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M35343_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M35343_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M35343_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35343_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROWDIVZERO
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 796, prolog size 36, PerfScore 262.72, instruction count 199, allocated bytes for code 796 (MethodHash=607475f0) for method System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory+ServiceDescriptorCacheItem]:Resize(int,ubyte):this (FullOpts)
+; Total bytes of code 780, prolog size 36, PerfScore 252.48, instruction count 195, allocated bytes for code 780 (MethodHash=607475f0) for method System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory+ServiceDescriptorCacheItem]:Resize(int,ubyte):this (FullOpts)
; ============================================================
Unwind Info:
@@ -321,7 +320,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 199 (0x000c7) Actual length = 796 (0x00031c)
+ Function Length : 195 (0x000c3) Actual length = 780 (0x00030c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-1.05%) : 1363.dasm - System.Number+Grisu3:TryRoundWeedCounted(System.Span`1[ubyte],int,ulong,ulong,ulong,byref):ubyte (FullOpts)
@@ -14,19 +14,21 @@
; V03 arg3 [V03,T06] ( 9, 7 ) long -> x21 single-def
; V04 arg4 [V04,T07] ( 8, 6.50) long -> x22 single-def
; V05 arg5 [V05,T09] ( 4, 3 ) byref -> x24 single-def
-; V06 loc0 [V06,T01] ( 7, 21 ) int -> x0
+; V06 loc0 [V06,T16] ( 2, 1 ) int -> x0
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T11] ( 3, 3 ) byref -> x1 single-def "dup spill"
-; V09 tmp2 [V09,T00] ( 3, 24 ) byref -> x1 "dup spill"
+; V08 tmp1 [V08,T11] ( 3, 3 ) byref -> x2 single-def "dup spill"
+; V09 tmp2 [V09,T01] ( 3, 24 ) byref -> x0 "dup spill"
;* V10 tmp3 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp4 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V12 tmp5 [V12,T02] ( 7, 14.50) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V13 tmp6 [V13,T05] ( 4, 9.50) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V14 cse0 [V14,T03] ( 4, 16 ) int -> x0 "CSE - aggressive"
-; V15 cse1 [V15,T12] ( 4, 2 ) long -> x0 "CSE - aggressive"
-; V16 cse2 [V16,T13] ( 4, 2 ) int -> x0 "CSE - aggressive"
-; V17 cse3 [V17,T14] ( 3, 1.50) ref -> x1 "CSE - moderate"
-; V18 cse4 [V18,T04] ( 3, 12 ) long -> x1 "CSE - aggressive"
+; V14 tmp7 [V14,T00] ( 7, 24.50) long -> x1 "Widened primary induction variable"
+; V15 cse0 [V15,T03] ( 3, 12 ) long -> x1 "CSE - aggressive"
+; V16 cse1 [V16,T04] ( 3, 12 ) int -> x1 "CSE - aggressive"
+; V17 cse2 [V17,T15] ( 3, 1.50) long -> x1 "CSE - moderate"
+; V18 cse3 [V18,T12] ( 4, 2 ) long -> x0 "CSE - aggressive"
+; V19 cse4 [V19,T13] ( 4, 2 ) int -> x0 "CSE - aggressive"
+; V20 cse5 [V20,T14] ( 3, 1.50) ref -> x1 "CSE - moderate"
;
; Lcl frame size = 8
@@ -120,38 +122,37 @@ G_M50855_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19
cmp w0, w20
bhs G_M50855_IG14
mov w1, w0
- add x1, x19, x1
- ; byrRegs +[x1]
- ldrb w2, [x1]
- add w2, w2, #1
- strb w2, [x1]
+ add x2, x19, x1
+ ; byrRegs +[x2]
+ ldrb w3, [x2]
+ add w3, w3, #1
+ strb w3, [x2]
cmp w0, #0
ble G_M50855_IG13
;; size=40 bbWeight=0.50 PerfScore 4.50
G_M50855_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
- ; byrRegs -[x1]
- cmp w0, w20
+ ; byrRegs -[x2]
+ cmp w1, w20
bhs G_M50855_IG14
- mov w1, w0
- ldrb w2, [x19, x1]
- cmp w2, #58
+ ldrb w0, [x19, x1]
+ cmp w0, #58
bne G_M50855_IG13
- mov w2, #48
- strb w2, [x19, x1]
- sub w0, w0, #1
- cmp w0, w20
+ mov w0, #48
+ strb w0, [x19, x1]
+ sub w1, w1, #1
+ cmp w1, w20
bhs G_M50855_IG14
- mov w1, w0
- add x1, x19, x1
- ; byrRegs +[x1]
- ldrb w2, [x1]
+ mov w1, w1
+ add x0, x19, x1
+ ; byrRegs +[x0]
+ ldrb w2, [x0]
add w2, w2, #1
- strb w2, [x1]
- cmp w0, #0
+ strb w2, [x0]
+ cmp w1, #0
bgt G_M50855_IG12
- ;; size=72 bbWeight=4 PerfScore 68.00
+ ;; size=68 bbWeight=4 PerfScore 66.00
G_M50855_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
- ; byrRegs -[x1]
+ ; byrRegs -[x0]
ldrb w0, [x19]
cmp w0, #58
bne G_M50855_IG08
@@ -169,7 +170,7 @@ G_M50855_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 380, prolog size 52, PerfScore 107.75, instruction count 95, allocated bytes for code 380 (MethodHash=b8e43958) for method System.Number+Grisu3:TryRoundWeedCounted(System.Span`1[ubyte],int,ulong,ulong,ulong,byref):ubyte (FullOpts)
+; Total bytes of code 376, prolog size 52, PerfScore 105.75, instruction count 94, allocated bytes for code 376 (MethodHash=b8e43958) for method System.Number+Grisu3:TryRoundWeedCounted(System.Span`1[ubyte],int,ulong,ulong,ulong,byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -180,7 +181,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 95 (0x0005f) Actual length = 380 (0x00017c)
+ Function Length : 94 (0x0005e) Actual length = 376 (0x000178)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+28 (+41.18%) : 11479.dasm - System.Collections.IterateFor`1[System.Canon]:ImmutableArray():System.Canon:this (FullOpts)
@@ -8,73 +8,81 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 3, 3 ) ref -> [fp+0x18] this class-hnd single-def <System.Collections.IterateFor`1[System.__Canon]>
-; V01 loc0 [V01,T02] ( 3, 6 ) ref -> x1 ld-addr-op class-hnd <System.__Canon>
+; V00 this [V00,T02] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Collections.IterateFor`1[System.__Canon]>
+; V01 loc0 [V01,T03] ( 3, 6 ) ref -> x0 ld-addr-op class-hnd <System.__Canon>
;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+;* V03 loc2 [V03,T09] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 tmp3 [V07,T08] ( 3, 3 ) ref -> x2 single-def "field V02.array (fldOffset=0x0)" P-INDEP
-;* V08 cse0 [V08,T09] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
-; V09 cse1 [V09,T03] ( 3, 6 ) int -> x4 "CSE - aggressive"
-; V10 cse2 [V10,T05] ( 2, 5 ) byref -> x2 hoist "CSE - aggressive"
-;* V11 rat0 [V11,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V12 rat1 [V12,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V13 rat2 [V13,T04] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T08] ( 3, 3 ) ref -> x1 single-def "field V02.array (fldOffset=0x0)" P-INDEP
+; V08 tmp4 [V08,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
+;* V09 cse0 [V09,T10] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V10 cse1 [V10,T01] ( 4, 10 ) int -> x2 "CSE - aggressive"
+; V11 cse2 [V11,T05] ( 2, 5 ) byref -> x1 hoist "CSE - aggressive"
+;* V12 rat0 [V12,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V13 rat1 [V13,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V14 rat2 [V14,T04] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M3722_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M3722_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ mov x19, x0
+ ; gcrRegs +[x19]
+ ;; size=16 bbWeight=1 PerfScore 3.00
+G_M3722_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ mov x0, xzr
; gcrRegs +[x0]
- mov x1, xzr
+ ldr x1, [x19, #0x38]
; gcrRegs +[x1]
- str x0, [fp, #0x18] // [V00 this]
- ; GC ptr vars +{V00}
- ldr x2, [x0, #0x38]
- ; gcrRegs +[x2]
- mov w3, wzr
- ldr w4, [x2, #0x08]
- cmp w4, #0
+ ldr w2, [x1, #0x08]
+ cmp w2, #0
ble G_M3722_IG04
- add x2, x2, #16
- ; gcrRegs -[x2]
- ; byrRegs +[x2]
- ;; size=32 bbWeight=1 PerfScore 10.00
-G_M3722_IG03: ; bbWeight=4, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, gcvars, byref, isz
- ; gcrRegs -[x0-x1]
- ldr x1, [x2, w3, UXTW #3]
- ; gcrRegs +[x1]
- add w3, w3, #1
- cmp w4, w3
- bgt G_M3722_IG03
- ;; size=16 bbWeight=4 PerfScore 20.00
-G_M3722_IG04: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
- mov x0, x1
+ mov x3, xzr
+ add x1, x1, #16
+ ; gcrRegs -[x1]
+ ; byrRegs +[x1]
+ ;; size=28 bbWeight=1 PerfScore 9.00
+G_M3722_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref, isz
+ ; gcrRegs -[x0]
+ cmp w3, w2
+ bhs G_M3722_IG05
+ lsl x0, x3, #3
+ ldr x0, [x1, x0]
; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M3722_IG05: ; bbWeight=1, epilog, nogc, extend
+ add w3, w3, #1
+ mov w3, w3
+ cmp w2, w3
+ bgt G_M3722_IG03
+ ;; size=32 bbWeight=4 PerfScore 32.00
+G_M3722_IG04: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; byrRegs -[x1]
+ ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
+G_M3722_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 68, prolog size 8, PerfScore 34.00, instruction count 17, allocated bytes for code 68 (MethodHash=877ef175) for method System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
+; Total bytes of code 96, prolog size 16, PerfScore 48.00, instruction count 24, allocated bytes for code 96 (MethodHash=877ef175) for method System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -82,7 +90,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
+ E4 end
+ E4 end
+24 (+46.15%) : 1303.dasm - System.Linq.Enumerable:Sumdouble,double:double (FullOpts)
@@ -9,9 +9,9 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[double]>
-; V01 loc0 [V01,T05] ( 4, 10 ) double -> d0
+; V01 loc0 [V01,T06] ( 4, 10 ) double -> d0
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[double]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x2
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) double -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -20,7 +20,8 @@
; V09 tmp4 [V09,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V10 tmp5 [V10,T04] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V11 tmp6 [V11,T02] ( 2, 5 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp7 [V12,T01] ( 3, 6 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V12 tmp7 [V12,T01] ( 4, 10 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V13 tmp8 [V13,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -31,24 +32,33 @@ G_M25021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M25021_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
movi v0.16b, #0
- mov w2, wzr
cmp w1, #0
ble G_M25021_IG04
+ mov x2, xzr
;; size=16 bbWeight=1 PerfScore 2.50
G_M25021_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr d16, [x0, w2, UXTW #3]
+ cmp w2, w1
+ bhs G_M25021_IG05
+ lsl x3, x2, #3
+ ldr d16, [x0, x3]
fadd d0, d16, d0
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
blt G_M25021_IG03
- ;; size=20 bbWeight=4 PerfScore 32.00
+ ;; size=36 bbWeight=4 PerfScore 44.00
G_M25021_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M25021_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 38.00, instruction count 13, allocated bytes for code 52 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 50.00, instruction count 19, allocated bytes for code 76 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
; ============================================================
Unwind Info:
@@ -59,7 +69,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+46.15%) : 16707.dasm - Struct.SpanWrapper:SumSpan(System.ReadOnlySpan`1[int]):int:this (FullOpts)
@@ -11,13 +11,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[int]>
; V02 loc0 [V02,T01] ( 4, 10 ) int -> x0
;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
-; V04 loc2 [V04,T00] ( 5, 17 ) int -> x3
+;* V04 loc2 [V04,T06] ( 0, 0 ) int -> zero-ref
;* V05 loc3 [V05 ] ( 0, 0 ) int -> zero-ref
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T04] ( 2, 2 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V08 tmp2 [V08,T05] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V09 tmp3 [V09,T03] ( 2, 5 ) byref -> x1 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp4 [V10,T02] ( 3, 6 ) int -> x2 single-def "field V03._length (fldOffset=0x8)" P-INDEP
+; V10 tmp4 [V10,T02] ( 4, 10 ) int -> x2 single-def "field V03._length (fldOffset=0x8)" P-INDEP
+; V11 tmp5 [V11,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -28,24 +29,33 @@ G_M10672_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M10672_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
mov w0, wzr
- mov w3, wzr
cmp w2, #0
ble G_M10672_IG04
+ mov x3, xzr
;; size=16 bbWeight=1 PerfScore 2.50
G_M10672_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldr w4, [x1, w3, UXTW #2]
+ cmp w3, w2
+ bhs G_M10672_IG05
+ lsl x4, x3, #2
+ ldr w4, [x1, x4]
add w0, w4, w0
add w3, w3, #1
+ mov w3, w3
cmp w3, w2
blt G_M10672_IG03
- ;; size=20 bbWeight=4 PerfScore 22.00
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M10672_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M10672_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 28.00, instruction count 13, allocated bytes for code 52 (MethodHash=42a0d64f) for method Struct.SpanWrapper:SumSpan(System.ReadOnlySpan`1[int]):int:this (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 40.00, instruction count 19, allocated bytes for code 76 (MethodHash=42a0d64f) for method Struct.SpanWrapper:SumSpan(System.ReadOnlySpan`1[int]):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -56,7 +66,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run_pgo.linux.arm64.checked.mch
-12 (-4.35%) : 111878.dasm - System.Collections.PerfFrozenDictionaryString:TryGetValueTrueDictionary():ubyte:this (Tier1-OSR)
@@ -11,49 +11,53 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>
-; V01 loc0 [V01,T02] ( 9,199.98) ubyte -> x20
-; V02 loc1 [V02,T06] ( 4,101.00) ref -> x21 class-hnd <<unknown class>>
-; V03 loc2 [V03,T09] ( 3, 0.02) ref -> x2 class-hnd exact <<unknown class>>
-; V04 loc3 [V04,T00] ( 17,400.98) int -> x19
-; V05 loc4 [V05,T08] ( 1, 1 ) ref -> [fp+0x60] ld-addr-op class-hnd tier0-frame <<unknown class>>
+; V01 loc0 [V01,T03] ( 5,199.98) ubyte -> x19
+; V02 loc1 [V02,T06] ( 4,101.00) ref -> x20 class-hnd <<unknown class>>
+; V03 loc2 [V03,T11] ( 3, 0.02) ref -> x3 class-hnd exact <<unknown class>>
+; V04 loc3 [V04,T10] ( 4, 0.03) int -> x2
+; V05 loc4 [V05,T09] ( 1, 1 ) ref -> [fp+0x60] ld-addr-op class-hnd tier0-frame <<unknown class>>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T03] ( 8,199.98) ubyte -> x2 "Inline return value spill temp"
-; V08 tmp2 [V08,T01] ( 4,399.96) ref -> x1 class-hnd exact "Inlining Arg" <<unknown class>>
+; V07 tmp1 [V07,T02] ( 6,199.98) ubyte -> x2 "Inline return value spill temp"
+; V08 tmp2 [V08,T00] ( 4,399.96) ref -> x1 class-hnd exact "Inlining Arg" <<unknown class>>
; V09 tmp3 [V09,T04] ( 4,199.98) byref -> x0 "Inline stloc first use temp"
-; V10 cse0 [V10,T05] ( 7,101.01) int -> x22 "CSE - aggressive"
-; V11 cse1 [V11,T07] ( 4,100.00) byref -> x23 hoist multi-def "CSE - aggressive"
+; V10 tmp4 [V10,T08] ( 6, 5.00) long -> x24 "Widened primary induction variable"
+; V11 tmp5 [V11,T01] ( 5,395.97) long -> x22 "Widened primary induction variable"
+; V12 cse0 [V12,T05] ( 5,101.01) int -> x21 "CSE - aggressive"
+; V13 cse1 [V13,T07] ( 4,100.00) byref -> x23 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M16914_IG01: ; bbWeight=0.01, 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 x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
+ stp x23, x24, [sp, #0x30]
mov fp, sp
- ldr w20, [fp, #0x84]
- ldp x2, x21, [fp, #0x70]
- ; gcrRegs +[x2 x21]
- ldr w19, [fp, #0x6C]
+ ldr w19, [fp, #0x84]
+ ldp x3, x20, [fp, #0x70]
+ ; gcrRegs +[x3 x20]
+ ldr w2, [fp, #0x6C]
;; size=32 bbWeight=0.01 PerfScore 0.12
-G_M16914_IG02: ; bbWeight=0.01, gcrefRegs=200004 {x2 x21}, byrefRegs=0000 {}, byref, isz
- ldr w22, [x2, #0x08]
- cmp w22, w19
- ble G_M16914_IG11
+G_M16914_IG02: ; bbWeight=0.01, gcrefRegs=100008 {x3 x20}, byrefRegs=0000 {}, byref, isz
+ ldr w21, [x3, #0x08]
+ cmp w21, w2
+ ble G_M16914_IG13
;; size=12 bbWeight=0.01 PerfScore 0.05
-G_M16914_IG03: ; bbWeight=0.01, gcrefRegs=200004 {x2 x21}, byrefRegs=0000 {}, byref, isz
- tbnz w19, #31, G_M16914_IG06
+G_M16914_IG03: ; bbWeight=0.01, gcrefRegs=100008 {x3 x20}, byrefRegs=0000 {}, byref, isz
+ tbnz w2, #31, G_M16914_IG07
;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M16914_IG04: ; bbWeight=0.01, gcrefRegs=200004 {x2 x21}, byrefRegs=0000 {}, byref
- add x23, x2, #16
+G_M16914_IG04: ; bbWeight=0.01, gcrefRegs=100008 {x3 x20}, byrefRegs=0000 {}, byref
+ mov w22, w2
+ add x23, x3, #16
; byrRegs +[x23]
- ldrsb wzr, [x21]
- ;; size=8 bbWeight=0.01 PerfScore 0.04
-G_M16914_IG05: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref, isz
- ; gcrRegs -[x2]
- ldr x1, [x23, w19, UXTW #3]
+ ldrsb wzr, [x20]
+ ;; size=12 bbWeight=0.01 PerfScore 0.04
+G_M16914_IG05: ; bbWeight=98.99, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref, isz
+ ; gcrRegs -[x3]
+ lsl x0, x22, #3
+ ldr x1, [x23, x0]
; gcrRegs +[x1]
- mov x0, x21
+ mov x0, x20
; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
@@ -62,30 +66,35 @@ G_M16914_IG05: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=800000
blr x2
; gcrRegs -[x0-x1]
; byrRegs +[x0]
- cbnz x0, G_M16914_IG09
+ cbnz x0, G_M16914_IG11
mov w2, wzr
- eor w0, w20, w2
+ ;; size=40 bbWeight=98.99 PerfScore 1138.39
+G_M16914_IG06: ; bbWeight=98.99, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0]
- uxtb w20, w0
- add w19, w19, #1
- cmp w22, w19
- ble G_M16914_IG11
+ eor w0, w19, w2
+ uxtb w19, w0
+ add w0, w22, #1
+ mov w22, w0
+ cmp w21, w22
+ ble G_M16914_IG13
b G_M16914_IG05
- ;; size=60 bbWeight=98.99 PerfScore 1435.36
-G_M16914_IG06: ; bbWeight=0.00, gcrefRegs=200004 {x2 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x2]
+ ;; size=28 bbWeight=98.99 PerfScore 445.46
+G_M16914_IG07: ; bbWeight=0.00, gcrefRegs=100008 {x3 x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x3]
; byrRegs -[x23]
- add x23, x2, #16
+ mov w24, w2
+ add x23, x3, #16
; byrRegs +[x23]
- ;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M16914_IG07: ; bbWeight=1.00, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref, isz
- ; gcrRegs -[x2]
- cmp w19, w22
- bhs G_M16914_IG08
- ldr x1, [x23, w19, UXTW #3]
+ ;; size=8 bbWeight=0.00 PerfScore 0.00
+G_M16914_IG08: ; bbWeight=1.00, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref, isz
+ ; gcrRegs -[x3]
+ cmp w24, w21
+ bhs G_M16914_IG10
+ lsl x0, x24, #3
+ ldr x1, [x23, x0]
; gcrRegs +[x1]
- ldrsb wzr, [x21]
- mov x0, x21
+ ldrsb wzr, [x20]
+ mov x0, x20
; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
@@ -94,65 +103,60 @@ G_M16914_IG07: ; bbWeight=1.00, gcrefRegs=200000 {x21}, byrefRegs=800000
blr x2
; gcrRegs -[x0-x1]
; byrRegs +[x0]
- cbnz x0, G_M16914_IG10
+ cbnz x0, G_M16914_IG12
mov w2, wzr
- eor w2, w20, w2
- uxtb w20, w2
- add w19, w19, #1
- cmp w22, w19
- ble G_M16914_IG11
- b G_M16914_IG07
- ;; size=72 bbWeight=1.00 PerfScore 19.00
-G_M16914_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x21]
- ; byrRegs -[x0 x23]
+ ;; size=52 bbWeight=1.00 PerfScore 16.00
+G_M16914_IG09: ; bbWeight=1.00, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref, isz
+ ; byrRegs -[x0]
+ eor w2, w19, w2
+ uxtb w19, w2
+ add w0, w24, #1
+ mov w24, w0
+ cmp w21, w24
+ ble G_M16914_IG13
+ b G_M16914_IG08
+ ;; size=28 bbWeight=1.00 PerfScore 4.50
+G_M16914_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
+ ; byrRegs -[x23]
bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M16914_IG09: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref, isz
- ; gcrRegs +[x21]
+G_M16914_IG11: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref
+ ; gcrRegs +[x20]
; byrRegs +[x23]
mov w2, #1
- eor w2, w20, w2
- uxtb w20, w2
- add w19, w19, #1
- cmp w22, w19
- bgt G_M16914_IG05
- b G_M16914_IG11
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M16914_IG10: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref, isz
+ b G_M16914_IG06
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M16914_IG12: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref
mov w2, #1
- eor w0, w20, w2
- uxtb w20, w0
- add w19, w19, #1
- cmp w22, w19
- bgt G_M16914_IG07
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M16914_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x21]
+ b G_M16914_IG09
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M16914_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
; byrRegs -[x23]
- mov w0, w20
+ mov w0, w19
;; size=4 bbWeight=0 PerfScore 0.00
-G_M16914_IG12: ; bbWeight=0, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
+G_M16914_IG14: ; bbWeight=0, epilog, nogc, extend
+ ldp x23, x24, [sp, #0x30]
+ ldp x21, x22, [sp, #0x20]
+ ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x40
add sp, sp, #80
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 276, prolog size 20, PerfScore 1454.56, instruction count 69, allocated bytes for code 276 (MethodHash=0a16bded) for method System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
+; Total bytes of code 264, prolog size 20, PerfScore 1604.55, instruction count 66, allocated bytes for code 264 (MethodHash=0a16bded) for method System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 3
+ Code Words : 2
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 69 (0x00045) Actual length = 276 (0x000114)
+ Function Length : 66 (0x00042) Actual length = 264 (0x000108)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -160,13 +164,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ E6 save_next
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
05 alloc_s #5 (0x05); sub sp, sp, #80 (0x050)
E4 end
- E4 end
...
-12 (-4.35%) : 58387.dasm - System.Collections.PerfFrozenDictionaryString:TryGetValueTrueDictionary():ubyte:this (Tier1-OSR)
@@ -11,49 +11,53 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>
-; V01 loc0 [V01,T02] ( 9,199.98) ubyte -> x20
-; V02 loc1 [V02,T06] ( 4,101.00) ref -> x21 class-hnd <<unknown class>>
-; V03 loc2 [V03,T09] ( 3, 0.02) ref -> x2 class-hnd exact <<unknown class>>
-; V04 loc3 [V04,T00] ( 17,400.98) int -> x19
-; V05 loc4 [V05,T08] ( 1, 1 ) ref -> [fp+0x60] ld-addr-op class-hnd tier0-frame <<unknown class>>
+; V01 loc0 [V01,T03] ( 5,199.98) ubyte -> x19
+; V02 loc1 [V02,T06] ( 4,101.00) ref -> x20 class-hnd <<unknown class>>
+; V03 loc2 [V03,T11] ( 3, 0.02) ref -> x3 class-hnd exact <<unknown class>>
+; V04 loc3 [V04,T10] ( 4, 0.03) int -> x2
+; V05 loc4 [V05,T09] ( 1, 1 ) ref -> [fp+0x60] ld-addr-op class-hnd tier0-frame <<unknown class>>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T03] ( 8,199.98) ubyte -> x2 "Inline return value spill temp"
-; V08 tmp2 [V08,T01] ( 4,399.96) ref -> x1 class-hnd exact "Inlining Arg" <<unknown class>>
+; V07 tmp1 [V07,T02] ( 6,199.98) ubyte -> x2 "Inline return value spill temp"
+; V08 tmp2 [V08,T00] ( 4,399.96) ref -> x1 class-hnd exact "Inlining Arg" <<unknown class>>
; V09 tmp3 [V09,T04] ( 4,199.98) byref -> x0 "Inline stloc first use temp"
-; V10 cse0 [V10,T05] ( 7,101.01) int -> x22 "CSE - aggressive"
-; V11 cse1 [V11,T07] ( 4,100.00) byref -> x23 hoist multi-def "CSE - aggressive"
+; V10 tmp4 [V10,T08] ( 6, 5.00) long -> x24 "Widened primary induction variable"
+; V11 tmp5 [V11,T01] ( 5,395.97) long -> x22 "Widened primary induction variable"
+; V12 cse0 [V12,T05] ( 5,101.01) int -> x21 "CSE - aggressive"
+; V13 cse1 [V13,T07] ( 4,100.00) byref -> x23 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M16914_IG01: ; bbWeight=0.01, 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 x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
+ stp x23, x24, [sp, #0x30]
mov fp, sp
- ldr w20, [fp, #0x84]
- ldp x2, x21, [fp, #0x70]
- ; gcrRegs +[x2 x21]
- ldr w19, [fp, #0x6C]
+ ldr w19, [fp, #0x84]
+ ldp x3, x20, [fp, #0x70]
+ ; gcrRegs +[x3 x20]
+ ldr w2, [fp, #0x6C]
;; size=32 bbWeight=0.01 PerfScore 0.11
-G_M16914_IG02: ; bbWeight=0.01, gcrefRegs=200004 {x2 x21}, byrefRegs=0000 {}, byref, isz
- ldr w22, [x2, #0x08]
- cmp w22, w19
- ble G_M16914_IG11
+G_M16914_IG02: ; bbWeight=0.01, gcrefRegs=100008 {x3 x20}, byrefRegs=0000 {}, byref, isz
+ ldr w21, [x3, #0x08]
+ cmp w21, w2
+ ble G_M16914_IG13
;; size=12 bbWeight=0.01 PerfScore 0.04
-G_M16914_IG03: ; bbWeight=0.01, gcrefRegs=200004 {x2 x21}, byrefRegs=0000 {}, byref, isz
- tbnz w19, #31, G_M16914_IG06
+G_M16914_IG03: ; bbWeight=0.01, gcrefRegs=100008 {x3 x20}, byrefRegs=0000 {}, byref, isz
+ tbnz w2, #31, G_M16914_IG07
;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M16914_IG04: ; bbWeight=0.01, gcrefRegs=200004 {x2 x21}, byrefRegs=0000 {}, byref
- add x23, x2, #16
+G_M16914_IG04: ; bbWeight=0.01, gcrefRegs=100008 {x3 x20}, byrefRegs=0000 {}, byref
+ mov w22, w2
+ add x23, x3, #16
; byrRegs +[x23]
- ldrsb wzr, [x21]
- ;; size=8 bbWeight=0.01 PerfScore 0.03
-G_M16914_IG05: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref, isz
- ; gcrRegs -[x2]
- ldr x1, [x23, w19, UXTW #3]
+ ldrsb wzr, [x20]
+ ;; size=12 bbWeight=0.01 PerfScore 0.04
+G_M16914_IG05: ; bbWeight=98.99, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref, isz
+ ; gcrRegs -[x3]
+ lsl x0, x22, #3
+ ldr x1, [x23, x0]
; gcrRegs +[x1]
- mov x0, x21
+ mov x0, x20
; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
@@ -62,30 +66,35 @@ G_M16914_IG05: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=800000
blr x2
; gcrRegs -[x0-x1]
; byrRegs +[x0]
- cbnz x0, G_M16914_IG09
+ cbnz x0, G_M16914_IG11
mov w2, wzr
- eor w0, w20, w2
+ ;; size=40 bbWeight=98.99 PerfScore 1138.39
+G_M16914_IG06: ; bbWeight=98.99, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0]
- uxtb w20, w0
- add w19, w19, #1
- cmp w22, w19
- ble G_M16914_IG11
+ eor w0, w19, w2
+ uxtb w19, w0
+ add w0, w22, #1
+ mov w22, w0
+ cmp w21, w22
+ ble G_M16914_IG13
b G_M16914_IG05
- ;; size=60 bbWeight=98.99 PerfScore 1435.36
-G_M16914_IG06: ; bbWeight=0.00, gcrefRegs=200004 {x2 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x2]
+ ;; size=28 bbWeight=98.99 PerfScore 445.46
+G_M16914_IG07: ; bbWeight=0.00, gcrefRegs=100008 {x3 x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x3]
; byrRegs -[x23]
- add x23, x2, #16
+ mov w24, w2
+ add x23, x3, #16
; byrRegs +[x23]
- ;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M16914_IG07: ; bbWeight=1.00, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref, isz
- ; gcrRegs -[x2]
- cmp w19, w22
- bhs G_M16914_IG08
- ldr x1, [x23, w19, UXTW #3]
+ ;; size=8 bbWeight=0.00 PerfScore 0.00
+G_M16914_IG08: ; bbWeight=1.00, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref, isz
+ ; gcrRegs -[x3]
+ cmp w24, w21
+ bhs G_M16914_IG10
+ lsl x0, x24, #3
+ ldr x1, [x23, x0]
; gcrRegs +[x1]
- ldrsb wzr, [x21]
- mov x0, x21
+ ldrsb wzr, [x20]
+ mov x0, x20
; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
@@ -94,65 +103,60 @@ G_M16914_IG07: ; bbWeight=1.00, gcrefRegs=200000 {x21}, byrefRegs=800000
blr x2
; gcrRegs -[x0-x1]
; byrRegs +[x0]
- cbnz x0, G_M16914_IG10
+ cbnz x0, G_M16914_IG12
mov w2, wzr
- eor w2, w20, w2
- uxtb w20, w2
- add w19, w19, #1
- cmp w22, w19
- ble G_M16914_IG11
- b G_M16914_IG07
- ;; size=72 bbWeight=1.00 PerfScore 19.00
-G_M16914_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x21]
- ; byrRegs -[x0 x23]
+ ;; size=52 bbWeight=1.00 PerfScore 16.00
+G_M16914_IG09: ; bbWeight=1.00, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref, isz
+ ; byrRegs -[x0]
+ eor w2, w19, w2
+ uxtb w19, w2
+ add w0, w24, #1
+ mov w24, w0
+ cmp w21, w24
+ ble G_M16914_IG13
+ b G_M16914_IG08
+ ;; size=28 bbWeight=1.00 PerfScore 4.50
+G_M16914_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
+ ; byrRegs -[x23]
bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M16914_IG09: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref, isz
- ; gcrRegs +[x21]
+G_M16914_IG11: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref
+ ; gcrRegs +[x20]
; byrRegs +[x23]
mov w2, #1
- eor w2, w20, w2
- uxtb w20, w2
- add w19, w19, #1
- cmp w22, w19
- bgt G_M16914_IG05
- b G_M16914_IG11
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M16914_IG10: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref, isz
+ b G_M16914_IG06
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M16914_IG12: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref
mov w2, #1
- eor w0, w20, w2
- uxtb w20, w0
- add w19, w19, #1
- cmp w22, w19
- bgt G_M16914_IG07
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M16914_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x21]
+ b G_M16914_IG09
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M16914_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
; byrRegs -[x23]
- mov w0, w20
+ mov w0, w19
;; size=4 bbWeight=0 PerfScore 0.00
-G_M16914_IG12: ; bbWeight=0, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
+G_M16914_IG14: ; bbWeight=0, epilog, nogc, extend
+ ldp x23, x24, [sp, #0x30]
+ ldp x21, x22, [sp, #0x20]
+ ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x40
add sp, sp, #80
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 276, prolog size 20, PerfScore 1454.56, instruction count 69, allocated bytes for code 276 (MethodHash=0a16bded) for method System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
+; Total bytes of code 264, prolog size 20, PerfScore 1604.55, instruction count 66, allocated bytes for code 264 (MethodHash=0a16bded) for method System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 3
+ Code Words : 2
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 69 (0x00045) Actual length = 276 (0x000114)
+ Function Length : 66 (0x00042) Actual length = 264 (0x000108)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -160,13 +164,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ E6 save_next
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
05 alloc_s #5 (0x05); sub sp, sp, #80 (0x050)
E4 end
- E4 end
...
-12 (-4.35%) : 59051.dasm - System.Collections.PerfFrozenDictionaryString:TryGetValueTrueDictionary():ubyte:this (Tier1-OSR)
@@ -11,49 +11,53 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>
-; V01 loc0 [V01,T02] ( 9,199.98) ubyte -> x20
-; V02 loc1 [V02,T06] ( 4,101.00) ref -> x21 class-hnd <<unknown class>>
-; V03 loc2 [V03,T09] ( 3, 0.02) ref -> x2 class-hnd exact <<unknown class>>
-; V04 loc3 [V04,T00] ( 17,400.98) int -> x19
-; V05 loc4 [V05,T08] ( 1, 1 ) ref -> [fp+0x60] ld-addr-op class-hnd tier0-frame <<unknown class>>
+; V01 loc0 [V01,T03] ( 5,199.98) ubyte -> x19
+; V02 loc1 [V02,T06] ( 4,101.00) ref -> x20 class-hnd <<unknown class>>
+; V03 loc2 [V03,T11] ( 3, 0.02) ref -> x3 class-hnd exact <<unknown class>>
+; V04 loc3 [V04,T10] ( 4, 0.03) int -> x2
+; V05 loc4 [V05,T09] ( 1, 1 ) ref -> [fp+0x60] ld-addr-op class-hnd tier0-frame <<unknown class>>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T03] ( 8,199.98) ubyte -> x2 "Inline return value spill temp"
-; V08 tmp2 [V08,T01] ( 4,399.96) ref -> x1 class-hnd exact "Inlining Arg" <<unknown class>>
+; V07 tmp1 [V07,T02] ( 6,199.98) ubyte -> x2 "Inline return value spill temp"
+; V08 tmp2 [V08,T00] ( 4,399.96) ref -> x1 class-hnd exact "Inlining Arg" <<unknown class>>
; V09 tmp3 [V09,T04] ( 4,199.98) byref -> x0 "Inline stloc first use temp"
-; V10 cse0 [V10,T05] ( 7,101.01) int -> x22 "CSE - aggressive"
-; V11 cse1 [V11,T07] ( 4,100.00) byref -> x23 hoist multi-def "CSE - aggressive"
+; V10 tmp4 [V10,T08] ( 6, 5.00) long -> x24 "Widened primary induction variable"
+; V11 tmp5 [V11,T01] ( 5,395.97) long -> x22 "Widened primary induction variable"
+; V12 cse0 [V12,T05] ( 5,101.01) int -> x21 "CSE - aggressive"
+; V13 cse1 [V13,T07] ( 4,100.00) byref -> x23 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M16914_IG01: ; bbWeight=0.01, 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 x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
+ stp x23, x24, [sp, #0x30]
mov fp, sp
- ldr w20, [fp, #0x84]
- ldp x2, x21, [fp, #0x70]
- ; gcrRegs +[x2 x21]
- ldr w19, [fp, #0x6C]
+ ldr w19, [fp, #0x84]
+ ldp x3, x20, [fp, #0x70]
+ ; gcrRegs +[x3 x20]
+ ldr w2, [fp, #0x6C]
;; size=32 bbWeight=0.01 PerfScore 0.11
-G_M16914_IG02: ; bbWeight=0.01, gcrefRegs=200004 {x2 x21}, byrefRegs=0000 {}, byref, isz
- ldr w22, [x2, #0x08]
- cmp w22, w19
- ble G_M16914_IG11
+G_M16914_IG02: ; bbWeight=0.01, gcrefRegs=100008 {x3 x20}, byrefRegs=0000 {}, byref, isz
+ ldr w21, [x3, #0x08]
+ cmp w21, w2
+ ble G_M16914_IG13
;; size=12 bbWeight=0.01 PerfScore 0.04
-G_M16914_IG03: ; bbWeight=0.01, gcrefRegs=200004 {x2 x21}, byrefRegs=0000 {}, byref, isz
- tbnz w19, #31, G_M16914_IG06
+G_M16914_IG03: ; bbWeight=0.01, gcrefRegs=100008 {x3 x20}, byrefRegs=0000 {}, byref, isz
+ tbnz w2, #31, G_M16914_IG07
;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M16914_IG04: ; bbWeight=0.01, gcrefRegs=200004 {x2 x21}, byrefRegs=0000 {}, byref
- add x23, x2, #16
+G_M16914_IG04: ; bbWeight=0.01, gcrefRegs=100008 {x3 x20}, byrefRegs=0000 {}, byref
+ mov w22, w2
+ add x23, x3, #16
; byrRegs +[x23]
- ldrsb wzr, [x21]
- ;; size=8 bbWeight=0.01 PerfScore 0.03
-G_M16914_IG05: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref, isz
- ; gcrRegs -[x2]
- ldr x1, [x23, w19, UXTW #3]
+ ldrsb wzr, [x20]
+ ;; size=12 bbWeight=0.01 PerfScore 0.04
+G_M16914_IG05: ; bbWeight=98.99, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref, isz
+ ; gcrRegs -[x3]
+ lsl x0, x22, #3
+ ldr x1, [x23, x0]
; gcrRegs +[x1]
- mov x0, x21
+ mov x0, x20
; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
@@ -62,30 +66,35 @@ G_M16914_IG05: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=800000
blr x2
; gcrRegs -[x0-x1]
; byrRegs +[x0]
- cbnz x0, G_M16914_IG09
+ cbnz x0, G_M16914_IG11
mov w2, wzr
- eor w0, w20, w2
+ ;; size=40 bbWeight=98.99 PerfScore 1138.39
+G_M16914_IG06: ; bbWeight=98.99, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0]
- uxtb w20, w0
- add w19, w19, #1
- cmp w22, w19
- ble G_M16914_IG11
+ eor w0, w19, w2
+ uxtb w19, w0
+ add w0, w22, #1
+ mov w22, w0
+ cmp w21, w22
+ ble G_M16914_IG13
b G_M16914_IG05
- ;; size=60 bbWeight=98.99 PerfScore 1435.36
-G_M16914_IG06: ; bbWeight=0.00, gcrefRegs=200004 {x2 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x2]
+ ;; size=28 bbWeight=98.99 PerfScore 445.46
+G_M16914_IG07: ; bbWeight=0.00, gcrefRegs=100008 {x3 x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x3]
; byrRegs -[x23]
- add x23, x2, #16
+ mov w24, w2
+ add x23, x3, #16
; byrRegs +[x23]
- ;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M16914_IG07: ; bbWeight=1.00, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref, isz
- ; gcrRegs -[x2]
- cmp w19, w22
- bhs G_M16914_IG08
- ldr x1, [x23, w19, UXTW #3]
+ ;; size=8 bbWeight=0.00 PerfScore 0.00
+G_M16914_IG08: ; bbWeight=1.00, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref, isz
+ ; gcrRegs -[x3]
+ cmp w24, w21
+ bhs G_M16914_IG10
+ lsl x0, x24, #3
+ ldr x1, [x23, x0]
; gcrRegs +[x1]
- ldrsb wzr, [x21]
- mov x0, x21
+ ldrsb wzr, [x20]
+ mov x0, x20
; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
@@ -94,65 +103,60 @@ G_M16914_IG07: ; bbWeight=1.00, gcrefRegs=200000 {x21}, byrefRegs=800000
blr x2
; gcrRegs -[x0-x1]
; byrRegs +[x0]
- cbnz x0, G_M16914_IG10
+ cbnz x0, G_M16914_IG12
mov w2, wzr
- eor w2, w20, w2
- uxtb w20, w2
- add w19, w19, #1
- cmp w22, w19
- ble G_M16914_IG11
- b G_M16914_IG07
- ;; size=72 bbWeight=1.00 PerfScore 19.00
-G_M16914_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x21]
- ; byrRegs -[x0 x23]
+ ;; size=52 bbWeight=1.00 PerfScore 16.00
+G_M16914_IG09: ; bbWeight=1.00, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref, isz
+ ; byrRegs -[x0]
+ eor w2, w19, w2
+ uxtb w19, w2
+ add w0, w24, #1
+ mov w24, w0
+ cmp w21, w24
+ ble G_M16914_IG13
+ b G_M16914_IG08
+ ;; size=28 bbWeight=1.00 PerfScore 4.50
+G_M16914_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
+ ; byrRegs -[x23]
bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M16914_IG09: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref, isz
- ; gcrRegs +[x21]
+G_M16914_IG11: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref
+ ; gcrRegs +[x20]
; byrRegs +[x23]
mov w2, #1
- eor w2, w20, w2
- uxtb w20, w2
- add w19, w19, #1
- cmp w22, w19
- bgt G_M16914_IG05
- b G_M16914_IG11
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M16914_IG10: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref, isz
+ b G_M16914_IG06
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M16914_IG12: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref
mov w2, #1
- eor w0, w20, w2
- uxtb w20, w0
- add w19, w19, #1
- cmp w22, w19
- bgt G_M16914_IG07
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M16914_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x21]
+ b G_M16914_IG09
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M16914_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
; byrRegs -[x23]
- mov w0, w20
+ mov w0, w19
;; size=4 bbWeight=0 PerfScore 0.00
-G_M16914_IG12: ; bbWeight=0, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
+G_M16914_IG14: ; bbWeight=0, epilog, nogc, extend
+ ldp x23, x24, [sp, #0x30]
+ ldp x21, x22, [sp, #0x20]
+ ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x40
add sp, sp, #80
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 276, prolog size 20, PerfScore 1454.56, instruction count 69, allocated bytes for code 276 (MethodHash=0a16bded) for method System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
+; Total bytes of code 264, prolog size 20, PerfScore 1604.55, instruction count 66, allocated bytes for code 264 (MethodHash=0a16bded) for method System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 3
+ Code Words : 2
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 69 (0x00045) Actual length = 276 (0x000114)
+ Function Length : 66 (0x00042) Actual length = 264 (0x000108)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -160,13 +164,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ E6 save_next
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
05 alloc_s #5 (0x05); sub sp, sp, #80 (0x050)
E4 end
- E4 end
...
+28 (+35.00%) : 67557.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
@@ -9,11 +9,12 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 5, 3 ) ref -> x0 class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
+; V00 arg0 [V00,T00] ( 6, 3 ) ref -> x0 class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
; V01 loc0 [V01,T01] ( 4, 1 ) int -> x1
-; V02 loc1 [V02,T02] ( 5, 0 ) int -> x2
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
+; V05 tmp2 [V05,T02] ( 6, 0 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -34,20 +35,25 @@ G_M16110_IG03: ; bbWeight=1, epilog, nogc, extend
;; size=8 bbWeight=1 PerfScore 2.00
G_M16110_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
- mov w2, wzr
+ mov x2, xzr
b G_M16110_IG06
;; size=8 bbWeight=0 PerfScore 0.00
-G_M16110_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M16110_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr w3, [x0, #0x08]
+ cmp w2, w3
+ bhs G_M16110_IG08
add x3, x0, #16
; byrRegs +[x3]
- ldr x3, [x3, w2, UXTW #3]
+ lsl x4, x2, #3
+ ldr x3, [x3, x4]
; gcrRegs +[x3]
; byrRegs -[x3]
ldr w3, [x3, #0x3C]
; gcrRegs -[x3]
add w1, w3, w1
add w2, w2, #1
- ;; size=20 bbWeight=0 PerfScore 0.00
+ mov w2, w2
+ ;; size=40 bbWeight=0 PerfScore 0.00
G_M16110_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr w3, [x0, #0x08]
cmp w3, w2
@@ -59,8 +65,13 @@ G_M16110_IG07: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0 PerfScore 0.00
+G_M16110_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 80, prolog size 8, PerfScore 5.50, instruction count 20, allocated bytes for code 80 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
+; Total bytes of code 108, prolog size 8, PerfScore 5.50, instruction count 27, allocated bytes for code 108 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
; ============================================================
Unwind Info:
@@ -71,7 +82,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+28 (+35.00%) : 137834.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
@@ -9,11 +9,12 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 5, 3 ) ref -> x0 class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
+; V00 arg0 [V00,T00] ( 6, 3 ) ref -> x0 class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
; V01 loc0 [V01,T01] ( 4, 1 ) int -> x1
-; V02 loc1 [V02,T02] ( 5, 0 ) int -> x2
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
+; V05 tmp2 [V05,T02] ( 6, 0 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -34,20 +35,25 @@ G_M16110_IG03: ; bbWeight=1, epilog, nogc, extend
;; size=8 bbWeight=1 PerfScore 2.00
G_M16110_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
- mov w2, wzr
+ mov x2, xzr
b G_M16110_IG06
;; size=8 bbWeight=0 PerfScore 0.00
-G_M16110_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M16110_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr w3, [x0, #0x08]
+ cmp w2, w3
+ bhs G_M16110_IG08
add x3, x0, #16
; byrRegs +[x3]
- ldr x3, [x3, w2, UXTW #3]
+ lsl x4, x2, #3
+ ldr x3, [x3, x4]
; gcrRegs +[x3]
; byrRegs -[x3]
ldr w3, [x3, #0x3C]
; gcrRegs -[x3]
add w1, w3, w1
add w2, w2, #1
- ;; size=20 bbWeight=0 PerfScore 0.00
+ mov w2, w2
+ ;; size=40 bbWeight=0 PerfScore 0.00
G_M16110_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr w3, [x0, #0x08]
cmp w3, w2
@@ -59,8 +65,13 @@ G_M16110_IG07: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0 PerfScore 0.00
+G_M16110_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 80, prolog size 8, PerfScore 5.50, instruction count 20, allocated bytes for code 80 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
+; Total bytes of code 108, prolog size 8, PerfScore 5.50, instruction count 27, allocated bytes for code 108 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
; ============================================================
Unwind Info:
@@ -71,7 +82,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+28 (+35.00%) : 135023.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
@@ -9,11 +9,12 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 5, 3 ) ref -> x0 class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
+; V00 arg0 [V00,T00] ( 6, 3 ) ref -> x0 class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
; V01 loc0 [V01,T01] ( 4, 1 ) int -> x1
-; V02 loc1 [V02,T02] ( 5, 0 ) int -> x2
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
+; V05 tmp2 [V05,T02] ( 6, 0 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -34,20 +35,25 @@ G_M16110_IG03: ; bbWeight=1, epilog, nogc, extend
;; size=8 bbWeight=1 PerfScore 2.00
G_M16110_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
- mov w2, wzr
+ mov x2, xzr
b G_M16110_IG06
;; size=8 bbWeight=0 PerfScore 0.00
-G_M16110_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M16110_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr w3, [x0, #0x08]
+ cmp w2, w3
+ bhs G_M16110_IG08
add x3, x0, #16
; byrRegs +[x3]
- ldr x3, [x3, w2, UXTW #3]
+ lsl x4, x2, #3
+ ldr x3, [x3, x4]
; gcrRegs +[x3]
; byrRegs -[x3]
ldr w3, [x3, #0x3C]
; gcrRegs -[x3]
add w1, w3, w1
add w2, w2, #1
- ;; size=20 bbWeight=0 PerfScore 0.00
+ mov w2, w2
+ ;; size=40 bbWeight=0 PerfScore 0.00
G_M16110_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr w3, [x0, #0x08]
cmp w3, w2
@@ -59,8 +65,13 @@ G_M16110_IG07: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0 PerfScore 0.00
+G_M16110_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 80, prolog size 8, PerfScore 5.50, instruction count 20, allocated bytes for code 80 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
+; Total bytes of code 108, prolog size 8, PerfScore 5.50, instruction count 27, allocated bytes for code 108 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
; ============================================================
Unwind Info:
@@ -71,7 +82,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run_tiered.linux.arm64.checked.mch
-16 (-1.97%) : 47873.dasm - System.Collections.Generic.Dictionary2[System.Reflection.Metadata.TypeDefinitionHandle,System.Collections.Immutable.ImmutableArray1[System.Reflection.Metadata.TypeDefinitionHandle]]:Resize(int,ubyte):this (Tier1)
@@ -11,12 +11,12 @@
; V00 this [V00,T03] ( 13, 13 ) ref -> x19 this class-hnd single-def <System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.TypeDefinitionHandle,System.Collections.Immutable.ImmutableArray`1[System.Reflection.Metadata.TypeDefinitionHandle]]>
; V01 arg1 [V01,T08] ( 6, 6 ) int -> x20 single-def
; V02 arg2 [V02,T14] ( 3, 3 ) ubyte -> x2 single-def
-; V03 loc0 [V03,T04] ( 11, 12.04) ref -> x21 class-hnd exact single-def <<unknown class>>
+; V03 loc0 [V03,T04] ( 10, 12.02) ref -> x21 class-hnd exact single-def <<unknown class>>
; V04 loc1 [V04,T09] ( 6, 8 ) int -> x22
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V07 loc4 [V07 ] ( 0, 0 ) int -> zero-ref
-; V08 loc5 [V08,T00] ( 14, 19.08) int -> x20
+;* V08 loc5 [V08,T16] ( 0, 0 ) int -> zero-ref
; V09 loc6 [V09,T12] ( 6, 6 ) byref -> x26
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11,T15] ( 0, 0 ) int -> zero-ref
@@ -33,9 +33,13 @@
;* V22 tmp12 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp13 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp14 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V25 cse0 [V25,T05] ( 4, 11.88) long -> x23 "CSE - aggressive"
-; V26 cse1 [V26,T06] ( 14, 10 ) ref -> x1 multi-def "CSE - aggressive"
-; V27 cse2 [V27,T13] ( 3, 5.94) int -> x26 "CSE - aggressive"
+; V25 tmp15 [V25,T17] ( 7, 0.23) long -> x20 "Widened primary induction variable"
+; V26 tmp16 [V26,T00] ( 6, 18.82) long -> x20 "Widened primary induction variable"
+; V27 cse0 [V27,T18] ( 3, 0.10) byref -> x23 "CSE - conservative"
+; V28 cse1 [V28,T05] ( 4, 11.88) long -> x23 "CSE - aggressive"
+; V29 cse2 [V29,T19] ( 3, 0.10) long -> x0 "CSE - conservative"
+; V30 cse3 [V30,T06] ( 14, 10 ) ref -> x1 multi-def "CSE - aggressive"
+; V31 cse4 [V31,T13] ( 3, 5.94) int -> x26 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -150,28 +154,28 @@ G_M31920_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
movn x0, #0
mov w1, w20
cmp x1, #0
- beq G_M31920_IG21
+ beq G_M31920_IG22
udiv x0, x0, x1
add x0, x0, #1
str x0, [x19, #0x30]
- mov w20, wzr
cmp w22, #0
- ble G_M31920_IG18
+ ble G_M31920_IG19
ldr w0, [x21, #0x08]
cmp w0, w22
blt G_M31920_IG14
+ mov x20, xzr
;; size=144 bbWeight=1 PerfScore 50.50
G_M31920_IG09: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mov w0, #24
- mov x1, #16
- umaddl x23, w20, w0, x1
+ mov x0, #24
+ mul x0, x20, x0
+ add x23, x0, #16
add x0, x21, x23
; byrRegs +[x0]
ldr w0, [x0, #0x04]
; byrRegs -[x0]
cmn w0, #1
blt G_M31920_IG12
- ;; size=28 bbWeight=3.96 PerfScore 43.56
+ ;; size=28 bbWeight=3.96 PerfScore 31.68
G_M31920_IG10: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w24, [x21, x23]
ldr x25, [x19, #0x08]
@@ -187,7 +191,7 @@ G_M31920_IG10: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=000
mul x0, x0, x1
lsr x28, x0, #32
cmp w2, #0
- beq G_M31920_IG21
+ beq G_M31920_IG22
udiv w0, w24, w2
msub w0, w0, w2, w24
cmp w0, w28
@@ -207,7 +211,7 @@ G_M31920_IG10: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=000
;; size=108 bbWeight=1.98 PerfScore 86.13
G_M31920_IG11: ; bbWeight=1.98, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
cmp w28, w26
- bhs G_M31920_IG20
+ bhs G_M31920_IG21
add x0, x25, #16
; byrRegs +[x0]
ubfiz x1, x28, #2, #32
@@ -225,31 +229,31 @@ G_M31920_IG11: ; bbWeight=1.98, gcrefRegs=2280000 {x19 x21 x25}, byrefReg
G_M31920_IG12: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
; byrRegs -[x26]
- add w20, w20, #1
+ add w0, w20, #1
+ mov w20, w0
cmp w20, w22
blt G_M31920_IG09
- ;; size=12 bbWeight=3.96 PerfScore 7.92
+ ;; size=16 bbWeight=3.96 PerfScore 9.90
G_M31920_IG13: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
- b G_M31920_IG18
+ b G_M31920_IG19
;; size=4 bbWeight=1 PerfScore 1.00
-G_M31920_IG14: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M31920_IG14: ; bbWeight=0.01, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ mov x20, xzr
+ ;; size=4 bbWeight=0.01 PerfScore 0.01
+G_M31920_IG15: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x21, #0x08]
cmp w20, w0
- bhs G_M31920_IG20
- mov w0, #24
- mov x1, #16
- umaddl x0, w20, w0, x1
- add x0, x21, x0
- ; byrRegs +[x0]
- ldr w0, [x0, #0x04]
- ; byrRegs -[x0]
- cmn w0, #1
- blt G_M31920_IG17
- ;; size=40 bbWeight=0.04 PerfScore 0.62
-G_M31920_IG15: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mov w0, #24
- mov x1, #16
- umaddl x0, w20, w0, x1
+ bhs G_M31920_IG21
+ mov x0, #24
+ mul x0, x20, x0
+ add x0, x0, #16
+ add x23, x21, x0
+ ; byrRegs +[x23]
+ ldr w1, [x23, #0x04]
+ cmn w1, #1
+ blt G_M31920_IG18
+ ;; size=40 bbWeight=0.04 PerfScore 0.50
+G_M31920_IG16: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=800000 {x23}, byref, isz
ldr w24, [x21, x0]
ldr x25, [x19, #0x08]
; gcrRegs +[x25]
@@ -263,11 +267,11 @@ G_M31920_IG15: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=000
mul x0, x0, x1
lsr x28, x0, #32
cmp w2, #0
- beq G_M31920_IG21
+ beq G_M31920_IG22
udiv w0, w24, w2
msub w0, w0, w2, w24
cmp w0, w28
- beq G_M31920_IG16
+ beq G_M31920_IG17
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -280,38 +284,33 @@ G_M31920_IG15: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=000
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=116 bbWeight=0.02 PerfScore 0.98
-G_M31920_IG16: ; bbWeight=0.02, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
+ ;; size=104 bbWeight=0.02 PerfScore 0.86
+G_M31920_IG17: ; bbWeight=0.02, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=800000 {x23}, byref, isz
ldr w14, [x25, #0x08]
cmp w28, w14
- bhs G_M31920_IG20
+ bhs G_M31920_IG21
add x14, x25, #16
; byrRegs +[x14]
ubfiz x15, x28, #2, #32
add x26, x14, x15
; byrRegs +[x26]
- mov w14, #24
- ; byrRegs -[x14]
- mov x15, #16
- umaddl x14, w20, w14, x15
- add x14, x21, x14
- ; byrRegs +[x14]
- add x14, x14, #4
+ add x14, x23, #4
ldr w15, [x26]
sub w15, w15, #1
str w15, [x14]
add w14, w20, #1
; byrRegs -[x14]
str w14, [x26]
- ;; size=64 bbWeight=0.02 PerfScore 0.39
-G_M31920_IG17: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=48 bbWeight=0.02 PerfScore 0.26
+G_M31920_IG18: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
- ; byrRegs -[x26]
- add w20, w20, #1
+ ; byrRegs -[x23 x26]
+ add w14, w20, #1
+ mov w20, w14
cmp w20, w22
- blt G_M31920_IG14
- ;; size=12 bbWeight=0.04 PerfScore 0.08
-G_M31920_IG18: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ blt G_M31920_IG15
+ ;; size=16 bbWeight=0.04 PerfScore 0.10
+G_M31920_IG19: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
add x14, x19, #16
; byrRegs +[x14]
mov x15, x21
@@ -320,7 +319,7 @@ G_M31920_IG18: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
; gcrRegs -[x15 x19 x21]
; byrRegs -[x14]
;; size=12 bbWeight=1 PerfScore 2.00
-G_M31920_IG19: ; bbWeight=1, epilog, nogc, extend
+G_M31920_IG20: ; bbWeight=1, epilog, nogc, extend
ldp x27, x28, [sp, #0x50]
ldp x25, x26, [sp, #0x40]
ldp x23, x24, [sp, #0x30]
@@ -329,17 +328,17 @@ G_M31920_IG19: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x60
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M31920_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M31920_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M31920_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M31920_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROWDIVZERO
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 812, prolog size 36, PerfScore 253.22, instruction count 203, allocated bytes for code 812 (MethodHash=1d72834f) for method System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.TypeDefinitionHandle,System.Collections.Immutable.ImmutableArray`1[System.Reflection.Metadata.TypeDefinitionHandle]]:Resize(int,ubyte):this (Tier1)
+; Total bytes of code 796, prolog size 36, PerfScore 242.98, instruction count 199, allocated bytes for code 796 (MethodHash=1d72834f) for method System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.TypeDefinitionHandle,System.Collections.Immutable.ImmutableArray`1[System.Reflection.Metadata.TypeDefinitionHandle]]:Resize(int,ubyte):this (Tier1)
; ============================================================
Unwind Info:
@@ -350,7 +349,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 203 (0x000cb) Actual length = 812 (0x00032c)
+ Function Length : 199 (0x000c7) Actual length = 796 (0x00031c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-0.89%) : 1840.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan1[ushort],System.Span1[System.Range],System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[System.String],ubyte,int):int (Tier0-FullOpts)
@@ -22,7 +22,7 @@
; V11 loc5 [V11 ] ( 11, 10 ) struct (32) [fp-0x98] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Generic.ValueListBuilder`1[int]>
; V12 loc6 [V12,T16] ( 5, 5.50) int -> x28
; V13 loc7 [V13,T03] ( 11, 15 ) int -> x27
-; V14 loc8 [V14,T02] ( 8, 16.50) int -> x23
+;* V14 loc8 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 loc9 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[System.Range]>
;* V16 loc10 [V16 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
; V17 loc11 [V17,T12] ( 3, 6 ) int -> [fp-0x9C] spill-single-def
@@ -48,7 +48,7 @@
;* V37 tmp19 [V37 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Index>
; V38 tmp20 [V38,T30] ( 2, 2 ) long -> x0 "Inlining Arg"
; V39 tmp21 [V39,T31] ( 2, 2 ) long -> x0 "Inlining Arg"
-; V40 tmp22 [V40,T18] ( 4, 4 ) int -> [fp-0xBC] spill-single-def "Inlining Arg"
+; V40 tmp22 [V40,T18] ( 4, 4 ) int -> x23 "Inlining Arg"
;* V41 tmp23 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Range]>
;* V42 tmp24 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V43 tmp25 [V43 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -73,7 +73,7 @@
; V62 tmp44 [V62,T26] ( 2, 1.50) byref -> x4 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
; V63 tmp45 [V63,T20] ( 3, 2 ) int -> x3 single-def "field V03._length (fldOffset=0x8)" P-INDEP
;* V64 tmp46 [V64,T51] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
-; V65 tmp47 [V65,T10] ( 3, 6.50) int -> [fp-0xC0] spill-single-def "field V15._length (fldOffset=0x8)" P-INDEP
+; V65 tmp47 [V65,T10] ( 3, 6.50) int -> x23 "field V15._length (fldOffset=0x8)" P-INDEP
;* V66 tmp48 [V66 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
;* V67 tmp49 [V67 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
; V68 tmp50 [V68,T39] ( 2, 1 ) byref -> x0 single-def "field V19._reference (fldOffset=0x0)" P-INDEP
@@ -101,7 +101,7 @@
; V90 tmp72 [V90,T46] ( 2, 1 ) int -> x26 "field V36._value (fldOffset=0x0)" P-INDEP
; V91 tmp73 [V91,T47] ( 2, 1 ) int -> x23 "field V37._value (fldOffset=0x0)" P-INDEP
;* V92 tmp74 [V92,T52] ( 0, 0 ) byref -> zero-ref single-def "field V41._reference (fldOffset=0x0)" P-INDEP
-; V93 tmp75 [V93,T48] ( 2, 1 ) int -> x4 "field V41._length (fldOffset=0x8)" P-INDEP
+; V93 tmp75 [V93,T48] ( 2, 1 ) int -> x23 "field V41._length (fldOffset=0x8)" P-INDEP
; V94 tmp76 [V94,T23] ( 2, 4 ) int -> x1 "field V49._value (fldOffset=0x0)" P-INDEP
; V95 tmp77 [V95,T24] ( 2, 4 ) int -> x2 "field V50._value (fldOffset=0x0)" P-INDEP
; V96 tmp78 [V96,T49] ( 2, 1 ) int -> x1 "field V53._value (fldOffset=0x0)" P-INDEP
@@ -109,8 +109,9 @@
; V98 tmp80 [V98,T28] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
; V99 tmp81 [V99,T29] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
; V100 GsCookie [V100 ] ( 1, 1 ) long -> [fp-0xC8] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V101 cse0 [V101,T13] ( 3, 6 ) long -> x1 "CSE - aggressive"
-; V102 cse1 [V102,T09] ( 6, 7.50) ref -> x1 multi-def "CSE - aggressive"
+; V101 tmp83 [V101,T02] ( 8, 16.50) long -> [fp-0xC0] "Widened primary induction variable"
+; V102 cse0 [V102,T13] ( 3, 6 ) long -> x1 "CSE - aggressive"
+; V103 cse1 [V103,T09] ( 6, 7.50) ref -> x1 multi-def "CSE - aggressive"
;
; Lcl frame size = 128
@@ -313,46 +314,42 @@ G_M27501_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300004 {x2 x
sxtw w28, w23
;; size=40 bbWeight=0.50 PerfScore 4.00
G_M27501_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
- mov w23, wzr
- sub w2, w22, #1
- str w2, [fp, #-0xBC] // [V40 tmp22]
- cmp w2, w22
+ sub w23, w22, #1
+ cmp w23, w22
bhi G_M27501_IG28
- tbz w2, #31, G_M27501_IG14
+ tbz w23, #31, G_M27501_IG14
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
mov x0, x1
; gcrRegs +[x0]
- movz x3, #0xD1FFAB1E // code for <unknown method>
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=60 bbWeight=0.50 PerfScore 6.00
+ ;; size=52 bbWeight=0.50 PerfScore 5.25
G_M27501_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref
- ldr w2, [fp, #-0xBC] // [V40 tmp22]
- sxtw w4, w2
- str w4, [fp, #-0xC0] // [V65 tmp47]
+ mov x4, xzr
b G_M27501_IG20
- ;; size=16 bbWeight=0.50 PerfScore 2.25
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
G_M27501_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
ldr w0, [fp, #-0x60] // [V10 loc4+0x18]
- cmp w23, w0
+ cmp w4, w0
bhs G_M27501_IG27
ldr x0, [fp, #-0x68] // [V10 loc4+0x10]
; byrRegs +[x0]
- ubfiz x1, x23, #2, #32
+ lsl x1, x4, #2
ldr w0, [x0, x1]
; byrRegs -[x0]
sxtw w5, w0
ldr w0, [fp, #-0x90] // [V11 loc5+0x08]
- cmp w23, w0
+ cmp w4, w0
bge G_M27501_IG16
ldr w0, [fp, #-0x80] // [V11 loc5+0x18]
- cmp w23, w0
+ cmp w4, w0
bhs G_M27501_IG27
ldr x0, [fp, #-0x88] // [V11 loc5+0x10]
; byrRegs +[x0]
@@ -360,7 +357,9 @@ G_M27501_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21
;; size=60 bbWeight=2 PerfScore 44.00
G_M27501_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
; byrRegs -[x0]
- add w23, w23, #1
+ add w4, w4, #1
+ mov w4, w4
+ str x4, [fp, #-0xC0] // [V101 tmp83]
sxtw w6, w5
str w6, [fp, #-0x9C] // [V17 loc11]
cbz w25, G_M27501_IG17
@@ -382,7 +381,7 @@ G_M27501_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21
sxtw w2, w5
mov w5, w2
ldr w6, [fp, #-0x9C] // [V17 loc11]
- ;; size=76 bbWeight=2 PerfScore 37.00
+ ;; size=84 bbWeight=2 PerfScore 40.00
G_M27501_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
str w5, [fp, #-0x54] // [V09 loc3]
cmp w26, w5
@@ -407,8 +406,7 @@ G_M27501_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21
cset x0, ne
orr w0, w0, w24
cbz w0, G_M27501_IG19
- ldr w4, [fp, #-0xC0] // [V65 tmp47]
- cmp w27, w4
+ cmp w27, w23
bhs G_M27501_IG21
ubfiz x0, x27, #3, #32
add x0, x20, x0
@@ -419,17 +417,17 @@ G_M27501_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21
sxtw w2, w5
stp w1, w2, [x0]
add w27, w27, #1
- ;; size=64 bbWeight=2 PerfScore 28.00
+ ;; size=60 bbWeight=2 PerfScore 24.00
G_M27501_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref
; byrRegs -[x0]
add w26, w6, w28
- ldr w4, [fp, #-0xC0] // [V65 tmp47]
+ ldr x4, [fp, #-0xC0] // [V101 tmp83]
;; size=8 bbWeight=2 PerfScore 5.00
G_M27501_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
ldr w0, [fp, #-0x70] // [V10 loc4+0x08]
- cmp w23, w0
+ cmp w4, w0
bge G_M27501_IG21
- cmp w27, w4
+ cmp w27, w23
blt G_M27501_IG15
cbz w24, G_M27501_IG15
;; size=24 bbWeight=4 PerfScore 24.00
@@ -572,7 +570,7 @@ G_M27501_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1352, prolog size 100, PerfScore 283.25, instruction count 338, allocated bytes for code 1352 (MethodHash=c0dd9492) for method System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (Tier0-FullOpts)
+; Total bytes of code 1340, prolog size 100, PerfScore 280.00, instruction count 335, allocated bytes for code 1340 (MethodHash=c0dd9492) for method System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -583,7 +581,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 338 (0x00152) Actual length = 1352 (0x000548)
+ Function Length : 335 (0x0014f) Actual length = 1340 (0x00053c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-32 (-0.86%) : 17223.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier0-FullOpts)
@@ -8,101 +8,101 @@
; 0 inlinees with PGO data; 28 single block inlinees; 22 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 31, 39 ) ref -> x19 this class-hnd single-def <System.Reflection.MethodBaseInvoker>
+; V00 this [V00,T02] ( 31, 39 ) ref -> x19 this class-hnd single-def <System.Reflection.MethodBaseInvoker>
; V01 arg1 [V01,T48] ( 4, 3 ) ref -> x23 class-hnd single-def <System.Object>
; V02 arg2 [V02,T35] ( 6, 6 ) int -> [fp-0x5C] EH-live single-def
; V03 arg3 [V03,T36] ( 4, 6 ) ref -> x21 class-hnd single-def <System.Reflection.Binder>
; V04 arg4 [V04,T10] ( 14, 14 ) ref -> x20 class-hnd single-def <System.Object[]>
; V05 arg5 [V05,T37] ( 4, 6 ) ref -> x22 class-hnd single-def <System.Globalization.CultureInfo>
;* V06 loc0 [V06 ] ( 0, 0 ) struct (16) zero-ref multireg-arg <System.Span`1[System.Object]>
-; V07 loc1 [V07,T80] ( 3, 2 ) ref -> x28 class-hnd <System.Object>
+; V07 loc1 [V07,T78] ( 3, 2 ) ref -> x28 class-hnd <System.Object>
; V08 loc2 [V08 ] ( 15, 7 ) struct (32) [fp-0x80] do-not-enreg[XSF] addr-exposed ld-addr-op <System.Runtime.GCFrameRegistration>
;* V09 loc3 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ubyte]>
-; V10 loc4 [V10,T71] ( 6, 3 ) long -> x24
-; V11 loc5 [V11,T115] ( 2, 0 ) ref -> [fp-0x100] must-init class-hnd EH-live single-def <<unknown class>>
+; V10 loc4 [V10,T69] ( 6, 3 ) long -> x24
+; V11 loc5 [V11,T117] ( 2, 0 ) ref -> [fp-0xF0] must-init class-hnd EH-live single-def <<unknown class>>
; V12 loc6 [V12,T41] ( 9, 7.50) long -> x24
-; V13 loc7 [V13,T70] ( 4, 3.50) long -> x28
+; V13 loc7 [V13,T68] ( 4, 3.50) long -> x28
; V14 loc8 [V14 ] ( 8, 3.50) struct (32) [fp-0xA0] do-not-enreg[XSF] addr-exposed ld-addr-op <System.Runtime.GCFrameRegistration>
-; V15 loc9 [V15,T15] ( 7, 14.50) int -> x0
-; V16 loc10 [V16,T116] ( 2, 0 ) ref -> [fp-0x108] must-init class-hnd EH-live single-def <<unknown class>>
+;* V15 loc9 [V15 ] ( 0, 0 ) int -> zero-ref
+; V16 loc10 [V16,T118] ( 2, 0 ) ref -> [fp-0xF8] must-init class-hnd EH-live single-def <<unknown class>>
;# V17 OutArgs [V17 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V18 tmp1 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
;* V19 tmp2 [V19 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[System.Object]>
-; V20 tmp3 [V20,T63] ( 2, 4 ) long -> x2
+; V20 tmp3 [V20,T61] ( 2, 4 ) long -> x2
;* V21 tmp4 [V21 ] ( 0, 0 ) long -> zero-ref
;* V22 tmp5 [V22 ] ( 0, 0 ) struct ( 8) zero-ref <System.ByReference>
-; V23 tmp6 [V23,T117] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
-; V24 tmp7 [V24,T109] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
+; V23 tmp6 [V23,T119] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
+; V24 tmp7 [V24,T111] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
;* V25 tmp8 [V25 ] ( 0, 0 ) ref -> zero-ref single-def
-; V26 tmp9 [V26,T113] ( 3, 0 ) int -> x0
+; V26 tmp9 [V26,T115] ( 3, 0 ) int -> x0
;* V27 tmp10 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
-; V28 tmp11 [V28,T110] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V28 tmp11 [V28,T112] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V29 tmp12 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
;* V30 tmp13 [V30 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[System.Object]>
-; V31 tmp14 [V31,T118] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
-; V32 tmp15 [V32,T111] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
+; V31 tmp14 [V31,T120] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
+; V32 tmp15 [V32,T113] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
;* V33 tmp16 [V33 ] ( 0, 0 ) ref -> zero-ref single-def
-; V34 tmp17 [V34,T114] ( 3, 0 ) int -> x0
+; V34 tmp17 [V34,T116] ( 3, 0 ) int -> x0
;* V35 tmp18 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
-; V36 tmp19 [V36,T112] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V36 tmp19 [V36,T114] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V37 tmp20 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V38 tmp21 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V39 tmp22 [V39,T42] ( 6, 6 ) byref -> x24 single-def "Inlining Arg"
-; V40 tmp23 [V40,T81] ( 2, 2 ) byref -> x25 single-def "Inlining Arg"
-; V41 tmp24 [V41,T82] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
+; V40 tmp23 [V40,T79] ( 2, 2 ) byref -> x25 single-def "Inlining Arg"
+; V41 tmp24 [V41,T80] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
; V42 tmp25 [V42,T46] ( 5, 5 ) long -> [fp-0xA8] spill-single-def "Inlining Arg"
;* V43 tmp26 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V44 tmp27 [V44,T75] ( 3, 3 ) int -> x25 "Inlining Arg"
+; V44 tmp27 [V44,T73] ( 3, 3 ) int -> x25 "Inlining Arg"
;* V45 tmp28 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V46 tmp29 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V47 tmp30 [V47,T85] ( 2, 2 ) int -> x0 "Inlining Arg"
-; V48 tmp31 [V48,T76] ( 3, 3 ) int -> x27 "Inlining Arg"
-; V49 tmp32 [V49,T86] ( 2, 2 ) long -> x24 "Inlining Arg"
+; V47 tmp30 [V47,T83] ( 2, 2 ) int -> x0 "Inlining Arg"
+; V48 tmp31 [V48,T74] ( 3, 3 ) int -> x27 "Inlining Arg"
+; V49 tmp32 [V49,T84] ( 2, 2 ) long -> x24 "Inlining Arg"
;* V50 tmp33 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Object]>
-; V51 tmp34 [V51,T03] ( 12, 34.50) int -> [fp-0xAC] "Inline stloc first use temp"
+;* V51 tmp34 [V51,T103] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V52 tmp35 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[System.Object]>
-; V53 tmp36 [V53 ] ( 11, 28.50) ref -> [fp-0xB8] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
-; V54 tmp37 [V54,T16] ( 6, 14 ) ref -> [fp-0x110] class-hnd exact spill-single-def "Inline stloc first use temp" <System.RuntimeType>
+; V53 tmp36 [V53 ] ( 11, 28.50) ref -> [fp-0xB0] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
+; V54 tmp37 [V54,T14] ( 6, 14 ) ref -> [fp-0x100] class-hnd exact spill-single-def "Inline stloc first use temp" <System.RuntimeType>
;* V55 tmp38 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Object]>
;* V56 tmp39 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V57 tmp40 [V57 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
;* V58 tmp41 [V58 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
;* V59 tmp42 [V59 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
;* V60 tmp43 [V60 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-;* V61 tmp44 [V61,T64] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V62 tmp45 [V62,T30] ( 4, 8 ) ref -> [fp-0x118] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.RuntimeType>
-;* V63 tmp46 [V63,T65] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V61 tmp44 [V61,T62] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V62 tmp45 [V62,T28] ( 4, 8 ) ref -> [fp-0x108] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.RuntimeType>
+;* V63 tmp46 [V63,T63] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V64 tmp47 [V64 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V65 tmp48 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
-; V66 tmp49 [V66,T01] ( 14, 36.50) int -> x21 "Inline stloc first use temp"
+;* V66 tmp49 [V66,T104] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V67 tmp50 [V67 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V68 tmp51 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Object]>
;* V69 tmp52 [V69 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V70 tmp53 [V70 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V71 tmp54 [V71,T43] ( 6, 6 ) byref -> x28 single-def "Inlining Arg"
-; V72 tmp55 [V72,T83] ( 2, 2 ) byref -> x24 single-def "Inlining Arg"
-; V73 tmp56 [V73,T84] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
-; V74 tmp57 [V74,T47] ( 5, 5 ) long -> [fp-0xC0] spill-single-def "Inlining Arg"
+; V72 tmp55 [V72,T81] ( 2, 2 ) byref -> x24 single-def "Inlining Arg"
+; V73 tmp56 [V73,T82] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
+; V74 tmp57 [V74,T47] ( 5, 5 ) long -> [fp-0xB8] spill-single-def "Inlining Arg"
;* V75 tmp58 [V75 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V76 tmp59 [V76,T77] ( 3, 3 ) int -> x25 "Inlining Arg"
-; V77 tmp60 [V77,T87] ( 2, 2 ) int -> x0 "Inlining Arg"
-; V78 tmp61 [V78,T88] ( 2, 2 ) int -> x0 "Inlining Arg"
-; V79 tmp62 [V79,T78] ( 3, 3 ) int -> x27 "Inlining Arg"
-; V80 tmp63 [V80,T89] ( 2, 2 ) long -> x0 "Inlining Arg"
+; V76 tmp59 [V76,T75] ( 3, 3 ) int -> x25 "Inlining Arg"
+; V77 tmp60 [V77,T85] ( 2, 2 ) int -> x0 "Inlining Arg"
+; V78 tmp61 [V78,T86] ( 2, 2 ) int -> x0 "Inlining Arg"
+; V79 tmp62 [V79,T76] ( 3, 3 ) int -> x27 "Inlining Arg"
+; V80 tmp63 [V80,T87] ( 2, 2 ) long -> x0 "Inlining Arg"
;* V81 tmp64 [V81 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Object]>
-; V82 tmp65 [V82,T04] ( 12, 34.50) int -> [fp-0xC4] "Inline stloc first use temp"
+;* V82 tmp65 [V82,T105] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V83 tmp66 [V83 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[System.Object]>
-; V84 tmp67 [V84 ] ( 11, 28.50) ref -> [fp-0xD0] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
-; V85 tmp68 [V85,T17] ( 6, 14 ) ref -> [fp-0x120] class-hnd exact spill-single-def "Inline stloc first use temp" <System.RuntimeType>
+; V84 tmp67 [V84 ] ( 11, 28.50) ref -> [fp-0xC0] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
+; V85 tmp68 [V85,T15] ( 6, 14 ) ref -> [fp-0x110] class-hnd exact spill-single-def "Inline stloc first use temp" <System.RuntimeType>
;* V86 tmp69 [V86 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Object]>
;* V87 tmp70 [V87 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V88 tmp71 [V88 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
;* V89 tmp72 [V89 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
;* V90 tmp73 [V90 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
;* V91 tmp74 [V91 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-;* V92 tmp75 [V92,T66] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V93 tmp76 [V93,T31] ( 4, 8 ) ref -> [fp-0x128] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.RuntimeType>
-;* V94 tmp77 [V94,T67] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V92 tmp75 [V92,T64] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V93 tmp76 [V93,T29] ( 4, 8 ) ref -> [fp-0x118] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.RuntimeType>
+;* V94 tmp77 [V94,T65] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V95 tmp78 [V95 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V96 tmp79 [V96 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
;* V97 tmp80 [V97 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -112,95 +112,98 @@
;* V101 tmp84 [V101 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
;* V102 tmp85 [V102 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V103 tmp86 [V103 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ByReference>
-; V104 tmp87 [V104,T02] ( 14, 36.50) int -> x25 "Inline stloc first use temp"
+;* V104 tmp87 [V104,T106] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V105 tmp88 [V105 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V106 tmp89 [V106 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Object]>
;* V107 tmp90 [V107 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V108 tmp91 [V108 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V109 tmp92 [V109,T28] ( 7, 10.50) byref -> x26 "field V06._reference (fldOffset=0x0)" P-INDEP
-; V110 tmp93 [V110,T29] ( 7, 10.50) int -> x25 "field V06._length (fldOffset=0x8)" P-INDEP
-; V111 tmp94 [V111,T13] ( 10, 14 ) byref -> [fp-0x130] "field V09._reference (fldOffset=0x0)" P-INDEP
-; V112 tmp95 [V112,T14] ( 10, 14 ) int -> x27 "field V09._length (fldOffset=0x8)" P-INDEP
-; V113 tmp96 [V113,T96] ( 2, 1 ) byref -> x26 single-def "field V18._reference (fldOffset=0x0)" P-INDEP
-; V114 tmp97 [V114,T98] ( 2, 1 ) int -> x25 "field V18._length (fldOffset=0x8)" P-INDEP
+; V109 tmp92 [V109,T26] ( 7, 10.50) byref -> x26 "field V06._reference (fldOffset=0x0)" P-INDEP
+; V110 tmp93 [V110,T27] ( 7, 10.50) int -> x25 "field V06._length (fldOffset=0x8)" P-INDEP
+; V111 tmp94 [V111,T11] ( 10, 14 ) byref -> [fp-0x120] "field V09._reference (fldOffset=0x0)" P-INDEP
+; V112 tmp95 [V112,T12] ( 10, 14 ) int -> x27 "field V09._length (fldOffset=0x8)" P-INDEP
+; V113 tmp96 [V113,T94] ( 2, 1 ) byref -> x26 single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+; V114 tmp97 [V114,T96] ( 2, 1 ) int -> x25 "field V18._length (fldOffset=0x8)" P-INDEP
;* V115 tmp98 [V115 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP
;* V116 tmp99 [V116 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
; V117 tmp100 [V117,T44] ( 3, 6 ) byref -> x3 "field V22.Value (fldOffset=0x0)" P-INDEP
-; V118 tmp101 [V118,T97] ( 2, 1 ) byref -> x26 single-def "field V29._reference (fldOffset=0x0)" P-INDEP
-; V119 tmp102 [V119,T99] ( 2, 1 ) int -> x25 "field V29._length (fldOffset=0x8)" P-INDEP
+; V118 tmp101 [V118,T95] ( 2, 1 ) byref -> x26 single-def "field V29._reference (fldOffset=0x0)" P-INDEP
+; V119 tmp102 [V119,T97] ( 2, 1 ) int -> x25 "field V29._length (fldOffset=0x8)" P-INDEP
;* V120 tmp103 [V120 ] ( 0, 0 ) byref -> zero-ref "field V30._reference (fldOffset=0x0)" P-INDEP
;* V121 tmp104 [V121 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
-; V122 tmp105 [V122,T90] ( 3, 1.50) byref -> x28 "field V50._reference (fldOffset=0x0)" P-INDEP
-; V123 tmp106 [V123,T92] ( 3, 1.50) int -> x1 "field V50._length (fldOffset=0x8)" P-INDEP
-; V124 tmp107 [V124,T53] ( 2, 4.50) byref -> x28 single-def "field V52._reference (fldOffset=0x0)" P-INDEP
-; V125 tmp108 [V125,T49] ( 3, 5 ) int -> [fp-0xD4] spill-single-def "field V52._length (fldOffset=0x8)" P-INDEP
-;* V126 tmp109 [V126,T101] ( 0, 0 ) byref -> zero-ref single-def "field V55._reference (fldOffset=0x0)" P-INDEP
-;* V127 tmp110 [V127,T105] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP
-;* V128 tmp111 [V128,T102] ( 0, 0 ) byref -> zero-ref single-def "field V56._reference (fldOffset=0x0)" P-INDEP
-;* V129 tmp112 [V129,T106] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x8)" P-INDEP
+; V122 tmp105 [V122,T88] ( 3, 1.50) byref -> x28 "field V50._reference (fldOffset=0x0)" P-INDEP
+; V123 tmp106 [V123,T90] ( 3, 1.50) int -> x1 "field V50._length (fldOffset=0x8)" P-INDEP
+; V124 tmp107 [V124,T51] ( 2, 4.50) byref -> x28 single-def "field V52._reference (fldOffset=0x0)" P-INDEP
+; V125 tmp108 [V125,T31] ( 4, 9 ) int -> [fp-0xC4] spill-single-def "field V52._length (fldOffset=0x8)" P-INDEP
+;* V126 tmp109 [V126,T99] ( 0, 0 ) byref -> zero-ref single-def "field V55._reference (fldOffset=0x0)" P-INDEP
+;* V127 tmp110 [V127,T107] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP
+;* V128 tmp111 [V128,T100] ( 0, 0 ) byref -> zero-ref single-def "field V56._reference (fldOffset=0x0)" P-INDEP
+;* V129 tmp112 [V129,T108] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x8)" P-INDEP
;* V130 tmp113 [V130 ] ( 0, 0 ) byref -> zero-ref "field V59._reference (fldOffset=0x0)" P-DEP
;* V131 tmp114 [V131 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x8)" P-DEP
-; V132 tmp115 [V132,T59] ( 2, 4 ) byref -> x0 "field V60._reference (fldOffset=0x0)" P-INDEP
-; V133 tmp116 [V133,T68] ( 2, 4 ) int -> x1 "field V60._length (fldOffset=0x8)" P-INDEP
-; V134 tmp117 [V134,T54] ( 2, 4.50) byref -> x24 single-def "field V67._reference (fldOffset=0x0)" P-INDEP
-; V135 tmp118 [V135,T57] ( 2, 4.50) int -> x27 "field V67._length (fldOffset=0x8)" P-INDEP
+; V132 tmp115 [V132,T57] ( 2, 4 ) byref -> x0 "field V60._reference (fldOffset=0x0)" P-INDEP
+; V133 tmp116 [V133,T66] ( 2, 4 ) int -> x1 "field V60._length (fldOffset=0x8)" P-INDEP
+; V134 tmp117 [V134,T52] ( 2, 4.50) byref -> x24 single-def "field V67._reference (fldOffset=0x0)" P-INDEP
+; V135 tmp118 [V135,T55] ( 2, 4.50) int -> x27 "field V67._length (fldOffset=0x8)" P-INDEP
; V136 tmp119 [V136,T33] ( 5, 8.50) byref -> x26 single-def "field V68._reference (fldOffset=0x0)" P-INDEP
-; V137 tmp120 [V137,T51] ( 3, 4.50) int -> x25 "field V68._length (fldOffset=0x8)" P-INDEP
-; V138 tmp121 [V138,T91] ( 3, 1.50) byref -> x1 "field V81._reference (fldOffset=0x0)" P-INDEP
-; V139 tmp122 [V139,T93] ( 3, 1.50) int -> x2 "field V81._length (fldOffset=0x8)" P-INDEP
-; V140 tmp123 [V140,T55] ( 2, 4.50) byref -> [fp-0x138] spill-single-def "field V83._reference (fldOffset=0x0)" P-INDEP
-; V141 tmp124 [V141,T50] ( 3, 5 ) int -> [fp-0xD8] spill-single-def "field V83._length (fldOffset=0x8)" P-INDEP
-;* V142 tmp125 [V142,T103] ( 0, 0 ) byref -> zero-ref single-def "field V86._reference (fldOffset=0x0)" P-INDEP
-;* V143 tmp126 [V143,T107] ( 0, 0 ) int -> zero-ref "field V86._length (fldOffset=0x8)" P-INDEP
-;* V144 tmp127 [V144,T104] ( 0, 0 ) byref -> zero-ref single-def "field V87._reference (fldOffset=0x0)" P-INDEP
-;* V145 tmp128 [V145,T108] ( 0, 0 ) int -> zero-ref "field V87._length (fldOffset=0x8)" P-INDEP
+; V137 tmp120 [V137,T49] ( 3, 4.50) int -> x25 "field V68._length (fldOffset=0x8)" P-INDEP
+; V138 tmp121 [V138,T89] ( 3, 1.50) byref -> x1 "field V81._reference (fldOffset=0x0)" P-INDEP
+; V139 tmp122 [V139,T91] ( 3, 1.50) int -> x2 "field V81._length (fldOffset=0x8)" P-INDEP
+; V140 tmp123 [V140,T53] ( 2, 4.50) byref -> [fp-0x128] spill-single-def "field V83._reference (fldOffset=0x0)" P-INDEP
+; V141 tmp124 [V141,T32] ( 4, 9 ) int -> [fp-0xC8] spill-single-def "field V83._length (fldOffset=0x8)" P-INDEP
+;* V142 tmp125 [V142,T101] ( 0, 0 ) byref -> zero-ref single-def "field V86._reference (fldOffset=0x0)" P-INDEP
+;* V143 tmp126 [V143,T109] ( 0, 0 ) int -> zero-ref "field V86._length (fldOffset=0x8)" P-INDEP
+;* V144 tmp127 [V144,T102] ( 0, 0 ) byref -> zero-ref single-def "field V87._reference (fldOffset=0x0)" P-INDEP
+;* V145 tmp128 [V145,T110] ( 0, 0 ) int -> zero-ref "field V87._length (fldOffset=0x8)" P-INDEP
;* V146 tmp129 [V146 ] ( 0, 0 ) byref -> zero-ref "field V90._reference (fldOffset=0x0)" P-DEP
;* V147 tmp130 [V147 ] ( 0, 0 ) int -> zero-ref "field V90._length (fldOffset=0x8)" P-DEP
-; V148 tmp131 [V148,T60] ( 2, 4 ) byref -> x0 "field V91._reference (fldOffset=0x0)" P-INDEP
-; V149 tmp132 [V149,T69] ( 2, 4 ) int -> x1 "field V91._length (fldOffset=0x8)" P-INDEP
-; V150 tmp133 [V150,T61] ( 2, 4 ) byref -> x3 "field V98.Value (fldOffset=0x0)" P-INDEP
-; V151 tmp134 [V151,T62] ( 2, 4 ) byref -> x3 "field V103.Value (fldOffset=0x0)" P-INDEP
-; V152 tmp135 [V152,T56] ( 2, 4.50) byref -> x23 single-def "field V105._reference (fldOffset=0x0)" P-INDEP
-; V153 tmp136 [V153,T58] ( 2, 4.50) int -> x24 "field V105._length (fldOffset=0x8)" P-INDEP
+; V148 tmp131 [V148,T58] ( 2, 4 ) byref -> x0 "field V91._reference (fldOffset=0x0)" P-INDEP
+; V149 tmp132 [V149,T67] ( 2, 4 ) int -> x1 "field V91._length (fldOffset=0x8)" P-INDEP
+; V150 tmp133 [V150,T59] ( 2, 4 ) byref -> x3 "field V98.Value (fldOffset=0x0)" P-INDEP
+; V151 tmp134 [V151,T60] ( 2, 4 ) byref -> x3 "field V103.Value (fldOffset=0x0)" P-INDEP
+; V152 tmp135 [V152,T54] ( 2, 4.50) byref -> x23 single-def "field V105._reference (fldOffset=0x0)" P-INDEP
+; V153 tmp136 [V153,T56] ( 2, 4.50) int -> x24 "field V105._length (fldOffset=0x8)" P-INDEP
; V154 tmp137 [V154,T34] ( 5, 8.50) byref -> x21 single-def "field V106._reference (fldOffset=0x0)" P-INDEP
-; V155 tmp138 [V155,T52] ( 3, 4.50) int -> x22 "field V106._length (fldOffset=0x8)" P-INDEP
+; V155 tmp138 [V155,T50] ( 3, 4.50) int -> x22 "field V106._length (fldOffset=0x8)" P-INDEP
; V156 tmp139 [V156,T06] ( 3, 24 ) ref -> x0 "arr expr"
-; V157 tmp140 [V157,T21] ( 3, 12 ) ref -> x0 "argument with side effect"
-; V158 tmp141 [V158,T22] ( 3, 12 ) ref -> x0 "arr expr"
-; V159 tmp142 [V159,T23] ( 3, 12 ) ref -> x3 "arr expr"
+; V157 tmp140 [V157,T19] ( 3, 12 ) ref -> x0 "argument with side effect"
+; V158 tmp141 [V158,T20] ( 3, 12 ) ref -> x0 "arr expr"
+; V159 tmp142 [V159,T21] ( 3, 12 ) ref -> x3 "arr expr"
; V160 tmp143 [V160,T45] ( 3, 6 ) ref -> x3 "Field obj"
-; V161 tmp144 [V161,T24] ( 3, 12 ) ref -> x0 "arr expr"
+; V161 tmp144 [V161,T22] ( 3, 12 ) ref -> x0 "arr expr"
; V162 tmp145 [V162,T39] ( 2, 8 ) ref -> x2 "argument with side effect"
; V163 tmp146 [V163,T07] ( 3, 24 ) ref -> x0 "arr expr"
...
+24 (+25.00%) : 19926.dasm - System.Diagnostics.FileVersionInfo:ParseUInt16UntilNonDigit(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
@@ -10,12 +10,13 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
; V01 arg1 [V01,T05] ( 4, 3.50) byref -> x2 single-def
-; V02 loc0 [V02,T02] ( 4, 10 ) ushort -> x3
-; V03 loc1 [V03,T00] ( 5, 17 ) int -> x4
-; V04 loc2 [V04,T01] ( 3, 12 ) ushort -> x5
+; V02 loc0 [V02,T03] ( 4, 10 ) ushort -> x3
+;* V03 loc1 [V03,T06] ( 0, 0 ) int -> zero-ref
+; V04 loc2 [V04,T02] ( 3, 12 ) ushort -> x5
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T04] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V07 tmp2 [V07,T03] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp2 [V07,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V08 tmp3 [V08,T00] ( 6, 21 ) long -> x4 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -27,12 +28,15 @@ G_M23630_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, b
; byrRegs +[x0 x2]
strb wzr, [x2]
mov w3, wzr
- mov w4, wzr
cmp w1, #0
ble G_M23630_IG06
+ mov x4, xzr
;; size=20 bbWeight=1 PerfScore 3.50
G_M23630_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- ldrh w5, [x0, w4, UXTW #2]
+ cmp w4, w1
+ bhs G_M23630_IG08
+ lsl x5, x4, #1
+ ldrh w5, [x0, x5]
sub w6, w5, #48
cmp w6, #9
bhi G_M23630_IG05
@@ -41,9 +45,10 @@ G_M23630_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, b
sub w3, w3, #48
uxth w3, w3
add w4, w4, #1
+ mov w4, w4
cmp w4, w1
blt G_M23630_IG03
- ;; size=44 bbWeight=4 PerfScore 42.00
+ ;; size=60 bbWeight=4 PerfScore 54.00
G_M23630_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x2]
b G_M23630_IG06
@@ -61,8 +66,13 @@ G_M23630_IG07: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M23630_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 96, prolog size 8, PerfScore 51.25, instruction count 24, allocated bytes for code 96 (MethodHash=40d3a3b1) for method System.Diagnostics.FileVersionInfo:ParseUInt16UntilNonDigit(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
+; Total bytes of code 120, prolog size 8, PerfScore 63.25, instruction count 30, allocated bytes for code 120 (MethodHash=40d3a3b1) for method System.Diagnostics.FileVersionInfo:ParseUInt16UntilNonDigit(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
; ============================================================
Unwind Info:
@@ -73,7 +83,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 24 (0x00018) Actual length = 96 (0x000060)
+ Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+27.78%) : 44295.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
@@ -8,12 +8,13 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 loc0 [V01,T01] ( 4, 10 ) int -> x2
-; V02 loc1 [V02,T00] ( 5, 17 ) int -> x3
+; V01 loc0 [V01,T02] ( 4, 10 ) int -> x2
+;* V02 loc1 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V06 cse0 [V06,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
+; V07 cse0 [V07,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -25,20 +26,23 @@ G_M53167_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
; byrRegs +[x0]
movz w2, #0xD1FFAB1E
movk w2, #0xD1FFAB1E LSL #16
- mov w3, wzr
cmp w1, #0
ble G_M53167_IG04
+ mov x3, xzr
movz w4, #0xD1FFAB1E
movk w4, #0xD1FFAB1E LSL #16
;; size=28 bbWeight=1 PerfScore 4.00
G_M53167_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w5, [x0, w3, UXTW #2]
+ cmp w3, w1
+ bhs G_M53167_IG06
+ ldrb w5, [x0, x3]
eor w2, w5, w2
mul w2, w2, w4
add w3, w3, #1
+ mov w3, w3
cmp w3, w1
blt G_M53167_IG03
- ;; size=24 bbWeight=4 PerfScore 30.00
+ ;; size=36 bbWeight=4 PerfScore 38.00
G_M53167_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov w0, w2
@@ -47,8 +51,13 @@ G_M53167_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M53167_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 72, prolog size 8, PerfScore 38.00, instruction count 18, allocated bytes for code 72 (MethodHash=48b13050) for method System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
+; Total bytes of code 92, prolog size 8, PerfScore 46.00, instruction count 23, allocated bytes for code 92 (MethodHash=48b13050) for method System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
; ============================================================
Unwind Info:
@@ -59,7 +68,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 18 (0x00012) Actual length = 72 (0x000048)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+40.00%) : 47624.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
@@ -9,11 +9,12 @@
;
; V00 arg0 [V00,T01] ( 5, 11 ) int -> x0
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 17 ) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V06 cse0 [V06,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 10 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
+; V07 cse0 [V07,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -23,27 +24,36 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0
ble G_M1770_IG04
+ mov x3, xzr
movz w4, #0xD1FFAB1E
movk w4, #0xD1FFAB1E LSL #16
;; size=20 bbWeight=1 PerfScore 3.00
G_M1770_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2
+ bhs G_M1770_IG05
+ lsl x5, x3, #1
+ ldrh w5, [x1, x5]
eor w0, w5, w0
mul w0, w0, w4
add w3, w3, #1
+ mov w3, w3
cmp w3, w2
blt G_M1770_IG03
- ;; size=24 bbWeight=4 PerfScore 30.00
+ ;; size=40 bbWeight=4 PerfScore 42.00
G_M1770_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 36.50, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
+; Total bytes of code 84, prolog size 8, PerfScore 48.50, instruction count 21, allocated bytes for code 84 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
; ============================================================
Unwind Info:
@@ -54,7 +64,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
coreclr_tests.run.linux.arm64.checked.mch
-16 (-4.76%) : 612203.dasm - ILCompiler.LazyGenericsSupport+Graph1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph1+Vertex[System.__Canon],ubyte):this (Tier1)
@@ -13,7 +13,7 @@
; V01 arg1 [V01,T05] ( 4, 17.20) ref -> x1 class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
; V02 arg2 [V02,T10] ( 4, 3 ) ubyte -> x2 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
-; V04 loc1 [V04,T00] ( 11, 86.22) int -> x14
+; V04 loc1 [V04,T18] ( 3, 0.00) int -> x14
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "location for address-of(RValue)" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
@@ -21,7 +21,7 @@
; V09 tmp3 [V09,T02] ( 2, 56.81) ref -> x15 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
; V11 tmp5 [V11,T22] ( 2, 0.00) ref -> x15 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
-; V12 tmp6 [V12,T18] ( 4, 0.00) ref -> x3 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
+; V12 tmp6 [V12,T19] ( 4, 0.00) ref -> x4 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
;* V13 tmp7 [V13 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
; V15 tmp9 [V15,T07] ( 6, 10.72) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
@@ -30,8 +30,8 @@
;* V18 tmp12 [V18 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
; V19 tmp13 [V19,T14] ( 3, 2.36) ref -> x1 single-def "field V03.Destination (fldOffset=0x0)" P-INDEP
; V20 tmp14 [V20,T15] ( 3, 2.36) ubyte -> x2 single-def "field V03.Flagged (fldOffset=0x8)" P-INDEP
-; V21 tmp15 [V21,T23] ( 2, 0.00) ref -> x15 "field V05.Destination (fldOffset=0x0)" P-INDEP
-;* V22 tmp16 [V22,T24] ( 0, 0 ) ubyte -> zero-ref "field V05.Flagged (fldOffset=0x8)" P-INDEP
+; V21 tmp15 [V21,T24] ( 2, 0.00) ref -> x15 "field V05.Destination (fldOffset=0x0)" P-INDEP
+;* V22 tmp16 [V22,T26] ( 0, 0 ) ubyte -> zero-ref "field V05.Flagged (fldOffset=0x8)" P-INDEP
; V23 tmp17 [V23,T03] ( 3, 42.61) ref -> x15 "field V07.Destination (fldOffset=0x0)" P-INDEP
;* V24 tmp18 [V24 ] ( 0, 0 ) ubyte -> zero-ref "field V07.Flagged (fldOffset=0x8)" P-INDEP
;* V25 tmp19 [V25 ] ( 0, 0 ) ref -> zero-ref "field V13.Destination (fldOffset=0x0)" P-INDEP
@@ -39,15 +39,17 @@
;* V27 tmp21 [V27 ] ( 0, 0 ) ref -> zero-ref single-def "field V18.Destination (fldOffset=0x0)" P-INDEP
;* V28 tmp22 [V28 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V18.Flagged (fldOffset=0x8)" P-INDEP
; V29 tmp23 [V29,T01] ( 3, 85.22) ref -> x15 "arr expr"
-; V30 tmp24 [V30,T19] ( 3, 0.00) ref -> x15 "arr expr"
-; V31 tmp25 [V31,T20] ( 3, 0.00) ref -> x12 "arr expr"
-; V32 tmp26 [V32,T21] ( 3, 0.00) byref -> x4 "BlockOp address local"
+; V30 tmp24 [V30,T20] ( 3, 0.00) ref -> x15 "arr expr"
+;* V31 tmp25 [V31,T25] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V32 tmp26 [V32,T21] ( 3, 0.00) byref -> x3 "BlockOp address local"
; V33 tmp27 [V33,T16] ( 3, 2.16) byref -> x0 single-def "BlockOp address local"
-; V34 cse0 [V34,T04] ( 5, 31.40) int -> x3 "CSE - aggressive"
-; V35 cse1 [V35,T06] ( 6, 17.20) ref -> x0 "CSE - aggressive"
-;* V36 rat0 [V36,T11] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V37 rat1 [V37,T17] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V38 rat2 [V38,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V34 tmp28 [V34,T00] ( 8, 86.15) long -> x14 "Widened primary induction variable"
+; V35 cse0 [V35,T23] ( 3, 0.00) byref -> x3 "CSE - conservative"
+; V36 cse1 [V36,T04] ( 5, 31.40) int -> x3 "CSE - aggressive"
+; V37 cse2 [V37,T06] ( 6, 17.20) ref -> x0 "CSE - aggressive"
+;* V38 rat0 [V38,T11] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V39 rat1 [V39,T17] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V40 rat2 [V40,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -60,33 +62,36 @@ G_M27820_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=16 bbWeight=1 PerfScore 3.00
G_M27820_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
- mov w14, wzr
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
ldr w3, [x0, #0x10]
cmp w3, #0
- ble G_M27820_IG04
- ;; size=20 bbWeight=1 PerfScore 8.00
-G_M27820_IG03: ; bbWeight=14.20, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
+ ble G_M27820_IG05
+ ;; size=16 bbWeight=1 PerfScore 7.50
+G_M27820_IG03: ; bbWeight=0.93, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref
+ mov x14, xzr
+ ;; size=4 bbWeight=0.93 PerfScore 0.47
+G_M27820_IG04: ; bbWeight=14.20, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
mov x15, x0
; gcrRegs +[x15]
cmp w14, w3
- bhs G_M27820_IG09
+ bhs G_M27820_IG10
ldr x15, [x15, #0x08]
ldr w12, [x15, #0x08]
cmp w14, w12
- bhs G_M27820_IG08
- ubfiz x12, x14, #4, #32
+ bhs G_M27820_IG09
+ lsl x12, x14, #4
add x12, x12, #16
ldr x15, [x15, x12]
ldrsb wzr, [x15]
cmp x15, x1
- beq G_M27820_IG07
+ beq G_M27820_IG08
add w14, w14, #1
+ mov w14, w14
cmp w14, w3
- blt G_M27820_IG03
- ;; size=64 bbWeight=14.20 PerfScore 291.15
-G_M27820_IG04: ; bbWeight=1.00, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
+ blt G_M27820_IG04
+ ;; size=68 bbWeight=14.20 PerfScore 298.26
+G_M27820_IG05: ; bbWeight=1.00, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x15]
uxtb w2, w2
ldr w14, [x0, #0x14]
@@ -96,7 +101,7 @@ G_M27820_IG04: ; bbWeight=1.00, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=00
; gcrRegs +[x4]
ldr w14, [x4, #0x08]
cmp w14, w3
- bhi G_M27820_IG06
+ bhi G_M27820_IG07
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
@@ -105,12 +110,12 @@ G_M27820_IG04: ; bbWeight=1.00, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=00
; gcrRegs -[x0-x1 x4]
; gcr arg pop 0
;; size=52 bbWeight=1.00 PerfScore 17.99
-G_M27820_IG05: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M27820_IG06: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.00 PerfScore 0.00
-G_M27820_IG06: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=80013 {x0 x1 x4 x19}, byrefRegs=0000 {}, gcvars, byref
+G_M27820_IG07: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=80013 {x0 x1 x4 x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0-x1 x4]
add w14, w3, #1
str w14, [x0, #0x10]
@@ -127,52 +132,46 @@ G_M27820_IG06: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=800
; gcrRegs -[x1 x4 x15]
; byrRegs -[x14]
strb w2, [x0, #0x08]
- b G_M27820_IG05
+ b G_M27820_IG06
;; size=40 bbWeight=0.36 PerfScore 2.71
-G_M27820_IG07: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M27820_IG08: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
; byrRegs -[x0]
tst w2, #255
- beq G_M27820_IG05
+ beq G_M27820_IG06
mov x15, x0
; gcrRegs +[x15]
ldr x15, [x15, #0x08]
ldr w12, [x15, #0x08]
cmp w14, w12
- bhs G_M27820_IG08
- ubfiz x12, x14, #4, #32
- add x12, x12, #16
- ldr x15, [x15, x12]
- mov x3, x0
- ; gcrRegs +[x3]
- ldr x12, [x3, #0x08]
- ; gcrRegs +[x12]
- ldr wip0, [x12, #0x08]
- cmp w14, wip0
- bhs G_M27820_IG08
+ bhs G_M27820_IG09
ubfiz x14, x14, #4, #32
add x14, x14, #16
- add x4, x12, x14
- ; byrRegs +[x4]
- mov x14, x4
+ add x3, x15, x14
+ ; byrRegs +[x3]
+ ldr x15, [x3]
+ mov x4, x0
+ ; gcrRegs +[x4]
+ ldr xzr, [x4, #0x08]
+ mov x14, x3
; byrRegs +[x14]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[x0 x12 x15]
+ ; gcrRegs -[x0 x15]
; byrRegs -[x14]
mov w1, #1
- strb w1, [x4, #0x08]
- ldr w14, [x3, #0x14]
+ strb w1, [x3, #0x08]
+ ldr w14, [x4, #0x14]
add w14, w14, #1
- str w14, [x3, #0x14]
- b G_M27820_IG05
- ;; size=104 bbWeight=0.00 PerfScore 0.02
-G_M27820_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x3]
- ; byrRegs -[x4]
+ str w14, [x4, #0x14]
+ b G_M27820_IG06
+ ;; size=84 bbWeight=0.00 PerfScore 0.01
+G_M27820_IG09: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x4]
+ ; byrRegs -[x3]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M27820_IG09: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M27820_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -182,7 +181,7 @@ G_M27820_IG09: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 336, prolog size 16, PerfScore 322.87, instruction count 84, allocated bytes for code 336 (MethodHash=28189353) for method ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon],ubyte):this (Tier1)
+; Total bytes of code 320, prolog size 16, PerfScore 329.93, instruction count 80, allocated bytes for code 320 (MethodHash=28189353) for method ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon],ubyte):this (Tier1)
; ============================================================
Unwind Info:
@@ -193,7 +192,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 84 (0x00054) Actual length = 336 (0x000150)
+ Function Length : 80 (0x00050) Actual length = 320 (0x000140)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-16 (-4.76%) : 617676.dasm - ILCompiler.LazyGenericsSupport+Graph1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph1+Vertex[System.__Canon],ubyte):this (Tier1)
@@ -13,7 +13,7 @@
; V01 arg1 [V01,T05] ( 4, 17.35) ref -> x1 class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
; V02 arg2 [V02,T10] ( 4, 3 ) ubyte -> x2 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
-; V04 loc1 [V04,T00] ( 11, 87.12) int -> x14
+; V04 loc1 [V04,T18] ( 3, 0.00) int -> x14
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "location for address-of(RValue)" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
@@ -21,7 +21,7 @@
; V09 tmp3 [V09,T02] ( 2, 57.41) ref -> x15 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
; V11 tmp5 [V11,T22] ( 2, 0.00) ref -> x15 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
-; V12 tmp6 [V12,T18] ( 4, 0.00) ref -> x3 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
+; V12 tmp6 [V12,T19] ( 4, 0.00) ref -> x4 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
;* V13 tmp7 [V13 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
; V15 tmp9 [V15,T07] ( 6, 10.72) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
@@ -30,8 +30,8 @@
;* V18 tmp12 [V18 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
; V19 tmp13 [V19,T14] ( 3, 2.36) ref -> x1 single-def "field V03.Destination (fldOffset=0x0)" P-INDEP
; V20 tmp14 [V20,T15] ( 3, 2.36) ubyte -> x2 single-def "field V03.Flagged (fldOffset=0x8)" P-INDEP
-; V21 tmp15 [V21,T23] ( 2, 0.00) ref -> x15 "field V05.Destination (fldOffset=0x0)" P-INDEP
-;* V22 tmp16 [V22,T24] ( 0, 0 ) ubyte -> zero-ref "field V05.Flagged (fldOffset=0x8)" P-INDEP
+; V21 tmp15 [V21,T24] ( 2, 0.00) ref -> x15 "field V05.Destination (fldOffset=0x0)" P-INDEP
+;* V22 tmp16 [V22,T26] ( 0, 0 ) ubyte -> zero-ref "field V05.Flagged (fldOffset=0x8)" P-INDEP
; V23 tmp17 [V23,T03] ( 3, 43.06) ref -> x15 "field V07.Destination (fldOffset=0x0)" P-INDEP
;* V24 tmp18 [V24 ] ( 0, 0 ) ubyte -> zero-ref "field V07.Flagged (fldOffset=0x8)" P-INDEP
;* V25 tmp19 [V25 ] ( 0, 0 ) ref -> zero-ref "field V13.Destination (fldOffset=0x0)" P-INDEP
@@ -39,15 +39,17 @@
;* V27 tmp21 [V27 ] ( 0, 0 ) ref -> zero-ref single-def "field V18.Destination (fldOffset=0x0)" P-INDEP
;* V28 tmp22 [V28 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V18.Flagged (fldOffset=0x8)" P-INDEP
; V29 tmp23 [V29,T01] ( 3, 86.12) ref -> x15 "arr expr"
-; V30 tmp24 [V30,T19] ( 3, 0.00) ref -> x15 "arr expr"
-; V31 tmp25 [V31,T20] ( 3, 0.00) ref -> x12 "arr expr"
-; V32 tmp26 [V32,T21] ( 3, 0.00) byref -> x4 "BlockOp address local"
+; V30 tmp24 [V30,T20] ( 3, 0.00) ref -> x15 "arr expr"
+;* V31 tmp25 [V31,T25] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V32 tmp26 [V32,T21] ( 3, 0.00) byref -> x3 "BlockOp address local"
; V33 tmp27 [V33,T16] ( 3, 2.16) byref -> x0 single-def "BlockOp address local"
-; V34 cse0 [V34,T04] ( 5, 31.70) int -> x3 "CSE - aggressive"
-; V35 cse1 [V35,T06] ( 6, 17.35) ref -> x0 "CSE - aggressive"
-;* V36 rat0 [V36,T11] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V37 rat1 [V37,T17] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V38 rat2 [V38,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V34 tmp28 [V34,T00] ( 8, 87.05) long -> x14 "Widened primary induction variable"
+; V35 cse0 [V35,T23] ( 3, 0.00) byref -> x3 "CSE - conservative"
+; V36 cse1 [V36,T04] ( 5, 31.70) int -> x3 "CSE - aggressive"
+; V37 cse2 [V37,T06] ( 6, 17.35) ref -> x0 "CSE - aggressive"
+;* V38 rat0 [V38,T11] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V39 rat1 [V39,T17] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V40 rat2 [V40,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -60,33 +62,36 @@ G_M27820_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=16 bbWeight=1 PerfScore 3.00
G_M27820_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
- mov w14, wzr
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
ldr w3, [x0, #0x10]
cmp w3, #0
- ble G_M27820_IG04
- ;; size=20 bbWeight=1 PerfScore 8.00
-G_M27820_IG03: ; bbWeight=14.35, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
+ ble G_M27820_IG05
+ ;; size=16 bbWeight=1 PerfScore 7.50
+G_M27820_IG03: ; bbWeight=0.93, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref
+ mov x14, xzr
+ ;; size=4 bbWeight=0.93 PerfScore 0.47
+G_M27820_IG04: ; bbWeight=14.35, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
mov x15, x0
; gcrRegs +[x15]
cmp w14, w3
- bhs G_M27820_IG09
+ bhs G_M27820_IG10
ldr x15, [x15, #0x08]
ldr w12, [x15, #0x08]
cmp w14, w12
- bhs G_M27820_IG08
- ubfiz x12, x14, #4, #32
+ bhs G_M27820_IG09
+ lsl x12, x14, #4
add x12, x12, #16
ldr x15, [x15, x12]
ldrsb wzr, [x15]
cmp x15, x1
- beq G_M27820_IG07
+ beq G_M27820_IG08
add w14, w14, #1
+ mov w14, w14
cmp w14, w3
- blt G_M27820_IG03
- ;; size=64 bbWeight=14.35 PerfScore 294.23
-G_M27820_IG04: ; bbWeight=1.00, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
+ blt G_M27820_IG04
+ ;; size=68 bbWeight=14.35 PerfScore 301.41
+G_M27820_IG05: ; bbWeight=1.00, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x15]
uxtb w2, w2
ldr w14, [x0, #0x14]
@@ -96,7 +101,7 @@ G_M27820_IG04: ; bbWeight=1.00, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=00
; gcrRegs +[x4]
ldr w14, [x4, #0x08]
cmp w14, w3
- bhi G_M27820_IG06
+ bhi G_M27820_IG07
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
@@ -105,12 +110,12 @@ G_M27820_IG04: ; bbWeight=1.00, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=00
; gcrRegs -[x0-x1 x4]
; gcr arg pop 0
;; size=52 bbWeight=1.00 PerfScore 17.99
-G_M27820_IG05: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M27820_IG06: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.00 PerfScore 0.00
-G_M27820_IG06: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=80013 {x0 x1 x4 x19}, byrefRegs=0000 {}, gcvars, byref
+G_M27820_IG07: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=80013 {x0 x1 x4 x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0-x1 x4]
add w14, w3, #1
str w14, [x0, #0x10]
@@ -127,52 +132,46 @@ G_M27820_IG06: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=800
; gcrRegs -[x1 x4 x15]
; byrRegs -[x14]
strb w2, [x0, #0x08]
- b G_M27820_IG05
+ b G_M27820_IG06
;; size=40 bbWeight=0.36 PerfScore 2.71
-G_M27820_IG07: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M27820_IG08: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
; byrRegs -[x0]
tst w2, #255
- beq G_M27820_IG05
+ beq G_M27820_IG06
mov x15, x0
; gcrRegs +[x15]
ldr x15, [x15, #0x08]
ldr w12, [x15, #0x08]
cmp w14, w12
- bhs G_M27820_IG08
- ubfiz x12, x14, #4, #32
- add x12, x12, #16
- ldr x15, [x15, x12]
- mov x3, x0
- ; gcrRegs +[x3]
- ldr x12, [x3, #0x08]
- ; gcrRegs +[x12]
- ldr wip0, [x12, #0x08]
- cmp w14, wip0
- bhs G_M27820_IG08
+ bhs G_M27820_IG09
ubfiz x14, x14, #4, #32
add x14, x14, #16
- add x4, x12, x14
- ; byrRegs +[x4]
- mov x14, x4
+ add x3, x15, x14
+ ; byrRegs +[x3]
+ ldr x15, [x3]
+ mov x4, x0
+ ; gcrRegs +[x4]
+ ldr xzr, [x4, #0x08]
+ mov x14, x3
; byrRegs +[x14]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[x0 x12 x15]
+ ; gcrRegs -[x0 x15]
; byrRegs -[x14]
mov w1, #1
- strb w1, [x4, #0x08]
- ldr w14, [x3, #0x14]
+ strb w1, [x3, #0x08]
+ ldr w14, [x4, #0x14]
add w14, w14, #1
- str w14, [x3, #0x14]
- b G_M27820_IG05
- ;; size=104 bbWeight=0.00 PerfScore 0.02
-G_M27820_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x3]
- ; byrRegs -[x4]
+ str w14, [x4, #0x14]
+ b G_M27820_IG06
+ ;; size=84 bbWeight=0.00 PerfScore 0.01
+G_M27820_IG09: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x4]
+ ; byrRegs -[x3]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M27820_IG09: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M27820_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -182,7 +181,7 @@ G_M27820_IG09: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 336, prolog size 16, PerfScore 325.95, instruction count 84, allocated bytes for code 336 (MethodHash=28189353) for method ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon],ubyte):this (Tier1)
+; Total bytes of code 320, prolog size 16, PerfScore 333.09, instruction count 80, allocated bytes for code 320 (MethodHash=28189353) for method ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon],ubyte):this (Tier1)
; ============================================================
Unwind Info:
@@ -193,7 +192,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 84 (0x00054) Actual length = 336 (0x000150)
+ Function Length : 80 (0x00050) Actual length = 320 (0x000140)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-3.18%) : 519857.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
@@ -12,27 +12,27 @@
; V00 this [V00,T00] ( 10, 11 ) ref -> x19 this class-hnd single-def <System.Reflection.MethodBaseInvoker>
; V01 arg1 [V01,T05] ( 4, 3 ) ref -> x20 class-hnd single-def <System.Object>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Object]>
-; V03 arg3 [V03,T07] ( 3, 2 ) int -> [fp+0x3C] EH-live single-def
-; V04 loc0 [V04 ] ( 2, 2 ) struct (32) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.MethodBase+StackAllocatedByRefs>
+; V03 arg3 [V03,T07] ( 3, 2 ) int -> [fp+0x44] EH-live single-def
+; V04 loc0 [V04 ] ( 2, 2 ) struct (32) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.MethodBase+StackAllocatedByRefs>
; V05 loc1 [V05,T11] ( 4, 3 ) long -> x23
-; V06 loc2 [V06,T02] ( 9, 9 ) int -> x4
+;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Object>
-; V08 loc4 [V08,T24] ( 2, 0 ) ref -> [fp+0x10] must-init class-hnd EH-live single-def <<unknown class>>
+; V08 loc4 [V08,T23] ( 2, 0 ) ref -> [fp+0x18] must-init class-hnd EH-live single-def <<unknown class>>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T18] ( 2, 2 ) long -> x24
+; V10 tmp1 [V10,T17] ( 2, 2 ) long -> x24
;* V11 tmp2 [V11 ] ( 0, 0 ) long -> zero-ref
;* V12 tmp3 [V12 ] ( 0, 0 ) struct ( 8) zero-ref <System.ByReference>
-; V13 tmp4 [V13,T25] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
-; V14 tmp5 [V14,T20] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
+; V13 tmp4 [V13,T24] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
+; V14 tmp5 [V14,T19] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
-; V16 tmp7 [V16,T23] ( 3, 0 ) int -> x0
+; V16 tmp7 [V16,T22] ( 3, 0 ) int -> x0
;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
-; V18 tmp9 [V18,T21] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V19 tmp10 [V19,T15] ( 3, 2 ) ref -> x0 "guarded devirt return temp"
+; V18 tmp9 [V18,T20] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V19 tmp10 [V19,T14] ( 3, 2 ) ref -> x0 "guarded devirt return temp"
; V20 tmp11 [V20,T03] ( 5, 6.68) ref -> x22 single-def "guarded devirt arg temp"
;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <System.Reflection.MethodBaseInvoker>
;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V23 tmp14 [V23,T01] ( 5, 10 ) byref -> x23 single-def "Inlining Arg"
+; V23 tmp14 [V23,T02] ( 5, 10 ) byref -> x23 single-def "Inlining Arg"
; V24 tmp15 [V24,T09] ( 2, 4 ) byref -> x24 single-def "Inlining Arg"
; V25 tmp16 [V25,T10] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
;* V26 tmp17 [V26 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -43,32 +43,31 @@
;* V31 tmp22 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ByReference>
; V32 tmp23 [V32,T06] ( 3, 2 ) byref -> x21 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
; V33 tmp24 [V33,T08] ( 3, 2 ) int -> x22 single-def "field V02._length (fldOffset=0x8)" P-INDEP
-; V34 tmp25 [V34,T16] ( 3, 2 ) byref -> x5 "field V12.Value (fldOffset=0x0)" P-INDEP
-; V35 tmp26 [V35,T17] ( 2, 2 ) byref -> x5 "field V27.Value (fldOffset=0x0)" P-INDEP
-; V36 tmp27 [V36,T26] ( 2, 0 ) byref -> x5 "field V31.Value (fldOffset=0x0)" P-INDEP
+; V34 tmp25 [V34,T15] ( 3, 2 ) byref -> x5 "field V12.Value (fldOffset=0x0)" P-INDEP
+; V35 tmp26 [V35,T16] ( 2, 2 ) byref -> x5 "field V27.Value (fldOffset=0x0)" P-INDEP
+; V36 tmp27 [V36,T25] ( 2, 0 ) byref -> x5 "field V31.Value (fldOffset=0x0)" P-INDEP
; V37 tmp28 [V37,T04] ( 3, 6 ) ref -> x2 "arr expr"
-; V38 tmp29 [V38,T22] ( 3, 0 ) ref -> x0 "Field obj"
-; V39 PSPSym [V39,T19] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
-; V40 cse0 [V40,T13] ( 3, 3 ) ref -> x1 "CSE - aggressive"
-; V41 cse1 [V41,T14] ( 3, 3 ) int -> x1 "CSE - aggressive"
-; V42 cse2 [V42,T12] ( 4, 3 ) long -> x25 "CSE - aggressive"
+; V38 tmp29 [V38,T21] ( 3, 0 ) ref -> x0 "Field obj"
+; V39 PSPSym [V39,T18] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
+; V40 tmp31 [V40,T01] ( 11, 10 ) long -> x4 "Widened primary induction variable"
+; V41 cse0 [V41,T12] ( 3, 3 ) ref -> x1 "CSE - aggressive"
+; V42 cse1 [V42,T13] ( 3, 3 ) int -> x1 "CSE - aggressive"
;
-; Lcl frame size = 56
+; Lcl frame size = 64
G_M51382_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x80]!
- stp x19, x20, [sp, #0x48]
- stp x21, x22, [sp, #0x58]
- stp x23, x24, [sp, #0x68]
- str x25, [sp, #0x78]
+ stp x19, x20, [sp, #0x50]
+ stp x21, x22, [sp, #0x60]
+ stp x23, x24, [sp, #0x70]
mov fp, sp
- add x9, fp, #16
+ add x9, fp, #24
movi v16.16b, #0
stp q16, q16, [x9]
str xzr, [x9, #0x20]
add x5, sp, #128
- str x5, [fp, #0x40] // [V39 PSPSym]
- str w4, [fp, #0x3C] // [V03 arg3]
+ str x5, [fp, #0x48] // [V39 PSPSym]
+ str w4, [fp, #0x44] // [V03 arg3]
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
@@ -76,9 +75,9 @@ G_M51382_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x21, x2
; byrRegs +[x21]
mov w22, w3
- ;; size=68 bbWeight=1 PerfScore 13.00
-G_M51382_IG02: ; bbWeight=1, gcVars=0000000001000000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
- ; GC ptr vars +{V08 V24}
+ ;; size=64 bbWeight=1 PerfScore 12.00
+G_M51382_IG02: ; bbWeight=1, gcVars=0000000000800000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
+ ; GC ptr vars +{V08 V23}
ldr w0, [x19, #0x40]
cmp w0, #4
ble G_M51382_IG03
@@ -133,10 +132,10 @@ G_M51382_IG04: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=1A0
;; size=48 bbWeight=1 PerfScore 12.50
G_M51382_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
; byrRegs -[x23]
- stp xzr, xzr, [fp, #0x18]
- stp xzr, xzr, [fp, #0x28]
- add x23, fp, #24 // [V04 loc0]
- mov w4, wzr
+ stp xzr, xzr, [fp, #0x20]
+ stp xzr, xzr, [fp, #0x30]
+ add x23, fp, #32 // [V04 loc0]
+ mov x4, xzr
b G_M51382_IG08
;; size=20 bbWeight=1 PerfScore 4.00
G_M51382_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
@@ -150,21 +149,21 @@ G_M51382_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000
add x2, x2, #16
; gcrRegs -[x2]
; byrRegs +[x2]
- mov w25, w4
- lsl x0, x25, #2
+ lsl x0, x4, #2
ldr w2, [x2, x0]
; byrRegs -[x2]
tbnz w2, #0, G_M51382_IG14
cmp w4, w22
bhs G_M51382_IG13
- lsl x2, x25, #3
+ lsl x2, x4, #3
add x5, x21, x2
; byrRegs +[x5]
- ;; size=60 bbWeight=1 PerfScore 18.00
+ ;; size=56 bbWeight=1 PerfScore 17.50
G_M51382_IG07: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200020 {x5 x21}, byref
str x5, [x24]
add w4, w4, #1
- ;; size=8 bbWeight=1 PerfScore 1.50
+ mov w4, w4
+ ;; size=12 bbWeight=1 PerfScore 2.00
G_M51382_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
; byrRegs -[x5]
ldr w2, [x19, #0x40]
@@ -209,26 +208,25 @@ G_M51382_IG11: ; bbWeight=0.34, gcrefRegs=500000 {x20 x22}, byrefRegs=000
; gcr arg pop 0
;; size=20 bbWeight=0.34 PerfScore 2.72
G_M51382_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
- ; GC ptr vars -{V08 V24}
- ldr x25, [sp, #0x78]
- ldp x23, x24, [sp, #0x68]
- ldp x21, x22, [sp, #0x58]
- ldp x19, x20, [sp, #0x48]
+ ; GC ptr vars -{V08 V23}
+ ldp x23, x24, [sp, #0x70]
+ ldp x21, x22, [sp, #0x60]
+ ldp x19, x20, [sp, #0x50]
ldp fp, lr, [sp], #0x80
ret lr
- ;; size=24 bbWeight=1 PerfScore 7.00
+ ;; size=20 bbWeight=1 PerfScore 5.00
G_M51382_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M51382_IG14: ; bbWeight=0, gcVars=0000000001000000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
+G_M51382_IG14: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
; gcrRegs +[x19-x20]
; byrRegs +[x21]
- ; GC ptr vars +{V08 V24}
+ ; GC ptr vars +{V08 V23}
cmp w4, w22
bhs G_M51382_IG13
- lsl x0, x25, #3
+ lsl x0, x4, #3
ldr x0, [x21, x0]
; gcrRegs +[x0]
ldrsb wzr, [x0]
@@ -240,15 +238,14 @@ G_M51382_IG15: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
; gcrRegs -[x19-x20]
; byrRegs -[x5 x21]
stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- stp x23, x24, [sp, #0x38]
- str x25, [sp, #0x48]
- ldr x1, [x1, #-0x40]
- str x1, [sp, #0x10]
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
+ stp x23, x24, [sp, #0x40]
+ ldr x1, [x1, #-0x38]
+ str x1, [sp, #0x18]
sub fp, x1, #128
- ;; size=32 bbWeight=0 PerfScore 0.00
-G_M51382_IG16: ; bbWeight=0, gcVars=0000000001000000 {V08}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M51382_IG16: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
mov x1, x0
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -266,32 +263,30 @@ G_M51382_IG16: ; bbWeight=0, gcVars=0000000001000000 {V08}, gcrefRegs=000
b G_M51382_IG18
;; size=36 bbWeight=0 PerfScore 0.00
G_M51382_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V08 V24}
- str x1, [fp, #0x10] // [V08 loc4]
+ ; GC ptr vars -{V08 V23}
+ str x1, [fp, #0x18] // [V08 loc4]
; GC ptr vars +{V08}
- ldr w4, [fp, #0x3C] // [V03 arg3]
+ ldr w4, [fp, #0x44] // [V03 arg3]
tst w4, #0xD1FFAB1E
cset x0, eq
;; size=16 bbWeight=0 PerfScore 0.00
-G_M51382_IG18: ; bbWeight=0, gcVars=0000000001000000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet epilog, nogc
+G_M51382_IG18: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet epilog, nogc
; gcrRegs -[x1]
- ldr x25, [sp, #0x48]
- ldp x23, x24, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
+ ldp x23, x24, [sp, #0x40]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x50
ret lr
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M51382_IG19: ; bbWeight=0, gcVars=0000000001000000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M51382_IG19: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- stp x23, x24, [sp, #0x38]
- str x25, [sp, #0x48]
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
+ stp x23, x24, [sp, #0x40]
add x3, fp, #128
- str x3, [sp, #0x10]
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M51382_IG20: ; bbWeight=0, gcVars=0000000001000000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ str x3, [sp, #0x18]
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M51382_IG20: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -300,7 +295,7 @@ G_M51382_IG20: ; bbWeight=0, gcVars=0000000001000000 {V08}, gcrefRegs=000
; gcr arg pop 0
...
+20 (+45.45%) : 203734.dasm - Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
@@ -8,10 +8,11 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 loc0 [V01,T00] ( 6, 21 ) int -> x2
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp3 [V05,T00] ( 7, 25 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -21,23 +22,31 @@ G_M31126_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M31126_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0
ble G_M31126_IG04
+ mov x2, xzr
;; size=12 bbWeight=1 PerfScore 2.00
G_M31126_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- strb w2, [x0, w2, UXTW #2]
+ cmp w2, w1
+ bhs G_M31126_IG05
+ strb w2, [x0, x2]
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
blt G_M31126_IG03
- ;; size=16 bbWeight=4 PerfScore 12.00
+ ;; size=28 bbWeight=4 PerfScore 20.00
G_M31126_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M31126_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 44, prolog size 8, PerfScore 17.50, instruction count 11, allocated bytes for code 44 (MethodHash=c32d8669) for method Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 25.50, instruction count 16, allocated bytes for code 64 (MethodHash=c32d8669) for method Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
; ============================================================
Unwind Info:
@@ -48,7 +57,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+46.15%) : 252635.dasm - GitHub_5556:SpanAsParam(System.Span`1[long]):long (FullOpts)
@@ -9,10 +9,11 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[long]>
; V01 loc0 [V01,T03] ( 3, 6 ) long -> x2
-; V02 loc1 [V02,T00] ( 5, 17 ) int -> x3
+;* V02 loc1 [V02,T04] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T02] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T01] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp2 [V05,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -23,16 +24,20 @@ G_M19747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M19747_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
mov x2, xzr
- mov w3, wzr
cmp w1, #0
ble G_M19747_IG04
+ mov x3, xzr
;; size=16 bbWeight=1 PerfScore 2.50
G_M19747_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr x2, [x0, w3, UXTW #3]
+ cmp w3, w1
+ bhs G_M19747_IG06
+ lsl x2, x3, #3
+ ldr x2, [x0, x2]
add w3, w3, #1
+ mov w3, w3
cmp w3, w1
blt G_M19747_IG03
- ;; size=16 bbWeight=4 PerfScore 20.00
+ ;; size=32 bbWeight=4 PerfScore 32.00
G_M19747_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov x0, x2
@@ -41,8 +46,13 @@ G_M19747_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M19747_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 26.50, instruction count 13, allocated bytes for code 52 (MethodHash=b91bb2dc) for method GitHub_5556:SpanAsParam(System.Span`1[long]):long (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 38.50, instruction count 19, allocated bytes for code 76 (MethodHash=b91bb2dc) for method GitHub_5556:SpanAsParam(System.Span`1[long]):long (FullOpts)
; ============================================================
Unwind Info:
@@ -53,7 +63,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+46.15%) : 252636.dasm - GitHub_5556:SpanWithLocalCopy(System.Span`1[long]):long (FullOpts)
@@ -9,13 +9,14 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[long]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[long]>
-; V02 loc1 [V02,T01] ( 3, 6 ) long -> x2
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+; V02 loc1 [V02,T02] ( 3, 6 ) long -> x2
+;* V03 loc2 [V03,T06] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T04] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V06 tmp2 [V06,T05] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V07 tmp3 [V07,T03] ( 2, 5 ) byref -> x0 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp4 [V08,T02] ( 3, 6 ) int -> x1 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp4 [V08,T01] ( 4, 10 ) int -> x1 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 tmp5 [V09,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -26,16 +27,20 @@ G_M40372_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M40372_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
mov x2, xzr
- mov w3, wzr
cmp w1, #0
ble G_M40372_IG04
+ mov x3, xzr
;; size=16 bbWeight=1 PerfScore 2.50
G_M40372_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr x2, [x0, w3, UXTW #3]
+ cmp w3, w1
+ bhs G_M40372_IG06
+ lsl x2, x3, #3
+ ldr x2, [x0, x2]
add w3, w3, #1
+ mov w3, w3
cmp w3, w1
blt G_M40372_IG03
- ;; size=16 bbWeight=4 PerfScore 20.00
+ ;; size=32 bbWeight=4 PerfScore 32.00
G_M40372_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov x0, x2
@@ -44,8 +49,13 @@ G_M40372_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M40372_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 26.50, instruction count 13, allocated bytes for code 52 (MethodHash=e720624b) for method GitHub_5556:SpanWithLocalCopy(System.Span`1[long]):long (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 38.50, instruction count 19, allocated bytes for code 76 (MethodHash=e720624b) for method GitHub_5556:SpanWithLocalCopy(System.Span`1[long]):long (FullOpts)
; ============================================================
Unwind Info:
@@ -56,7 +66,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries.crossgen2.linux.arm64.checked.mch
-24 (-10.00%) : 174524.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
@@ -10,21 +10,22 @@
;
; V00 arg0 [V00,T03] ( 3, 4 ) ref -> x19 class-hnd single-def <System.Text.StringBuilder>
; V01 arg1 [V01,T13] ( 3, 3 ) double -> d0 single-def
-; V02 arg2 [V02,T05] ( 3, 3 ) ubyte -> x1 single-def
+; V02 arg2 [V02,T04] ( 3, 3 ) ubyte -> x1 single-def
; V03 loc0 [V03,T02] ( 4, 9 ) int -> x20
; V04 loc1 [V04,T08] ( 2, 3 ) ref -> x21 class-hnd single-def <<unknown class>>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
-; V06 loc3 [V06,T00] ( 7, 12 ) int -> registers
+;* V06 loc3 [V06 ] ( 0, 0 ) int -> zero-ref
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T09] ( 3, 2 ) ref -> x21
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
-; V10 tmp3 [V10,T04] ( 3, 6 ) int -> x23 "impSpillLclRefs"
-; V11 tmp4 [V11,T06] ( 2, 5 ) byref -> x22 single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp3 [V10,T07] ( 2, 4 ) int -> x3 "impSpillLclRefs"
+; V11 tmp4 [V11,T05] ( 2, 5 ) byref -> x22 single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V12 tmp5 [V12,T11] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
; V13 tmp6 [V13,T10] ( 2, 2 ) byref -> x22 single-def "field V09._reference (fldOffset=0x0)" P-INDEP
;* V14 tmp7 [V14,T12] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V15 cse0 [V15,T01] ( 3, 10 ) int -> x3 "CSE - aggressive"
-; V16 cse1 [V16,T07] ( 2, 5 ) long -> registers hoist "CSE - aggressive"
+; V15 tmp8 [V15,T00] ( 8, 13 ) long -> x23 "Widened primary induction variable"
+; V16 cse0 [V16,T01] ( 3, 10 ) int -> x3 "CSE - aggressive"
+; V17 cse1 [V17,T06] ( 2, 5 ) long -> x24 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -61,18 +62,15 @@ G_M10117_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
G_M10117_IG05: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
adrp x22, [HIGH RELOC #0xD1FFAB1E]
add x22, x22, [LOW RELOC #0xD1FFAB1E]
- mov w23, #13
- b G_M10117_IG10
+ mov x23, #13
+ b G_M10117_IG09
;; size=16 bbWeight=1 PerfScore 2.50
G_M10117_IG06: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref
; byrRegs +[x22]
- ubfiz x23, x24, #2, #32
+ lsl x24, x23, #2
b G_M10117_IG08
;; size=8 bbWeight=1 PerfScore 2.00
G_M10117_IG07: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref
- mov x0, x23
- mov w23, w24
- mov x24, x0
sub w20, w20, w3
and w3, w23, #1
add w3, w3, #1
@@ -88,34 +86,29 @@ G_M10117_IG07: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000
blr x4
; gcrRegs -[x1]
; gcr arg pop 0
- mov w0, w23
- ; gcrRegs -[x0]
- mov x23, x24
- mov w24, w0
- ;; size=68 bbWeight=2 PerfScore 28.00
+ ;; size=44 bbWeight=2 PerfScore 22.00
G_M10117_IG08: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz
- cmp w24, #13
- bhs G_M10117_IG12
- ldr w3, [x22, x23]
+ ; gcrRegs -[x0]
+ cmp w23, #13
+ bhs G_M10117_IG11
+ ldr w3, [x22, x24]
cmp w3, w20
ble G_M10117_IG07
;; size=20 bbWeight=4 PerfScore 24.00
-G_M10117_IG09: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref
- mov w23, w24
- ;; size=4 bbWeight=2 PerfScore 1.00
-G_M10117_IG10: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz
- sub w3, w23, #1
- sxtw w24, w3
- cbnz w23, G_M10117_IG06
- ;; size=12 bbWeight=1 PerfScore 2.00
-G_M10117_IG11: ; bbWeight=1, epilog, nogc, extend
+G_M10117_IG09: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz
+ sxtw w3, w23
+ sub w0, w23, #1
+ mov w23, w0
+ cbnz w3, G_M10117_IG06
+ ;; size=16 bbWeight=1 PerfScore 2.50
+G_M10117_IG10: ; bbWeight=1, epilog, nogc, extend
ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x40
ret lr
;; size=20 bbWeight=1 PerfScore 5.00
-G_M10117_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M10117_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19 x21]
; byrRegs -[x22]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -126,7 +119,7 @@ G_M10117_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 240, prolog size 24, PerfScore 80.50, instruction count 60, allocated bytes for code 240 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
+; Total bytes of code 216, prolog size 24, PerfScore 74.00, instruction count 54, allocated bytes for code 216 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
; ============================================================
Unwind Info:
@@ -137,7 +130,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-48 (-5.38%) : 203896.dasm - ILCompiler.Reflection.ReadyToRun.NativeCuckooFilter:ToString():System.String:this (FullOpts)
@@ -10,45 +10,43 @@
;
; V00 this [V00,T14] ( 5, 5 ) byref -> x19 this single-def
; V01 loc0 [V01,T03] ( 7, 27 ) ref -> x20 class-hnd exact single-def <<unknown class>>
-; V02 loc1 [V02,T11] ( 4, 13 ) int -> x24
-; V03 loc2 [V03,T13] ( 7, 10 ) ref -> [fp+0x30] class-hnd EH-live spill-single-def <<unknown class>>
-; V04 loc3 [V04,T12] ( 7, 12.20) ref -> [fp+0x28] class-hnd spill-single-def <ushort[]>
-; V05 loc4 [V05,T01] ( 10, 68.16) int -> [fp+0x44]
+; V02 loc1 [V02,T11] ( 4, 13 ) int -> x22
+; V03 loc2 [V03,T13] ( 7, 10 ) ref -> [fp+0x20] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc3 [V04,T12] ( 7, 12.20) ref -> x25 class-hnd <ushort[]>
+;* V05 loc4 [V05,T22] ( 0, 0 ) int -> zero-ref
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T15] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V08 tmp2 [V08,T16] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V09 tmp3 [V09,T04] ( 3, 24 ) ref -> x0 class-hnd exact "Single-def Box Helper" <<unknown class>>
+; V09 tmp3 [V09,T05] ( 3, 24 ) ref -> x0 class-hnd exact "Single-def Box Helper" <<unknown class>>
; V10 tmp4 [V10,T00] ( 6, 96 ) ref -> x0 class-hnd exact "Single-def Box Helper" <<unknown class>>
-; V11 tmp5 [V11,T24] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V12 tmp6 [V12,T25] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
+; V11 tmp5 [V11,T20] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V12 tmp6 [V12,T21] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
; V13 tmp7 [V13,T10] ( 2, 16 ) ref -> x1 "argument with side effect"
; V14 tmp8 [V14,T02] ( 4, 64 ) ref -> x0 "argument with side effect"
-; V15 PSPSym [V15,T26] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
-; V16 cse0 [V16,T09] ( 3, 17 ) ref -> [fp+0x20] spill-single-def hoist "CSE - aggressive"
-; V17 cse1 [V17,T21] ( 2, 5 ) ref -> x26 hoist "CSE - aggressive"
-; V18 cse2 [V18,T22] ( 2, 5 ) ref -> x28 hoist "CSE - aggressive"
-; V19 cse3 [V19,T07] ( 4, 18.02) byref -> [fp+0x18] hoist multi-def "CSE - aggressive"
-; V20 cse4 [V20,T05] ( 5, 22 ) long -> x22 "CSE - aggressive"
-; V21 cse5 [V21,T06] ( 4, 21 ) long -> x27 hoist "CSE - aggressive"
-; V22 cse6 [V22,T08] ( 4, 18.02) long -> [fp+0x38] hoist multi-def "CSE - aggressive"
-; V23 cse7 [V23,T17] ( 3, 6 ) long -> x21 "CSE - moderate"
-; V24 cse8 [V24,T23] ( 2, 5 ) long -> x25 hoist "CSE - moderate"
-; V25 cse9 [V25,T18] ( 3, 6 ) long -> x23 "CSE - moderate"
-; V26 cse10 [V26,T19] ( 3, 6 ) long -> x19 "CSE - moderate"
-; V27 rat0 [V27,T20] ( 3, 6 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V15 PSPSym [V15,T23] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
+; V16 tmp10 [V16,T24] ( 6, 0.82) long -> x27 "Widened primary induction variable"
+; V17 tmp11 [V17,T01] ( 5, 65.36) long -> x27 "Widened primary induction variable"
+; V18 cse0 [V18,T09] ( 3, 17 ) ref -> x24 hoist "CSE - aggressive"
+; V19 cse1 [V19,T18] ( 2, 5 ) ref -> x19 hoist "CSE - aggressive"
+; V20 cse2 [V20,T19] ( 2, 5 ) ref -> x23 hoist "CSE - aggressive"
+; V21 cse3 [V21,T07] ( 4, 18.02) byref -> [fp+0x18] hoist multi-def "CSE - aggressive"
+; V22 cse4 [V22,T06] ( 5, 22 ) long -> x21 "CSE - aggressive"
+; V23 cse5 [V23,T04] ( 4, 24 ) long -> x26 "CSE - aggressive"
+; V24 cse6 [V24,T08] ( 4, 18.02) long -> x28 hoist multi-def "CSE - aggressive"
+; V25 rat0 [V25,T17] ( 3, 6 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 64
+; Lcl frame size = 32
G_M49470_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0xA0]!
- stp x19, x20, [sp, #0x50]
- stp x21, x22, [sp, #0x60]
- stp x23, x24, [sp, #0x70]
- stp x25, x26, [sp, #0x80]
- stp x27, x28, [sp, #0x90]
+ stp fp, lr, [sp, #-0x80]!
+ stp x19, x20, [sp, #0x30]
+ stp x21, x22, [sp, #0x40]
+ stp x23, x24, [sp, #0x50]
+ stp x25, x26, [sp, #0x60]
+ stp x27, x28, [sp, #0x70]
mov fp, sp
- add x1, sp, #160
- str x1, [fp, #0x48] // [V15 PSPSym]
+ add x1, sp, #128
+ str x1, [fp, #0x28] // [V15 PSPSym]
mov x19, x0
; byrRegs +[x19]
;; size=40 bbWeight=1 PerfScore 8.50
@@ -67,9 +65,8 @@ G_M49470_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- adrp x21, [HIGH RELOC #0xD1FFAB1E] // function address
- add x21, x21, [LOW RELOC #0xD1FFAB1E]
- mov x11, x21
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x11]
blr x0
; gcrRegs +[x0]
@@ -89,9 +86,9 @@ G_M49470_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
ldr x0, [x0]
ldr x0, [x0]
; gcrRegs +[x0]
- adrp x22, [HIGH RELOC #0xD1FFAB1E] // function address
- add x22, x22, [LOW RELOC #0xD1FFAB1E]
- mov x11, x22
+ adrp x21, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x21, x21, [LOW RELOC #0xD1FFAB1E]
+ mov x11, x21
ldr x2, [x11]
blr x2
; gcrRegs -[x1]
@@ -99,14 +96,13 @@ G_M49470_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
mov x1, x0
; gcrRegs +[x1]
mov x0, x20
- adrp x23, [HIGH RELOC #0xD1FFAB1E] // function address
- add x23, x23, [LOW RELOC #0xD1FFAB1E]
- mov x11, x23
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- mov w24, wzr
+ mov w22, wzr
mov x0, x19
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -122,59 +118,55 @@ G_M49470_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
ldr x1, [x11]
blr x1
; gcr arg pop 0
- str x0, [fp, #0x30] // [V03 loc2]
+ str x0, [fp, #0x20] // [V03 loc2]
; GC ptr vars +{V03}
- ;; size=196 bbWeight=1 PerfScore 55.00
+ ;; size=188 bbWeight=1 PerfScore 54.00
G_M49470_IG03: ; bbWeight=1, gcVars=0000000000002000 {V03}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- adrp x19, [HIGH RELOC #0xD1FFAB1E]
- add x19, x19, [LOW RELOC #0xD1FFAB1E]
- mov x11, x19
+ adrp x11, [HIGH RELOC #0xD1FFAB1E]
+ add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
cbz w0, G_M49470_IG12
- adrp x25, [HIGH RELOC #0xD1FFAB1E]
- add x25, x25, [LOW RELOC #0xD1FFAB1E]
adrp x0, [HIGH RELOC #0xD1FFAB1E]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x26, [x0]
- ; gcrRegs +[x26]
- adrp x27, [HIGH RELOC #0xD1FFAB1E]
- add x27, x27, [LOW RELOC #0xD1FFAB1E]
+ ldr x19, [x0]
+ ; gcrRegs +[x19]
adrp x0, [HIGH RELOC #0xD1FFAB1E]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x28, [x0]
- ; gcrRegs +[x28]
+ ldr x23, [x0]
+ ; gcrRegs +[x23]
adrp x0, [HIGH RELOC #0xD1FFAB1E]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x1, [x0]
- ; gcrRegs +[x1]
- str x1, [fp, #0x20] // [V16 cse0]
- ; GC ptr vars +{V16}
- ;; size=92 bbWeight=1 PerfScore 30.50
-G_M49470_IG04: ; bbWeight=4, gcVars=0000000000002200 {V03 V16}, gcrefRegs=14100000 {x20 x26 x28}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x1]
- ldr x0, [fp, #0x30] // [V03 loc2]
+ ldr x24, [x0]
+ ; gcrRegs +[x24]
+ ;; size=68 bbWeight=1 PerfScore 27.00
+G_M49470_IG04: ; bbWeight=4, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [fp, #0x20] // [V03 loc2]
; gcrRegs +[x0]
- mov x11, x25
- ldr x2, [x11]
- blr x2
- ; gcr arg pop 0
- str x0, [fp, #0x28] // [V04 loc3]
- ; GC ptr vars +{V04}
- mov x11, x21
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
; gcr arg pop 0
- str w24, [x0, #0x08]
+ mov x25, x0
+ ; gcrRegs +[x25]
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x11, x11, [LOW RELOC #0xD1FFAB1E]
+ ldr x0, [x11]
+ ; gcrRegs -[x0]
+ blr x0
+ ; gcrRegs +[x0]
+ ; gcr arg pop 0
+ str w22, [x0, #0x08]
mov x1, x0
; gcrRegs +[x1]
- mov x0, x26
- mov x11, x22
+ mov x0, x19
+ mov x11, x21
ldr x2, [x11]
blr x2
; gcrRegs -[x1]
@@ -182,91 +174,82 @@ G_M49470_IG04: ; bbWeight=4, gcVars=0000000000002200 {V03 V16}, gcrefRegs
mov x1, x0
; gcrRegs +[x1]
mov x0, x20
- mov x11, x27
+ adrp x26, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x26, x26, [LOW RELOC #0xD1FFAB1E]
+ mov x11, x26
ldr x2, [x11]
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- str wzr, [fp, #0x44] // [V05 loc4]
- ldr x1, [fp, #0x28] // [V04 loc3]
- ; gcrRegs +[x1]
- cbz x1, G_M49470_IG10
- ;; size=88 bbWeight=4 PerfScore 112.00
-G_M49470_IG05: ; bbWeight=2, gcrefRegs=14100002 {x1 x20 x26 x28}, byrefRegs=0000 {}, byref, isz
+ cbz x25, G_M49470_IG10
+ ;; size=96 bbWeight=4 PerfScore 106.00
+G_M49470_IG05: ; bbWeight=2, gcrefRegs=3980000 {x19 x20 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr w11, [x1, #0x08]
+ ldr w11, [x25, #0x08]
cmp w11, #8
blt G_M49470_IG10
- adrp x2, [HIGH RELOC #0xD1FFAB1E]
- add x2, x2, [LOW RELOC #0xD1FFAB1E]
- add x3, x1, #16
- ; byrRegs +[x3]
- str x3, [fp, #0x18] // [V19 cse3]
- ; GC ptr vars +{V19}
- ;; size=28 bbWeight=2 PerfScore 14.00
-G_M49470_IG06: ; bbWeight=15.84, gcVars=0000000000002280 {V03 V16 V19}, gcrefRegs=14100000 {x20 x26 x28}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x1]
- ; byrRegs -[x3]
- ; GC ptr vars -{V04}
- str x2, [fp, #0x38] // [V22 cse6]
- mov x11, x2
- ldr x1, [x11]
- blr x1
+ mov x27, xzr
+ adrp x28, [HIGH RELOC #0xD1FFAB1E]
+ add x28, x28, [LOW RELOC #0xD1FFAB1E]
+ add x25, x25, #16
+ ; gcrRegs -[x25]
+ ; byrRegs +[x25]
...
-40 (-5.38%) : 150896.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo (FullOpts)
@@ -14,35 +14,35 @@
;* V03 arg3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Reflection.ParameterModifier[]>
; V04 loc0 [V04,T15] ( 4, 6 ) ref -> x21 class-hnd <System.Reflection.PropertyInfo>
; V05 loc1 [V05,T03] ( 7, 29 ) int -> x22 single-def
-; V06 loc2 [V06,T07] ( 5, 17 ) int -> x23
-; V07 loc3 [V07,T10] ( 7, 10.20) ref -> x28 class-hnd <<unknown class>>
-; V08 loc4 [V08,T00] ( 13, 72.48) int -> [fp+0x3C]
+;* V06 loc2 [V06,T18] ( 0, 0 ) int -> zero-ref
+; V07 loc3 [V07,T10] ( 7, 10.20) ref -> x27 class-hnd <<unknown class>>
+; V08 loc4 [V08,T00] ( 13, 72.48) int -> x28
;* V09 loc5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Type>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T18] ( 3, 2 ) int -> x22
+; V11 tmp1 [V11,T17] ( 3, 2 ) int -> x22
; V12 tmp2 [V12,T19] ( 3, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V13 tmp3 [V13,T21] ( 2, 0 ) ref -> x19 class-hnd "finalizable newobj spill" <<unknown class>>
; V14 tmp4 [V14,T20] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V15 tmp5 [V15,T01] ( 4, 64 ) ref -> x0 "argument with side effect"
; V16 tmp6 [V16,T13] ( 2, 8 ) ref -> x1 "argument with side effect"
-; V17 cse0 [V17,T02] ( 3, 47.52) long -> [fp+0x30] spill-single-def "CSE - aggressive"
-; V18 cse1 [V18,T08] ( 4, 12 ) long -> x27 "CSE - aggressive"
-; V19 cse2 [V19,T05] ( 4, 18.02) byref -> [fp+0x20] hoist multi-def "CSE - aggressive"
-; V20 cse3 [V20,T04] ( 4, 18.16) byref -> [fp+0x18] hoist multi-def "CSE - aggressive"
-; V21 cse4 [V21,T11] ( 4, 9 ) byref -> x25 hoist "CSE - aggressive"
-; V22 cse5 [V22,T16] ( 3, 6 ) int -> x24 "CSE - moderate"
-; V23 cse6 [V23,T06] ( 4, 18.02) long -> [fp+0x28] hoist multi-def "CSE - aggressive"
-; V24 cse7 [V24,T17] ( 2, 5 ) long -> x26 hoist "CSE - moderate"
+; V17 tmp7 [V17,T07] ( 5, 17 ) long -> x24 "Widened primary induction variable"
+; V18 cse0 [V18,T08] ( 4, 12 ) long -> x26 "CSE - aggressive"
+; V19 cse1 [V19,T02] ( 3, 47.52) long -> [fp+0x28] spill-single-def "CSE - aggressive"
+; V20 cse2 [V20,T05] ( 4, 18.02) byref -> [fp+0x18] hoist multi-def "CSE - aggressive"
+; V21 cse3 [V21,T04] ( 4, 18.16) byref -> [fp+0x10] hoist multi-def "CSE - aggressive"
+; V22 cse4 [V22,T11] ( 4, 9 ) byref -> x25 hoist "CSE - aggressive"
+; V23 cse5 [V23,T16] ( 3, 6 ) int -> x23 "CSE - moderate"
+; V24 cse6 [V24,T06] ( 4, 18.02) long -> [fp+0x20] hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 32
G_M1302_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x90]!
- stp x19, x20, [sp, #0x40]
- stp x21, x22, [sp, #0x50]
- stp x23, x24, [sp, #0x60]
- stp x25, x26, [sp, #0x70]
- stp x27, x28, [sp, #0x80]
+ stp fp, lr, [sp, #-0x80]!
+ stp x19, x20, [sp, #0x30]
+ stp x21, x22, [sp, #0x40]
+ stp x23, x24, [sp, #0x50]
+ stp x25, x26, [sp, #0x60]
+ stp x27, x28, [sp, #0x70]
mov fp, sp
mov x20, x1
; gcrRegs +[x20]
@@ -51,7 +51,7 @@ G_M1302_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=36 bbWeight=1 PerfScore 7.50
G_M1302_IG02: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbz x0, G_M1302_IG21
+ cbz x0, G_M1302_IG19
mov x21, xzr
; gcrRegs +[x21]
cbnz x19, G_M1302_IG04
@@ -64,65 +64,63 @@ G_M1302_IG04: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRe
ldr w22, [x19, #0x08]
;; size=4 bbWeight=0.50 PerfScore 1.50
G_M1302_IG05: ; bbWeight=1, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- mov w23, wzr
- ldr w24, [x0, #0x08]
- cmp w24, #0
- ble G_M1302_IG18
+ ldr w23, [x0, #0x08]
+ cmp w23, #0
+ ble G_M1302_IG16
+ mov x24, xzr
add x25, x0, #16
; byrRegs +[x25]
- adrp x26, [HIGH RELOC #0xD1FFAB1E]
- add x26, x26, [LOW RELOC #0xD1FFAB1E]
- ;; size=28 bbWeight=1 PerfScore 6.50
+ ;; size=20 bbWeight=1 PerfScore 5.50
G_M1302_IG06: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=2000000 {x25}, byref, isz
; gcrRegs -[x0]
- ubfiz x27, x23, #3, #32
- ldr x0, [x25, x27]
+ lsl x26, x24, #3
+ ldr x0, [x25, x26]
; gcrRegs +[x0]
- mov x11, x26
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr wzr, [x0]
ldr x1, [x11]
blr x1
- mov x28, x0
- ; gcrRegs +[x28]
- mov w1, wzr
+ mov x27, x0
+ ; gcrRegs +[x27]
+ mov w28, wzr
cmp w22, #0
- ble G_M1302_IG10
- ;; size=40 bbWeight=4 PerfScore 56.00
-G_M1302_IG07: ; bbWeight=2, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=2000000 {x25}, byref, isz
+ ble G_M1302_IG12
+ ;; size=44 bbWeight=4 PerfScore 58.00
+G_M1302_IG07: ; bbWeight=2, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=2000000 {x25}, byref, isz
; gcrRegs -[x0]
- cbz x28, G_M1302_IG11
- cbz x19, G_M1302_IG11
- ldr w0, [x28, #0x08]
+ cbz x27, G_M1302_IG10
+ cbz x19, G_M1302_IG10
+ ldr w0, [x27, #0x08]
cmp w0, w22
- blt G_M1302_IG11
+ blt G_M1302_IG10
ldr w0, [x19, #0x08]
cmp w0, w22
- blt G_M1302_IG11
- add x28, x28, #16
- ; gcrRegs -[x28]
- ; byrRegs +[x28]
- adrp x2, [HIGH RELOC #0xD1FFAB1E]
- add x2, x2, [LOW RELOC #0xD1FFAB1E]
- add x3, x19, #16
- ; byrRegs +[x3]
- str x3, [fp, #0x18] // [V20 cse3]
- ; GC ptr vars +{V20}
- ;; size=52 bbWeight=2 PerfScore 28.00
-G_M1302_IG08: ; bbWeight=15.84, gcVars=0000000000000010 {V20}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=12000000 {x25 x28}, gcvars, byref, isz
- ; byrRegs -[x3]
- str w1, [fp, #0x3C] // [V08 loc4]
- ubfiz x4, x1, #3, #32
- str x4, [fp, #0x30] // [V17 cse0]
- ldr x0, [x28, x4]
- ; gcrRegs +[x0]
- str x2, [fp, #0x28] // [V23 cse6]
- mov x11, x2
- ldr wzr, [x0]
- ldr x5, [x11]
- blr x5
- ldr x2, [fp, #0x18] // [V20 cse3]
+ blt G_M1302_IG10
+ add x27, x27, #16
+ ; gcrRegs -[x27]
+ ; byrRegs +[x27]
+ adrp x1, [HIGH RELOC #0xD1FFAB1E]
+ add x1, x1, [LOW RELOC #0xD1FFAB1E]
+ add x2, x19, #16
; byrRegs +[x2]
- ldr x1, [fp, #0x30] // [V17 cse0]
+ str x2, [fp, #0x10] // [V21 cse3]
+ ; GC ptr vars +{V21}
+ ;; size=52 bbWeight=2 PerfScore 28.00
+G_M1302_IG08: ; bbWeight=15.84, gcVars=0000000000000010 {V21}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=A000000 {x25 x27}, gcvars, byref, isz
+ ; byrRegs -[x2]
+ ubfiz x3, x28, #3, #32
+ str x3, [fp, #0x28] // [V19 cse1]
+ ldr x0, [x27, x3]
+ ; gcrRegs +[x0]
+ str x1, [fp, #0x20] // [V24 cse6]
+ mov x11, x1
+ ldr wzr, [x0]
+ ldr x4, [x11]
+ blr x4
+ ldr x2, [fp, #0x10] // [V21 cse3]
+ ; byrRegs +[x2]
+ ldr x1, [fp, #0x28] // [V19 cse1]
ldr x1, [x2, x1]
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -131,87 +129,76 @@ G_M1302_IG08: ; bbWeight=15.84, gcVars=0000000000000010 {V20}, gcrefRegs=
blr x3
; gcrRegs -[x0-x1]
; byrRegs -[x2]
- cbnz w0, G_M1302_IG14
- ldr w1, [fp, #0x3C] // [V08 loc4]
- add w1, w1, #1
- cmp w1, w22
- ldr x2, [fp, #0x28] // [V23 cse6]
+ cbnz w0, G_M1302_IG12
+ add w28, w28, #1
+ cmp w28, w22
+ ldr x1, [fp, #0x20] // [V24 cse6]
blt G_M1302_IG08
- ;; size=88 bbWeight=15.84 PerfScore 530.64
+ ;; size=80 bbWeight=15.84 PerfScore 483.12
G_M1302_IG09: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=2000000 {x25}, gcvars, byref
- ; byrRegs -[x28]
- ; GC ptr vars -{V20}
- str w1, [fp, #0x3C] // [V08 loc4]
- b G_M1302_IG14
- ;; size=8 bbWeight=4 PerfScore 8.00
-G_M1302_IG10: ; bbWeight=2, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=2000000 {x25}, byref
- str w1, [fp, #0x3C] // [V08 loc4]
- b G_M1302_IG14
- ;; size=8 bbWeight=2 PerfScore 4.00
-G_M1302_IG11: ; bbWeight=0.02, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=2000000 {x25}, byref
- ; gcrRegs +[x28]
- ldr wzr, [x28, #0x08]
- add x0, x28, #16
+ ; byrRegs -[x27]
+ ; GC ptr vars -{V21}
+ b G_M1302_IG12
+ ;; size=4 bbWeight=4 PerfScore 4.00
+G_M1302_IG10: ; bbWeight=0.02, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=2000000 {x25}, byref
+ ; gcrRegs +[x27]
+ ldr wzr, [x27, #0x08]
+ add x0, x27, #16
; byrRegs +[x0]
- mov x2, x0
- ; byrRegs +[x2]
+ mov x1, x0
+ ; byrRegs +[x1]
adrp x0, [HIGH RELOC #0xD1FFAB1E]
; byrRegs -[x0]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
- mov x3, x0
+ mov x2, x0
;; size=24 bbWeight=0.02 PerfScore 0.11
-G_M1302_IG12: ; bbWeight=0.16, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=2000004 {x2 x25}, byref, isz
- ldr w0, [x28, #0x08]
- cmp w1, w0
- bhs G_M1302_IG20
- str x2, [fp, #0x20] // [V19 cse2]
- ; GC ptr vars +{V19}
- str w1, [fp, #0x3C] // [V08 loc4]
- ldr x0, [x2, w1, UXTW #3]
+G_M1302_IG11: ; bbWeight=0.16, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=2000002 {x1 x25}, byref, isz
+ ldr w0, [x27, #0x08]
+ cmp w28, w0
+ bhs G_M1302_IG18
+ str x1, [fp, #0x18] // [V20 cse2]
+ ; GC ptr vars +{V20}
+ ldr x0, [x1, w28, UXTW #3]
; gcrRegs +[x0]
- str x3, [fp, #0x28] // [V23 cse6]
- mov x11, x3
+ str x2, [fp, #0x20] // [V24 cse6]
+ mov x11, x2
ldr wzr, [x0]
- ldr x4, [x11]
- blr x4
- ; byrRegs -[x2]
+ ldr x3, [x11]
+ blr x3
+ ; byrRegs -[x1]
ldr w1, [x19, #0x08]
...
+32 (+57.14%) : 211701.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
@@ -11,13 +11,14 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
; V01 loc0 [V01,T01] ( 4, 10 ) int -> x2
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+;* V03 loc2 [V03,T06] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) ubyte -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T04] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V07 tmp2 [V07,T05] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V08 tmp3 [V08,T03] ( 2, 5 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V09 tmp4 [V09,T02] ( 3, 6 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V09 tmp4 [V09,T02] ( 4, 10 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V10 tmp5 [V10,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -28,17 +29,20 @@ G_M59336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M59336_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
mov w2, wzr
- mov w3, wzr
cmp w1, #0
ble G_M59336_IG04
+ mov x3, xzr
;; size=16 bbWeight=1 PerfScore 2.50
G_M59336_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2]
+ cmp w3, w1
+ bhs G_M59336_IG06
+ ldrb w4, [x0, x3]
add w2, w4, w2
add w3, w3, #1
+ mov w3, w3
cmp w3, w1
blt G_M59336_IG03
- ;; size=20 bbWeight=4 PerfScore 22.00
+ ;; size=32 bbWeight=4 PerfScore 30.00
G_M59336_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov w0, w2
@@ -47,8 +51,16 @@ G_M59336_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M59336_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x0, x0, [LOW RELOC #0xD1FFAB1E]
+ ldr x0, [x0]
+ blr x0
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 8, PerfScore 28.50, instruction count 14, allocated bytes for code 56 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 36.50, instruction count 22, allocated bytes for code 88 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -59,7 +71,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+36 (+60.00%) : 239.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
@@ -10,11 +10,12 @@
;
; V00 arg0 [V00,T01] ( 5, 11 ) int -> x0
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 17 ) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V06 cse0 [V06,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 10 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
+; V07 cse0 [V07,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -24,27 +25,39 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0
ble G_M1770_IG04
+ mov x3, xzr
movz w4, #0xD1FFAB1E
movk w4, #0xD1FFAB1E LSL #16
;; size=20 bbWeight=1 PerfScore 3.00
G_M1770_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2
+ bhs G_M1770_IG05
+ lsl x5, x3, #1
+ ldrh w5, [x1, x5]
eor w0, w5, w0
mul w0, w0, w4
add w3, w3, #1
+ mov w3, w3
cmp w3, w2
blt G_M1770_IG03
- ;; size=24 bbWeight=4 PerfScore 30.00
+ ;; size=40 bbWeight=4 PerfScore 42.00
G_M1770_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x0, x0, [LOW RELOC #0xD1FFAB1E]
+ ldr x0, [x0]
+ blr x0
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 36.50, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 96, prolog size 8, PerfScore 48.50, instruction count 24, allocated bytes for code 96 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -55,7 +68,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+36 (+60.00%) : 183084.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
@@ -10,11 +10,12 @@
;
; V00 arg0 [V00,T01] ( 5, 11 ) int -> x0
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 17 ) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V06 cse0 [V06,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 10 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
+; V07 cse0 [V07,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -24,27 +25,39 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0
ble G_M1770_IG04
+ mov x3, xzr
movz w4, #0xD1FFAB1E
movk w4, #0xD1FFAB1E LSL #16
;; size=20 bbWeight=1 PerfScore 3.00
G_M1770_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2
+ bhs G_M1770_IG05
+ lsl x5, x3, #1
+ ldrh w5, [x1, x5]
eor w0, w5, w0
mul w0, w0, w4
add w3, w3, #1
+ mov w3, w3
cmp w3, w2
blt G_M1770_IG03
- ;; size=24 bbWeight=4 PerfScore 30.00
+ ;; size=40 bbWeight=4 PerfScore 42.00
G_M1770_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x0, x0, [LOW RELOC #0xD1FFAB1E]
+ ldr x0, [x0]
+ blr x0
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 36.50, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 96, prolog size 8, PerfScore 48.50, instruction count 24, allocated bytes for code 96 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -55,7 +68,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries.pmi.linux.arm64.checked.mch
-28 (-12.50%) : 158098.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
@@ -8,28 +8,32 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 5, 4.50) ref -> x0 this class-hnd single-def <System.Xml.XmlSubtreeReader>
-; V01 arg1 [V01,T04] ( 3, 6 ) ref -> x1 class-hnd single-def <System.String>
-; V02 arg2 [V02,T07] ( 3, 4 ) ref -> x2 class-hnd single-def <System.String>
-; V03 loc0 [V03,T01] ( 9, 22.50) int -> x14
-; V04 loc1 [V04,T17] ( 2, 1 ) ref -> x4 class-hnd exact <<unknown class>>
+; V00 this [V00,T07] ( 5, 4.50) ref -> x0 this class-hnd single-def <System.Xml.XmlSubtreeReader>
+; V01 arg1 [V01,T06] ( 3, 6 ) ref -> x1 class-hnd single-def <System.String>
+; V02 arg2 [V02,T09] ( 3, 4 ) ref -> x2 class-hnd single-def <System.String>
+; V03 loc0 [V03,T13] ( 3, 1.50) int -> x15
+; V04 loc1 [V04,T18] ( 2, 1 ) ref -> x2 class-hnd exact <<unknown class>>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T09] ( 3, 3 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
-; V07 tmp2 [V07,T14] ( 2, 2 ) ref -> x12 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
+;* V06 tmp1 [V06,T19] ( 0, 0 ) ref -> zero-ref class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
+; V07 tmp2 [V07,T14] ( 2, 2 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V10 tmp5 [V10,T00] ( 3, 24 ) ref -> x12 "arr expr"
-;* V11 tmp6 [V11,T08] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V12 tmp7 [V12,T18] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V13 tmp8 [V13,T10] ( 3, 3 ) ref -> x12 "arr expr"
-; V14 tmp9 [V14,T12] ( 3, 3 ) int -> xip0 "index expr"
-; V15 tmp10 [V15,T11] ( 3, 3 ) ref -> x3 "arr expr"
+; V10 tmp5 [V10,T00] ( 3, 24 ) ref -> xip0 "arr expr"
+;* V11 tmp6 [V11,T10] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V12 tmp7 [V12,T20] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V13 tmp8 [V13,T21] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V14 tmp9 [V14,T11] ( 3, 3 ) int -> x15 "index expr"
+;* V15 tmp10 [V15,T22] ( 0, 0 ) ref -> zero-ref "arr expr"
; V16 tmp11 [V16,T15] ( 2, 2 ) int -> x14 "index expr"
-; V17 cse0 [V17,T02] ( 4, 10.50) ref -> x4 "CSE - aggressive"
-; V18 cse1 [V18,T13] ( 5, 2.50) int -> x1 "CSE - aggressive"
-; V19 cse2 [V19,T03] ( 5, 6.50) ref -> x3 hoist "CSE - aggressive"
-; V20 cse3 [V20,T06] ( 4, 6.50) int -> x15 "CSE - aggressive"
-; V21 cse4 [V21,T16] ( 3, 1.50) long -> x2 "CSE - moderate"
+; V17 tmp12 [V17,T01] ( 7, 21.50) long -> x15 "Widened primary induction variable"
+; V18 cse0 [V18,T03] ( 3, 10 ) ref -> xip0 "CSE - aggressive"
+; V19 cse1 [V19,T12] ( 5, 2.50) int -> x1 "CSE - aggressive"
+; V20 cse2 [V20,T04] ( 2, 5 ) ref -> x12 hoist "CSE - aggressive"
+; V21 cse3 [V21,T08] ( 4, 6.50) int -> x14 "CSE - aggressive"
+; V22 cse4 [V22,T16] ( 3, 1.50) long -> x14 "CSE - moderate"
+; V23 cse5 [V23,T17] ( 3, 1.50) long -> x5 "CSE - moderate"
+; V24 cse6 [V24,T05] ( 4, 9 ) int -> x3 "CSE - aggressive"
+; V25 cse7 [V25,T02] ( 6, 10 ) byref -> x4 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -39,95 +43,80 @@ G_M23254_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M23254_IG02: ; bbWeight=1, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x2]
- mov w14, wzr
- ldr w15, [x0, #0x58]
- cmp w15, #0
+ ldr w14, [x0, #0x58]
+ cmp w14, #0
ble G_M23254_IG06
- ldr x3, [x0, #0x20]
- ; gcrRegs +[x3]
+ mov x15, xzr
+ ldr x12, [x0, #0x20]
+ ; gcrRegs +[x12]
;; size=20 bbWeight=1 PerfScore 8.00
-G_M23254_IG03: ; bbWeight=4, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz
- mov x12, x3
- ; gcrRegs +[x12]
- ldr wip0, [x12, #0x08]
- cmp w14, wip0
+G_M23254_IG03: ; bbWeight=4, gcrefRegs=1007 {x0 x1 x2 x12}, byrefRegs=0000 {}, byref, isz
+ mov xip0, x12
+ ; gcrRegs +[xip0]
+ ldr w3, [xip0, #0x08]
+ cmp w15, w3
bhs G_M23254_IG10
- add x12, x12, #16
- ; gcrRegs -[x12]
- ; byrRegs +[x12]
- ldr x4, [x12, w14, UXTW #3]
- ; gcrRegs +[x4]
- ldr x12, [x4, #0x10]
- ; gcrRegs +[x12]
- ; byrRegs -[x12]
- cmp x12, x1
+ add x4, xip0, #16
+ ; byrRegs +[x4]
+ lsl xip0, x15, #3
+ ; gcrRegs -[xip0]
+ ldr xip0, [x4, xip0]
+ ; gcrRegs +[xip0]
+ ldr x5, [xip0, #0x10]
+ ; gcrRegs +[x5]
+ cmp x5, x1
bne G_M23254_IG05
- ;; size=36 bbWeight=4 PerfScore 52.00
-G_M23254_IG04: ; bbWeight=2, gcrefRegs=001F {x0 x1 x2 x3 x4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x12]
- ldr x12, [x4, #0x08]
- ; gcrRegs +[x12]
- cmp x12, x2
+ ;; size=40 bbWeight=4 PerfScore 56.00
+G_M23254_IG04: ; bbWeight=2, gcrefRegs=11007 {x0 x1 x2 x12 xip0}, byrefRegs=0010 {x4}, byref, isz
+ ; gcrRegs -[x5]
+ ldr xip0, [xip0, #0x08]
+ cmp xip0, x2
beq G_M23254_IG07
;; size=12 bbWeight=2 PerfScore 9.00
-G_M23254_IG05: ; bbWeight=4, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x4 x12]
- add w14, w14, #1
- cmp w14, w15
+G_M23254_IG05: ; bbWeight=4, gcrefRegs=1007 {x0 x1 x2 x12}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[xip0]
+ ; byrRegs -[x4]
+ add w15, w15, #1
+ mov w15, w15
+ cmp w15, w14
blt G_M23254_IG03
- ;; size=12 bbWeight=4 PerfScore 8.00
+ ;; size=16 bbWeight=4 PerfScore 10.00
G_M23254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x0-x3]
+ ; gcrRegs -[x0-x2 x12]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M23254_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0019 {x0 x3 x4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0 x3-x4]
- sub w1, w15, #1
- cmp w14, w1
+G_M23254_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, gcvars, byref, isz
+ ; gcrRegs +[x0]
+ ; byrRegs +[x4]
+ sub w1, w14, #1
+ cmp w15, w1
bge G_M23254_IG08
- mov x15, x3
+ ubfiz x14, x15, #3, #32
+ ldr x2, [x4, x14]
+ ; gcrRegs +[x2]
+ sxtw w15, w1
+ cmp w15, w3
+ bhs G_M23254_IG10
+ ubfiz x5, x15, #3, #32
+ ldr x15, [x4, x5]
; gcrRegs +[x15]
- mov x12, x3
- ; gcrRegs +[x12]
- sxtw wip0, w1
- ldr w2, [x12, #0x08]
- cmp wip0, w2
- bhs G_M23254_IG10
- add x12, x12, #16
- ; gcrRegs -[x12]
- ; byrRegs +[x12]
- ubfiz x2, xip0, #3, #32
- ldr x12, [x12, x2]
- ; gcrRegs +[x12]
- ; byrRegs -[x12]
- ldr wip0, [x15, #0x08]
- cmp w14, wip0
- bhs G_M23254_IG10
- add x15, x15, #16
- ; gcrRegs -[x15]
- ; byrRegs +[x15]
- add x14, x15, x14, LSL #3
+ add x14, x4, x14
; byrRegs +[x14]
- mov x15, x12
- ; gcrRegs +[x15]
- ; byrRegs -[x15]
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x12 x15]
+ bl CORINFO_HELP_CHECKED_ASSIGN_REF
+ ; gcrRegs -[x15]
; byrRegs -[x14]
sxtw w14, w1
- ldr w15, [x3, #0x08]
- cmp w14, w15
+ cmp w14, w3
bhs G_M23254_IG10
- add x14, x3, #16
+ add x14, x4, x5
; byrRegs +[x14]
- add x14, x14, x2
- mov x15, x4
+ mov x15, x2
; gcrRegs +[x15]
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x3-x4 x15]
- ; byrRegs -[x14]
- ;; size=108 bbWeight=0.50 PerfScore 13.75
+ bl CORINFO_HELP_CHECKED_ASSIGN_REF
+ ; gcrRegs -[x2 x15]
+ ; byrRegs -[x4 x14]
+ ;; size=72 bbWeight=0.50 PerfScore 8.75
G_M23254_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
str w1, [x0, #0x58]
;; size=4 bbWeight=0.50 PerfScore 0.50
@@ -142,7 +131,7 @@ G_M23254_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 224, prolog size 8, PerfScore 94.75, instruction count 56, allocated bytes for code 224 (MethodHash=dfe8a529) for method System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
+; Total bytes of code 196, prolog size 8, PerfScore 95.75, instruction count 49, allocated bytes for code 196 (MethodHash=dfe8a529) for method System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
; ============================================================
Unwind Info:
@@ -153,7 +142,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
+ Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-10.71%) : 165478.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
@@ -9,21 +9,22 @@
;
; V00 arg0 [V00,T03] ( 3, 4 ) ref -> x19 class-hnd single-def <System.Text.StringBuilder>
; V01 arg1 [V01,T13] ( 3, 3 ) double -> d0 single-def
-; V02 arg2 [V02,T05] ( 3, 3 ) ubyte -> x1 single-def
+; V02 arg2 [V02,T04] ( 3, 3 ) ubyte -> x1 single-def
; V03 loc0 [V03,T02] ( 4, 9 ) int -> x20
; V04 loc1 [V04,T08] ( 2, 3 ) ref -> x21 class-hnd single-def <System.String>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
-; V06 loc3 [V06,T00] ( 7, 12 ) int -> registers
+;* V06 loc3 [V06 ] ( 0, 0 ) int -> zero-ref
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T09] ( 2, 2 ) ref -> x21
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
-; V10 tmp3 [V10,T04] ( 3, 6 ) int -> x23 "impSpillLclRefs"
-; V11 tmp4 [V11,T06] ( 2, 5 ) byref -> x22 single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp3 [V10,T07] ( 2, 4 ) int -> x3 "impSpillLclRefs"
+; V11 tmp4 [V11,T05] ( 2, 5 ) byref -> x22 single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V12 tmp5 [V12,T11] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
; V13 tmp6 [V13,T10] ( 2, 2 ) byref -> x22 single-def "field V09._reference (fldOffset=0x0)" P-INDEP
;* V14 tmp7 [V14,T12] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V15 cse0 [V15,T01] ( 3, 10 ) int -> x3 "CSE - aggressive"
-; V16 cse1 [V16,T07] ( 2, 5 ) long -> registers hoist "CSE - aggressive"
+; V15 tmp8 [V15,T00] ( 8, 13 ) long -> x23 "Widened primary induction variable"
+; V16 cse0 [V16,T01] ( 3, 10 ) int -> x3 "CSE - aggressive"
+; V17 cse1 [V17,T06] ( 2, 5 ) long -> x24 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -50,18 +51,15 @@ G_M10117_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
movz x22, #0xD1FFAB1E
movk x22, #0xD1FFAB1E LSL #16
movk x22, #0xD1FFAB1E LSL #32
- mov w23, #13
- b G_M10117_IG07
+ mov x23, #13
+ b G_M10117_IG06
;; size=56 bbWeight=1 PerfScore 9.00
G_M10117_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref
; byrRegs +[x22]
- ubfiz x23, x24, #2, #32
+ lsl x24, x23, #2
b G_M10117_IG05
;; size=8 bbWeight=1 PerfScore 2.00
G_M10117_IG04: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref
- mov x0, x23
- mov w23, w24
- mov x24, x0
sub w20, w20, w3
and w3, w23, #1
add w3, w3, #1
@@ -78,34 +76,29 @@ G_M10117_IG04: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000
blr x4
; gcrRegs -[x1]
; gcr arg pop 0
- mov w0, w23
- ; gcrRegs -[x0]
- mov x23, x24
- mov w24, w0
- ;; size=72 bbWeight=2 PerfScore 29.00
+ ;; size=48 bbWeight=2 PerfScore 23.00
G_M10117_IG05: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz
- cmp w24, #13
- bhs G_M10117_IG09
- ldr w3, [x22, x23]
+ ; gcrRegs -[x0]
+ cmp w23, #13
+ bhs G_M10117_IG08
+ ldr w3, [x22, x24]
cmp w3, w20
ble G_M10117_IG04
;; size=20 bbWeight=4 PerfScore 24.00
-G_M10117_IG06: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref
- mov w23, w24
- ;; size=4 bbWeight=2 PerfScore 1.00
-G_M10117_IG07: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz
- sub w3, w23, #1
- sxtw w24, w3
- cbnz w23, G_M10117_IG03
- ;; size=12 bbWeight=1 PerfScore 2.00
-G_M10117_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M10117_IG06: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz
+ sxtw w3, w23
+ sub w0, w23, #1
+ mov w23, w0
+ cbnz w3, G_M10117_IG03
+ ;; size=16 bbWeight=1 PerfScore 2.50
+G_M10117_IG07: ; bbWeight=1, epilog, nogc, extend
ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x40
ret lr
;; size=20 bbWeight=1 PerfScore 5.00
-G_M10117_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M10117_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19 x21]
; byrRegs -[x22]
bl CORINFO_HELP_RNGCHKFAIL
@@ -113,7 +106,7 @@ G_M10117_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 224, prolog size 24, PerfScore 77.00, instruction count 56, allocated bytes for code 224 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
+; Total bytes of code 200, prolog size 24, PerfScore 70.50, instruction count 50, allocated bytes for code 200 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
; ============================================================
Unwind Info:
@@ -124,7 +117,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
+ Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-3.37%) : 161474.dasm - System.Xml.Schema.FacetsChecker+FacetsCompiler:Preprocess(System.String):System.String (FullOpts)
@@ -8,42 +8,43 @@
; 3 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T10] ( 6, 6.50) ref -> x19 class-hnd single-def <System.String>
+; V00 arg0 [V00,T08] ( 6, 9.50) ref -> x19 class-hnd single-def <System.String>
; V01 loc0 [V01,T06] ( 15, 12.45) ref -> x20 class-hnd exact single-def <System.Text.StringBuilder>
-; V02 loc1 [V02,T17] ( 4, 3.50) int -> x22
-; V03 loc2 [V03,T08] ( 8, 11 ) int -> x23
+; V02 loc1 [V02,T18] ( 4, 3.50) int -> x22
+; V03 loc2 [V03,T09] ( 8, 11 ) int -> x23
; V04 loc3 [V04,T03] ( 11, 29 ) int -> x24
-; V05 loc4 [V05,T04] ( 2, 18 ) ushort -> x28
-; V06 loc5 [V06,T01] ( 8, 86 ) int -> [fp+0x1C]
+; V05 loc4 [V05,T04] ( 2, 18 ) ushort -> x27
+; V06 loc5 [V06,T13] ( 3, 6 ) int -> x27
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T11] ( 4, 8 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder>
+; V08 tmp1 [V08,T12] ( 4, 8 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder>
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.StringBuilder>
-; V10 tmp3 [V10,T20] ( 3, 2.46) int -> x0 "Inline stloc first use temp"
-; V11 tmp4 [V11,T18] ( 3, 2.46) ref -> x1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V10 tmp3 [V10,T21] ( 3, 2.46) int -> x0 "Inline stloc first use temp"
+; V11 tmp4 [V11,T19] ( 3, 2.46) ref -> x1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V12 tmp5 [V12,T05] ( 4, 16.09) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.StringBuilder>
-; V14 tmp7 [V14,T21] ( 3, 2.46) int -> x0 "Inline stloc first use temp"
-; V15 tmp8 [V15,T19] ( 3, 2.46) ref -> x1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V14 tmp7 [V14,T22] ( 3, 2.46) int -> x0 "Inline stloc first use temp"
+; V15 tmp8 [V15,T20] ( 3, 2.46) ref -> x1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V16 tmp9 [V16,T00] ( 3, 96 ) ref -> x0 "arr expr"
; V17 tmp10 [V17,T07] ( 3, 12 ) ref -> x2 "arr expr"
-; V18 cse0 [V18,T02] ( 4, 36 ) ref -> x3 "CSE - aggressive"
-; V19 cse1 [V19,T13] ( 3, 6 ) int -> x28 "CSE - aggressive"
-;* V20 cse2 [V20,T22] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
-; V21 cse3 [V21,T14] ( 3, 6 ) long -> [fp+0x10] spill-single-def "CSE - aggressive"
-; V22 cse4 [V22,T09] ( 5, 10 ) int -> x27 "CSE - aggressive"
-; V23 cse5 [V23,T16] ( 3, 4 ) int -> x21 "CSE - aggressive"
-; V24 cse6 [V24,T12] ( 3, 7 ) byref -> x26 hoist "CSE - aggressive"
-; V25 cse7 [V25,T15] ( 3, 6 ) int -> x25 "CSE - moderate"
+; V18 tmp11 [V18,T01] ( 7, 84 ) long -> x4 "Widened primary induction variable"
+; V19 cse0 [V19,T02] ( 4, 36 ) ref -> x3 "CSE - aggressive"
+; V20 cse1 [V20,T14] ( 3, 6 ) int -> x27 "CSE - aggressive"
+;* V21 cse2 [V21,T23] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V22 cse3 [V22,T15] ( 3, 6 ) long -> x28 "CSE - aggressive"
+; V23 cse4 [V23,T10] ( 5, 10 ) int -> x26 "CSE - aggressive"
+; V24 cse5 [V24,T17] ( 3, 4 ) int -> x21 "CSE - aggressive"
+; V25 cse6 [V25,T16] ( 3, 6 ) int -> x25 "CSE - aggressive"
+; V26 cse7 [V26,T11] ( 3, 10 ) byref -> x3 "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 0
G_M19789_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
- stp x25, x26, [sp, #0x50]
- stp x27, x28, [sp, #0x60]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
+ stp x23, x24, [sp, #0x30]
+ stp x25, x26, [sp, #0x40]
+ stp x27, x28, [sp, #0x50]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
@@ -100,26 +101,26 @@ G_M19789_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
sub w25, w22, #2
cmp w25, #0
ble G_M19789_IG17
- add x26, x19, #12
- ; byrRegs +[x26]
- ;; size=32 bbWeight=1 PerfScore 7.00
-G_M19789_IG05: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
- ldrh w3, [x26, w24, UXTW #2]
- cmp w3, #92
+ ;; size=28 bbWeight=1 PerfScore 6.50
+G_M19789_IG05: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ add x3, x19, #12
+ ; byrRegs +[x3]
+ ldrh w0, [x3, w24, UXTW #2]
+ cmp w0, #92
bne G_M19789_IG16
- ;; size=12 bbWeight=4 PerfScore 18.00
-G_M19789_IG06: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
- add w27, w24, #1
- cmp w27, w21
+ ;; size=16 bbWeight=4 PerfScore 20.00
+G_M19789_IG06: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0008 {x3}, byref, isz
+ add w26, w24, #1
+ cmp w26, w21
bhs G_M19789_IG24
- ldrh w28, [x26, w27, UXTW #2]
- cmp w28, #92
+ ldrh w27, [x3, w26, UXTW #2]
+ cmp w27, #92
bne G_M19789_IG08
- sxtw w24, w27
+ sxtw w24, w26
b G_M19789_IG16
;; size=32 bbWeight=2 PerfScore 16.00
G_M19789_IG07: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ; byrRegs -[x26]
+ ; byrRegs -[x3]
mov x0, x20
; gcrRegs +[x0]
mov w1, #94
@@ -132,86 +133,81 @@ G_M19789_IG07: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcr arg pop 0
b G_M19789_IG04
;; size=32 bbWeight=0.04 PerfScore 0.26
-G_M19789_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
- ; byrRegs +[x26]
- mov w4, wzr
+G_M19789_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
movz x3, #0xD1FFAB1E
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr w3, [x3]
tbz w3, #0, G_M19789_IG25
- ;; size=24 bbWeight=2 PerfScore 12.00
-G_M19789_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
- movz x5, #0xD1FFAB1E
- movk x5, #0xD1FFAB1E LSL #16
- movk x5, #0xD1FFAB1E LSL #32
- str x5, [fp, #0x10] // [V21 cse3]
- ldr x3, [x5]
+ ;; size=20 bbWeight=2 PerfScore 11.00
+G_M19789_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ movz x28, #0xD1FFAB1E
+ movk x28, #0xD1FFAB1E LSL #16
+ movk x28, #0xD1FFAB1E LSL #32
+ ldr x3, [x28]
; gcrRegs +[x3]
ldr w0, [x3, #0x08]
cmp w0, #0
ble G_M19789_IG16
- ;; size=32 bbWeight=2 PerfScore 20.00
-G_M19789_IG10: ; bbWeight=16, gcrefRegs=180008 {x3 x19 x20}, byrefRegs=4000000 {x26}, byref, isz
+ mov x4, xzr
+ ;; size=32 bbWeight=2 PerfScore 19.00
+G_M19789_IG10: ; bbWeight=16, gcrefRegs=180008 {x3 x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x3
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w4, w1
bhs G_M19789_IG24
- ubfiz x1, x4, #4, #32
+ lsl x1, x4, #4
add x1, x1, #16
add x0, x0, x1
; gcrRegs -[x0]
; byrRegs +[x0]
ldrh w0, [x0, #0x08]
; byrRegs -[x0]
- cmp w0, w28
+ cmp w0, w27
beq G_M19789_IG12
add w4, w4, #1
+ mov w4, w4
ldr w0, [x3, #0x08]
- str w4, [fp, #0x1C] // [V06 loc5]
cmp w0, w4
- ldr w4, [fp, #0x1C] // [V06 loc5]
bgt G_M19789_IG10
- ;; size=64 bbWeight=16 PerfScore 312.00
-G_M19789_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref
+ ;; size=60 bbWeight=16 PerfScore 272.00
+G_M19789_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x3]
b G_M19789_IG16
;; size=4 bbWeight=4 PerfScore 4.00
-G_M19789_IG12: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
+G_M19789_IG12: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ mov w27, w4
cmp w23, w24
bge G_M19789_IG13
- str w4, [fp, #0x1C] // [V06 loc5]
sub w3, w24, w23
mov x0, x20
; gcrRegs +[x0]
mov x1, x19
; gcrRegs +[x1]
mov w2, w23
- movz x6, #0xD1FFAB1E // code for System.Text.StringBuilder:Append(System.String,int,int):System.Text.StringBuilder:this
- movk x6, #0xD1FFAB1E LSL #16
- movk x6, #0xD1FFAB1E LSL #32
- ldr x6, [x6]
- blr x6
+ movz x4, #0xD1FFAB1E // code for System.Text.StringBuilder:Append(System.String,int,int):System.Text.StringBuilder:this
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #0xD1FFAB1E LSL #32
+ ldr x4, [x4]
+ blr x4
; gcrRegs -[x1]
; gcr arg pop 0
- ldr w4, [fp, #0x1C] // [V06 loc5]
- ;; size=52 bbWeight=2 PerfScore 24.00
-G_M19789_IG13: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
+ ;; size=48 bbWeight=2 PerfScore 19.00
+G_M19789_IG13: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x5, [fp, #0x10] // [V21 cse3]
- ldr x2, [x5]
+ ldr x2, [x28]
; gcrRegs +[x2]
ldr w1, [x2, #0x08]
- cmp w4, w1
+ cmp w27, w1
bhs G_M19789_IG24
- ubfiz x1, x4, #4, #32
+ ubfiz x1, x27, #4, #32
add x1, x1, #16
ldr x1, [x2, x1]
; gcrRegs +[x1]
cbz x1, G_M19789_IG15
- ;; size=36 bbWeight=2 PerfScore 30.00
-G_M19789_IG14: ; bbWeight=2.02, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=4000000 {x26}, byref
+ ;; size=32 bbWeight=2 PerfScore 26.00
+G_M19789_IG14: ; bbWeight=2.02, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
ldr w2, [x1, #0x08]
add x1, x1, #12
@@ -228,17 +224,16 @@ G_M19789_IG14: ; bbWeight=2.02, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=
; byrRegs -[x1]
; gcr arg pop 0
;; size=32 bbWeight=2.02 PerfScore 19.22
-G_M19789_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref
- sxtw w24, w27
+G_M19789_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ sxtw w24, w26
add w23, w24, #1
;; size=8 bbWeight=2 PerfScore 2.00
-G_M19789_IG16: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
+G_M19789_IG16: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w24, w24, #1
cmp w24, w25
blt G_M19789_IG05
;; size=12 bbWeight=4 PerfScore 8.00
G_M19789_IG17: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x26]
cmp w23, w22
bge G_M19789_IG19
;; size=8 bbWeight=1 PerfScore 1.50
@@ -286,12 +281,12 @@ G_M19789_IG21: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ldr x1, [x1]
;; size=20 bbWeight=1 PerfScore 5.00
...
+20 (+35.71%) : 265016.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
@@ -10,13 +10,14 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
; V01 loc0 [V01,T01] ( 4, 10 ) int -> x2
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+;* V03 loc2 [V03,T06] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) ubyte -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T04] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V07 tmp2 [V07,T05] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V08 tmp3 [V08,T03] ( 2, 5 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V09 tmp4 [V09,T02] ( 3, 6 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V09 tmp4 [V09,T02] ( 4, 10 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V10 tmp5 [V10,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -27,17 +28,20 @@ G_M59336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M59336_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
mov w2, wzr
- mov w3, wzr
cmp w1, #0
ble G_M59336_IG04
+ mov x3, xzr
;; size=16 bbWeight=1 PerfScore 2.50
G_M59336_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2]
+ cmp w3, w1
+ bhs G_M59336_IG06
+ ldrb w4, [x0, x3]
add w2, w4, w2
add w3, w3, #1
+ mov w3, w3
cmp w3, w1
blt G_M59336_IG03
- ;; size=20 bbWeight=4 PerfScore 22.00
+ ;; size=32 bbWeight=4 PerfScore 30.00
G_M59336_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov w0, w2
@@ -46,8 +50,13 @@ G_M59336_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M59336_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 8, PerfScore 28.50, instruction count 14, allocated bytes for code 56 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 36.50, instruction count 19, allocated bytes for code 76 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -58,7 +67,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+40.00%) : 212907.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
@@ -9,11 +9,12 @@
;
; V00 arg0 [V00,T01] ( 5, 11 ) int -> x0
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 17 ) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V06 cse0 [V06,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 10 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
+; V07 cse0 [V07,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -23,27 +24,36 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0
ble G_M1770_IG04
+ mov x3, xzr
movz w4, #0xD1FFAB1E
movk w4, #0xD1FFAB1E LSL #16
;; size=20 bbWeight=1 PerfScore 3.00
G_M1770_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2
+ bhs G_M1770_IG05
+ lsl x5, x3, #1
+ ldrh w5, [x1, x5]
eor w0, w5, w0
mul w0, w0, w4
add w3, w3, #1
+ mov w3, w3
cmp w3, w2
blt G_M1770_IG03
- ;; size=24 bbWeight=4 PerfScore 30.00
+ ;; size=40 bbWeight=4 PerfScore 42.00
G_M1770_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 36.50, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 48.50, instruction count 21, allocated bytes for code 84 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -54,7 +64,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+40.00%) : 13332.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
@@ -9,11 +9,12 @@
;
; V00 arg0 [V00,T01] ( 5, 11 ) int -> x0
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 17 ) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V06 cse0 [V06,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 10 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
+; V07 cse0 [V07,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -23,27 +24,36 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0
ble G_M1770_IG04
+ mov x3, xzr
movz w4, #0xD1FFAB1E
movk w4, #0xD1FFAB1E LSL #16
;; size=20 bbWeight=1 PerfScore 3.00
G_M1770_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2
+ bhs G_M1770_IG05
+ lsl x5, x3, #1
+ ldrh w5, [x1, x5]
eor w0, w5, w0
mul w0, w0, w4
add w3, w3, #1
+ mov w3, w3
cmp w3, w2
blt G_M1770_IG03
- ;; size=24 bbWeight=4 PerfScore 30.00
+ ;; size=40 bbWeight=4 PerfScore 42.00
G_M1770_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 36.50, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 48.50, instruction count 21, allocated bytes for code 84 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -54,7 +64,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries_tests.run.linux.arm64.Release.mch
-44 (-5.53%) : 208828.dasm - System.Linq.Enumerable:ToArrayint:int
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 130
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 130
; 1 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -22,33 +22,33 @@
;* V10 tmp5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Collections.Generic.Dictionary`2+ValueCollection[System.Collections.Frozen.Tests.SimpleStruct,int]>
; V11 tmp6 [V11,T10] ( 3, 3.15) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Collections.Frozen.Tests.SimpleStruct,int]>
; V12 tmp7 [V12,T03] ( 5, 4.93) int -> registers "Inlining Arg"
-; V13 tmp8 [V13,T16] ( 2, 2.19) int -> x0 "impAppendStmt"
-; V14 tmp9 [V14,T14] ( 5, 2.40) int -> x0 "Inline stloc first use temp"
-; V15 tmp10 [V15,T09] ( 7, 3.16) ref -> x1 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V16 tmp11 [V16,T04] ( 10, 4.40) int -> x2 "Inline stloc first use temp"
-; V17 tmp12 [V17,T01] ( 8, 7.68) int -> x21 "impSpillLclRefs"
-; V18 tmp13 [V18,T06] ( 4, 3.84) int -> x3 "Strict ordering of exceptions for Array store"
-; V19 tmp14 [V19,T08] ( 3, 3.28) ref -> x1 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Collections.Frozen.Tests.SimpleStruct,int]>
-; V20 cse0 [V20,T19] ( 3, 0.03) byref -> x3 "CSE - conservative"
-; V21 cse1 [V21,T11] ( 3, 2.85) long -> x3 "CSE - aggressive"
-; V22 cse2 [V22,T15] ( 4, 2.19) ref -> x23 "CSE - aggressive"
-; V23 cse3 [V23,T17] ( 4, 2.05) int -> x22 "CSE - aggressive"
-; V24 rat0 [V24,T00] ( 6, 8 ) ref -> x0 class-hnd "replacement local" <System.Linq.IIListProvider`1[int]>
-; V25 rat1 [V25,T05] ( 5, 4.20) ref -> x20 class-hnd "replacement local" <System.Collections.Generic.ICollection`1[int]>
+; V13 tmp8 [V13,T16] ( 2, 2.19) int -> x11 "impAppendStmt"
+; V14 tmp9 [V14,T14] ( 5, 2.40) int -> x11 "Inline stloc first use temp"
+; V15 tmp10 [V15,T09] ( 7, 3.16) ref -> x2 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+;* V16 tmp11 [V16,T19] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V17 tmp12 [V17,T01] ( 8, 7.68) int -> x0 "impSpillLclRefs"
+; V18 tmp13 [V18,T06] ( 4, 3.84) int -> x4 "Strict ordering of exceptions for Array store"
+; V19 tmp14 [V19,T08] ( 3, 3.28) ref -> x3 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Collections.Frozen.Tests.SimpleStruct,int]>
+; V20 tmp15 [V20,T20] ( 6, 0.05) long -> x3 "Widened primary induction variable"
+; V21 tmp16 [V21,T05] ( 5, 4.15) long -> x3 "Widened primary induction variable"
+; V22 cse0 [V22,T21] ( 3, 0.03) byref -> x4 "CSE - conservative"
+; V23 cse1 [V23,T11] ( 3, 2.85) long -> x4 "CSE - aggressive"
+; V24 cse2 [V24,T15] ( 4, 2.19) ref -> x2 "CSE - aggressive"
+; V25 cse3 [V25,T17] ( 4, 2.05) int -> x1 "CSE - aggressive"
+; V26 rat0 [V26,T00] ( 6, 8 ) ref -> x0 class-hnd "replacement local" <System.Linq.IIListProvider`1[int]>
+; V27 rat1 [V27,T04] ( 5, 4.20) ref -> x20 class-hnd "replacement local" <System.Collections.Generic.ICollection`1[int]>
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M20372_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, #-0x20]!
+ stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M20372_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M20372_IG38
+ cbz x19, G_M20372_IG37
mov x0, x19
; gcrRegs +[x0]
cbz x0, G_M20372_IG06
@@ -79,120 +79,49 @@ G_M20372_IG05: ; bbWeight=0.27, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs +[x0]
;; size=4 bbWeight=0.27 PerfScore 0.14
G_M20372_IG06: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- cbz x0, G_M20372_IG17
+ cbnz x0, G_M20372_IG21
;; size=4 bbWeight=1 PerfScore 1.00
-G_M20372_IG07: ; bbWeight=0.42, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19]
- ldr x1, [x0]
- movz x2, #0xD1FFAB1E
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- cmp x1, x2
- bne G_M20372_IG15
- ;; size=24 bbWeight=0.42 PerfScore 2.49
-G_M20372_IG08: ; bbWeight=0.37, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- movz x1, #0xD1FFAB1E // code for System.Linq.Enumerable+SelectRangeIterator`1[int]:ToArray():int[]:this
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- ;; size=16 bbWeight=0.37 PerfScore 1.64
-G_M20372_IG09: ; bbWeight=0.37, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x40
- br x1
- ; gcr arg pop 0
- ;; size=20 bbWeight=0.37 PerfScore 2.19
-G_M20372_IG10: ; bbWeight=0.55, gcVars=0000000000000000 {}, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0] +[x19 x23]
- ldr w0, [x23, #0x38]
- ldr x1, [x23, #0x10]
- ; gcrRegs +[x1]
- mov w2, wzr
- cmp w0, #0
- ble G_M20372_IG27
- ;; size=20 bbWeight=0.55 PerfScore 4.37
-G_M20372_IG11: ; bbWeight=0.35, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x23]
- cbz x1, G_M20372_IG29
- ldr w3, [x1, #0x08]
- cmp w3, w0
- blt G_M20372_IG29
- ;; size=16 bbWeight=0.35 PerfScore 1.92
-G_M20372_IG12: ; bbWeight=0.95, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ubfiz x3, x2, #4, #32
- add x3, x3, #16
- add x4, x1, x3
- ; byrRegs +[x4]
- ldr w4, [x4, #0x04]
- ; byrRegs -[x4]
- cmn w4, #1
- blt G_M20372_IG13
- add w4, w21, #1
- add x3, x1, x3
- ; byrRegs +[x3]
- ldr w3, [x3, #0x0C]
- ; byrRegs -[x3]
- cmp w21, w22
- bhs G_M20372_IG37
- add x5, x19, #16
- ; byrRegs +[x5]
- str w3, [x5, w21, UXTW #2]
- mov w21, w4
- ;; size=56 bbWeight=0.95 PerfScore 13.31
-G_M20372_IG13: ; bbWeight=0.95, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x5]
- add w2, w2, #1
- cmp w2, w0
- blt G_M20372_IG12
- ;; size=12 bbWeight=0.95 PerfScore 1.90
-G_M20372_IG14: ; bbWeight=0.35, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1]
- b G_M20372_IG27
- ;; size=4 bbWeight=0.35 PerfScore 0.35
-G_M20372_IG15: ; bbWeight=0.05, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19] +[x0]
- movz x11, #0xD1FFAB1E // code for <unknown method>
- movk x11, #0xD1FFAB1E LSL #16
- movk x11, #0xD1FFAB1E LSL #32
- ldr x1, [x11]
- ;; size=16 bbWeight=0.05 PerfScore 0.22
-G_M20372_IG16: ; bbWeight=0.05, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x40
- br x1
- ; gcr arg pop 0
- ;; size=20 bbWeight=0.05 PerfScore 0.30
-G_M20372_IG17: ; bbWeight=0.58, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0] +[x19]
+G_M20372_IG07: ; bbWeight=0.58, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
mov x20, x19
; gcrRegs +[x20]
- cbz x20, G_M20372_IG19
+ cbz x20, G_M20372_IG10
;; size=8 bbWeight=0.58 PerfScore 0.88
-G_M20372_IG18: ; bbWeight=0.29, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M20372_IG08: ; bbWeight=0.29, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x1, [x20]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x1, x0
- bne G_M20372_IG25
+ beq G_M20372_IG10
;; size=24 bbWeight=0.29 PerfScore 1.75
-G_M20372_IG19: ; bbWeight=0.58, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M20372_IG35
+G_M20372_IG09: ; bbWeight=0.05, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
+ mov x1, x19
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[x1] +[x0]
+ ; gcr arg pop 0
+ mov x20, x0
+ ; gcrRegs +[x20]
+ ;; size=24 bbWeight=0.05 PerfScore 0.18
+G_M20372_IG10: ; bbWeight=0.58, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
+ cbz x20, G_M20372_IG34
;; size=4 bbWeight=0.58 PerfScore 0.58
-G_M20372_IG20: ; bbWeight=0.58, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M20372_IG11: ; bbWeight=0.58, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19]
ldr x0, [x20]
movz x11, #0xD1FFAB1E
movk x11, #0xD1FFAB1E LSL #16
movk x11, #0xD1FFAB1E LSL #32
cmp x0, x11
- bne G_M20372_IG32
+ bne G_M20372_IG24
;; size=24 bbWeight=0.58 PerfScore 3.46
-G_M20372_IG21: ; bbWeight=0.53, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M20372_IG12: ; bbWeight=0.53, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
ldr x0, [x20, #0x08]
; gcrRegs +[x0]
ldr w11, [x0, #0x38]
@@ -200,10 +129,10 @@ G_M20372_IG21: ; bbWeight=0.53, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
; gcrRegs -[x0]
sub w19, w11, w0
;; size=16 bbWeight=0.53 PerfScore 4.99
-G_M20372_IG22: ; bbWeight=0.58, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- cbz w19, G_M20372_IG33
+G_M20372_IG13: ; bbWeight=0.58, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ cbz w19, G_M20372_IG32
;; size=4 bbWeight=0.58 PerfScore 0.58
-G_M20372_IG23: ; bbWeight=0.57, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M20372_IG14: ; bbWeight=0.57, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
sxtw x1, w19
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -219,40 +148,159 @@ G_M20372_IG23: ; bbWeight=0.57, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M20372_IG26
+ bne G_M20372_IG31
;; size=48 bbWeight=0.57 PerfScore 5.41
-G_M20372_IG24: ; bbWeight=0.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov w21, wzr
- ldr w22, [x19, #0x08]
- sxtw w0, w22
- ldr x23, [x20, #0x08]
- ; gcrRegs +[x23]
- mov x1, x23
- ; gcrRegs +[x1]
- ldr w11, [x1, #0x38]
- ldr w1, [x1, #0x40]
- ; gcrRegs -[x1]
- sub w1, w11, w1
- cmp w1, w0
- bgt G_M20372_IG39
- b G_M20372_IG10
- ;; size=44 bbWeight=0.55 PerfScore 9.02
-G_M20372_IG25: ; bbWeight=0.05, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20 x23]
- mov x1, x19
- ; gcrRegs +[x1]
...
-32 (-3.39%) : 87642.dasm - Microsoft.CodeAnalysis.NodeStateTable1[ubyte]:AsCached():Microsoft.CodeAnalysis.NodeStateTable1[ubyte]:this (Tier1)
@@ -10,31 +10,31 @@
; Final local variable assignments
;
; V00 this [V00,T01] ( 6, 5.00) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.NodeStateTable`1[ubyte]>
-; V01 loc0 [V01,T11] ( 3, 2.18) ref -> x24 class-hnd exact single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte]]>
+; V01 loc0 [V01,T11] ( 3, 2.18) ref -> x23 class-hnd exact single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte]]>
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte]]>
-; V03 loc2 [V03 ] ( 3, 0.56) struct (32) [fp+0x78] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte]>
+; V03 loc2 [V03 ] ( 3, 0.56) struct (32) [fp+0x70] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T05] ( 2, 3.99) ref -> x21 class-hnd single-def "dup spill" <System.Func`2[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte],ubyte]>
;* V06 tmp2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte]]>
;* V07 tmp3 [V07 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte]]>
; V08 tmp4 [V08,T07] ( 6, 2.56) ref -> x21
-; V09 tmp5 [V09,T25] ( 2, 0.75) struct (32) [fp+0x58] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte]>
-; V10 tmp6 [V10,T00] ( 5, 9.97) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.NodeStateTable`1[ubyte]>
+; V09 tmp5 [V09,T25] ( 2, 0.75) struct (32) [fp+0x50] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte]>
+; V10 tmp6 [V10,T00] ( 5, 9.97) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.NodeStateTable`1[ubyte]>
;* V11 tmp7 [V11 ] ( 0, 0 ) struct ( 8) zero-ref single-def "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte]]>
-; V12 tmp8 [V12,T28] ( 5, 0.01) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte],ubyte]>
-; V13 tmp9 [V13,T29] ( 2, 0.00) ref -> x15 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.NodeStateTable`1+<>c[ubyte]>
+; V12 tmp8 [V12,T29] ( 5, 0.01) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte],ubyte]>
+; V13 tmp9 [V13,T30] ( 2, 0.00) ref -> x15 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.NodeStateTable`1+<>c[ubyte]>
; V14 tmp10 [V14,T13] ( 4, 1.99) int -> x22 "Inline return value spill temp"
;* V15 tmp11 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte]]>
; V16 tmp12 [V16,T24] ( 4, 0.75) int -> x22 "Inline stloc first use temp"
-; V17 tmp13 [V17,T23] ( 5, 0.93) int -> x23 "Inline stloc first use temp"
-; V18 tmp14 [V18 ] ( 3, 1.12) struct (32) [fp+0x38] do-not-enreg[XS] must-init addr-exposed "spilled call-like call argument" <Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte]>
+;* V17 tmp13 [V17,T28] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V18 tmp14 [V18 ] ( 3, 1.12) struct (32) [fp+0x30] do-not-enreg[XS] must-init addr-exposed "spilled call-like call argument" <Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte]>
; V19 tmp15 [V19,T27] ( 2, 0.37) int -> x0 "guarded devirt return temp"
;* V20 tmp16 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <Microsoft.CodeAnalysis.NodeStateTable`1+<>c[ubyte]>
-; V21 tmp17 [V21 ] ( 2, 0.75) struct (32) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte]>
+; V21 tmp17 [V21 ] ( 2, 0.75) struct (32) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte]>
;* V22 tmp18 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte]]>
;* V23 tmp19 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte]]>
-; V24 tmp20 [V24,T02] ( 4, 5.99) ref -> x23 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-; V25 tmp21 [V25,T03] ( 8, 5.77) ref -> x24 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte]]>
+; V24 tmp20 [V24,T02] ( 4, 5.99) ref -> x20 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V25 tmp21 [V25,T03] ( 8, 5.77) ref -> x23 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte]]>
;* V26 tmp22 [V26 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte]]>
; V27 tmp23 [V27,T04] ( 3, 4.68) byref -> x0 single-def "impAppendStmt"
;* V28 tmp24 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte]]>
@@ -43,15 +43,15 @@
;* V31 tmp27 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte]]>
;* V32 tmp28 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte]]>
;* V33 tmp29 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte][]>
-; V34 tmp30 [V34,T10] ( 8, 2.24) ref -> x26 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte]]>
-; V35 tmp31 [V35,T26] ( 5, 0.56) int -> x27 "Inline stloc first use temp"
+; V34 tmp30 [V34,T10] ( 8, 2.24) ref -> x25 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte]]>
+; V35 tmp31 [V35,T26] ( 5, 0.56) int -> x26 "Inline stloc first use temp"
;* V36 tmp32 [V36 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V37 tmp33 [V37,T30] ( 3, 0 ) int -> x1 "Inline return value spill temp"
-; V38 tmp34 [V38,T31] ( 3, 0 ) int -> x1 "Inlining Arg"
+; V37 tmp33 [V37,T31] ( 3, 0 ) int -> x1 "Inline return value spill temp"
+; V38 tmp34 [V38,T32] ( 3, 0 ) int -> x1 "Inlining Arg"
; V39 tmp35 [V39,T18] ( 4, 1.56) int -> x1 "Inline stloc first use temp"
;* V40 tmp36 [V40 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep]>
; V41 tmp37 [V41,T19] ( 2, 1.18) ref -> x22 single-def "field V02._array (fldOffset=0x0)" P-INDEP
-; V42 tmp38 [V42,T09] ( 4, 1.56) int -> x25 "field V02._index (fldOffset=0x8)" P-INDEP
+; V42 tmp38 [V42,T09] ( 4, 1.56) int -> x24 "field V02._index (fldOffset=0x8)" P-INDEP
; V43 tmp39 [V43,T14] ( 2, 1.99) ref -> x20 single-def "field V06.array (fldOffset=0x0)" P-INDEP
;* V44 tmp40 [V44 ] ( 0, 0 ) ref -> zero-ref single-def "field V07.array (fldOffset=0x0)" P-INDEP
; V45 tmp41 [V45,T15] ( 2, 1.99) ref -> x15 "field V11.array (fldOffset=0x0)" P-INDEP
@@ -62,19 +62,19 @@
; V50 tmp46 [V50,T17] ( 2, 1.99) ref -> x0 single-def "field V40.array (fldOffset=0x0)" P-INDEP
; V51 tmp47 [V51,T20] ( 3, 1.12) ref -> x14 "arr expr"
; V52 tmp48 [V52,T21] ( 3, 1.12) int -> x13 "index expr"
-; V53 cse0 [V53,T12] ( 3, 2.18) int -> x23 "CSE - aggressive"
+; V53 tmp49 [V53,T23] ( 5, 0.84) long -> x25 "Widened primary induction variable"
+; V54 cse0 [V54,T12] ( 3, 2.18) int -> x20 "CSE - aggressive"
;
-; Lcl frame size = 136
+; Lcl frame size = 128
G_M6493_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0xE0]!
- stp x19, x20, [sp, #0x98]
- stp x21, x22, [sp, #0xA8]
- stp x23, x24, [sp, #0xB8]
- stp x25, x26, [sp, #0xC8]
- str x27, [sp, #0xD8]
+ stp fp, lr, [sp, #-0xD0]!
+ stp x19, x20, [sp, #0x90]
+ stp x21, x22, [sp, #0xA0]
+ stp x23, x24, [sp, #0xB0]
+ stp x25, x26, [sp, #0xC0]
mov fp, sp
- add x9, fp, #24
+ add x9, fp, #16
movi v16.16b, #0
stp q16, q16, [x9]
stp q16, q16, [x9, #0x20]
@@ -82,10 +82,10 @@ G_M6493_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp q16, q16, [x9, #0x60]
mov x19, x0
; gcrRegs +[x19]
- ;; size=56 bbWeight=1 PerfScore 12.00
+ ;; size=52 bbWeight=1 PerfScore 11.00
G_M6493_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x08]
- cbnz w0, G_M6493_IG20
+ cbnz w0, G_M6493_IG21
;; size=8 bbWeight=1 PerfScore 4.00
G_M6493_IG03: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x10]
@@ -109,60 +109,60 @@ G_M6493_IG06: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- ldr x23, [x0]
+ ldr x20, [x0]
+ ; gcrRegs +[x20]
+ ldr x23, [x20, #0x08]
; gcrRegs +[x23]
- ldr x24, [x23, #0x08]
- ; gcrRegs +[x24]
- cbz x24, G_M6493_IG12
+ cbz x23, G_M6493_IG12
;; size=24 bbWeight=1.00 PerfScore 8.48
-G_M6493_IG07: ; bbWeight=0.78, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=0000 {}, byref, isz
- add x0, x23, #8
+G_M6493_IG07: ; bbWeight=0.78, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
+ add x0, x20, #8
; byrRegs +[x0]
- cbz x0, G_M6493_IG32
- mov x2, x24
+ cbz x0, G_M6493_IG33
+ mov x2, x23
; gcrRegs +[x2]
mov x1, xzr
bl <unknown method>
; gcrRegs -[x2] +[x0]
; byrRegs -[x0]
- cmp x0, x24
+ cmp x0, x23
bne G_M6493_IG12
;; size=28 bbWeight=0.78 PerfScore 3.90
-G_M6493_IG08: ; bbWeight=1.00, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0 x23]
- ldr x0, [x24, #0x08]
+G_M6493_IG08: ; bbWeight=1.00, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0 x20]
+ ldr x0, [x23, #0x08]
; gcrRegs +[x0]
ldr x0, [x0, #0x08]
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
cmp w0, w22
- blt G_M6493_IG33
+ blt G_M6493_IG34
;; size=20 bbWeight=1.00 PerfScore 10.47
-G_M6493_IG09: ; bbWeight=1.00, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref, isz
+G_M6493_IG09: ; bbWeight=1.00, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
ldr x22, [x19, #0x10]
; gcrRegs +[x22]
- ldr w23, [x22, #0x08]
+ ldr w20, [x22, #0x08]
mov w1, wzr
- mov w25, wzr
- cmp w23, #0
- bgt G_M6493_IG26
+ mov w24, wzr
+ cmp w20, #0
+ bgt G_M6493_IG27
;; size=24 bbWeight=1.00 PerfScore 8.48
-G_M6493_IG10: ; bbWeight=1.00, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, byref
+G_M6493_IG10: ; bbWeight=1.00, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x19 x22]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- mov x20, x0
- ; gcrRegs +[x20]
- mov x0, x24
+ mov x21, x0
+ ; gcrRegs +[x21]
+ mov x0, x23
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte]]:ToImmutableAndFree():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[ubyte]]:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- ; gcrRegs -[x24]
+ ; gcrRegs -[x23]
mov x15, x0
; gcrRegs +[x15]
movz x14, #0xD1FFAB1E // box for <unknown class>:<unknown field>
@@ -171,13 +171,13 @@ G_M6493_IG10: ; bbWeight=1.00, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}
ldr x14, [x14]
; gcrRegs +[x14]
ldr x0, [x14, #0x08]
- add x14, x20, #16
+ add x14, x21, #16
; gcrRegs -[x14]
; byrRegs +[x14]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]
- add x14, x20, #24
+ add x14, x21, #24
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
@@ -185,35 +185,34 @@ G_M6493_IG10: ; bbWeight=1.00, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}
; gcrRegs -[x0 x15]
; byrRegs -[x14]
mov w0, #1
- strh w0, [x20, #0x08]
- mov x0, x20
+ strh w0, [x21, #0x08]
+ mov x0, x21
; gcrRegs +[x0]
;; size=100 bbWeight=1.00 PerfScore 22.44
G_M6493_IG11: ; bbWeight=1.00, epilog, nogc, extend
- ldr x27, [sp, #0xD8]
- ldp x25, x26, [sp, #0xC8]
- ldp x23, x24, [sp, #0xB8]
- ldp x21, x22, [sp, #0xA8]
- ldp x19, x20, [sp, #0x98]
- ldp fp, lr, [sp], #0xE0
+ ldp x25, x26, [sp, #0xC0]
+ ldp x23, x24, [sp, #0xB0]
+ ldp x21, x22, [sp, #0xA0]
+ ldp x19, x20, [sp, #0x90]
+ ldp fp, lr, [sp], #0xD0
ret lr
- ;; size=28 bbWeight=1.00 PerfScore 7.98
-G_M6493_IG12: ; bbWeight=0.22, gcVars=0000000000000000 {}, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x20] +[x19 x23]
- mov x0, x23
+ ;; size=24 bbWeight=1.00 PerfScore 5.98
+G_M6493_IG12: ; bbWeight=0.22, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x21] +[x19-x20]
+ mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:AllocateSlow():System.__Canon:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- ; gcrRegs -[x23]
- mov x24, x0
- ; gcrRegs +[x24]
+ ; gcrRegs -[x20]
+ mov x23, x0
+ ; gcrRegs +[x23]
b G_M6493_IG08
...
-20 (-3.27%) : 73319.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
@@ -12,26 +12,26 @@
; V00 this [V00,T00] ( 10, 11 ) ref -> x19 this class-hnd single-def <System.Reflection.MethodBaseInvoker>
; V01 arg1 [V01,T05] ( 4, 3 ) ref -> x20 class-hnd single-def <System.Object>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Object]>
-; V03 arg3 [V03,T07] ( 3, 2 ) int -> [fp+0x3C] EH-live single-def
-; V04 loc0 [V04 ] ( 2, 2 ) struct (32) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.MethodBase+StackAllocatedByRefs>
+; V03 arg3 [V03,T07] ( 3, 2 ) int -> [fp+0x44] EH-live single-def
+; V04 loc0 [V04 ] ( 2, 2 ) struct (32) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.MethodBase+StackAllocatedByRefs>
; V05 loc1 [V05,T11] ( 4, 3 ) long -> x23
-; V06 loc2 [V06,T02] ( 9, 9 ) int -> x4
+;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Object>
-; V08 loc4 [V08,T23] ( 2, 0 ) ref -> [fp+0x10] must-init class-hnd EH-live single-def <<unknown class>>
+; V08 loc4 [V08,T22] ( 2, 0 ) ref -> [fp+0x18] must-init class-hnd EH-live single-def <<unknown class>>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T17] ( 2, 2 ) long -> x24
+; V10 tmp1 [V10,T16] ( 2, 2 ) long -> x24
;* V11 tmp2 [V11 ] ( 0, 0 ) long -> zero-ref
;* V12 tmp3 [V12 ] ( 0, 0 ) struct ( 8) zero-ref <System.ByReference>
-; V13 tmp4 [V13,T24] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
-; V14 tmp5 [V14,T19] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
+; V13 tmp4 [V13,T23] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
+; V14 tmp5 [V14,T18] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
-; V16 tmp7 [V16,T22] ( 3, 0 ) int -> x0
+; V16 tmp7 [V16,T21] ( 3, 0 ) int -> x0
;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
-; V18 tmp9 [V18,T20] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V19 tmp10 [V19,T14] ( 3, 2 ) ref -> x0 "guarded devirt return temp"
+; V18 tmp9 [V18,T19] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V19 tmp10 [V19,T13] ( 3, 2 ) ref -> x0 "guarded devirt return temp"
; V20 tmp11 [V20,T03] ( 5, 7 ) ref -> x22 single-def "guarded devirt arg temp"
;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <System.Reflection.MethodBaseInvoker>
-; V22 tmp13 [V22,T01] ( 5, 10 ) byref -> x23 single-def "Inlining Arg"
+; V22 tmp13 [V22,T02] ( 5, 10 ) byref -> x23 single-def "Inlining Arg"
; V23 tmp14 [V23,T09] ( 2, 4 ) byref -> x24 single-def "Inlining Arg"
; V24 tmp15 [V24,T10] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
;* V25 tmp16 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -42,31 +42,30 @@
;* V30 tmp21 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ByReference>
; V31 tmp22 [V31,T06] ( 3, 2 ) byref -> x21 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
; V32 tmp23 [V32,T08] ( 3, 2 ) int -> x22 single-def "field V02._length (fldOffset=0x8)" P-INDEP
-; V33 tmp24 [V33,T15] ( 3, 2 ) byref -> x5 "field V12.Value (fldOffset=0x0)" P-INDEP
-; V34 tmp25 [V34,T16] ( 2, 2 ) byref -> x5 "field V26.Value (fldOffset=0x0)" P-INDEP
-; V35 tmp26 [V35,T25] ( 2, 0 ) byref -> x5 "field V30.Value (fldOffset=0x0)" P-INDEP
+; V33 tmp24 [V33,T14] ( 3, 2 ) byref -> x5 "field V12.Value (fldOffset=0x0)" P-INDEP
+; V34 tmp25 [V34,T15] ( 2, 2 ) byref -> x5 "field V26.Value (fldOffset=0x0)" P-INDEP
+; V35 tmp26 [V35,T24] ( 2, 0 ) byref -> x5 "field V30.Value (fldOffset=0x0)" P-INDEP
; V36 tmp27 [V36,T04] ( 3, 6 ) ref -> x2 "arr expr"
-; V37 tmp28 [V37,T21] ( 3, 0 ) ref -> x0 "Field obj"
-; V38 PSPSym [V38,T18] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
-; V39 cse0 [V39,T13] ( 3, 3 ) int -> x1 "CSE - aggressive"
-; V40 cse1 [V40,T12] ( 4, 3 ) long -> x25 "CSE - aggressive"
+; V37 tmp28 [V37,T20] ( 3, 0 ) ref -> x0 "Field obj"
+; V38 PSPSym [V38,T17] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
+; V39 tmp30 [V39,T01] ( 11, 10 ) long -> x4 "Widened primary induction variable"
+; V40 cse0 [V40,T12] ( 3, 3 ) int -> x1 "CSE - aggressive"
;
-; Lcl frame size = 56
+; Lcl frame size = 64
G_M51382_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x80]!
- stp x19, x20, [sp, #0x48]
- stp x21, x22, [sp, #0x58]
- stp x23, x24, [sp, #0x68]
- str x25, [sp, #0x78]
+ stp x19, x20, [sp, #0x50]
+ stp x21, x22, [sp, #0x60]
+ stp x23, x24, [sp, #0x70]
mov fp, sp
- add x9, fp, #16
+ add x9, fp, #24
movi v16.16b, #0
stp q16, q16, [x9]
str xzr, [x9, #0x20]
add x5, sp, #128
- str x5, [fp, #0x40] // [V38 PSPSym]
- str w4, [fp, #0x3C] // [V03 arg3]
+ str x5, [fp, #0x48] // [V38 PSPSym]
+ str w4, [fp, #0x44] // [V03 arg3]
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
@@ -74,9 +73,9 @@ G_M51382_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x21, x2
; byrRegs +[x21]
mov w22, w3
- ;; size=68 bbWeight=1 PerfScore 13.00
-G_M51382_IG02: ; bbWeight=1, gcVars=0000000000800000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
- ; GC ptr vars +{V08 V23}
+ ;; size=64 bbWeight=1 PerfScore 12.00
+G_M51382_IG02: ; bbWeight=1, gcVars=0000000000400000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
+ ; GC ptr vars +{V08 V22}
ldr w0, [x19, #0x40]
cmp w0, #4
cset x0, le
@@ -123,10 +122,10 @@ G_M51382_IG03: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=1A0
;; size=48 bbWeight=1 PerfScore 12.50
G_M51382_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
; byrRegs -[x23]
- stp xzr, xzr, [fp, #0x18]
- stp xzr, xzr, [fp, #0x28]
- add x23, fp, #24 // [V04 loc0]
- mov w4, wzr
+ stp xzr, xzr, [fp, #0x20]
+ stp xzr, xzr, [fp, #0x30]
+ add x23, fp, #32 // [V04 loc0]
+ mov x4, xzr
b G_M51382_IG07
;; size=20 bbWeight=1 PerfScore 4.00
G_M51382_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
@@ -140,21 +139,21 @@ G_M51382_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000
add x2, x2, #16
; gcrRegs -[x2]
; byrRegs +[x2]
- mov w25, w4
- lsl x0, x25, #2
+ lsl x0, x4, #2
ldr w2, [x2, x0]
; byrRegs -[x2]
tbnz w2, #0, G_M51382_IG13
cmp w4, w22
bhs G_M51382_IG12
- lsl x2, x25, #3
+ lsl x2, x4, #3
add x5, x21, x2
; byrRegs +[x5]
- ;; size=60 bbWeight=1 PerfScore 18.00
+ ;; size=56 bbWeight=1 PerfScore 17.50
G_M51382_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200020 {x5 x21}, byref
str x5, [x24]
add w4, w4, #1
- ;; size=8 bbWeight=1 PerfScore 1.50
+ mov w4, w4
+ ;; size=12 bbWeight=1 PerfScore 2.00
G_M51382_IG07: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
; byrRegs -[x5]
ldr w2, [x19, #0x40]
@@ -199,26 +198,25 @@ G_M51382_IG10: ; bbWeight=0.50, gcrefRegs=500000 {x20 x22}, byrefRegs=000
; gcr arg pop 0
;; size=20 bbWeight=0.50 PerfScore 4.00
G_M51382_IG11: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
- ; GC ptr vars -{V08 V23}
- ldr x25, [sp, #0x78]
- ldp x23, x24, [sp, #0x68]
- ldp x21, x22, [sp, #0x58]
- ldp x19, x20, [sp, #0x48]
+ ; GC ptr vars -{V08 V22}
+ ldp x23, x24, [sp, #0x70]
+ ldp x21, x22, [sp, #0x60]
+ ldp x19, x20, [sp, #0x50]
ldp fp, lr, [sp], #0x80
ret lr
- ;; size=24 bbWeight=1 PerfScore 7.00
+ ;; size=20 bbWeight=1 PerfScore 5.00
G_M51382_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M51382_IG13: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
+G_M51382_IG13: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
; gcrRegs +[x19-x20]
; byrRegs +[x21]
- ; GC ptr vars +{V08 V23}
+ ; GC ptr vars +{V08 V22}
cmp w4, w22
bhs G_M51382_IG12
- lsl x0, x25, #3
+ lsl x0, x4, #3
ldr x0, [x21, x0]
; gcrRegs +[x0]
ldrsb wzr, [x0]
@@ -230,15 +228,14 @@ G_M51382_IG14: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
; gcrRegs -[x19-x20]
; byrRegs -[x5 x21]
stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- stp x23, x24, [sp, #0x38]
- str x25, [sp, #0x48]
- ldr x1, [x1, #-0x40]
- str x1, [sp, #0x10]
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
+ stp x23, x24, [sp, #0x40]
+ ldr x1, [x1, #-0x38]
+ str x1, [sp, #0x18]
sub fp, x1, #128
- ;; size=32 bbWeight=0 PerfScore 0.00
-G_M51382_IG15: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M51382_IG15: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
mov x1, x0
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -256,32 +253,30 @@ G_M51382_IG15: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=000
b G_M51382_IG17
;; size=36 bbWeight=0 PerfScore 0.00
G_M51382_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V08 V23}
- str x1, [fp, #0x10] // [V08 loc4]
+ ; GC ptr vars -{V08 V22}
+ str x1, [fp, #0x18] // [V08 loc4]
; GC ptr vars +{V08}
- ldr w4, [fp, #0x3C] // [V03 arg3]
+ ldr w4, [fp, #0x44] // [V03 arg3]
tst w4, #0xD1FFAB1E
cset x0, eq
;; size=16 bbWeight=0 PerfScore 0.00
-G_M51382_IG17: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet epilog, nogc
+G_M51382_IG17: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet epilog, nogc
; gcrRegs -[x1]
- ldr x25, [sp, #0x48]
- ldp x23, x24, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
+ ldp x23, x24, [sp, #0x40]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x50
ret lr
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M51382_IG18: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M51382_IG18: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- stp x23, x24, [sp, #0x38]
- str x25, [sp, #0x48]
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
+ stp x23, x24, [sp, #0x40]
add x3, fp, #128
- str x3, [sp, #0x10]
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M51382_IG19: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ str x3, [sp, #0x18]
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M51382_IG19: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -290,7 +285,7 @@ G_M51382_IG19: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=000
; gcr arg pop 0
mov x19, x0
; gcrRegs +[x19]
- ldr x1, [fp, #0x10] // [V08 loc4]
...
+24 (+42.86%) : 354067.dasm - System.Linq.Enumerable:Sumfloat,double:double (Tier1)
@@ -10,12 +10,12 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[float]>
-; V01 loc0 [V01,T05] ( 4, 32.86) double -> d0
+; V01 loc0 [V01,T06] ( 4, 32.86) double -> d0
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[float]>
-; V03 loc2 [V03,T00] ( 5, 62.73) int -> x2
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) float -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T06] ( 2, 30.86) double -> d16 ld-addr-op "Inline ldloca(s) first use temp"
+; V06 tmp1 [V06,T07] ( 2, 30.86) double -> d16 ld-addr-op "Inline ldloca(s) first use temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V08 tmp3 [V08 ] ( 0, 0 ) float -> zero-ref "Inline stloc first use temp"
;* V09 tmp4 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -23,7 +23,8 @@
; V11 tmp6 [V11,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V12 tmp7 [V12,T04] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V13 tmp8 [V13,T02] ( 2, 16.43) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V14 tmp9 [V14,T01] ( 3, 17.43) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V14 tmp9 [V14,T01] ( 4, 32.86) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V15 tmp10 [V15,T00] ( 6, 78.10) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -34,25 +35,36 @@ G_M7805_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M7805_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
movi v0.16b, #0
- mov w2, wzr
cmp w1, #0
- ble G_M7805_IG04
- ;; size=16 bbWeight=1 PerfScore 2.50
-G_M7805_IG03: ; bbWeight=15.43, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr s16, [x0, w2, UXTW #2]
+ ble G_M7805_IG05
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M7805_IG03: ; bbWeight=0.94, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+ mov x2, xzr
+ ;; size=4 bbWeight=0.94 PerfScore 0.47
+G_M7805_IG04: ; bbWeight=15.43, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w2, w1
+ bhs G_M7805_IG06
+ lsl x3, x2, #2
+ ldr s16, [x0, x3]
fcvt d16, s16
fadd d0, d0, d16
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
- blt G_M7805_IG03
- ;; size=24 bbWeight=15.43 PerfScore 169.76
-G_M7805_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ blt G_M7805_IG04
+ ;; size=40 bbWeight=15.43 PerfScore 216.05
+G_M7805_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M7805_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 8, PerfScore 175.76, instruction count 14, allocated bytes for code 56 (MethodHash=db46e182) for method System.Linq.Enumerable:Sum[float,double](System.ReadOnlySpan`1[float]):double (Tier1)
+; Total bytes of code 80, prolog size 8, PerfScore 222.02, instruction count 20, allocated bytes for code 80 (MethodHash=db46e182) for method System.Linq.Enumerable:Sum[float,double](System.ReadOnlySpan`1[float]):double (Tier1)
; ============================================================
Unwind Info:
@@ -63,7 +75,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+45.45%) : 414880.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests1[ushort]:RemoveSignedMinValue(System.Span1[ushort]):this (Tier1)
@@ -11,16 +11,17 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ushort]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ushort]>
-; V02 loc0 [V02,T00] ( 5,516.86) int -> x0
+;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V05 tmp2 [V05 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
-;* V06 tmp3 [V06,T01] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V06 tmp3 [V06,T02] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V07 tmp4 [V07 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
;* V08 tmp5 [V08 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
; V09 tmp6 [V09,T04] ( 2,129.72) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp7 [V10,T03] ( 2,130.72) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V11 cse0 [V11,T02] ( 2,257.43) long -> x3 hoist "CSE - aggressive"
+; V10 tmp7 [V10,T01] ( 3,259.43) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V11 tmp8 [V11,T00] ( 6,645.58) long -> x0 "Widened primary induction variable"
+; V12 cse0 [V12,T03] ( 2,257.43) long -> x3 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -30,14 +31,17 @@ G_M58468_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M58468_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
; byrRegs +[x1]
- mov w0, wzr
+ mov x0, xzr
b G_M58468_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M58468_IG03: ; bbWeight=128.72, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
- ubfiz x3, x0, #1, #32
+G_M58468_IG03: ; bbWeight=128.72, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
+ lsl x3, x0, #1
+ cmp w0, w2
+ bhs G_M58468_IG06
ldrh w3, [x1, x3]
add w0, w0, #1
- ;; size=12 bbWeight=128.72 PerfScore 579.22
+ mov w0, w0
+ ;; size=24 bbWeight=128.72 PerfScore 836.65
G_M58468_IG04: ; bbWeight=129.72, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
cmp w0, w2
blt G_M58468_IG03
@@ -47,8 +51,13 @@ G_M58468_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M58468_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 44, prolog size 8, PerfScore 778.80, instruction count 11, allocated bytes for code 44 (MethodHash=46261b9b) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ushort]:RemoveSignedMinValue(System.Span`1[ushort]):this (Tier1)
+; Total bytes of code 64, prolog size 8, PerfScore 1036.23, instruction count 16, allocated bytes for code 64 (MethodHash=46261b9b) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ushort]:RemoveSignedMinValue(System.Span`1[ushort]):this (Tier1)
; ============================================================
Unwind Info:
@@ -59,7 +68,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+46.15%) : 354025.dasm - System.Linq.Enumerable:Sumdouble,double:double (Tier1)
@@ -10,9 +10,9 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[double]>
-; V01 loc0 [V01,T05] ( 4, 32.29) double -> d0
+; V01 loc0 [V01,T06] ( 4, 32.29) double -> d0
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[double]>
-; V03 loc2 [V03,T00] ( 5, 61.58) int -> x2
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) double -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -21,7 +21,8 @@
; V09 tmp4 [V09,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V10 tmp5 [V10,T04] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V11 tmp6 [V11,T02] ( 2, 16.14) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp7 [V12,T01] ( 3, 17.14) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V12 tmp7 [V12,T01] ( 4, 32.29) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V13 tmp8 [V13,T00] ( 6, 76.66) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -32,24 +33,35 @@ G_M25021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M25021_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
movi v0.16b, #0
- mov w2, wzr
cmp w1, #0
- ble G_M25021_IG04
- ;; size=16 bbWeight=1 PerfScore 2.50
-G_M25021_IG03: ; bbWeight=15.14, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr d16, [x0, w2, UXTW #3]
+ ble G_M25021_IG05
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M25021_IG03: ; bbWeight=0.94, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+ mov x2, xzr
+ ;; size=4 bbWeight=0.94 PerfScore 0.47
+G_M25021_IG04: ; bbWeight=15.14, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w2, w1
+ bhs G_M25021_IG06
+ lsl x3, x2, #3
+ ldr d16, [x0, x3]
fadd d0, d16, d0
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
- blt G_M25021_IG03
- ;; size=20 bbWeight=15.14 PerfScore 121.16
-G_M25021_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ blt G_M25021_IG04
+ ;; size=36 bbWeight=15.14 PerfScore 166.59
+G_M25021_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M25021_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 127.16, instruction count 13, allocated bytes for code 52 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (Tier1)
+; Total bytes of code 76, prolog size 8, PerfScore 172.56, instruction count 19, allocated bytes for code 76 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (Tier1)
; ============================================================
Unwind Info:
@@ -60,7 +72,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
-28 (-12.50%) : 176255.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
@@ -8,28 +8,32 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 5, 4.50) ref -> x0 this class-hnd single-def <System.Xml.XmlSubtreeReader>
-; V01 arg1 [V01,T04] ( 3, 6 ) ref -> x1 class-hnd single-def <System.String>
-; V02 arg2 [V02,T07] ( 3, 4 ) ref -> x2 class-hnd single-def <System.String>
-; V03 loc0 [V03,T01] ( 9, 22.50) int -> x14
-; V04 loc1 [V04,T17] ( 2, 1 ) ref -> x4 class-hnd exact <<unknown class>>
+; V00 this [V00,T07] ( 5, 4.50) ref -> x0 this class-hnd single-def <System.Xml.XmlSubtreeReader>
+; V01 arg1 [V01,T06] ( 3, 6 ) ref -> x1 class-hnd single-def <System.String>
+; V02 arg2 [V02,T09] ( 3, 4 ) ref -> x2 class-hnd single-def <System.String>
+; V03 loc0 [V03,T13] ( 3, 1.50) int -> x15
+; V04 loc1 [V04,T18] ( 2, 1 ) ref -> x2 class-hnd exact <<unknown class>>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T09] ( 3, 3 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
-; V07 tmp2 [V07,T14] ( 2, 2 ) ref -> x12 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
+;* V06 tmp1 [V06,T19] ( 0, 0 ) ref -> zero-ref class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
+; V07 tmp2 [V07,T14] ( 2, 2 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V10 tmp5 [V10,T00] ( 3, 24 ) ref -> x12 "arr expr"
-;* V11 tmp6 [V11,T08] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V12 tmp7 [V12,T18] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V13 tmp8 [V13,T10] ( 3, 3 ) ref -> x12 "arr expr"
-; V14 tmp9 [V14,T12] ( 3, 3 ) int -> xip0 "index expr"
-; V15 tmp10 [V15,T11] ( 3, 3 ) ref -> x3 "arr expr"
+; V10 tmp5 [V10,T00] ( 3, 24 ) ref -> xip0 "arr expr"
+;* V11 tmp6 [V11,T10] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V12 tmp7 [V12,T20] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V13 tmp8 [V13,T21] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V14 tmp9 [V14,T11] ( 3, 3 ) int -> x15 "index expr"
+;* V15 tmp10 [V15,T22] ( 0, 0 ) ref -> zero-ref "arr expr"
; V16 tmp11 [V16,T15] ( 2, 2 ) int -> x14 "index expr"
-; V17 cse0 [V17,T02] ( 4, 10.50) ref -> x4 "CSE - aggressive"
-; V18 cse1 [V18,T13] ( 5, 2.50) int -> x1 "CSE - aggressive"
-; V19 cse2 [V19,T03] ( 5, 6.50) ref -> x3 hoist "CSE - aggressive"
-; V20 cse3 [V20,T06] ( 4, 6.50) int -> x15 "CSE - aggressive"
-; V21 cse4 [V21,T16] ( 3, 1.50) long -> x2 "CSE - moderate"
+; V17 tmp12 [V17,T01] ( 7, 21.50) long -> x15 "Widened primary induction variable"
+; V18 cse0 [V18,T03] ( 3, 10 ) ref -> xip0 "CSE - aggressive"
+; V19 cse1 [V19,T12] ( 5, 2.50) int -> x1 "CSE - aggressive"
+; V20 cse2 [V20,T04] ( 2, 5 ) ref -> x12 hoist "CSE - aggressive"
+; V21 cse3 [V21,T08] ( 4, 6.50) int -> x14 "CSE - aggressive"
+; V22 cse4 [V22,T16] ( 3, 1.50) long -> x14 "CSE - moderate"
+; V23 cse5 [V23,T17] ( 3, 1.50) long -> x5 "CSE - moderate"
+; V24 cse6 [V24,T05] ( 4, 9 ) int -> x3 "CSE - aggressive"
+; V25 cse7 [V25,T02] ( 6, 10 ) byref -> x4 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -39,95 +43,80 @@ G_M23254_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M23254_IG02: ; bbWeight=1, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x2]
- mov w14, wzr
- ldr w15, [x0, #0x58]
- cmp w15, #0
+ ldr w14, [x0, #0x58]
+ cmp w14, #0
ble G_M23254_IG06
- ldr x3, [x0, #0x20]
- ; gcrRegs +[x3]
+ mov x15, xzr
+ ldr x12, [x0, #0x20]
+ ; gcrRegs +[x12]
;; size=20 bbWeight=1 PerfScore 8.00
-G_M23254_IG03: ; bbWeight=4, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz
- mov x12, x3
- ; gcrRegs +[x12]
- ldr wip0, [x12, #0x08]
- cmp w14, wip0
+G_M23254_IG03: ; bbWeight=4, gcrefRegs=1007 {x0 x1 x2 x12}, byrefRegs=0000 {}, byref, isz
+ mov xip0, x12
+ ; gcrRegs +[xip0]
+ ldr w3, [xip0, #0x08]
+ cmp w15, w3
bhs G_M23254_IG10
- add x12, x12, #16
- ; gcrRegs -[x12]
- ; byrRegs +[x12]
- ldr x4, [x12, w14, UXTW #3]
- ; gcrRegs +[x4]
- ldr x12, [x4, #0x10]
- ; gcrRegs +[x12]
- ; byrRegs -[x12]
- cmp x12, x1
+ add x4, xip0, #16
+ ; byrRegs +[x4]
+ lsl xip0, x15, #3
+ ; gcrRegs -[xip0]
+ ldr xip0, [x4, xip0]
+ ; gcrRegs +[xip0]
+ ldr x5, [xip0, #0x10]
+ ; gcrRegs +[x5]
+ cmp x5, x1
bne G_M23254_IG05
- ;; size=36 bbWeight=4 PerfScore 52.00
-G_M23254_IG04: ; bbWeight=2, gcrefRegs=001F {x0 x1 x2 x3 x4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x12]
- ldr x12, [x4, #0x08]
- ; gcrRegs +[x12]
- cmp x12, x2
+ ;; size=40 bbWeight=4 PerfScore 56.00
+G_M23254_IG04: ; bbWeight=2, gcrefRegs=11007 {x0 x1 x2 x12 xip0}, byrefRegs=0010 {x4}, byref, isz
+ ; gcrRegs -[x5]
+ ldr xip0, [xip0, #0x08]
+ cmp xip0, x2
beq G_M23254_IG07
;; size=12 bbWeight=2 PerfScore 9.00
-G_M23254_IG05: ; bbWeight=4, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x4 x12]
- add w14, w14, #1
- cmp w14, w15
+G_M23254_IG05: ; bbWeight=4, gcrefRegs=1007 {x0 x1 x2 x12}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[xip0]
+ ; byrRegs -[x4]
+ add w15, w15, #1
+ mov w15, w15
+ cmp w15, w14
blt G_M23254_IG03
- ;; size=12 bbWeight=4 PerfScore 8.00
+ ;; size=16 bbWeight=4 PerfScore 10.00
G_M23254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x0-x3]
+ ; gcrRegs -[x0-x2 x12]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M23254_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0019 {x0 x3 x4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0 x3-x4]
- sub w1, w15, #1
- cmp w14, w1
+G_M23254_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, gcvars, byref, isz
+ ; gcrRegs +[x0]
+ ; byrRegs +[x4]
+ sub w1, w14, #1
+ cmp w15, w1
bge G_M23254_IG08
- mov x15, x3
+ ubfiz x14, x15, #3, #32
+ ldr x2, [x4, x14]
+ ; gcrRegs +[x2]
+ sxtw w15, w1
+ cmp w15, w3
+ bhs G_M23254_IG10
+ ubfiz x5, x15, #3, #32
+ ldr x15, [x4, x5]
; gcrRegs +[x15]
- mov x12, x3
- ; gcrRegs +[x12]
- sxtw wip0, w1
- ldr w2, [x12, #0x08]
- cmp wip0, w2
- bhs G_M23254_IG10
- add x12, x12, #16
- ; gcrRegs -[x12]
- ; byrRegs +[x12]
- ubfiz x2, xip0, #3, #32
- ldr x12, [x12, x2]
- ; gcrRegs +[x12]
- ; byrRegs -[x12]
- ldr wip0, [x15, #0x08]
- cmp w14, wip0
- bhs G_M23254_IG10
- add x15, x15, #16
- ; gcrRegs -[x15]
- ; byrRegs +[x15]
- add x14, x15, x14, LSL #3
+ add x14, x4, x14
; byrRegs +[x14]
- mov x15, x12
- ; gcrRegs +[x15]
- ; byrRegs -[x15]
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x12 x15]
+ bl CORINFO_HELP_CHECKED_ASSIGN_REF
+ ; gcrRegs -[x15]
; byrRegs -[x14]
sxtw w14, w1
- ldr w15, [x3, #0x08]
- cmp w14, w15
+ cmp w14, w3
bhs G_M23254_IG10
- add x14, x3, #16
+ add x14, x4, x5
; byrRegs +[x14]
- add x14, x14, x2
- mov x15, x4
+ mov x15, x2
; gcrRegs +[x15]
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x3-x4 x15]
- ; byrRegs -[x14]
- ;; size=108 bbWeight=0.50 PerfScore 13.75
+ bl CORINFO_HELP_CHECKED_ASSIGN_REF
+ ; gcrRegs -[x2 x15]
+ ; byrRegs -[x4 x14]
+ ;; size=72 bbWeight=0.50 PerfScore 8.75
G_M23254_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
str w1, [x0, #0x58]
;; size=4 bbWeight=0.50 PerfScore 0.50
@@ -142,7 +131,7 @@ G_M23254_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 224, prolog size 8, PerfScore 94.75, instruction count 56, allocated bytes for code 224 (MethodHash=dfe8a529) for method System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
+; Total bytes of code 196, prolog size 8, PerfScore 95.75, instruction count 49, allocated bytes for code 196 (MethodHash=dfe8a529) for method System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
; ============================================================
Unwind Info:
@@ -153,7 +142,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
+ Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-3.37%) : 171455.dasm - System.Xml.Schema.FacetsChecker+FacetsCompiler:Preprocess(System.String):System.String (FullOpts)
@@ -8,42 +8,43 @@
; 3 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T10] ( 6, 6.50) ref -> x19 class-hnd single-def <System.String>
+; V00 arg0 [V00,T08] ( 6, 9.50) ref -> x19 class-hnd single-def <System.String>
; V01 loc0 [V01,T06] ( 15, 12.45) ref -> x20 class-hnd exact single-def <System.Text.StringBuilder>
-; V02 loc1 [V02,T17] ( 4, 3.50) int -> x22
-; V03 loc2 [V03,T08] ( 8, 11 ) int -> x23
+; V02 loc1 [V02,T18] ( 4, 3.50) int -> x22
+; V03 loc2 [V03,T09] ( 8, 11 ) int -> x23
; V04 loc3 [V04,T03] ( 11, 29 ) int -> x24
-; V05 loc4 [V05,T04] ( 2, 18 ) ushort -> x28
-; V06 loc5 [V06,T01] ( 8, 86 ) int -> [fp+0x1C]
+; V05 loc4 [V05,T04] ( 2, 18 ) ushort -> x27
+; V06 loc5 [V06,T13] ( 3, 6 ) int -> x27
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T11] ( 4, 8 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder>
+; V08 tmp1 [V08,T12] ( 4, 8 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder>
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.StringBuilder>
-; V10 tmp3 [V10,T20] ( 3, 2.46) int -> x0 "Inline stloc first use temp"
-; V11 tmp4 [V11,T18] ( 3, 2.46) ref -> x1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V10 tmp3 [V10,T21] ( 3, 2.46) int -> x0 "Inline stloc first use temp"
+; V11 tmp4 [V11,T19] ( 3, 2.46) ref -> x1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V12 tmp5 [V12,T05] ( 4, 16.09) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.StringBuilder>
-; V14 tmp7 [V14,T21] ( 3, 2.46) int -> x0 "Inline stloc first use temp"
-; V15 tmp8 [V15,T19] ( 3, 2.46) ref -> x1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V14 tmp7 [V14,T22] ( 3, 2.46) int -> x0 "Inline stloc first use temp"
+; V15 tmp8 [V15,T20] ( 3, 2.46) ref -> x1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V16 tmp9 [V16,T00] ( 3, 96 ) ref -> x0 "arr expr"
; V17 tmp10 [V17,T07] ( 3, 12 ) ref -> x2 "arr expr"
-; V18 cse0 [V18,T02] ( 4, 36 ) ref -> x3 "CSE - aggressive"
-; V19 cse1 [V19,T13] ( 3, 6 ) int -> x28 "CSE - aggressive"
-;* V20 cse2 [V20,T22] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
-; V21 cse3 [V21,T14] ( 3, 6 ) long -> [fp+0x10] spill-single-def "CSE - aggressive"
-; V22 cse4 [V22,T09] ( 5, 10 ) int -> x27 "CSE - aggressive"
-; V23 cse5 [V23,T16] ( 3, 4 ) int -> x21 "CSE - aggressive"
-; V24 cse6 [V24,T12] ( 3, 7 ) byref -> x26 hoist "CSE - aggressive"
-; V25 cse7 [V25,T15] ( 3, 6 ) int -> x25 "CSE - moderate"
+; V18 tmp11 [V18,T01] ( 7, 84 ) long -> x4 "Widened primary induction variable"
+; V19 cse0 [V19,T02] ( 4, 36 ) ref -> x3 "CSE - aggressive"
+; V20 cse1 [V20,T14] ( 3, 6 ) int -> x27 "CSE - aggressive"
+;* V21 cse2 [V21,T23] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V22 cse3 [V22,T15] ( 3, 6 ) long -> x28 "CSE - aggressive"
+; V23 cse4 [V23,T10] ( 5, 10 ) int -> x26 "CSE - aggressive"
+; V24 cse5 [V24,T17] ( 3, 4 ) int -> x21 "CSE - aggressive"
+; V25 cse6 [V25,T16] ( 3, 6 ) int -> x25 "CSE - aggressive"
+; V26 cse7 [V26,T11] ( 3, 10 ) byref -> x3 "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 0
G_M19789_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
- stp x25, x26, [sp, #0x50]
- stp x27, x28, [sp, #0x60]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
+ stp x23, x24, [sp, #0x30]
+ stp x25, x26, [sp, #0x40]
+ stp x27, x28, [sp, #0x50]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
@@ -100,26 +101,26 @@ G_M19789_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
sub w25, w22, #2
cmp w25, #0
ble G_M19789_IG17
- add x26, x19, #12
- ; byrRegs +[x26]
- ;; size=32 bbWeight=1 PerfScore 7.00
-G_M19789_IG05: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
- ldrh w3, [x26, w24, UXTW #2]
- cmp w3, #92
+ ;; size=28 bbWeight=1 PerfScore 6.50
+G_M19789_IG05: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ add x3, x19, #12
+ ; byrRegs +[x3]
+ ldrh w0, [x3, w24, UXTW #2]
+ cmp w0, #92
bne G_M19789_IG16
- ;; size=12 bbWeight=4 PerfScore 18.00
-G_M19789_IG06: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
- add w27, w24, #1
- cmp w27, w21
+ ;; size=16 bbWeight=4 PerfScore 20.00
+G_M19789_IG06: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0008 {x3}, byref, isz
+ add w26, w24, #1
+ cmp w26, w21
bhs G_M19789_IG24
- ldrh w28, [x26, w27, UXTW #2]
- cmp w28, #92
+ ldrh w27, [x3, w26, UXTW #2]
+ cmp w27, #92
bne G_M19789_IG08
- sxtw w24, w27
+ sxtw w24, w26
b G_M19789_IG16
;; size=32 bbWeight=2 PerfScore 16.00
G_M19789_IG07: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ; byrRegs -[x26]
+ ; byrRegs -[x3]
mov x0, x20
; gcrRegs +[x0]
mov w1, #94
@@ -132,86 +133,81 @@ G_M19789_IG07: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcr arg pop 0
b G_M19789_IG04
;; size=32 bbWeight=0.04 PerfScore 0.26
-G_M19789_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
- ; byrRegs +[x26]
- mov w4, wzr
+G_M19789_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
movz x3, #0xD1FFAB1E
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr w3, [x3]
tbz w3, #0, G_M19789_IG25
- ;; size=24 bbWeight=2 PerfScore 12.00
-G_M19789_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
- movz x5, #0xD1FFAB1E
- movk x5, #0xD1FFAB1E LSL #16
- movk x5, #0xD1FFAB1E LSL #32
- str x5, [fp, #0x10] // [V21 cse3]
- ldr x3, [x5]
+ ;; size=20 bbWeight=2 PerfScore 11.00
+G_M19789_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ movz x28, #0xD1FFAB1E
+ movk x28, #0xD1FFAB1E LSL #16
+ movk x28, #0xD1FFAB1E LSL #32
+ ldr x3, [x28]
; gcrRegs +[x3]
ldr w0, [x3, #0x08]
cmp w0, #0
ble G_M19789_IG16
- ;; size=32 bbWeight=2 PerfScore 20.00
-G_M19789_IG10: ; bbWeight=16, gcrefRegs=180008 {x3 x19 x20}, byrefRegs=4000000 {x26}, byref, isz
+ mov x4, xzr
+ ;; size=32 bbWeight=2 PerfScore 19.00
+G_M19789_IG10: ; bbWeight=16, gcrefRegs=180008 {x3 x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x3
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w4, w1
bhs G_M19789_IG24
- ubfiz x1, x4, #4, #32
+ lsl x1, x4, #4
add x1, x1, #16
add x0, x0, x1
; gcrRegs -[x0]
; byrRegs +[x0]
ldrh w0, [x0, #0x08]
; byrRegs -[x0]
- cmp w0, w28
+ cmp w0, w27
beq G_M19789_IG12
add w4, w4, #1
+ mov w4, w4
ldr w0, [x3, #0x08]
- str w4, [fp, #0x1C] // [V06 loc5]
cmp w0, w4
- ldr w4, [fp, #0x1C] // [V06 loc5]
bgt G_M19789_IG10
- ;; size=64 bbWeight=16 PerfScore 312.00
-G_M19789_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref
+ ;; size=60 bbWeight=16 PerfScore 272.00
+G_M19789_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x3]
b G_M19789_IG16
;; size=4 bbWeight=4 PerfScore 4.00
-G_M19789_IG12: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
+G_M19789_IG12: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ mov w27, w4
cmp w23, w24
bge G_M19789_IG13
- str w4, [fp, #0x1C] // [V06 loc5]
sub w3, w24, w23
mov x0, x20
; gcrRegs +[x0]
mov x1, x19
; gcrRegs +[x1]
mov w2, w23
- movz x6, #0xD1FFAB1E // code for System.Text.StringBuilder:Append(System.String,int,int):System.Text.StringBuilder:this
- movk x6, #0xD1FFAB1E LSL #16
- movk x6, #0xD1FFAB1E LSL #32
- ldr x6, [x6]
- blr x6
+ movz x4, #0xD1FFAB1E // code for System.Text.StringBuilder:Append(System.String,int,int):System.Text.StringBuilder:this
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #0xD1FFAB1E LSL #32
+ ldr x4, [x4]
+ blr x4
; gcrRegs -[x1]
; gcr arg pop 0
- ldr w4, [fp, #0x1C] // [V06 loc5]
- ;; size=52 bbWeight=2 PerfScore 24.00
-G_M19789_IG13: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
+ ;; size=48 bbWeight=2 PerfScore 19.00
+G_M19789_IG13: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x5, [fp, #0x10] // [V21 cse3]
- ldr x2, [x5]
+ ldr x2, [x28]
; gcrRegs +[x2]
ldr w1, [x2, #0x08]
- cmp w4, w1
+ cmp w27, w1
bhs G_M19789_IG24
- ubfiz x1, x4, #4, #32
+ ubfiz x1, x27, #4, #32
add x1, x1, #16
ldr x1, [x2, x1]
; gcrRegs +[x1]
cbz x1, G_M19789_IG15
- ;; size=36 bbWeight=2 PerfScore 30.00
-G_M19789_IG14: ; bbWeight=2.02, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=4000000 {x26}, byref
+ ;; size=32 bbWeight=2 PerfScore 26.00
+G_M19789_IG14: ; bbWeight=2.02, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
ldr w2, [x1, #0x08]
add x1, x1, #12
@@ -228,17 +224,16 @@ G_M19789_IG14: ; bbWeight=2.02, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=
; byrRegs -[x1]
; gcr arg pop 0
;; size=32 bbWeight=2.02 PerfScore 19.22
-G_M19789_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref
- sxtw w24, w27
+G_M19789_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ sxtw w24, w26
add w23, w24, #1
;; size=8 bbWeight=2 PerfScore 2.00
-G_M19789_IG16: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
+G_M19789_IG16: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w24, w24, #1
cmp w24, w25
blt G_M19789_IG05
;; size=12 bbWeight=4 PerfScore 8.00
G_M19789_IG17: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x26]
cmp w23, w22
bge G_M19789_IG19
;; size=8 bbWeight=1 PerfScore 1.50
@@ -286,12 +281,12 @@ G_M19789_IG21: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ldr x1, [x1]
;; size=20 bbWeight=1 PerfScore 5.00
...
-20 (-3.03%) : 142843.dasm - System.SpanTests.ReadOnlySpanTests:TestMultipleMatchCount_String() (FullOpts)
@@ -9,25 +9,25 @@
; Final local variable assignments
;
; V00 loc0 [V00,T03] ( 9, 39.09) int -> x19
-; V01 loc1 [V01,T10] ( 7, 20.11) ref -> x27 class-hnd exact <<unknown class>>
+; V01 loc1 [V01,T10] ( 7, 20.11) ref -> x26 class-hnd exact <<unknown class>>
;* V02 loc2 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[System.String]>
-; V03 loc3 [V03,T00] ( 11, 68.32) int -> x28
+;* V03 loc3 [V03,T22] ( 0, 0 ) int -> zero-ref
;* V04 loc4 [V04 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V05 loc5 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T01] ( 4, 64 ) ref -> x0 class-hnd exact "Strict ordering of exceptions for Array store" <System.String>
;* V08 tmp2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.String>
; V09 tmp3 [V09,T09] ( 3, 24.18) int -> x3 "impAppendStmt"
-; V10 tmp4 [V10,T16] ( 2, 8.06) int -> x27 "Inline return value spill temp"
+; V10 tmp4 [V10,T16] ( 2, 8.06) int -> x26 "Inline return value spill temp"
;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[System.String]>
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inlining Arg" <System.String>
;* V13 tmp7 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[System.String]>
;* V14 tmp8 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[System.String]>
-; V15 tmp9 [V15,T08] ( 3, 24.18) ref -> x28 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V15 tmp9 [V15,T08] ( 3, 24.18) ref -> x27 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V16 tmp10 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V17 tmp11 [V17,T12] ( 3, 12.09) ref -> [fp+0x30] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V18 tmp12 [V18,T04] ( 4, 32.24) ref -> [fp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V19 tmp13 [V19,T05] ( 4, 32.24) ref -> [fp+0x20] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V17 tmp11 [V17,T12] ( 3, 12.09) ref -> x28 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
+; V18 tmp12 [V18,T04] ( 4, 32.24) ref -> [fp+0x20] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V19 tmp13 [V19,T05] ( 4, 32.24) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V20 tmp14 [V20,T15] ( 2, 8.06) byref -> x1 "field V02._reference (fldOffset=0x0)" P-INDEP
; V21 tmp15 [V21,T17] ( 2, 8.06) int -> x3 "field V02._length (fldOffset=0x8)" P-INDEP
;* V22 tmp16 [V22 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
@@ -36,27 +36,29 @@
;* V25 tmp19 [V25 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
;* V26 tmp20 [V26 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
;* V27 tmp21 [V27 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
-; V28 cse0 [V28,T13] ( 3, 12.09) int -> x14 "CSE - aggressive"
-; V29 cse1 [V29,T07] ( 9, 28.34) int -> [fp+0x3C] multi-def "CSE - aggressive"
-; V30 cse2 [V30,T06] ( 7, 30.11) byref -> [fp+0x18] hoist multi-def "CSE - aggressive"
-; V31 cse3 [V31,T02] ( 3, 47.52) int -> [fp+0x38] spill-single-def "CSE - aggressive"
-; V32 cse4 [V32,T11] ( 4, 13.09) ref -> x21 hoist "CSE - aggressive"
-; V33 cse5 [V33,T14] ( 3, 9.06) long -> x25 hoist "CSE - aggressive"
-; V34 cse6 [V34,T18] ( 2, 5.03) long -> x22 hoist "CSE - moderate"
-; V35 cse7 [V35,T19] ( 2, 5.03) long -> x23 hoist "CSE - moderate"
-; V36 cse8 [V36,T20] ( 2, 5.03) long -> x24 hoist "CSE - moderate"
-; V37 cse9 [V37,T21] ( 2, 5.03) long -> x26 hoist "CSE - moderate"
-; V38 cse10 [V38,T22] ( 2, 5 ) long -> x20 hoist "CSE - moderate"
+; V28 tmp22 [V28,T23] ( 6, 0.82) long -> registers "Widened primary induction variable"
+; V29 tmp23 [V29,T00] ( 5, 65.36) long -> x27 "Widened primary induction variable"
+; V30 cse0 [V30,T02] ( 3, 47.52) int -> [fp+0x2C] spill-single-def "CSE - aggressive"
+; V31 cse1 [V31,T13] ( 3, 12.09) int -> x14 "CSE - aggressive"
+; V32 cse2 [V32,T24] ( 3, 0.48) int -> [fp+0x28] spill-single-def "CSE - conservative"
+; V33 cse3 [V33,T07] ( 9, 28.34) int -> x27 multi-def "CSE - aggressive"
+; V34 cse4 [V34,T06] ( 7, 30.11) byref -> [fp+0x18] hoist multi-def "CSE - aggressive"
+; V35 cse5 [V35,T11] ( 4, 13.09) ref -> x21 hoist "CSE - aggressive"
+; V36 cse6 [V36,T14] ( 3, 9.06) long -> x25 hoist "CSE - aggressive"
+; V37 cse7 [V37,T18] ( 2, 5.03) long -> x22 hoist "CSE - moderate"
+; V38 cse8 [V38,T19] ( 2, 5.03) long -> x23 hoist "CSE - moderate"
+; V39 cse9 [V39,T20] ( 2, 5.03) long -> x24 hoist "CSE - moderate"
+; V40 cse10 [V40,T21] ( 2, 5 ) long -> x20 hoist "CSE - moderate"
;
-; Lcl frame size = 48
+; Lcl frame size = 32
G_M57982_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x90]!
- stp x19, x20, [sp, #0x40]
- stp x21, x22, [sp, #0x50]
- stp x23, x24, [sp, #0x60]
- stp x25, x26, [sp, #0x70]
- stp x27, x28, [sp, #0x80]
+ stp fp, lr, [sp, #-0x80]!
+ stp x19, x20, [sp, #0x30]
+ stp x21, x22, [sp, #0x40]
+ stp x23, x24, [sp, #0x50]
+ stp x25, x26, [sp, #0x60]
+ stp x27, x28, [sp, #0x70]
mov fp, sp
;; size=28 bbWeight=1 PerfScore 6.50
G_M57982_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -79,38 +81,65 @@ G_M57982_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x25, #0xD1FFAB1E
movk x25, #0xD1FFAB1E LSL #16
movk x25, #0xD1FFAB1E LSL #32
- movz x26, #0xD1FFAB1E
- movk x26, #0xD1FFAB1E LSL #16
- movk x26, #0xD1FFAB1E LSL #32
- ;; size=88 bbWeight=1 PerfScore 11.00
+ ;; size=76 bbWeight=1 PerfScore 9.50
G_M57982_IG03: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x21]
sxtw x1, w19
mov x0, x20
bl CORINFO_HELP_NEWARR_1_OBJ
; gcrRegs +[x0]
- mov x27, x0
- ; gcrRegs +[x27]
- mov w28, wzr
+ mov x26, x0
+ ; gcrRegs +[x26]
cmp w19, #0
ble G_M57982_IG09
- ;; size=28 bbWeight=4 PerfScore 18.00
-G_M57982_IG04: ; bbWeight=2, gcrefRegs=8200000 {x21 x27}, byrefRegs=0000 {}, byref, isz
+ ;; size=24 bbWeight=4 PerfScore 16.00
+G_M57982_IG04: ; bbWeight=2, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr w1, [x27, #0x08]
- sxtw w3, w1
- str w3, [fp, #0x3C] // [V29 cse1]
- cmp w3, w19
+ ldr w27, [x26, #0x08]
+ cmp w27, w19
blt G_M57982_IG07
- add x1, x27, #16
- ; byrRegs +[x1]
- str x1, [fp, #0x18] // [V30 cse2]
- ; GC ptr vars +{V30}
- ;; size=28 bbWeight=2 PerfScore 15.00
-G_M57982_IG05: ; bbWeight=15.84, gcVars=0000000000000040 {V30}, gcrefRegs=8200000 {x21 x27}, byrefRegs=0000 {}, gcvars, byref, isz
- ; byrRegs -[x1]
+ mov x27, xzr
+ add x28, x26, #16
+ ; byrRegs +[x28]
+ ;; size=20 bbWeight=2 PerfScore 11.00
+G_M57982_IG05: ; bbWeight=15.84, gcrefRegs=4200000 {x21 x26}, byrefRegs=10000000 {x28}, byref, isz
+ add w1, w27, #1
+ str w1, [fp, #0x2C] // [V30 cse0]
+ mov w0, #10
+ mul w0, w1, w0
+ movz x2, #0xD1FFAB1E // code for System.Number:Int32ToDecStr(int):System.String
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs +[x0]
+ lsl x14, x27, #3
+ add x14, x28, x14
+ ; byrRegs +[x14]
+ mov x15, x0
+ ; gcrRegs +[x15]
+ bl CORINFO_HELP_CHECKED_ASSIGN_REF
+ ; gcrRegs -[x0 x15]
+ ; byrRegs -[x14]
+ ldr w27, [fp, #0x2C] // [V30 cse0]
+ cmp w27, w19
+ blt G_M57982_IG05
+ ;; size=64 bbWeight=15.84 PerfScore 253.44
+G_M57982_IG06: ; bbWeight=4.03, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x28]
+ b G_M57982_IG09
+ ;; size=4 bbWeight=4.03 PerfScore 4.03
+G_M57982_IG07: ; bbWeight=0.02, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000 {}, byref
+ mov x28, xzr
+ add x0, x26, #16
+ ; byrRegs +[x0]
+ str x0, [fp, #0x18] // [V34 cse4]
+ ; GC ptr vars +{V34}
+ ;; size=12 bbWeight=0.02 PerfScore 0.04
+G_M57982_IG08: ; bbWeight=0.16, gcVars=0000000000000040 {V34}, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; byrRegs -[x0]
add w2, w28, #1
- str w2, [fp, #0x38] // [V31 cse3]
+ str w2, [fp, #0x28] // [V32 cse2]
mov w0, #10
mul w0, w2, w0
movz x3, #0xD1FFAB1E // code for System.Number:Int32ToDecStr(int):System.String
@@ -119,94 +148,54 @@ G_M57982_IG05: ; bbWeight=15.84, gcVars=0000000000000040 {V30}, gcrefRegs
ldr x3, [x3]
blr x3
; gcrRegs +[x0]
- ldr x1, [fp, #0x18] // [V30 cse2]
- ; byrRegs +[x1]
- add x14, x1, x28, LSL #3
+ cmp w28, w27
+ bhs G_M57982_IG12
+ lsl x14, x28, #3
+ ldr x28, [fp, #0x18] // [V34 cse4]
+ ; byrRegs +[x28]
+ add x14, x28, x14
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
- ; GC ptr vars -{V30}
+ ; GC ptr vars -{V34}
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ldr w28, [fp, #0x38] // [V31 cse3]
- cmp w28, w19
- str x1, [fp, #0x18] // [V30 cse2]
- ; GC ptr vars +{V30}
- blt G_M57982_IG05
- ;; size=68 bbWeight=15.84 PerfScore 293.04
-G_M57982_IG06: ; bbWeight=4.03, gcrefRegs=8200000 {x21 x27}, byrefRegs=0000 {}, byref
- ; byrRegs -[x1]
- ; GC ptr vars -{V30}
- b G_M57982_IG09
- ;; size=4 bbWeight=4.03 PerfScore 4.03
-G_M57982_IG07: ; bbWeight=0.02, gcrefRegs=8200000 {x21 x27}, byrefRegs=0000 {}, byref
- add x1, x27, #16
- ; byrRegs +[x1]
- str x1, [fp, #0x18] // [V30 cse2]
- ; GC ptr vars +{V30}
- ;; size=8 bbWeight=0.02 PerfScore 0.03
-G_M57982_IG08: ; bbWeight=0.16, gcVars=0000000000000040 {V30}, gcrefRegs=8200000 {x21 x27}, byrefRegs=0000 {}, gcvars, byref, isz
- ; byrRegs -[x1]
- add w0, w28, #1
- mov w2, #10
- mul w0, w0, w2
- movz x2, #0xD1FFAB1E // code for System.Number:Int32ToDecStr(int):System.String
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs +[x0]
- ldr w3, [fp, #0x3C] // [V29 cse1]
- cmp w28, w3
- bhs G_M57982_IG11
- ldr x1, [fp, #0x18] // [V30 cse2]
- ; byrRegs +[x1]
- add x14, x1, x28, LSL #3
- ; byrRegs +[x14]
- mov x15, x0
- ; gcrRegs +[x15]
- ; GC ptr vars -{V30}
- bl CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[x0 x15]
- ; byrRegs -[x14]
- add w28, w28, #1
- cmp w28, w19
- str x1, [fp, #0x18] // [V30 cse2]
- ; GC ptr vars +{V30}
- str w3, [fp, #0x3C] // [V29 cse1]
- blt G_M57982_IG08
+ ldr w14, [fp, #0x28] // [V32 cse2]
+ cmp w14, w19
+ str x28, [fp, #0x18] // [V34 cse4]
+ ; GC ptr vars +{V34}
+ blt G_M57982_IG11
;; size=80 bbWeight=0.16 PerfScore 3.28
-G_M57982_IG09: ; bbWeight=4.03, gcrefRegs=8200000 {x21 x27}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x1]
- ; GC ptr vars -{V30}
- ldr w3, [x27, #0x08]
- sxtw w28, w3
- sub w3, w28, #1
- sub w14, w28, #2
- cmp w14, w28
...
+20 (+41.67%) : 143550.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
@@ -8,10 +8,11 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 loc0 [V01,T00] ( 5, 17 ) int -> x2
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp3 [V05,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -21,24 +22,32 @@ G_M58764_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M58764_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0
ble G_M58764_IG04
+ mov x2, xzr
;; size=12 bbWeight=1 PerfScore 2.00
G_M58764_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w2, w1
+ bhs G_M58764_IG05
mov w3, #204
- strb w3, [x0, w2, UXTW #2]
+ strb w3, [x0, x2]
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
blt G_M58764_IG03
- ;; size=20 bbWeight=4 PerfScore 14.00
+ ;; size=32 bbWeight=4 PerfScore 22.00
G_M58764_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M58764_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 48, prolog size 8, PerfScore 19.50, instruction count 12, allocated bytes for code 48 (MethodHash=de8b1a73) for method System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
+; Total bytes of code 68, prolog size 8, PerfScore 27.50, instruction count 17, allocated bytes for code 68 (MethodHash=de8b1a73) for method System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
; ============================================================
Unwind Info:
@@ -49,7 +58,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+45.45%) : 225040.dasm - System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
@@ -8,10 +8,11 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 loc0 [V01,T00] ( 6, 21 ) int -> x2
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp3 [V05,T00] ( 7, 25 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -21,23 +22,31 @@ G_M39013_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M39013_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0
ble G_M39013_IG04
+ mov x2, xzr
;; size=12 bbWeight=1 PerfScore 2.00
G_M39013_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- strb w2, [x0, w2, UXTW #2]
+ cmp w2, w1
+ bhs G_M39013_IG05
+ strb w2, [x0, x2]
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
blt G_M39013_IG03
- ;; size=16 bbWeight=4 PerfScore 12.00
+ ;; size=28 bbWeight=4 PerfScore 20.00
G_M39013_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M39013_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 44, prolog size 8, PerfScore 17.50, instruction count 11, allocated bytes for code 44 (MethodHash=6c0d679a) for method System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 25.50, instruction count 16, allocated bytes for code 64 (MethodHash=6c0d679a) for method System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
; ============================================================
Unwind Info:
@@ -48,7 +57,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+46.15%) : 134452.dasm - System.Linq.Enumerable:Sumdouble,double:double (FullOpts)
@@ -9,9 +9,9 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[double]>
-; V01 loc0 [V01,T05] ( 4, 10 ) double -> d0
+; V01 loc0 [V01,T06] ( 4, 10 ) double -> d0
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[double]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x2
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) double -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -20,7 +20,8 @@
; V09 tmp4 [V09,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V10 tmp5 [V10,T04] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V11 tmp6 [V11,T02] ( 2, 5 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp7 [V12,T01] ( 3, 6 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V12 tmp7 [V12,T01] ( 4, 10 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V13 tmp8 [V13,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -31,24 +32,33 @@ G_M25021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M25021_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
movi v0.16b, #0
- mov w2, wzr
cmp w1, #0
ble G_M25021_IG04
+ mov x2, xzr
;; size=16 bbWeight=1 PerfScore 2.50
G_M25021_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr d16, [x0, w2, UXTW #3]
+ cmp w2, w1
+ bhs G_M25021_IG05
+ lsl x3, x2, #3
+ ldr d16, [x0, x3]
fadd d0, d16, d0
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
blt G_M25021_IG03
- ;; size=20 bbWeight=4 PerfScore 32.00
+ ;; size=36 bbWeight=4 PerfScore 44.00
G_M25021_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M25021_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 38.00, instruction count 13, allocated bytes for code 52 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 50.00, instruction count 19, allocated bytes for code 76 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
; ============================================================
Unwind Info:
@@ -59,7 +69,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
realworld.run.linux.arm64.checked.mch
-20 (-2.34%) : 38.dasm - System.Collections.Generic.Dictionary`2[ushort,System.__Canon]:Resize(int,ubyte):this (FullOpts)
@@ -11,12 +11,12 @@
; V00 this [V00,T01] ( 14, 14 ) ref -> x19 this class-hnd single-def <System.Collections.Generic.Dictionary`2[ushort,System.__Canon]>
; V01 arg1 [V01,T08] ( 6, 6 ) int -> x20 single-def
; V02 arg2 [V02,T15] ( 3, 3 ) ubyte -> x2 single-def
-; V03 loc0 [V03,T04] ( 11, 12.04) ref -> x21 class-hnd exact single-def <<unknown class>>
+; V03 loc0 [V03,T04] ( 9, 12 ) ref -> x21 class-hnd exact single-def <<unknown class>>
; V04 loc1 [V04,T09] ( 6, 8 ) int -> x22
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V07 loc4 [V07 ] ( 0, 0 ) int -> zero-ref
-; V08 loc5 [V08,T00] ( 14, 19.08) int -> x20
+;* V08 loc5 [V08,T20] ( 0, 0 ) int -> zero-ref
; V09 loc6 [V09,T12] ( 6, 6 ) byref -> x26
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11,T19] ( 0, 0 ) int -> zero-ref
@@ -35,12 +35,15 @@
;* V24 tmp14 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp15 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V26 tmp16 [V26,T18] ( 2, 4 ) long -> x0 "argument with side effect"
-; V27 cse0 [V27,T05] ( 4, 11.88) long -> x23 "CSE - aggressive"
-; V28 cse1 [V28,T06] ( 14, 10 ) ref -> x1 multi-def "CSE - aggressive"
-; V29 cse2 [V29,T13] ( 3, 5.94) int -> x26 "CSE - aggressive"
-; V30 rat0 [V30,T16] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V31 rat1 [V31,T17] ( 3, 4 ) long -> x0 "runtime lookup"
-; V32 rat2 [V32,T14] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V27 tmp17 [V27,T21] ( 7, 0.23) long -> x20 "Widened primary induction variable"
+; V28 tmp18 [V28,T00] ( 6, 18.82) long -> x20 "Widened primary induction variable"
+; V29 cse0 [V29,T22] ( 4, 0.12) byref -> x23 "CSE - conservative"
+; V30 cse1 [V30,T05] ( 4, 11.88) long -> x23 "CSE - aggressive"
+; V31 cse2 [V31,T06] ( 14, 10 ) ref -> x1 multi-def "CSE - aggressive"
+; V32 cse3 [V32,T13] ( 3, 5.94) int -> x26 "CSE - aggressive"
+; V33 rat0 [V33,T16] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V34 rat1 [V34,T17] ( 3, 4 ) long -> x0 "runtime lookup"
+; V35 rat2 [V35,T14] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
@@ -171,28 +174,28 @@ G_M47473_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
movn x0, #0
mov w1, w20
cmp x1, #0
- beq G_M47473_IG24
+ beq G_M47473_IG25
udiv x0, x0, x1
add x0, x0, #1
str x0, [x19, #0x30]
- mov w20, wzr
cmp w22, #0
- ble G_M47473_IG21
+ ble G_M47473_IG22
ldr w0, [x21, #0x08]
cmp w0, w22
blt G_M47473_IG17
+ mov x20, xzr
;; size=132 bbWeight=1 PerfScore 49.00
G_M47473_IG12: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mov w0, #24
- mov x1, #16
- umaddl x23, w20, w0, x1
+ mov x0, #24
+ mul x0, x20, x0
+ add x23, x0, #16
add x0, x21, x23
; byrRegs +[x0]
ldr w0, [x0, #0x0C]
; byrRegs -[x0]
cmn w0, #1
blt G_M47473_IG15
- ;; size=28 bbWeight=3.96 PerfScore 43.56
+ ;; size=28 bbWeight=3.96 PerfScore 31.68
G_M47473_IG13: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
add x0, x21, x23
; byrRegs +[x0]
@@ -211,7 +214,7 @@ G_M47473_IG13: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=000
mul x0, x0, x1
lsr x28, x0, #32
cmp w2, #0
- beq G_M47473_IG24
+ beq G_M47473_IG25
udiv w0, w24, w2
msub w0, w0, w2, w24
cmp w0, w28
@@ -231,7 +234,7 @@ G_M47473_IG13: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=000
;; size=112 bbWeight=1.98 PerfScore 87.12
G_M47473_IG14: ; bbWeight=1.98, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
cmp w28, w26
- bhs G_M47473_IG23
+ bhs G_M47473_IG24
add x0, x25, #16
; byrRegs +[x0]
ubfiz x1, x28, #2, #32
@@ -249,40 +252,37 @@ G_M47473_IG14: ; bbWeight=1.98, gcrefRegs=2280000 {x19 x21 x25}, byrefReg
G_M47473_IG15: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
; byrRegs -[x26]
- add w20, w20, #1
+ add w0, w20, #1
+ mov w20, w0
cmp w20, w22
blt G_M47473_IG12
- ;; size=12 bbWeight=3.96 PerfScore 7.92
+ ;; size=16 bbWeight=3.96 PerfScore 9.90
G_M47473_IG16: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
- b G_M47473_IG21
+ b G_M47473_IG22
;; size=4 bbWeight=1 PerfScore 1.00
-G_M47473_IG17: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M47473_IG17: ; bbWeight=0.01, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ mov x20, xzr
+ ;; size=4 bbWeight=0.01 PerfScore 0.01
+G_M47473_IG18: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x21, #0x08]
cmp w20, w0
- bhs G_M47473_IG23
- mov w0, #24
- mov x1, #16
- umaddl x0, w20, w0, x1
- add x0, x21, x0
- ; byrRegs +[x0]
- ldr w0, [x0, #0x0C]
- ; byrRegs -[x0]
+ bhs G_M47473_IG24
+ mov x0, #24
+ mul x0, x20, x0
+ add x0, x0, #16
+ add x23, x21, x0
+ ; byrRegs +[x23]
+ ldr w0, [x23, #0x0C]
cmn w0, #1
- blt G_M47473_IG20
- ;; size=40 bbWeight=0.04 PerfScore 0.62
-G_M47473_IG18: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mov w0, #24
- mov x1, #16
- umaddl x0, w20, w0, x1
- add x0, x21, x0
- ; byrRegs +[x0]
- ldr w24, [x0, #0x08]
+ blt G_M47473_IG21
+ ;; size=40 bbWeight=0.04 PerfScore 0.50
+G_M47473_IG19: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=800000 {x23}, byref, isz
+ ldr w24, [x23, #0x08]
ldr x25, [x19, #0x08]
; gcrRegs +[x25]
ldr w2, [x25, #0x08]
ldr x27, [x19, #0x30]
mov w0, w24
- ; byrRegs -[x0]
mul x0, x27, x0
lsr x0, x0, #32
add x0, x0, #1
@@ -290,11 +290,11 @@ G_M47473_IG18: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=000
mul x0, x0, x1
lsr x28, x0, #32
cmp w2, #0
- beq G_M47473_IG24
+ beq G_M47473_IG25
udiv w0, w24, w2
msub w0, w0, w2, w24
cmp w0, w28
- beq G_M47473_IG19
+ beq G_M47473_IG20
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -307,38 +307,33 @@ G_M47473_IG18: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=000
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=120 bbWeight=0.02 PerfScore 0.99
-G_M47473_IG19: ; bbWeight=0.02, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
+ ;; size=104 bbWeight=0.02 PerfScore 0.86
+G_M47473_IG20: ; bbWeight=0.02, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=800000 {x23}, byref, isz
ldr w14, [x25, #0x08]
cmp w28, w14
- bhs G_M47473_IG23
+ bhs G_M47473_IG24
add x14, x25, #16
; byrRegs +[x14]
ubfiz x15, x28, #2, #32
add x26, x14, x15
; byrRegs +[x26]
- mov w14, #24
- ; byrRegs -[x14]
- mov x15, #16
- umaddl x14, w20, w14, x15
- add x14, x21, x14
- ; byrRegs +[x14]
- add x14, x14, #12
+ add x14, x23, #12
ldr w15, [x26]
sub w15, w15, #1
str w15, [x14]
add w14, w20, #1
; byrRegs -[x14]
str w14, [x26]
- ;; size=64 bbWeight=0.02 PerfScore 0.39
-G_M47473_IG20: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=48 bbWeight=0.02 PerfScore 0.26
+G_M47473_IG21: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
- ; byrRegs -[x26]
- add w20, w20, #1
+ ; byrRegs -[x23 x26]
+ add w14, w20, #1
+ mov w20, w14
cmp w20, w22
- blt G_M47473_IG17
- ;; size=12 bbWeight=0.04 PerfScore 0.08
-G_M47473_IG21: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ blt G_M47473_IG18
+ ;; size=16 bbWeight=0.04 PerfScore 0.10
+G_M47473_IG22: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
add x14, x19, #16
; byrRegs +[x14]
mov x15, x21
@@ -347,7 +342,7 @@ G_M47473_IG21: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
; gcrRegs -[x15 x21]
; byrRegs -[x14]
;; size=12 bbWeight=1 PerfScore 2.00
-G_M47473_IG22: ; bbWeight=1, epilog, nogc, extend
+G_M47473_IG23: ; bbWeight=1, epilog, nogc, extend
ldp x27, x28, [sp, #0x60]
ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40]
@@ -356,17 +351,17 @@ G_M47473_IG22: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x70
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M47473_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M47473_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M47473_IG24: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M47473_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROWDIVZERO
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 856, prolog size 40, PerfScore 268.42, instruction count 214, allocated bytes for code 856 (MethodHash=bf55468e) for method System.Collections.Generic.Dictionary`2[ushort,System.__Canon]:Resize(int,ubyte):this (FullOpts)
+; Total bytes of code 836, prolog size 40, PerfScore 258.17, instruction count 209, allocated bytes for code 836 (MethodHash=bf55468e) for method System.Collections.Generic.Dictionary`2[ushort,System.__Canon]:Resize(int,ubyte):this (FullOpts)
; ============================================================
Unwind Info:
@@ -377,7 +372,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
...
-16 (-2.33%) : 13360.dasm - Microsoft.ML.Internal.Utilities.Utils:BuildSubsetMaps(Microsoft.ML.DataViewSchema,System.Func`2[Microsoft.ML.DataViewSchema+Column,ubyte],byref,byref) (FullOpts)
@@ -10,40 +10,39 @@
;
; V00 arg0 [V00,T02] ( 7, 13 ) ref -> x19 class-hnd single-def <Microsoft.ML.DataViewSchema>
; V01 arg1 [V01,T04] ( 5, 11 ) ref -> x20 class-hnd single-def <System.Func`2[Microsoft.ML.DataViewSchema+Column,ubyte]>
-; V02 arg2 [V02,T15] ( 3, 3 ) byref -> x22 single-def
-; V03 arg3 [V03,T09] ( 5, 7 ) byref -> x21 single-def
+; V02 arg2 [V02,T14] ( 3, 3 ) byref -> x22 single-def
+; V03 arg3 [V03,T08] ( 5, 7 ) byref -> x21 single-def
; V04 loc0 [V04,T03] ( 8, 14 ) ref -> x24 class-hnd exact single-def <System.Collections.Generic.List`1[int]>
-; V05 loc1 [V05,T00] ( 12, 37 ) int -> x23
+;* V05 loc1 [V05,T17] ( 0, 0 ) int -> zero-ref
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T12] ( 3, 6 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[int]>
+; V07 tmp1 [V07,T11] ( 3, 6 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[int]>
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[S] "spilled call-like call argument" <Microsoft.ML.DataViewSchema+Column>
-; V09 tmp3 [V09,T06] ( 3, 12 ) ref -> x0 class-hnd "impAppendStmt" <System.Object>
-; V10 tmp4 [V10,T11] ( 2, 8 ) int -> x2 "Strict ordering of exceptions for Array store"
+; V09 tmp3 [V09,T05] ( 3, 12 ) ref -> x0 class-hnd "impAppendStmt" <System.Object>
+; V10 tmp4 [V10,T10] ( 2, 8 ) int -> x2 "Strict ordering of exceptions for Array store"
;* V11 tmp5 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V12 tmp6 [V12,T18] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V13 tmp7 [V13,T13] ( 3, 6 ) ref -> x0 class-hnd "Inline stloc first use temp" <int[]>
-; V14 tmp8 [V14,T10] ( 4, 8 ) int -> x1 "Inline stloc first use temp"
+; V13 tmp7 [V13,T12] ( 3, 6 ) ref -> x0 class-hnd "Inline stloc first use temp" <int[]>
+; V14 tmp8 [V14,T09] ( 4, 8 ) int -> x1 "Inline stloc first use temp"
; V15 tmp9 [V15,T01] ( 3, 24 ) ref -> x1 "arr expr"
-; V16 tmp10 [V16 ] ( 2, 16 ) struct (32) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.ML.DataViewSchema+Column>
-; V17 tmp11 [V17,T07] ( 3, 12 ) ref -> x0 "arr expr"
+; V16 tmp10 [V16 ] ( 2, 16 ) struct (32) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.ML.DataViewSchema+Column>
+; V17 tmp11 [V17,T06] ( 3, 12 ) ref -> x0 "arr expr"
; V18 tmp12 [V18,T19] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V19 cse0 [V19,T08] ( 3, 12 ) ref -> x1 "CSE - aggressive"
-; V20 cse1 [V20,T14] ( 3, 6 ) int -> x1 "CSE - aggressive"
-; V21 cse2 [V21,T17] ( 3, 3 ) ref -> x23 "CSE - aggressive"
-; V22 cse3 [V22,T16] ( 2, 4 ) int -> x2 "CSE - aggressive"
-; V23 cse4 [V23,T05] ( 4, 12 ) long -> x25 "CSE - aggressive"
+; V19 tmp13 [V19,T00] ( 14, 41 ) long -> x23 "Widened primary induction variable"
+; V20 cse0 [V20,T07] ( 3, 12 ) ref -> x1 "CSE - aggressive"
+; V21 cse1 [V21,T13] ( 3, 6 ) int -> x1 "CSE - aggressive"
+; V22 cse2 [V22,T16] ( 3, 3 ) ref -> x23 "CSE - aggressive"
+; V23 cse3 [V23,T15] ( 2, 4 ) int -> x2 "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M15198_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x38]
- stp x21, x22, [sp, #0x48]
- stp x23, x24, [sp, #0x58]
- str x25, [sp, #0x68]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x30]
+ stp x21, x22, [sp, #0x40]
+ stp x23, x24, [sp, #0x50]
mov fp, sp
- stp xzr, xzr, [fp, #0x18] // [V16 tmp10], [V16 tmp10+0x08]
- stp xzr, xzr, [fp, #0x28] // [V16 tmp10+0x10], [V16 tmp10+0x18]
+ stp xzr, xzr, [fp, #0x10] // [V16 tmp10], [V16 tmp10+0x08]
+ stp xzr, xzr, [fp, #0x20] // [V16 tmp10+0x10], [V16 tmp10+0x18]
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
@@ -52,7 +51,7 @@ G_M15198_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; byrRegs +[x22]
mov x21, x3
; byrRegs +[x21]
- ;; size=48 bbWeight=1 PerfScore 9.50
+ ;; size=44 bbWeight=1 PerfScore 8.50
G_M15198_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=600000 {x21 x22}, byref, isz
cbz x19, G_M15198_IG13
ldr x23, [x19, #0x08]
@@ -86,13 +85,13 @@ G_M15198_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=600000
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- mov w23, wzr
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
ldr w1, [x1, #0x08]
; gcrRegs -[x1]
cmp w1, #0
ble G_M15198_IG10
+ mov x23, xzr
;; size=112 bbWeight=1 PerfScore 30.50
G_M15198_IG03: ; bbWeight=4, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=600000 {x21 x22}, byref, isz
tbnz w23, #31, G_M15198_IG16
@@ -104,21 +103,18 @@ G_M15198_IG03: ; bbWeight=4, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=6
ldr w0, [x1, #0x08]
cmp w23, w0
bhs G_M15198_IG12
- mov w25, w23
- lsl x0, x25, #5
+ lsl x0, x23, #5
add x0, x0, #16
add x1, x1, x0
; gcrRegs -[x1]
; byrRegs +[x1]
- ;; size=48 bbWeight=4 PerfScore 62.00
+ ;; size=44 bbWeight=4 PerfScore 60.00
G_M15198_IG04: ; bbWeight=4, nogc, extend
- ldp x0, x2, [x1]
- stp x0, x2, [fp, #0x18]
- ldp x0, x2, [x1, #0x10]
- stp x0, x2, [fp, #0x28]
- ;; size=16 bbWeight=4 PerfScore 40.00
+ ldp q16, q17, [x1]
+ stp q16, q17, [fp, #0x10]
+ ;; size=8 bbWeight=4 PerfScore 16.00
G_M15198_IG05: ; bbWeight=4, isz, extend
- add x1, fp, #24 // [V16 tmp10]
+ add x1, fp, #16 // [V16 tmp10]
; byrRegs -[x1]
ldr x0, [x20, #0x08]
; gcrRegs +[x0]
@@ -136,7 +132,7 @@ G_M15198_IG06: ; bbWeight=2, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=6
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
- lsl x1, x25, #2
+ lsl x1, x23, #2
movn w2, #0
str w2, [x0, x1]
b G_M15198_IG09
@@ -153,7 +149,7 @@ G_M15198_IG07: ; bbWeight=2, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=6
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
- lsl x3, x25, #2
+ lsl x3, x23, #2
str w2, [x0, x3]
ldr w0, [x24, #0x14]
; byrRegs -[x0]
@@ -185,14 +181,15 @@ G_M15198_IG08: ; bbWeight=2, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=6
; gcrRegs -[x0]
;; size=28 bbWeight=2 PerfScore 13.00
G_M15198_IG09: ; bbWeight=4, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=600000 {x21 x22}, byref, isz
- add w23, w23, #1
+ add w0, w23, #1
+ mov w23, w0
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
cmp w0, w23
bgt G_M15198_IG03
- ;; size=20 bbWeight=4 PerfScore 32.00
+ ;; size=24 bbWeight=4 PerfScore 34.00
G_M15198_IG10: ; bbWeight=1, gcrefRegs=1000000 {x24}, byrefRegs=400000 {x22}, byref
; gcrRegs -[x19-x20]
; byrRegs -[x21]
@@ -213,13 +210,12 @@ G_M15198_IG10: ; bbWeight=1, gcrefRegs=1000000 {x24}, byrefRegs=400000 {x
; byrRegs -[x14 x22]
;; size=36 bbWeight=1 PerfScore 8.00
G_M15198_IG11: ; bbWeight=1, epilog, nogc, extend
- ldr x25, [sp, #0x68]
- ldp x23, x24, [sp, #0x58]
- ldp x21, x22, [sp, #0x48]
- ldp x19, x20, [sp, #0x38]
- ldp fp, lr, [sp], #0x70
+ ldp x23, x24, [sp, #0x50]
+ ldp x21, x22, [sp, #0x40]
+ ldp x19, x20, [sp, #0x30]
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=24 bbWeight=1 PerfScore 7.00
+ ;; size=20 bbWeight=1 PerfScore 5.00
G_M15198_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
@@ -299,18 +295,18 @@ G_M15198_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 688, prolog size 32, PerfScore 318.00, instruction count 172, allocated bytes for code 688 (MethodHash=8637c4a1) for method Microsoft.ML.Internal.Utilities.Utils:BuildSubsetMaps(Microsoft.ML.DataViewSchema,System.Func`2[Microsoft.ML.DataViewSchema+Column,ubyte],byref,byref) (FullOpts)
+; Total bytes of code 672, prolog size 28, PerfScore 291.00, instruction count 168, allocated bytes for code 672 (MethodHash=8637c4a1) for method Microsoft.ML.Internal.Utilities.Utils:BuildSubsetMaps(Microsoft.ML.DataViewSchema,System.Func`2[Microsoft.ML.DataViewSchema+Column,ubyte],byref,byref) (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 3
+ Code Words : 2
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 172 (0x000ac) Actual length = 688 (0x0002b0)
+ Function Length : 168 (0x000a8) Actual length = 672 (0x0002a0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -318,13 +314,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D1 8D save_reg X#6 Z#13 (0x0D); str x25, [sp, #104]
E6 save_next
E6 save_next
- C8 07 save_regp X#0 Z#7 (0x07); stp x19, x20, [sp, #56]
- 8D save_fplr_x #13 (0x0D); stp fp, lr, [sp, #-112]!
- E4 end
- E4 end
+ C8 06 save_regp X#0 Z#6 (0x06); stp x19, x20, [sp, #48]
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end
-8 (-1.41%) : 14504.dasm - Microsoft.ML.Transforms.Text.WordTokenizingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
@@ -9,22 +9,22 @@
; Final local variable assignments
;
; V00 this [V00,T03] ( 8, 23 ) ref -> x19 this class-hnd single-def <Microsoft.ML.Transforms.Text.WordTokenizingTransformer+Mapper>
-; V01 loc0 [V01,T11] ( 4, 10 ) ref -> x21 class-hnd exact single-def <Microsoft.ML.DataViewSchema+DetachedColumn[]>
-; V02 loc1 [V02,T01] ( 8, 29 ) int -> x22
-; V03 loc2 [V03 ] ( 1, 4 ) int -> [fp+0x54] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V01 loc0 [V01,T10] ( 4, 10 ) ref -> x21 class-hnd exact single-def <Microsoft.ML.DataViewSchema+DetachedColumn[]>
+;* V02 loc1 [V02,T17] ( 0, 0 ) int -> zero-ref
+; V03 loc2 [V03 ] ( 1, 4 ) int -> [fp+0x5C] do-not-enreg[X] must-init addr-exposed ld-addr-op
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05 ] ( 7, 56 ) struct (24) [fp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.ML.DataViewSchema+DetachedColumn>
+; V05 tmp1 [V05 ] ( 7, 56 ) struct (24) [fp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.ML.DataViewSchema+DetachedColumn>
; V06 tmp2 [V06,T07] ( 2, 16 ) ref -> x0 class-hnd exact "Inlining Arg" <Microsoft.ML.DataViewSchema>
; V07 tmp3 [V07,T08] ( 2, 16 ) ref -> x1 class-hnd "Inlining Arg" <<unknown class>>
-; V08 tmp4 [V08 ] ( 4, 16 ) struct (40) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Nullable`1[Microsoft.ML.DataViewSchema+Column]>
-; V09 tmp5 [V09,T13] ( 2, 8 ) byref -> x14
-; V10 tmp6 [V10,T15] ( 2, 6 ) byref -> x15
+; V08 tmp4 [V08 ] ( 4, 16 ) struct (40) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Nullable`1[Microsoft.ML.DataViewSchema+Column]>
+; V09 tmp5 [V09,T12] ( 2, 8 ) byref -> x14
+; V10 tmp6 [V10,T14] ( 2, 6 ) byref -> x15
;* V11 tmp7 [V11 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "Inline stloc first use temp" <Microsoft.ML.DataViewSchema+Column>
;* V12 tmp8 [V12 ] ( 0, 0 ) byref -> zero-ref
-; V13 tmp9 [V13,T12] ( 3, 8 ) int -> x12
+; V13 tmp9 [V13,T11] ( 3, 8 ) int -> x12
; V14 tmp10 [V14,T02] ( 4, 28 ) ref -> x14 class-hnd "Inlining Arg" <<unknown class>>
; V15 tmp11 [V15,T04] ( 3, 24 ) ref -> x15 class-hnd "Inlining Arg" <Microsoft.ML.Data.DataViewType>
-; V16 tmp12 [V16,T14] ( 2, 8 ) byref -> x14
+; V16 tmp12 [V16,T13] ( 2, 8 ) byref -> x14
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref
;* V18 tmp14 [V18 ] ( 0, 0 ) byref -> zero-ref
;* V19 tmp15 [V19 ] ( 0, 0 ) ref -> zero-ref
@@ -33,35 +33,34 @@
; V22 tmp18 [V22,T18] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V23 tmp19 [V23,T19] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V24 tmp20 [V24,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V25 tmp21 [V25 ] ( 5, 32 ) ref -> [fp+0x38] do-not-enreg[X] addr-exposed "field V05.<Name>k__BackingField (fldOffset=0x0)" P-DEP
-; V26 tmp22 [V26 ] ( 4, 28 ) ref -> [fp+0x40] do-not-enreg[X] addr-exposed "field V05.<Type>k__BackingField (fldOffset=0x8)" P-DEP
-; V27 tmp23 [V27 ] ( 4, 28 ) ref -> [fp+0x48] do-not-enreg[X] addr-exposed "field V05.<Annotations>k__BackingField (fldOffset=0x10)" P-DEP
-; V28 tmp24 [V28,T16] ( 2, 4 ) int -> x12 "V11.[024..028)"
+; V25 tmp21 [V25 ] ( 5, 32 ) ref -> [fp+0x40] do-not-enreg[X] addr-exposed "field V05.<Name>k__BackingField (fldOffset=0x0)" P-DEP
+; V26 tmp22 [V26 ] ( 4, 28 ) ref -> [fp+0x48] do-not-enreg[X] addr-exposed "field V05.<Type>k__BackingField (fldOffset=0x8)" P-DEP
+; V27 tmp23 [V27 ] ( 4, 28 ) ref -> [fp+0x50] do-not-enreg[X] addr-exposed "field V05.<Annotations>k__BackingField (fldOffset=0x10)" P-DEP
+; V28 tmp24 [V28,T15] ( 2, 4 ) int -> x12 "V11.[024..028)"
; V29 tmp25 [V29,T05] ( 3, 24 ) ref -> x8 "arr expr"
; V30 tmp26 [V30,T06] ( 3, 24 ) ref -> x14 "arr expr"
-; V31 tmp27 [V31,T00] ( 4, 32 ) byref -> x0 "BlockOp address local"
+; V31 tmp27 [V31,T01] ( 4, 32 ) byref -> x0 "BlockOp address local"
; V32 tmp28 [V32,T20] ( 2, 0 ) ref -> x1 "argument with side effect"
; V33 tmp29 [V33,T21] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V34 cse0 [V34,T17] ( 3, 3 ) ref -> x20 "CSE - moderate"
-; V35 cse1 [V35,T09] ( 3, 12 ) long -> x23 "CSE - aggressive"
-; V36 cse2 [V36,T10] ( 3, 12 ) long -> x20 "CSE - aggressive"
+; V34 tmp30 [V34,T00] ( 9, 33 ) long -> x20 "Widened primary induction variable"
+; V35 cse0 [V35,T09] ( 3, 12 ) long -> x22 "CSE - aggressive"
+; V36 cse1 [V36,T16] ( 3, 3 ) ref -> x20 "CSE - moderate"
;
-; Lcl frame size = 72
+; Lcl frame size = 80
G_M6166_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x80]!
- stp x19, x20, [sp, #0x58]
- stp x21, x22, [sp, #0x68]
- str x23, [sp, #0x78]
+ stp x19, x20, [sp, #0x60]
+ stp x21, x22, [sp, #0x70]
mov fp, sp
- add x9, fp, #16
+ add x9, fp, #24
movi v16.16b, #0
stp q16, q16, [x9]
stp q16, q16, [x9, #0x20]
str xzr, [x9, #0x40]
mov x19, x0
; gcrRegs +[x19]
- ;; size=44 bbWeight=1 PerfScore 9.00
+ ;; size=40 bbWeight=1 PerfScore 8.00
G_M6166_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x19, #0x40]
; gcrRegs +[x1]
@@ -76,33 +75,33 @@ G_M6166_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
; gcrRegs +[x0]
mov x21, x0
; gcrRegs +[x21]
- mov w22, wzr
ldr w8, [x20, #0x08]
cmp w8, #0
ble G_M6166_IG09
+ mov x20, xzr
+ ; gcrRegs -[x20]
;; size=48 bbWeight=1 PerfScore 17.00
G_M6166_IG03: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0 x20]
+ ; gcrRegs -[x0]
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
ldr x8, [x19, #0x40]
; gcrRegs +[x8]
ldr x8, [x8, #0x10]
ldr w1, [x8, #0x08]
- cmp w22, w1
+ cmp w20, w1
bhs G_M6166_IG11
- mov w20, w22
lsl x1, x20, #4
- add x23, x1, #16
- add x8, x8, x23
+ add x22, x1, #16
+ add x8, x8, x22
; gcrRegs -[x8]
; byrRegs +[x8]
ldr x1, [x8, #0x08]
; gcrRegs +[x1]
- stp xzr, xzr, [fp, #0x10]
- stp xzr, xzr, [fp, #0x20]
- str xzr, [fp, #0x30]
- add x8, fp, #16 // [V08 tmp4]
+ stp xzr, xzr, [fp, #0x18]
+ stp xzr, xzr, [fp, #0x28]
+ str xzr, [fp, #0x38]
+ add x8, fp, #24 // [V08 tmp4]
; byrRegs -[x8]
movz x2, #0xD1FFAB1E // code for Microsoft.ML.DataViewSchema:GetColumnOrNull(System.String):System.Nullable`1[Microsoft.ML.DataViewSchema+Column]:this
movk x2, #0xD1FFAB1E LSL #16
@@ -111,13 +110,13 @@ G_M6166_IG03: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}
ldr wzr, [x0]
blr x2
; gcrRegs -[x0-x1]
- add x14, fp, #84 // [V03 loc2]
+ add x14, fp, #92 // [V03 loc2]
; byrRegs +[x14]
- add x15, fp, #16 // [V08 tmp4]
+ add x15, fp, #24 // [V08 tmp4]
; byrRegs +[x15]
- ldrb w12, [fp, #0x10] // [V08 tmp4]
+ ldrb w12, [fp, #0x18] // [V08 tmp4]
cbnz w12, G_M6166_IG05
- ;; size=100 bbWeight=4 PerfScore 140.00
+ ;; size=96 bbWeight=4 PerfScore 138.00
G_M6166_IG04: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=4000 {x14}, byref
; byrRegs -[x15]
movn w12, #0
@@ -130,16 +129,16 @@ G_M6166_IG05: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=C000 {x
G_M6166_IG06: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=4000 {x14}, byref, isz
; byrRegs -[x15]
str w12, [x14]
- stp xzr, xzr, [fp, #0x38]
- str xzr, [fp, #0x48]
+ stp xzr, xzr, [fp, #0x40]
+ str xzr, [fp, #0x50]
ldr x14, [x19, #0x40]
; gcrRegs +[x14]
; byrRegs -[x14]
ldr x14, [x14, #0x10]
ldr w15, [x14, #0x08]
- cmp w22, w15
+ cmp w20, w15
bhs G_M6166_IG11
- ldr x14, [x14, x23]
+ ldr x14, [x14, x22]
ldr x15, [x19, #0x38]
; gcrRegs +[x15]
cbz x14, G_M6166_IG12
@@ -149,8 +148,8 @@ G_M6166_IG07: ; bbWeight=2, gcrefRegs=28C000 {x14 x15 x19 x21}, byrefRegs
cbz w12, G_M6166_IG12
;; size=8 bbWeight=2 PerfScore 8.00
G_M6166_IG08: ; bbWeight=4, gcrefRegs=28C000 {x14 x15 x19 x21}, byrefRegs=0000 {}, byref, isz
- str x14, [fp, #0x38] // [V25 tmp21]
- add x14, fp, #56 // [V05 tmp1]
+ str x14, [fp, #0x40] // [V25 tmp21]
+ add x14, fp, #64 // [V05 tmp1]
; gcrRegs -[x14]
; byrRegs +[x14]
cbz x15, G_M6166_IG13
@@ -163,17 +162,17 @@ G_M6166_IG08: ; bbWeight=4, gcrefRegs=28C000 {x14 x15 x19 x21}, byrefRegs
movk x14, #0xD1FFAB1E LSL #32
ldr x14, [x14]
; gcrRegs +[x14]
- str x14, [fp, #0x48] // [V05 tmp1+0x10]
+ str x14, [fp, #0x50] // [V05 tmp1+0x10]
ldr w14, [x21, #0x08]
; gcrRegs -[x14]
- cmp w22, w14
+ cmp w20, w14
bhs G_M6166_IG11
mov x14, #24
mul x14, x20, x14
add x14, x14, #16
add x0, x21, x14
; byrRegs +[x0]
- ldr x15, [fp, #0x38] // [V25 tmp21]
+ ldr x15, [fp, #0x40] // [V25 tmp21]
; gcrRegs +[x15]
mov x14, x0
; byrRegs +[x14]
@@ -182,39 +181,39 @@ G_M6166_IG08: ; bbWeight=4, gcrefRegs=28C000 {x14 x15 x19 x21}, byrefRegs
; byrRegs -[x14]
add x14, x0, #8
; byrRegs +[x14]
- ldr x15, [fp, #0x40] // [V26 tmp22]
+ ldr x15, [fp, #0x48] // [V26 tmp22]
; gcrRegs +[x15]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]
add x14, x0, #16
; byrRegs +[x14]
- ldr x15, [fp, #0x48] // [V27 tmp23]
+ ldr x15, [fp, #0x50] // [V27 tmp23]
; gcrRegs +[x15]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x0 x14]
- add w22, w22, #1
+ add w0, w20, #1
+ mov w20, w0
ldr x0, [x19, #0x40]
; gcrRegs +[x0]
ldr x0, [x0, #0x10]
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
- cmp w0, w22
+ cmp w0, w20
bgt G_M6166_IG03
- ;; size=128 bbWeight=4 PerfScore 156.00
+ ;; size=132 bbWeight=4 PerfScore 158.00
G_M6166_IG09: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
mov x0, x21
; gcrRegs +[x0]
;; size=4 bbWeight=1 PerfScore 0.50
G_M6166_IG10: ; bbWeight=1, epilog, nogc, extend
- ldr x23, [sp, #0x78]
- ldp x21, x22, [sp, #0x68]
- ldp x19, x20, [sp, #0x58]
+ ldp x21, x22, [sp, #0x70]
+ ldp x19, x20, [sp, #0x60]
ldp fp, lr, [sp], #0x80
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00
+ ;; size=16 bbWeight=1 PerfScore 4.00
G_M6166_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x21]
bl CORINFO_HELP_RNGCHKFAIL
@@ -279,7 +278,7 @@ G_M6166_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 568, prolog size 40, PerfScore 427.50, instruction count 142, allocated bytes for code 568 (MethodHash=4802e7e9) for method Microsoft.ML.Transforms.Text.WordTokenizingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
...
+24 (+35.29%) : 16247.dasm - Microsoft.CodeAnalysis.CommandLineParser:g_isAllAscii|170(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
@@ -9,33 +9,38 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V02 loc1 [V02,T00] ( 5, 17 ) int -> x2
+;* V02 loc1 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V05 tmp2 [V05,T04] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V06 tmp3 [V06,T02] ( 2, 5 ) byref -> x0 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V07 tmp4 [V07,T01] ( 3, 6 ) int -> x1 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T01] ( 4, 10 ) int -> x1 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp5 [V08,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
-G_M41908_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M41908_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M41908_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0
ble G_M41908_IG04
+ mov x2, xzr
;; size=12 bbWeight=1 PerfScore 2.00
G_M41908_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrh w3, [x0, w2, UXTW #2]
+ cmp w2, w1
+ bhs G_M41908_IG08
+ lsl x3, x2, #1
+ ldrh w3, [x0, x3]
cmp w3, #127
bgt G_M41908_IG06
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
blt G_M41908_IG03
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=40 bbWeight=4 PerfScore 38.00
G_M41908_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov w0, #1
@@ -51,8 +56,13 @@ G_M41908_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M41908_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 68, prolog size 8, PerfScore 32.00, instruction count 17, allocated bytes for code 68 (MethodHash=61d05c4b) for method Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
+; Total bytes of code 92, prolog size 8, PerfScore 44.00, instruction count 23, allocated bytes for code 92 (MethodHash=61d05c4b) for method Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -63,7 +73,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+37.50%) : 13672.dasm - Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)
@@ -8,12 +8,13 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[float]>
-; V01 loc0 [V01,T04] ( 4, 10 ) float -> d16
-; V02 loc1 [V02,T00] ( 5, 17 ) int -> x2
-; V03 loc2 [V03,T03] ( 3, 12 ) float -> d17
+; V01 loc0 [V01,T05] ( 4, 10 ) float -> d16
+;* V02 loc1 [V02,T03] ( 0, 0 ) int -> zero-ref
+; V03 loc2 [V03,T04] ( 3, 12 ) float -> d17
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T02] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T01] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp3 [V07,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -24,18 +25,22 @@ G_M8690_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M8690_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
movi v16.16b, #0
- mov w2, wzr
cmp w1, #0
ble G_M8690_IG04
+ mov x2, xzr
;; size=16 bbWeight=1 PerfScore 2.50
G_M8690_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr s17, [x0, w2, UXTW #2]
+ cmp w2, w1
+ bhs G_M8690_IG06
+ lsl x3, x2, #2
+ ldr s17, [x0, x3]
fsub s17, s17, s17
fadd s16, s17, s16
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
blt G_M8690_IG03
- ;; size=24 bbWeight=4 PerfScore 44.00
+ ;; size=40 bbWeight=4 PerfScore 56.00
G_M8690_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
fcmp s16, #0.0
@@ -45,8 +50,13 @@ G_M8690_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M8690_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 64, prolog size 8, PerfScore 52.50, instruction count 16, allocated bytes for code 64 (MethodHash=2f89de0d) for method Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 64.50, instruction count 22, allocated bytes for code 88 (MethodHash=2f89de0d) for method Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -57,7 +67,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+46.15%) : 1306.dasm - System.Linq.Enumerable:Sumdouble,double:double (FullOpts)
@@ -9,9 +9,9 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[double]>
-; V01 loc0 [V01,T05] ( 4, 10 ) double -> d0
+; V01 loc0 [V01,T06] ( 4, 10 ) double -> d0
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[double]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x2
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) double -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -20,7 +20,8 @@
; V09 tmp4 [V09,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V10 tmp5 [V10,T04] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V11 tmp6 [V11,T02] ( 2, 5 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp7 [V12,T01] ( 3, 6 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V12 tmp7 [V12,T01] ( 4, 10 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V13 tmp8 [V13,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -31,24 +32,33 @@ G_M25021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M25021_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
movi v0.16b, #0
- mov w2, wzr
cmp w1, #0
ble G_M25021_IG04
+ mov x2, xzr
;; size=16 bbWeight=1 PerfScore 2.50
G_M25021_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr d16, [x0, w2, UXTW #3]
+ cmp w2, w1
+ bhs G_M25021_IG05
+ lsl x3, x2, #3
+ ldr d16, [x0, x3]
fadd d0, d16, d0
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
blt G_M25021_IG03
- ;; size=20 bbWeight=4 PerfScore 32.00
+ ;; size=36 bbWeight=4 PerfScore 44.00
G_M25021_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M25021_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 38.00, instruction count 13, allocated bytes for code 52 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 50.00, instruction count 19, allocated bytes for code 76 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
; ============================================================
Unwind Info:
@@ -59,7 +69,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
smoke_tests.nativeaot.linux.arm64.checked.mch
-8 (-2.70%) : 5146.dasm - System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo+<>cDisplayClass200:<getSyntheticMethods>b1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
@@ -7,37 +7,37 @@
; fully interruptible
; Final local variable assignments
;
-; V00 this [V00,T13] ( 3, 3 ) ref -> x20 this class-hnd exact single-def <System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo+<>c__DisplayClass20_0>
-; V01 arg1 [V01,T12] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
-; V02 arg2 [V02,T04] ( 6, 6 ) ref -> x19 class-hnd single-def <System.Object[]>
+; V00 this [V00,T12] ( 3, 3 ) ref -> x20 this class-hnd exact single-def <System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo+<>c__DisplayClass20_0>
+; V01 arg1 [V01,T11] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T03] ( 6, 6 ) ref -> x19 class-hnd single-def <System.Object[]>
;* V03 arg3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Type>
-; V04 loc0 [V04,T16] ( 2, 2 ) ref -> x21 class-hnd single-def <System.Array>
-; V05 loc1 [V05,T06] ( 4, 7 ) ref -> x22 class-hnd exact single-def <int[]>
+; V04 loc0 [V04,T15] ( 2, 2 ) ref -> x21 class-hnd single-def <System.Array>
+; V05 loc1 [V05,T05] ( 4, 7 ) ref -> x22 class-hnd exact single-def <int[]>
;* V06 loc2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Object>
-; V07 loc3 [V07,T01] ( 7, 25 ) int -> x23
+;* V07 loc3 [V07,T17] ( 0, 0 ) int -> zero-ref
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T17] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
-; V10 tmp2 [V10,T09] ( 5, 6.75) ref -> x21 class-hnd "spilling QMark2" <System.Array>
-; V11 tmp3 [V11,T00] ( 4, 26 ) ref -> [fp+0x18] spill-single-def "inline UNBOX clone1"
+; V09 tmp1 [V09,T16] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
+; V10 tmp2 [V10,T08] ( 5, 6.75) ref -> x21 class-hnd "spilling QMark2" <System.Array>
+; V11 tmp3 [V11,T01] ( 4, 26 ) ref -> x28 "inline UNBOX clone1"
; V12 tmp4 [V12,T02] ( 2, 16 ) int -> x1 "Strict ordering of exceptions for Array store"
-; V13 tmp5 [V13,T10] ( 3, 6 ) int -> x20 "index expr"
-; V14 tmp6 [V14,T15] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V15 cse0 [V15,T05] ( 5, 8 ) int -> x20 "CSE - aggressive"
-; V16 cse1 [V16,T14] ( 2, 5 ) byref -> x27 hoist "CSE - aggressive"
-; V17 cse2 [V17,T08] ( 4, 7 ) int -> x24 hoist multi-def "CSE - aggressive"
-; V18 cse3 [V18,T07] ( 4, 7 ) byref -> x25 hoist multi-def "CSE - aggressive"
-; V19 cse4 [V19,T11] ( 3, 6 ) long -> x26 hoist "CSE - aggressive"
-; V20 cse5 [V20,T03] ( 3, 12 ) long -> x28 "CSE - aggressive"
+; V13 tmp5 [V13,T09] ( 3, 6 ) int -> x20 "index expr"
+; V14 tmp6 [V14,T14] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V15 tmp7 [V15,T00] ( 8, 29 ) long -> x23 "Widened primary induction variable"
+; V16 cse0 [V16,T04] ( 5, 8 ) int -> x20 "CSE - aggressive"
+; V17 cse1 [V17,T13] ( 2, 5 ) byref -> x27 hoist "CSE - aggressive"
+; V18 cse2 [V18,T07] ( 4, 7 ) int -> x24 hoist multi-def "CSE - aggressive"
+; V19 cse3 [V19,T06] ( 4, 7 ) byref -> x25 hoist multi-def "CSE - aggressive"
+; V20 cse4 [V20,T10] ( 3, 6 ) long -> x26 hoist "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 0
G_M56096_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
- stp x25, x26, [sp, #0x50]
- stp x27, x28, [sp, #0x60]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
+ stp x23, x24, [sp, #0x30]
+ stp x25, x26, [sp, #0x40]
+ stp x27, x28, [sp, #0x50]
mov fp, sp
mov x20, x0
; gcrRegs +[x20]
@@ -78,9 +78,9 @@ G_M56096_IG05: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
; gcr arg pop 0
mov x22, x0
; gcrRegs +[x22]
- mov w23, wzr
cmp w20, #0
ble G_M56096_IG09
+ mov x23, xzr
ldr w24, [x19, #0x08]
add x25, x19, #16
; byrRegs +[x25]
@@ -93,41 +93,36 @@ G_M56096_IG06: ; bbWeight=4, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=A0
; gcrRegs -[x0]
cmp w23, w24
bhs G_M56096_IG11
- mov w28, w23
- lsl x1, x28, #3
- ldr x2, [x25, x1]
- ; gcrRegs +[x2]
- str x2, [fp, #0x18] // [V11 tmp3]
- ; GC ptr vars +{V11}
- ldr x1, [x2]
+ lsl x1, x23, #3
+ ldr x28, [x25, x1]
+ ; gcrRegs +[x28]
+ ldr x1, [x28]
cmp x1, x26
beq G_M56096_IG08
- ;; size=36 bbWeight=4 PerfScore 46.00
-G_M56096_IG07: ; bbWeight=1, gcVars=0000000000000001 {V11}, gcrefRegs=680004 {x2 x19 x21 x22}, byrefRegs=A000000 {x25 x27}, gcvars, byref
- mov x1, x2
+ ;; size=28 bbWeight=4 PerfScore 40.00
+G_M56096_IG07: ; bbWeight=1, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefRegs=A000000 {x25 x27}, byref
+ mov x1, x28
; gcrRegs +[x1]
mov x0, x26
bl CORINFO_HELP_UNBOX
- ; gcrRegs -[x1-x2]
+ ; gcrRegs -[x1]
; gcr arg pop 0
- ldr x2, [fp, #0x18] // [V11 tmp3]
- ; gcrRegs +[x2]
- ;; size=16 bbWeight=1 PerfScore 4.00
-G_M56096_IG08: ; bbWeight=4, gcrefRegs=680004 {x2 x19 x21 x22}, byrefRegs=A000000 {x25 x27}, byref, isz
- ldr w1, [x2, #0x08]
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M56096_IG08: ; bbWeight=4, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefRegs=A000000 {x25 x27}, byref, isz
+ ldr w1, [x28, #0x08]
ldr w0, [x22, #0x08]
cmp w23, w0
bhs G_M56096_IG11
- lsl x0, x28, #2
+ lsl x0, x23, #2
str w1, [x27, x0]
- add w23, w23, #1
+ add w1, w23, #1
+ mov w23, w1
cmp w23, w20
blt G_M56096_IG06
- ;; size=36 bbWeight=4 PerfScore 46.00
-G_M56096_IG09: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x2]
+ ;; size=40 bbWeight=4 PerfScore 48.00
+G_M56096_IG09: ; bbWeight=1, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x28]
; byrRegs -[x25 x27]
- ; GC ptr vars -{V11}
ldr w24, [x19, #0x08]
cmp w20, w24
bhs G_M56096_IG11
@@ -148,12 +143,12 @@ G_M56096_IG09: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=680000
; gcrRegs +[x0]
;; size=40 bbWeight=1 PerfScore 13.50
G_M56096_IG10: ; bbWeight=1, epilog, nogc, extend
- ldp x27, x28, [sp, #0x60]
- ldp x25, x26, [sp, #0x50]
- ldp x23, x24, [sp, #0x40]
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x70
+ ldp x27, x28, [sp, #0x50]
+ ldp x25, x26, [sp, #0x40]
+ ldp x23, x24, [sp, #0x30]
+ ldp x21, x22, [sp, #0x20]
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x60
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
G_M56096_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
@@ -163,23 +158,23 @@ G_M56096_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 296, prolog size 36, PerfScore 140.12, instruction count 74, allocated bytes for code 296 (MethodHash=119e24df) for method System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo+<>c__DisplayClass20_0:<get_SyntheticMethods>b__1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
+; Total bytes of code 288, prolog size 36, PerfScore 134.12, instruction count 72, allocated bytes for code 288 (MethodHash=119e24df) for method System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo+<>c__DisplayClass20_0:<get_SyntheticMethods>b__1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
; ============================================================
Cfi Info:
>> Start offset : 0x000000
>> End offset : 0xd1ffab1e
- CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x70
+ CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x60
CodeOffset: 0x04 Op: RelOffset DwarfReg:0x1d Offset:0x0
CodeOffset: 0x04 Op: RelOffset DwarfReg:0x1e Offset:0x8
- CodeOffset: 0x08 Op: RelOffset DwarfReg:0x13 Offset:0x20
- CodeOffset: 0x08 Op: RelOffset DwarfReg:0x14 Offset:0x28
- CodeOffset: 0x0C Op: RelOffset DwarfReg:0x15 Offset:0x30
- CodeOffset: 0x0C Op: RelOffset DwarfReg:0x16 Offset:0x38
- CodeOffset: 0x10 Op: RelOffset DwarfReg:0x17 Offset:0x40
- CodeOffset: 0x10 Op: RelOffset DwarfReg:0x18 Offset:0x48
- CodeOffset: 0x14 Op: RelOffset DwarfReg:0x19 Offset:0x50
- CodeOffset: 0x14 Op: RelOffset DwarfReg:0x1a Offset:0x58
- CodeOffset: 0x18 Op: RelOffset DwarfReg:0x1b Offset:0x60
- CodeOffset: 0x18 Op: RelOffset DwarfReg:0x1c Offset:0x68
+ CodeOffset: 0x08 Op: RelOffset DwarfReg:0x13 Offset:0x10
+ CodeOffset: 0x08 Op: RelOffset DwarfReg:0x14 Offset:0x18
+ CodeOffset: 0x0C Op: RelOffset DwarfReg:0x15 Offset:0x20
+ CodeOffset: 0x0C Op: RelOffset DwarfReg:0x16 Offset:0x28
+ CodeOffset: 0x10 Op: RelOffset DwarfReg:0x17 Offset:0x30
+ CodeOffset: 0x10 Op: RelOffset DwarfReg:0x18 Offset:0x38
+ CodeOffset: 0x14 Op: RelOffset DwarfReg:0x19 Offset:0x40
+ CodeOffset: 0x14 Op: RelOffset DwarfReg:0x1a Offset:0x48
+ CodeOffset: 0x18 Op: RelOffset DwarfReg:0x1b Offset:0x50
+ CodeOffset: 0x18 Op: RelOffset DwarfReg:0x1c Offset:0x58
CodeOffset: 0x1C Op: DefCfaRegister DwarfReg:0x1D
-16 (-2.34%) : 2478.dasm - System.Collections.Generic.Dictionary2[System.ReadOnlyMemory1[ushort],System.ConsoleKeyInfo]:Resize(int,ubyte):this (FullOpts)
@@ -10,12 +10,12 @@
; V00 this [V00,T03] ( 13, 13 ) ref -> x19 this class-hnd exact single-def <System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo]>
; V01 arg1 [V01,T08] ( 6, 6 ) int -> x20 single-def
; V02 arg2 [V02,T14] ( 3, 3 ) ubyte -> x2 single-def
-; V03 loc0 [V03,T04] ( 11, 12.04) ref -> x21 class-hnd exact single-def <<unknown class>>
+; V03 loc0 [V03,T04] ( 10, 12.02) ref -> x21 class-hnd exact single-def <<unknown class>>
; V04 loc1 [V04,T09] ( 6, 8 ) int -> x22
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V07 loc4 [V07 ] ( 0, 0 ) int -> zero-ref
-; V08 loc5 [V08,T00] ( 14, 19.08) int -> x20
+;* V08 loc5 [V08,T16] ( 0, 0 ) int -> zero-ref
; V09 loc6 [V09,T12] ( 6, 6 ) byref -> x26
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11,T15] ( 0, 0 ) int -> zero-ref
@@ -32,9 +32,13 @@
;* V22 tmp12 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp13 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp14 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V25 cse0 [V25,T05] ( 4, 11.88) long -> x23 "CSE - aggressive"
-; V26 cse1 [V26,T13] ( 3, 5.94) int -> x26 "CSE - aggressive"
-; V27 cse2 [V27,T06] ( 14, 10 ) ref -> x1 multi-def "CSE - aggressive"
+; V25 tmp15 [V25,T17] ( 7, 0.23) long -> x20 "Widened primary induction variable"
+; V26 tmp16 [V26,T00] ( 6, 18.82) long -> x20 "Widened primary induction variable"
+; V27 cse0 [V27,T18] ( 3, 0.10) byref -> x23 "CSE - conservative"
+; V28 cse1 [V28,T05] ( 4, 11.88) long -> x23 "CSE - aggressive"
+; V29 cse2 [V29,T19] ( 3, 0.10) long -> x0 "CSE - conservative"
+; V30 cse3 [V30,T13] ( 3, 5.94) int -> x26 "CSE - aggressive"
+; V31 cse4 [V31,T06] ( 14, 10 ) ref -> x1 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -132,28 +136,28 @@ G_M8041_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
movn x0, #0
mov w1, w20
cmp x1, #0
- beq G_M8041_IG21
+ beq G_M8041_IG22
udiv x0, x0, x1
add x0, x0, #1
str x0, [x19, #0x30]
- mov w20, wzr
cmp w22, #0
- ble G_M8041_IG18
+ ble G_M8041_IG19
ldr w0, [x21, #0x08]
cmp w0, w22
blt G_M8041_IG14
+ mov x20, xzr
;; size=120 bbWeight=1 PerfScore 45.00
G_M8041_IG09: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mov w0, #40
- mov x1, #16
- umaddl x23, w20, w0, x1
+ mov x0, #40
+ mul x0, x20, x0
+ add x23, x0, #16
add x0, x21, x23
; byrRegs +[x0]
ldr w0, [x0, #0x04]
; byrRegs -[x0]
cmn w0, #1
blt G_M8041_IG12
- ;; size=28 bbWeight=3.96 PerfScore 43.56
+ ;; size=28 bbWeight=3.96 PerfScore 31.68
G_M8041_IG10: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w24, [x21, x23]
ldr x25, [x19, #0x08]
@@ -169,7 +173,7 @@ G_M8041_IG10: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
mul x0, x0, x1
lsr x28, x0, #32
cmp w2, #0
- beq G_M8041_IG21
+ beq G_M8041_IG22
udiv w0, w24, w2
msub w0, w0, w2, w24
cmp w0, w28
@@ -185,7 +189,7 @@ G_M8041_IG10: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
;; size=88 bbWeight=1.98 PerfScore 76.23
G_M8041_IG11: ; bbWeight=1.98, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
cmp w28, w26
- bhs G_M8041_IG20
+ bhs G_M8041_IG21
add x0, x25, #16
; byrRegs +[x0]
ubfiz x1, x28, #2, #32
@@ -203,31 +207,31 @@ G_M8041_IG11: ; bbWeight=1.98, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs
G_M8041_IG12: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
; byrRegs -[x26]
- add w20, w20, #1
+ add w0, w20, #1
+ mov w20, w0
cmp w20, w22
blt G_M8041_IG09
- ;; size=12 bbWeight=3.96 PerfScore 7.92
+ ;; size=16 bbWeight=3.96 PerfScore 9.90
G_M8041_IG13: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
- b G_M8041_IG18
+ b G_M8041_IG19
;; size=4 bbWeight=1 PerfScore 1.00
-G_M8041_IG14: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M8041_IG14: ; bbWeight=0.01, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ mov x20, xzr
+ ;; size=4 bbWeight=0.01 PerfScore 0.01
+G_M8041_IG15: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x21, #0x08]
cmp w20, w0
- bhs G_M8041_IG20
- mov w0, #40
- mov x1, #16
- umaddl x0, w20, w0, x1
- add x0, x21, x0
- ; byrRegs +[x0]
- ldr w0, [x0, #0x04]
- ; byrRegs -[x0]
- cmn w0, #1
- blt G_M8041_IG17
- ;; size=40 bbWeight=0.04 PerfScore 0.62
-G_M8041_IG15: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mov w0, #40
- mov x1, #16
- umaddl x0, w20, w0, x1
+ bhs G_M8041_IG21
+ mov x0, #40
+ mul x0, x20, x0
+ add x0, x0, #16
+ add x23, x21, x0
+ ; byrRegs +[x23]
+ ldr w1, [x23, #0x04]
+ cmn w1, #1
+ blt G_M8041_IG18
+ ;; size=40 bbWeight=0.04 PerfScore 0.50
+G_M8041_IG16: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=800000 {x23}, byref, isz
ldr w24, [x21, x0]
ldr x25, [x19, #0x08]
; gcrRegs +[x25]
@@ -241,11 +245,11 @@ G_M8041_IG15: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
mul x0, x0, x1
lsr x28, x0, #32
cmp w2, #0
- beq G_M8041_IG21
+ beq G_M8041_IG22
udiv w0, w24, w2
msub w0, w0, w2, w24
cmp w0, w28
- beq G_M8041_IG16
+ beq G_M8041_IG17
adrp x1, [HIGH RELOC #0xD1FFAB1E]
add x1, x1, [LOW RELOC #0xD1FFAB1E]
; gcrRegs +[x1]
@@ -254,38 +258,33 @@ G_M8041_IG15: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
bl <unknown method>
; gcrRegs -[x0-x1]
; gcr arg pop 0
- ;; size=96 bbWeight=0.02 PerfScore 0.88
-G_M8041_IG16: ; bbWeight=0.02, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
+ ;; size=84 bbWeight=0.02 PerfScore 0.76
+G_M8041_IG17: ; bbWeight=0.02, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=800000 {x23}, byref, isz
ldr w14, [x25, #0x08]
cmp w28, w14
- bhs G_M8041_IG20
+ bhs G_M8041_IG21
add x14, x25, #16
; byrRegs +[x14]
ubfiz x15, x28, #2, #32
add x26, x14, x15
; byrRegs +[x26]
- mov w14, #40
- ; byrRegs -[x14]
- mov x15, #16
- umaddl x14, w20, w14, x15
- add x14, x21, x14
- ; byrRegs +[x14]
- add x14, x14, #4
+ add x14, x23, #4
ldr w15, [x26]
sub w15, w15, #1
str w15, [x14]
add w14, w20, #1
; byrRegs -[x14]
str w14, [x26]
- ;; size=64 bbWeight=0.02 PerfScore 0.39
-G_M8041_IG17: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=48 bbWeight=0.02 PerfScore 0.26
+G_M8041_IG18: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
- ; byrRegs -[x26]
- add w20, w20, #1
+ ; byrRegs -[x23 x26]
+ add w14, w20, #1
+ mov w20, w14
cmp w20, w22
- blt G_M8041_IG14
- ;; size=12 bbWeight=0.04 PerfScore 0.08
-G_M8041_IG18: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ blt G_M8041_IG15
+ ;; size=16 bbWeight=0.04 PerfScore 0.10
+G_M8041_IG19: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
add x14, x19, #16
; byrRegs +[x14]
mov x15, x21
@@ -294,7 +293,7 @@ G_M8041_IG18: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}
; gcrRegs -[x15 x19 x21]
; byrRegs -[x14]
;; size=12 bbWeight=1 PerfScore 2.00
-G_M8041_IG19: ; bbWeight=1, epilog, nogc, extend
+G_M8041_IG20: ; bbWeight=1, epilog, nogc, extend
ldp x27, x28, [sp, #0x50]
ldp x25, x26, [sp, #0x40]
ldp x23, x24, [sp, #0x30]
@@ -303,17 +302,17 @@ G_M8041_IG19: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x60
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M8041_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M8041_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M8041_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8041_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROWDIVZERO
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 684, prolog size 36, PerfScore 229.97, instruction count 171, allocated bytes for code 684 (MethodHash=f7aee096) for method System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo]:Resize(int,ubyte):this (FullOpts)
+; Total bytes of code 668, prolog size 36, PerfScore 219.73, instruction count 167, allocated bytes for code 668 (MethodHash=f7aee096) for method System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo]:Resize(int,ubyte):this (FullOpts)
; ============================================================
Cfi Info:
-4 (-1.10%) : 3892.dasm - System.Number+Grisu3:TryRoundWeedCounted(System.Span`1[ubyte],int,ulong,ulong,ulong,byref):ubyte (FullOpts)
@@ -13,18 +13,20 @@
; V03 arg3 [V03,T06] ( 9, 7 ) long -> x21 single-def
; V04 arg4 [V04,T07] ( 8, 6.50) long -> x22 single-def
; V05 arg5 [V05,T09] ( 4, 3 ) byref -> x24 single-def
-; V06 loc0 [V06,T01] ( 7, 21 ) int -> x0
+; V06 loc0 [V06,T15] ( 2, 1 ) int -> x0
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T11] ( 3, 3 ) byref -> x1 single-def "dup spill"
-; V09 tmp2 [V09,T00] ( 3, 24 ) byref -> x1 "dup spill"
+; V08 tmp1 [V08,T11] ( 3, 3 ) byref -> x2 single-def "dup spill"
+; V09 tmp2 [V09,T01] ( 3, 24 ) byref -> x0 "dup spill"
;* V10 tmp3 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp4 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V12 tmp5 [V12,T02] ( 7, 14.50) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V13 tmp6 [V13,T05] ( 4, 9.50) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V14 cse0 [V14,T03] ( 4, 16 ) int -> x0 "CSE - aggressive"
-; V15 cse1 [V15,T12] ( 4, 2 ) long -> x0 "CSE - aggressive"
-; V16 cse2 [V16,T13] ( 4, 2 ) int -> x0 "CSE - aggressive"
-; V17 cse3 [V17,T04] ( 3, 12 ) long -> x1 "CSE - aggressive"
+; V14 tmp7 [V14,T00] ( 7, 24.50) long -> x1 "Widened primary induction variable"
+; V15 cse0 [V15,T03] ( 3, 12 ) long -> x1 "CSE - aggressive"
+; V16 cse1 [V16,T04] ( 3, 12 ) int -> x1 "CSE - aggressive"
+; V17 cse2 [V17,T14] ( 3, 1.50) long -> x1 "CSE - moderate"
+; V18 cse3 [V18,T12] ( 4, 2 ) long -> x0 "CSE - aggressive"
+; V19 cse4 [V19,T13] ( 4, 2 ) int -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -115,38 +117,37 @@ G_M50855_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19
cmp w0, w20
bhs G_M50855_IG14
mov w1, w0
- add x1, x19, x1
- ; byrRegs +[x1]
- ldrb w2, [x1]
- add w2, w2, #1
- strb w2, [x1]
+ add x2, x19, x1
+ ; byrRegs +[x2]
+ ldrb w3, [x2]
+ add w3, w3, #1
+ strb w3, [x2]
cmp w0, #0
ble G_M50855_IG13
;; size=40 bbWeight=0.50 PerfScore 4.50
G_M50855_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
- ; byrRegs -[x1]
- cmp w0, w20
+ ; byrRegs -[x2]
+ cmp w1, w20
bhs G_M50855_IG14
- mov w1, w0
- ldrb w2, [x19, x1]
- cmp w2, #58
+ ldrb w0, [x19, x1]
+ cmp w0, #58
bne G_M50855_IG13
- mov w2, #48
- strb w2, [x19, x1]
- sub w0, w0, #1
- cmp w0, w20
+ mov w0, #48
+ strb w0, [x19, x1]
+ sub w1, w1, #1
+ cmp w1, w20
bhs G_M50855_IG14
- mov w1, w0
- add x1, x19, x1
- ; byrRegs +[x1]
- ldrb w2, [x1]
+ mov w1, w1
+ add x0, x19, x1
+ ; byrRegs +[x0]
+ ldrb w2, [x0]
add w2, w2, #1
- strb w2, [x1]
- cmp w0, #0
+ strb w2, [x0]
+ cmp w1, #0
bgt G_M50855_IG12
- ;; size=72 bbWeight=4 PerfScore 68.00
+ ;; size=68 bbWeight=4 PerfScore 66.00
G_M50855_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
- ; byrRegs -[x1]
+ ; byrRegs -[x0]
ldrb w0, [x19]
cmp w0, #58
bne G_M50855_IG08
@@ -164,7 +165,7 @@ G_M50855_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 364, prolog size 52, PerfScore 105.50, instruction count 91, allocated bytes for code 364 (MethodHash=b8e43958) for method System.Number+Grisu3:TryRoundWeedCounted(System.Span`1[ubyte],int,ulong,ulong,ulong,byref):ubyte (FullOpts)
+; Total bytes of code 360, prolog size 52, PerfScore 103.50, instruction count 90, allocated bytes for code 360 (MethodHash=b8e43958) for method System.Number+Grisu3:TryRoundWeedCounted(System.Span`1[ubyte],int,ulong,ulong,ulong,byref):ubyte (FullOpts)
; ============================================================
Cfi Info:
+20 (+20.00%) : 15272.dasm - System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (FullOpts)
@@ -10,13 +10,14 @@
; V00 this [V00,T01] ( 4, 10 ) ref -> x19 this class-hnd exact single-def <System.Buffers.Latin1CharSearchValues>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T00] ( 5, 17 ) int -> x22
+;* V03 loc1 [V03,T07] ( 0, 0 ) int -> zero-ref
; V04 loc2 [V04,T02] ( 3, 12 ) ushort -> x1
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T05] ( 2, 2 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V07 tmp2 [V07,T06] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V08 tmp3 [V08,T04] ( 2, 5 ) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V09 tmp4 [V09,T03] ( 3, 6 ) int -> x21 "field V02._length (fldOffset=0x8)" P-INDEP
+; V09 tmp4 [V09,T03] ( 4, 10 ) int -> x21 "field V02._length (fldOffset=0x8)" P-INDEP
+; V10 tmp5 [V10,T00] ( 6, 21 ) long -> x22 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -33,24 +34,28 @@ G_M159_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, by
mov x20, x1
; byrRegs +[x20]
sxtw w21, w2
- mov w22, wzr
cmp w21, #0
ble G_M159_IG04
+ mov x22, xzr
;; size=20 bbWeight=1 PerfScore 3.00
G_M159_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
; byrRegs -[x1]
- ldrh w1, [x20, w22, UXTW #2]
+ cmp w22, w21
+ bhs G_M159_IG05
+ lsl x0, x22, #1
+ ldrh w1, [x20, x0]
cmp w1, #255
- bgt G_M159_IG05
+ bgt G_M159_IG06
ldrsb wzr, [x19]
add x0, x19, #8
; byrRegs +[x0]
bl System.Buffers.BitVector256:Set(int):this
; byrRegs -[x0]
- add w22, w22, #1
+ add w0, w22, #1
+ mov w22, w0
cmp w22, w21
blt G_M159_IG03
- ;; size=36 bbWeight=4 PerfScore 44.00
+ ;; size=52 bbWeight=4 PerfScore 56.00
G_M159_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19]
; byrRegs -[x20]
@@ -60,11 +65,14 @@ G_M159_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, e
ret lr
;; size=16 bbWeight=1 PerfScore 4.00
G_M159_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M159_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 100, prolog size 16, PerfScore 55.00, instruction count 25, allocated bytes for code 100 (MethodHash=05e2ff60) for method System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (FullOpts)
+; Total bytes of code 120, prolog size 16, PerfScore 67.00, instruction count 30, allocated bytes for code 120 (MethodHash=05e2ff60) for method System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (FullOpts)
; ============================================================
Cfi Info:
+12 (+21.43%) : 15213.dasm - System.DateTimeFormat:ParseRepeatPattern(System.ReadOnlySpan`1[ushort],int,ushort):int (FullOpts)
@@ -10,10 +10,11 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
; V01 arg1 [V01,T04] ( 4, 4 ) int -> x2 single-def
; V02 arg2 [V02,T02] ( 3, 6 ) ushort -> x3 single-def
-; V03 loc0 [V03,T00] ( 6, 18 ) int -> x4
+; V03 loc0 [V03,T05] ( 4, 4 ) int -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T03] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V06 tmp2 [V06,T01] ( 2, 9 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp3 [V07,T00] ( 6, 18 ) long -> x4 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -24,21 +25,24 @@ G_M43086_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M43086_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
; byrRegs +[x0]
add w4, w2, #1
+ mov w4, w4
b G_M43086_IG04
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.00
G_M43086_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
add w4, w4, #1
- ;; size=4 bbWeight=2 PerfScore 1.00
+ mov w4, w4
+ ;; size=8 bbWeight=2 PerfScore 2.00
G_M43086_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w4, w1
bhs G_M43086_IG06
;; size=8 bbWeight=8 PerfScore 12.00
G_M43086_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrh w5, [x0, w4, UXTW #2]
+ lsl x5, x4, #1
+ ldrh w5, [x0, x5]
uxth w6, w3
cmp w5, w6
beq G_M43086_IG03
- ;; size=16 bbWeight=4 PerfScore 20.00
+ ;; size=20 bbWeight=4 PerfScore 24.00
G_M43086_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
sub w0, w4, w2
@@ -48,7 +52,7 @@ G_M43086_IG07: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 56, prolog size 8, PerfScore 38.50, instruction count 14, allocated bytes for code 56 (MethodHash=781b57b1) for method System.DateTimeFormat:ParseRepeatPattern(System.ReadOnlySpan`1[ushort],int,ushort):int (FullOpts)
+; Total bytes of code 68, prolog size 8, PerfScore 44.00, instruction count 17, allocated bytes for code 68 (MethodHash=781b57b1) for method System.DateTimeFormat:ParseRepeatPattern(System.ReadOnlySpan`1[ushort],int,ushort):int (FullOpts)
; ============================================================
Cfi Info:
+20 (+21.74%) : 2090.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
@@ -8,22 +8,22 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 loc0 [V01,T06] ( 4, 4 ) ref -> x0 class-hnd exact single-def <System.String>
+; V01 loc0 [V01,T05] ( 4, 4 ) ref -> x0 class-hnd exact single-def <System.String>
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x2
+;* V03 loc2 [V03,T09] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-;* V06 tmp2 [V06,T09] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V07 tmp3 [V07,T07] ( 2, 4 ) byref -> x1 single-def "Inlining Arg"
+;* V06 tmp2 [V06,T08] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V07 tmp3 [V07,T06] ( 2, 4 ) byref -> x1 single-def "Inlining Arg"
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp6 [V10,T03] ( 2, 5 ) byref -> x20 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V11 tmp7 [V11,T02] ( 3, 3 ) int -> x19 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V12 tmp8 [V12,T05] ( 2, 5 ) byref -> x1 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp9 [V13,T04] ( 3, 6 ) int -> x19 "field V02._length (fldOffset=0x8)" P-INDEP
-; V14 tmp10 [V14,T08] ( 2, 2 ) byref -> x1 single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp6 [V10,T02] ( 2, 5 ) byref -> x20 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V11 tmp7 [V11,T01] ( 4, 7 ) int -> x19 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V12 tmp8 [V12,T04] ( 2, 5 ) byref -> x1 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp9 [V13,T03] ( 3, 6 ) int -> x2 "field V02._length (fldOffset=0x8)" P-INDEP
+; V14 tmp10 [V14,T07] ( 2, 2 ) byref -> x1 single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V15 tmp11 [V15,T10] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V16 cse0 [V16,T01] ( 3, 12 ) long -> x3 "CSE - aggressive"
+; V16 tmp12 [V16,T00] ( 7, 25 ) long -> x3 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -43,29 +43,38 @@ G_M6504_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, by
ldrsb wzr, [x0]
add x1, x0, #12
; byrRegs +[x1]
- mov w2, wzr
- cmp w19, #0
+ sxtw w2, w19
+ cmp w2, #0
ble G_M6504_IG04
- ;; size=28 bbWeight=1 PerfScore 7.00
+ mov x3, xzr
+ ;; size=32 bbWeight=1 PerfScore 7.50
G_M6504_IG03: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=100002 {x1 x20}, byref, isz
- mov w3, w2
+ cmp w3, w19
+ bhs G_M6504_IG05
lsl x4, x3, #1
add x4, x1, x4
; byrRegs +[x4]
- ldrb w3, [x20, x3]
- strh w3, [x4]
- add w2, w2, #1
- cmp w2, w19
+ ldrb w5, [x20, x3]
+ strh w5, [x4]
+ add w3, w3, #1
+ mov w3, w3
+ cmp w3, w2
blt G_M6504_IG03
- ;; size=32 bbWeight=4 PerfScore 32.00
+ ;; size=40 bbWeight=4 PerfScore 38.00
G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1 x4 x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
+G_M6504_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 92, prolog size 20, PerfScore 45.50, instruction count 23, allocated bytes for code 92 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
+; Total bytes of code 112, prolog size 20, PerfScore 52.00, instruction count 28, allocated bytes for code 112 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
; ============================================================
Cfi Info:
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.linux.arm64.checked.mch |
1,685 |
11 |
1,652 |
22 |
-140 |
+27,356 |
| benchmarks.run_pgo.linux.arm64.checked.mch |
17,766 |
35 |
17,525 |
206 |
-312 |
+361,096 |
| benchmarks.run_tiered.linux.arm64.checked.mch |
642 |
6 |
628 |
8 |
-88 |
+14,212 |
| coreclr_tests.run.linux.arm64.checked.mch |
21,355 |
66 |
21,139 |
150 |
-900 |
+335,112 |
| libraries.crossgen2.linux.arm64.checked.mch |
5,111 |
55 |
4,986 |
70 |
-636 |
+78,668 |
| libraries.pmi.linux.arm64.checked.mch |
6,637 |
34 |
6,494 |
109 |
-400 |
+89,760 |
| libraries_tests.run.linux.arm64.Release.mch |
28,550 |
264 |
28,071 |
215 |
-3,328 |
+673,208 |
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
8,411 |
74 |
8,217 |
120 |
-1,048 |
+116,308 |
| realworld.run.linux.arm64.checked.mch |
1,431 |
22 |
1,379 |
30 |
-364 |
+20,972 |
| smoke_tests.nativeaot.linux.arm64.checked.mch |
605 |
5 |
592 |
8 |
-48 |
+9,632 |
|
92,193 |
572 |
90,683 |
938 |
-7,264 |
+1,726,324 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.linux.arm64.checked.mch |
33,710 |
2,779 |
30,931 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_pgo.linux.arm64.checked.mch |
152,904 |
61,290 |
91,614 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_tiered.linux.arm64.checked.mch |
63,814 |
48,019 |
15,795 |
0 (0.00%) |
0 (0.00%) |
| coreclr_tests.run.linux.arm64.checked.mch |
625,245 |
382,318 |
242,927 |
27 (0.00%) |
31 (0.00%) |
| libraries.crossgen2.linux.arm64.checked.mch |
234,495 |
15 |
234,480 |
0 (0.00%) |
1 (0.00%) |
| libraries.pmi.linux.arm64.checked.mch |
295,745 |
6 |
295,739 |
0 (0.00%) |
0 (0.00%) |
| libraries_tests.run.linux.arm64.Release.mch |
744,166 |
490,908 |
253,258 |
0 (0.00%) |
0 (0.00%) |
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
304,865 |
21,599 |
283,266 |
0 (0.00%) |
0 (0.00%) |
| realworld.run.linux.arm64.checked.mch |
33,309 |
151 |
33,158 |
0 (0.00%) |
0 (0.00%) |
| smoke_tests.nativeaot.linux.arm64.checked.mch |
19,033 |
7 |
19,026 |
0 (0.00%) |
0 (0.00%) |
|
2,507,286 |
1,007,092 |
1,500,194 |
27 (0.00%) |
32 (0.00%) |
jit-analyze output
benchmarks.run.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15557856 (overridden on cmd)
Total bytes of diff: 15585072 (overridden on cmd)
Total bytes of delta: 27216 (0.17 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
584 : 19297.dasm (6.48 % of base)
572 : 18552.dasm (16.01 % of base)
372 : 15730.dasm (19.79 % of base)
328 : 18975.dasm (10.51 % of base)
232 : 2276.dasm (2.26 % of base)
196 : 28639.dasm (1.81 % of base)
152 : 33570.dasm (9.82 % of base)
144 : 28124.dasm (7.76 % of base)
128 : 28852.dasm (1.62 % of base)
128 : 11421.dasm (1.17 % of base)
128 : 13300.dasm (1.69 % of base)
128 : 33073.dasm (1.19 % of base)
120 : 3944.dasm (1.85 % of base)
108 : 6541.dasm (3.08 % of base)
100 : 16598.dasm (11.68 % of base)
96 : 7866.dasm (3.51 % of base)
96 : 6987.dasm (5.14 % of base)
92 : 3928.dasm (4.51 % of base)
88 : 12023.dasm (6.11 % of base)
84 : 20983.dasm (2.99 % of base)
Top file improvements (bytes):
-32 : 7135.dasm (-0.88 % of base)
-20 : 38.dasm (-2.34 % of base)
-16 : 4726.dasm (-2.01 % of base)
-16 : 23000.dasm (-0.75 % of base)
-12 : 584.dasm (-0.89 % of base)
-12 : 6258.dasm (-0.90 % of base)
-8 : 338.dasm (-0.48 % of base)
-8 : 645.dasm (-0.76 % of base)
-8 : 5563.dasm (-0.61 % of base)
-4 : 1363.dasm (-1.05 % of base)
-4 : 21369.dasm (-0.27 % of base)
70 total files with Code Size differences (11 improved, 59 regressed), 20 unchanged.
Top method regressions (bytes):
584 (6.48 % of base) : 19297.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
572 (16.01 % of base) : 18552.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
372 (19.79 % of base) : 15730.dasm - AssignJagged:second_assignments(int[][],short[][]) (FullOpts)
328 (10.51 % of base) : 18975.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
232 (2.26 % of base) : 2276.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
196 (1.81 % of base) : 28639.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
152 (9.82 % of base) : 33570.dasm - SciMark2.LU:factor(double[][],int[]):int (FullOpts)
144 (7.76 % of base) : 28124.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (FullOpts)
128 (1.69 % of base) : 13300.dasm - Jil.Deserialize.Methods:_ReadISO8601Date(System.IO.TextReader,ushort[]):System.DateTime (FullOpts)
128 (1.19 % of base) : 33073.dasm - Jil.Deserialize.Methods:_ReadISO8601DateThunkReader(byref,ushort[]):System.DateTime (FullOpts)
128 (1.62 % of base) : 28852.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffset(System.IO.TextReader,ushort[]):System.DateTimeOffset (FullOpts)
128 (1.17 % of base) : 11421.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffsetThunkReader(byref,ushort[]):System.DateTimeOffset (FullOpts)
120 (1.85 % of base) : 3944.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
108 (3.08 % of base) : 6541.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
100 (11.68 % of base) : 16598.dasm - AssignRect:second_assignments(int[,],short[,]) (FullOpts)
96 (5.14 % of base) : 6987.dasm - ProtoBuf.Meta.MetaType:ResolveTupleConstructor(System.Type,byref):System.Reflection.ConstructorInfo (FullOpts)
96 (3.51 % of base) : 7866.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
92 (4.51 % of base) : 3928.dasm - System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String (FullOpts)
88 (6.11 % of base) : 12023.dasm - BilinearTest:BilinearInterpol_Vector(double[],double[],double,double,double[],double,double,double):double[]:this (FullOpts)
84 (2.99 % of base) : 20983.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
Top method improvements (bytes):
-32 (-0.88 % of base) : 7135.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-20 (-2.34 % of base) : 38.dasm - System.Collections.Generic.Dictionary`2[ushort,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-16 (-0.75 % of base) : 23000.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (FullOpts)
-16 (-2.01 % of base) : 4726.dasm - System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory+ServiceDescriptorCacheItem]:Resize(int,ubyte):this (FullOpts)
-12 (-0.89 % of base) : 584.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (FullOpts)
-12 (-0.90 % of base) : 6258.dasm - System.Text.Json.JsonHelpers:TryParseDateTimeOffset(System.ReadOnlySpan`1[ubyte],byref):ubyte (FullOpts)
-8 (-0.76 % of base) : 645.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
-8 (-0.48 % of base) : 338.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-8 (-0.61 % of base) : 5563.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-4 (-0.27 % of base) : 21369.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__ensureAllUnderlyingConversionsChecked|210_1(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-4 (-1.05 % of base) : 1363.dasm - System.Number+Grisu3:TryRoundWeedCounted(System.Span`1[ubyte],int,ulong,ulong,ulong,byref):ubyte (FullOpts)
Top method regressions (percentages):
24 (46.15 % of base) : 16707.dasm - Struct.SpanWrapper:SumSpan(System.ReadOnlySpan`1[int]):int:this (FullOpts)
24 (46.15 % of base) : 1303.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
28 (41.18 % of base) : 11479.dasm - System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
24 (40.00 % of base) : 24991.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
24 (40.00 % of base) : 28803.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
20 (35.71 % of base) : 12636.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
76 (33.93 % of base) : 33531.dasm - Benchstone.BenchI.BubbleSort2:Test():ubyte:this (FullOpts)
20 (33.33 % of base) : 26398.dasm - Span.IndexerBench:TestIndexer3(System.Span`1[ubyte]):ubyte (FullOpts)
20 (33.33 % of base) : 11212.dasm - Span.IndexerBench:TestKnownSizeArray(System.Span`1[ubyte]):ubyte (FullOpts)
20 (33.33 % of base) : 28968.dasm - Span.IndexerBench:TestReadOnlyIndexer2(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
24 (31.58 % of base) : 28229.dasm - System.Collections.IndexerSet`1[int]:Span():int:this (FullOpts)
20 (31.25 % of base) : 28442.dasm - Span.IndexerBench:TestIndexer6(System.Span`1[ubyte],Span.Sink):ubyte (FullOpts)
24 (30.00 % of base) : 23046.dasm - System.Collections.IterateFor`1[int]:ReadOnlySpan():int:this (FullOpts)
24 (30.00 % of base) : 19320.dasm - System.Collections.IterateFor`1[int]:Span():int:this (FullOpts)
24 (30.00 % of base) : 33150.dasm - System.Collections.IterateForEach`1[int]:ReadOnlySpan():int:this (FullOpts)
24 (30.00 % of base) : 30958.dasm - System.Collections.IterateForEach`1[int]:Span():int:this (FullOpts)
20 (27.78 % of base) : 28302.dasm - Span.IndexerBench:TestIndexer5(System.Span`1[ubyte],byref):ubyte (FullOpts)
20 (27.78 % of base) : 21872.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
24 (27.27 % of base) : 27405.dasm - Span.IndexerBench:TestIndexer4(System.Span`1[ubyte],int):ubyte (FullOpts)
24 (26.09 % of base) : 28959.dasm - System.Collections.IterateFor`1[System.__Canon]:ReadOnlySpan():System.__Canon:this (FullOpts)
Top method improvements (percentages):
-20 (-2.34 % of base) : 38.dasm - System.Collections.Generic.Dictionary`2[ushort,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-16 (-2.01 % of base) : 4726.dasm - System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory+ServiceDescriptorCacheItem]:Resize(int,ubyte):this (FullOpts)
-4 (-1.05 % of base) : 1363.dasm - System.Number+Grisu3:TryRoundWeedCounted(System.Span`1[ubyte],int,ulong,ulong,ulong,byref):ubyte (FullOpts)
-12 (-0.90 % of base) : 6258.dasm - System.Text.Json.JsonHelpers:TryParseDateTimeOffset(System.ReadOnlySpan`1[ubyte],byref):ubyte (FullOpts)
-12 (-0.89 % of base) : 584.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (FullOpts)
-32 (-0.88 % of base) : 7135.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-8 (-0.76 % of base) : 645.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
-16 (-0.75 % of base) : 23000.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (FullOpts)
-8 (-0.61 % of base) : 5563.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-8 (-0.48 % of base) : 338.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-4 (-0.27 % of base) : 21369.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__ensureAllUnderlyingConversionsChecked|210_1(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
benchmarks.run_pgo.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 80097444 (overridden on cmd)
Total bytes of diff: 80458228 (overridden on cmd)
Total bytes of delta: 360784 (0.45 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
684 : 71882.dasm (10.99 % of base)
620 : 88716.dasm (6.53 % of base)
612 : 88700.dasm (6.41 % of base)
592 : 88715.dasm (6.56 % of base)
560 : 64471.dasm (15.77 % of base)
392 : 55351.dasm (19.10 % of base)
352 : 55330.dasm (15.44 % of base)
296 : 71875.dasm (9.14 % of base)
292 : 71884.dasm (11.42 % of base)
248 : 64456.dasm (13.84 % of base)
248 : 55347.dasm (12.38 % of base)
248 : 64470.dasm (13.84 % of base)
232 : 88698.dasm (6.95 % of base)
232 : 55691.dasm (9.83 % of base)
232 : 88714.dasm (6.95 % of base)
224 : 117890.dasm (1.98 % of base)
224 : 117873.dasm (1.95 % of base)
216 : 71851.dasm (16.36 % of base)
216 : 71873.dasm (16.36 % of base)
216 : 55708.dasm (9.39 % of base)
Top file improvements (bytes):
-36 : 94247.dasm (-1.77 % of base)
-36 : 94268.dasm (-1.77 % of base)
-32 : 143670.dasm (-1.70 % of base)
-20 : 113113.dasm (-3.11 % of base)
-12 : 111878.dasm (-4.35 % of base)
-12 : 58387.dasm (-4.35 % of base)
-12 : 59051.dasm (-4.35 % of base)
-12 : 112263.dasm (-4.35 % of base)
-12 : 2215.dasm (-0.87 % of base)
-8 : 119988.dasm (-1.35 % of base)
-8 : 126626.dasm (-1.35 % of base)
-8 : 103750.dasm (-1.35 % of base)
-8 : 46770.dasm (-0.25 % of base)
-8 : 108676.dasm (-1.35 % of base)
-8 : 124536.dasm (-1.35 % of base)
-4 : 122794.dasm (-0.81 % of base)
-4 : 141613.dasm (-0.17 % of base)
-4 : 26610.dasm (-0.81 % of base)
-4 : 32040.dasm (-0.90 % of base)
-4 : 103731.dasm (-0.81 % of base)
84 total files with Code Size differences (25 improved, 59 regressed), 20 unchanged.
Top method regressions (bytes):
684 (10.99 % of base) : 71882.dasm - LUDecomp:Run():double:this (Tier1)
620 (6.53 % of base) : 88716.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
612 (6.41 % of base) : 88700.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
592 (6.56 % of base) : 88715.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
560 (15.77 % of base) : 64471.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
392 (19.10 % of base) : 55351.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
352 (15.44 % of base) : 55330.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
296 (9.14 % of base) : 71875.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
292 (11.42 % of base) : 71884.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
248 (12.38 % of base) : 55347.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
248 (13.84 % of base) : 64456.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
248 (13.84 % of base) : 64470.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
232 (9.83 % of base) : 55691.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
232 (6.95 % of base) : 88698.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
232 (6.95 % of base) : 88714.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
224 (1.98 % of base) : 117890.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
224 (1.95 % of base) : 117873.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
216 (9.39 % of base) : 55708.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
216 (16.36 % of base) : 71851.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
216 (16.36 % of base) : 71873.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
Top method improvements (bytes):
-36 (-1.77 % of base) : 94247.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1-OSR)
-36 (-1.77 % of base) : 94268.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1-OSR)
-32 (-1.70 % of base) : 143670.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
-20 (-3.11 % of base) : 113113.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-12 (-4.35 % of base) : 111878.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-12 (-4.35 % of base) : 58387.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-12 (-4.35 % of base) : 59051.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-12 (-4.35 % of base) : 112263.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-12 (-0.87 % of base) : 2215.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (Tier0-FullOpts)
-8 (-0.25 % of base) : 46770.dasm - EMFloatClass:SetupCPUEmFloatArrays(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int) (Tier1-OSR)
-8 (-1.35 % of base) : 119988.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-8 (-1.35 % of base) : 126626.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-8 (-1.35 % of base) : 103750.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-8 (-1.35 % of base) : 108676.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-8 (-1.35 % of base) : 124536.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-4 (-0.17 % of base) : 141613.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
-4 (-0.81 % of base) : 122794.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 26610.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 103731.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 17577.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
Top method regressions (percentages):
28 (35.00 % of base) : 135023.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
28 (35.00 % of base) : 137834.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
28 (35.00 % of base) : 67557.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
28 (33.33 % of base) : 96249.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
20 (27.78 % of base) : 85587.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
20 (21.74 % of base) : 85112.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
24 (20.69 % of base) : 137710.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
24 (20.69 % of base) : 145707.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
32 (20.51 % of base) : 149098.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (Tier1)
48 (19.35 % of base) : 149868.dasm - Benchstone.BenchI.BubbleSort2:Inner(int[]) (Tier1-OSR)
392 (19.10 % of base) : 55351.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
20 (18.52 % of base) : 104100.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
20 (18.52 % of base) : 121228.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
20 (18.52 % of base) : 124991.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
20 (18.52 % of base) : 145115.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
20 (18.52 % of base) : 148767.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
20 (18.52 % of base) : 94588.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
20 (18.52 % of base) : 152032.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
20 (18.52 % of base) : 34340.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
20 (18.52 % of base) : 58255.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
Top method improvements (percentages):
-12 (-4.35 % of base) : 111878.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-12 (-4.35 % of base) : 58387.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-12 (-4.35 % of base) : 59051.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-12 (-4.35 % of base) : 112263.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-20 (-3.11 % of base) : 113113.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-36 (-1.77 % of base) : 94247.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1-OSR)
-36 (-1.77 % of base) : 94268.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1-OSR)
-32 (-1.70 % of base) : 143670.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
-8 (-1.35 % of base) : 119988.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-8 (-1.35 % of base) : 126626.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-8 (-1.35 % of base) : 103750.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-8 (-1.35 % of base) : 108676.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-8 (-1.35 % of base) : 124536.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-4 (-0.90 % of base) : 32040.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
-4 (-0.90 % of base) : 8148.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
-12 (-0.87 % of base) : 2215.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (Tier0-FullOpts)
-4 (-0.81 % of base) : 122794.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 103731.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 17577.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 141354.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
benchmarks.run_tiered.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 24601848 (overridden on cmd)
Total bytes of diff: 24615972 (overridden on cmd)
Total bytes of delta: 14124 (0.06 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
584 : 36312.dasm (6.48 % of base)
432 : 33775.dasm (14.01 % of base)
372 : 29071.dasm (19.79 % of base)
328 : 29068.dasm (15.47 % of base)
328 : 35211.dasm (10.51 % of base)
300 : 35208.dasm (10.30 % of base)
240 : 30962.dasm (11.03 % of base)
232 : 45769.dasm (2.26 % of base)
224 : 36310.dasm (6.91 % of base)
196 : 53971.dasm (1.81 % of base)
188 : 53969.dasm (4.91 % of base)
152 : 62192.dasm (9.82 % of base)
100 : 30964.dasm (11.68 % of base)
96 : 29491.dasm (3.51 % of base)
92 : 8128.dasm (4.51 % of base)
84 : 54996.dasm (4.91 % of base)
84 : 54998.dasm (5.28 % of base)
80 : 27889.dasm (3.88 % of base)
80 : 35215.dasm (6.31 % of base)
76 : 56748.dasm (4.85 % of base)
Top file improvements (bytes):
-32 : 17223.dasm (-0.86 % of base)
-16 : 46164.dasm (-0.75 % of base)
-16 : 47873.dasm (-1.97 % of base)
-12 : 1840.dasm (-0.89 % of base)
-8 : 7101.dasm (-0.81 % of base)
-4 : 5722.dasm (-0.63 % of base)
72 total files with Code Size differences (6 improved, 66 regressed), 8 unchanged.
Top method regressions (bytes):
584 (6.48 % of base) : 36312.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
432 (14.01 % of base) : 33775.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
372 (19.79 % of base) : 29071.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
328 (15.47 % of base) : 29068.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
328 (10.51 % of base) : 35211.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
300 (10.30 % of base) : 35208.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
240 (11.03 % of base) : 30962.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
232 (2.26 % of base) : 45769.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
224 (6.91 % of base) : 36310.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
196 (1.81 % of base) : 53971.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
188 (4.91 % of base) : 53969.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
152 (9.82 % of base) : 62192.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1)
100 (11.68 % of base) : 30964.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1)
96 (3.51 % of base) : 29491.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier1)
92 (4.51 % of base) : 8128.dasm - System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String (Tier0-FullOpts)
84 (4.91 % of base) : 54996.dasm - System.Numerics.BigInteger:Add(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
84 (5.28 % of base) : 54998.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
80 (6.31 % of base) : 35215.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
80 (3.88 % of base) : 27889.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(long):System.Reflection.MethodInfo:this (Tier1)
76 (4.85 % of base) : 56748.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (Tier1)
Top method improvements (bytes):
-32 (-0.86 % of base) : 17223.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier0-FullOpts)
-16 (-0.75 % of base) : 46164.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1)
-16 (-1.97 % of base) : 47873.dasm - System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.TypeDefinitionHandle,System.Collections.Immutable.ImmutableArray`1[System.Reflection.Metadata.TypeDefinitionHandle]]:Resize(int,ubyte):this (Tier1)
-12 (-0.89 % of base) : 1840.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (Tier0-FullOpts)
-8 (-0.81 % of base) : 7101.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-4 (-0.63 % of base) : 5722.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
Top method regressions (percentages):
24 (40.00 % of base) : 47624.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
20 (27.78 % of base) : 44295.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
24 (25.00 % of base) : 19926.dasm - System.Diagnostics.FileVersionInfo:ParseUInt16UntilNonDigit(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
20 (21.74 % of base) : 42776.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
12 (21.43 % of base) : 28861.dasm - System.DateTimeFormat:ParseRepeatPattern(System.ReadOnlySpan`1[ushort],int,ushort):int (Tier1)
20 (20.83 % of base) : 42726.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
24 (20.69 % of base) : 54667.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
372 (19.79 % of base) : 29071.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
20 (18.52 % of base) : 18685.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
44 (16.92 % of base) : 61549.dasm - Benchstone.BenchI.BenchE:Strsch(ushort[],ushort[],int,int):int (Tier1)
20 (16.67 % of base) : 26410.dasm - EMFloat:IsMantissaZero(ushort[]):ubyte (Tier1)
24 (16.67 % of base) : 42799.dasm - Microsoft.CodeAnalysis.MetadataHelpers:<InferTypeArityFromMetadataName>g__tryScanArity|16_0(System.ReadOnlySpan`1[ushort]):System.Nullable`1[short] (Tier1)
16 (16.67 % of base) : 42857.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (Tier1)
32 (16.33 % of base) : 62175.dasm - Benchstone.BenchI.BubbleSort2:Test():ubyte:this (Tier1-OSR)
24 (16.22 % of base) : 62093.dasm - System.Text.RegularExpressions.Symbolic.CharSetSolver:Or(System.ReadOnlySpan`1[System.Text.RegularExpressions.Symbolic.BDD]):System.Text.RegularExpressions.Symbolic.BDD:this (Tier1)
328 (15.47 % of base) : 29068.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
24 (15.00 % of base) : 30752.dasm - Benchstone.BenchI.IniArray:Test():ushort[]:this (Tier1-OSR)
24 (15.00 % of base) : 38481.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(ushort[],int,int):int (Tier1)
32 (14.29 % of base) : 62174.dasm - Benchstone.BenchI.BubbleSort2:Inner(int[]) (Tier1-OSR)
24 (14.29 % of base) : 61623.dasm - IfStatements.IfStatements:AndAnd():this (Tier1-OSR)
Top method improvements (percentages):
-16 (-1.97 % of base) : 47873.dasm - System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.TypeDefinitionHandle,System.Collections.Immutable.ImmutableArray`1[System.Reflection.Metadata.TypeDefinitionHandle]]:Resize(int,ubyte):this (Tier1)
-12 (-0.89 % of base) : 1840.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (Tier0-FullOpts)
-32 (-0.86 % of base) : 17223.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier0-FullOpts)
-8 (-0.81 % of base) : 7101.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-16 (-0.75 % of base) : 46164.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1)
-4 (-0.63 % of base) : 5722.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
coreclr_tests.run.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 508729840 (overridden on cmd)
Total bytes of diff: 509064052 (overridden on cmd)
Total bytes of delta: 334212 (0.07 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
684 : 466656.dasm (10.96 % of base)
584 : 203029.dasm (6.47 % of base)
572 : 203131.dasm (16.01 % of base)
388 : 466389.dasm (18.95 % of base)
372 : 201507.dasm (19.79 % of base)
360 : 186431.dasm (8.02 % of base)
352 : 466382.dasm (15.44 % of base)
344 : 616844.dasm (2.78 % of base)
328 : 466388.dasm (14.41 % of base)
328 : 201577.dasm (10.51 % of base)
296 : 466647.dasm (9.14 % of base)
292 : 466649.dasm (11.42 % of base)
244 : 466386.dasm (12.66 % of base)
232 : 466416.dasm (9.83 % of base)
232 : 466421.dasm (9.88 % of base)
216 : 466644.dasm (16.36 % of base)
216 : 466636.dasm (16.36 % of base)
200 : 19888.dasm (12.59 % of base)
196 : 203087.dasm (1.81 % of base)
176 : 478197.dasm (13.06 % of base)
Top file improvements (bytes):
-80 : 21306.dasm (-4.82 % of base)
-44 : 617590.dasm (-0.64 % of base)
-24 : 466356.dasm (-0.73 % of base)
-24 : 466118.dasm (-1.17 % of base)
-20 : 519857.dasm (-3.18 % of base)
-20 : 340685.dasm (-2.66 % of base)
-20 : 198548.dasm (-2.34 % of base)
-20 : 311175.dasm (-2.23 % of base)
-20 : 480506.dasm (-2.06 % of base)
-20 : 486807.dasm (-2.06 % of base)
-20 : 614349.dasm (-2.38 % of base)
-20 : 618184.dasm (-2.38 % of base)
-16 : 612201.dasm (-1.67 % of base)
-16 : 107457.dasm (-0.76 % of base)
-16 : 203194.dasm (-0.75 % of base)
-16 : 107352.dasm (-0.76 % of base)
-16 : 311687.dasm (-1.63 % of base)
-16 : 612203.dasm (-4.76 % of base)
-16 : 617676.dasm (-4.76 % of base)
-12 : 107037.dasm (-0.55 % of base)
84 total files with Code Size differences (26 improved, 58 regressed), 20 unchanged.
Top method regressions (bytes):
684 (10.96 % of base) : 466656.dasm - LUDecomp:Run():double:this (Tier1)
584 (6.47 % of base) : 203029.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
572 (16.01 % of base) : 203131.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
388 (18.95 % of base) : 466389.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
372 (19.79 % of base) : 201507.dasm - AssignJagged:second_assignments(int[][],short[][]) (FullOpts)
360 (8.02 % of base) : 186431.dasm - VectorTest:TestEntryPoint():int (FullOpts)
352 (15.44 % of base) : 466382.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
344 (2.78 % of base) : 616844.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
328 (14.41 % of base) : 466388.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
328 (10.51 % of base) : 201577.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
296 (9.14 % of base) : 466647.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
292 (11.42 % of base) : 466649.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
244 (12.66 % of base) : 466386.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
232 (9.83 % of base) : 466416.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
232 (9.88 % of base) : 466421.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
216 (16.36 % of base) : 466644.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
216 (16.36 % of base) : 466636.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
200 (12.59 % of base) : 19888.dasm - Complex_Array_Test:TestEntryPoint():int (FullOpts)
196 (1.81 % of base) : 203087.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
176 (13.06 % of base) : 478197.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
Top method improvements (bytes):
-80 (-4.82 % of base) : 21306.dasm - StrAccess1:Run(System.String):int (FullOpts)
-44 (-0.64 % of base) : 617590.dasm - ILCompiler.ReadyToRunMetadataFieldLayoutAlgorithm+ModuleFieldLayoutMap:CalculateTypeLayout(Internal.TypeSystem.DefType,Internal.TypeSystem.Ecma.EcmaModule,byref):Internal.TypeSystem.FieldAndOffset[]:this (Tier1)
-24 (-0.73 % of base) : 466356.dasm - EMFloatClass:SetupCPUEmFloatArrays(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int) (Tier1)
-24 (-1.17 % of base) : 466118.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
-20 (-2.06 % of base) : 486807.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (Instrumented Tier1)
-20 (-2.38 % of base) : 614349.dasm - System.Collections.Generic.Dictionary`2[Internal.TypeSystem.Instantiation,System.__Canon]:Resize(int,ubyte):this (Tier1)
-20 (-2.38 % of base) : 618184.dasm - System.Collections.Generic.Dictionary`2[Internal.TypeSystem.Instantiation,System.__Canon]:Resize(int,ubyte):this (Tier1)
-20 (-2.06 % of base) : 480506.dasm - System.Collections.Generic.Dictionary`2[long,System.__Canon]:Resize(int,ubyte):this (Instrumented Tier1)
-20 (-2.34 % of base) : 198548.dasm - System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.NamespaceDefinitionHandle,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-20 (-2.23 % of base) : 311175.dasm - System.Collections.Generic.Dictionary`2[ushort,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-20 (-2.66 % of base) : 340685.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Instrumented Tier1)
-20 (-3.18 % of base) : 519857.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-16 (-0.75 % of base) : 203194.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (FullOpts)
-16 (-4.76 % of base) : 612203.dasm - ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon],ubyte):this (Tier1)
-16 (-4.76 % of base) : 617676.dasm - ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon],ubyte):this (Tier1)
-16 (-1.67 % of base) : 612201.dasm - ILCompiler.LazyGenericsSupport+GraphBuilder:<.ctor>g__AddEdge|0_2(Internal.TypeSystem.GenericParameterDesc,Internal.TypeSystem.GenericParameterDesc,ubyte):this (Tier1)
-16 (-0.76 % of base) : 107457.dasm - JIT.HardwareIntrinsics.Arm._AdvSimd.SimpleBinaryOpTest__ShiftLogicalSaturate_Vector128_SByte:ValidateResult(byte[],byte[],byte[],System.String):this (FullOpts)
-16 (-0.76 % of base) : 107352.dasm - JIT.HardwareIntrinsics.Arm._AdvSimd.SimpleBinaryOpTest__ShiftLogicalSaturate_Vector64_SByte:ValidateResult(byte[],byte[],byte[],System.String):this (FullOpts)
-16 (-1.63 % of base) : 311687.dasm - Tracing.Tests.Common.IpcAdvertise:Parse(System.IO.Stream):Tracing.Tests.Common.IpcAdvertise (FullOpts)
-12 (-0.55 % of base) : 107037.dasm - JIT.HardwareIntrinsics.Arm._AdvSimd.SimpleBinaryOpTest__ShiftLogicalRoundedSaturate_Vector64_Byte:ValidateResult(ubyte[],byte[],ubyte[],System.String):this (FullOpts)
Top method regressions (percentages):
24 (46.15 % of base) : 252635.dasm - GitHub_5556:SpanAsParam(System.Span`1[long]):long (FullOpts)
24 (46.15 % of base) : 252636.dasm - GitHub_5556:SpanWithLocalCopy(System.Span`1[long]):long (FullOpts)
20 (45.45 % of base) : 203734.dasm - Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
24 (40.00 % of base) : 216264.dasm - CreateSpanTest:Main():int (FullOpts)
24 (40.00 % of base) : 202864.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
24 (40.00 % of base) : 202883.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
28 (35.00 % of base) : 585302.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
20 (33.33 % of base) : 202867.dasm - Span.IndexerBench:TestIndexer2(System.Span`1[ubyte]):ubyte (FullOpts)
20 (33.33 % of base) : 202870.dasm - Span.IndexerBench:TestIndexer3(System.Span`1[ubyte]):ubyte (FullOpts)
20 (33.33 % of base) : 202886.dasm - Span.IndexerBench:TestReadOnlyIndexer2(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
60 (29.41 % of base) : 201637.dasm - Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)
20 (27.78 % of base) : 202876.dasm - Span.IndexerBench:TestIndexer5(System.Span`1[ubyte],byref):ubyte (FullOpts)
20 (27.78 % of base) : 200261.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
24 (27.27 % of base) : 202873.dasm - Span.IndexerBench:TestIndexer4(System.Span`1[ubyte],int):ubyte (FullOpts)
24 (25.00 % of base) : 38692.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[ubyte]:ReturnArrays(int):this (FullOpts)
24 (25.00 % of base) : 313312.dasm - System.Diagnostics.FileVersionInfo:ParseUInt16UntilNonDigit(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
24 (23.08 % of base) : 195139.dasm - ImplicitByrefTailCalls:L(System.Span`1[int]):int (FullOpts)
24 (23.08 % of base) : 618704.dasm - System.Linq.EnumerableSorter`1[Internal.NativeFormat.VertexHashtable+Entry]:ComputeMap(Internal.NativeFormat.VertexHashtable+Entry[],int):int[]:this (Tier1-OSR)
24 (23.08 % of base) : 616462.dasm - System.Linq.EnumerableSorter`1[Internal.NativeFormat.VertexHashtable+Entry]:ComputeMap(Internal.NativeFormat.VertexHashtable+Entry[],int):int[]:this (Tier1-OSR)
20 (21.74 % of base) : 198194.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
Top method improvements (percentages):
-80 (-4.82 % of base) : 21306.dasm - StrAccess1:Run(System.String):int (FullOpts)
-16 (-4.76 % of base) : 612203.dasm - ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon],ubyte):this (Tier1)
-16 (-4.76 % of base) : 617676.dasm - ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon],ubyte):this (Tier1)
-20 (-3.18 % of base) : 519857.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-12 (-2.86 % of base) : 251377.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-20 (-2.66 % of base) : 340685.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Instrumented Tier1)
-20 (-2.38 % of base) : 614349.dasm - System.Collections.Generic.Dictionary`2[Internal.TypeSystem.Instantiation,System.__Canon]:Resize(int,ubyte):this (Tier1)
-20 (-2.38 % of base) : 618184.dasm - System.Collections.Generic.Dictionary`2[Internal.TypeSystem.Instantiation,System.__Canon]:Resize(int,ubyte):this (Tier1)
-20 (-2.34 % of base) : 198548.dasm - System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.NamespaceDefinitionHandle,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-20 (-2.23 % of base) : 311175.dasm - System.Collections.Generic.Dictionary`2[ushort,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-20 (-2.06 % of base) : 486807.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (Instrumented Tier1)
-20 (-2.06 % of base) : 480506.dasm - System.Collections.Generic.Dictionary`2[long,System.__Canon]:Resize(int,ubyte):this (Instrumented Tier1)
-16 (-1.67 % of base) : 612201.dasm - ILCompiler.LazyGenericsSupport+GraphBuilder:<.ctor>g__AddEdge|0_2(Internal.TypeSystem.GenericParameterDesc,Internal.TypeSystem.GenericParameterDesc,ubyte):this (Tier1)
-12 (-1.64 % of base) : 174676.dasm - JIT.HardwareIntrinsics.General._Vector256_1.Program:ToStringDouble() (FullOpts)
-16 (-1.63 % of base) : 311687.dasm - Tracing.Tests.Common.IpcAdvertise:Parse(System.IO.Stream):Tracing.Tests.Common.IpcAdvertise (FullOpts)
-12 (-1.59 % of base) : 174674.dasm - JIT.HardwareIntrinsics.General._Vector256_1.Program:ToStringSingle() (FullOpts)
-12 (-1.57 % of base) : 161691.dasm - JIT.HardwareIntrinsics.General._Vector512_1.Program:ToStringDouble() (FullOpts)
-12 (-1.48 % of base) : 161688.dasm - JIT.HardwareIntrinsics.General._Vector512_1.Program:ToStringSingle() (FullOpts)
-24 (-1.17 % of base) : 466118.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
-12 (-1.11 % of base) : 609501.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
libraries.crossgen2.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 55844176 (overridden on cmd)
Total bytes of diff: 55922208 (overridden on cmd)
Total bytes of delta: 78032 (0.14 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
1188 : 177457.dasm (4.35 % of base)
264 : 178426.dasm (6.13 % of base)
208 : 17191.dasm (1.93 % of base)
152 : 106204.dasm (5.11 % of base)
140 : 16062.dasm (8.31 % of base)
120 : 178142.dasm (3.75 % of base)
112 : 34998.dasm (6.90 % of base)
112 : 211132.dasm (13.59 % of base)
108 : 173729.dasm (8.94 % of base)
104 : 140580.dasm (0.74 % of base)
100 : 142143.dasm (3.32 % of base)
100 : 232154.dasm (2.59 % of base)
100 : 106205.dasm (5.17 % of base)
100 : 212933.dasm (6.38 % of base)
100 : 212934.dasm (6.33 % of base)
96 : 102175.dasm (2.08 % of base)
96 : 53741.dasm (1.97 % of base)
92 : 108866.dasm (2.71 % of base)
92 : 173898.dasm (2.96 % of base)
88 : 136748.dasm (9.05 % of base)
Top file improvements (bytes):
-56 : 138698.dasm (-1.10 % of base)
-48 : 203896.dasm (-5.38 % of base)
-40 : 150896.dasm (-5.38 % of base)
-40 : 177258.dasm (-1.50 % of base)
-32 : 139671.dasm (-3.29 % of base)
-24 : 174524.dasm (-10.00 % of base)
-24 : 135335.dasm (-3.31 % of base)
-20 : 109339.dasm (-0.88 % of base)
-20 : 128556.dasm (-1.79 % of base)
-20 : 33240.dasm (-2.23 % of base)
-16 : 71829.dasm (-4.71 % of base)
-16 : 49339.dasm (-1.44 % of base)
-12 : 135157.dasm (-2.31 % of base)
-12 : 232762.dasm (-0.72 % of base)
-12 : 76380.dasm (-2.75 % of base)
-12 : 212475.dasm (-3.19 % of base)
-12 : 211251.dasm (-1.04 % of base)
-12 : 212912.dasm (-2.42 % of base)
-12 : 30549.dasm (-0.91 % of base)
-12 : 31893.dasm (-0.97 % of base)
84 total files with Code Size differences (26 improved, 58 regressed), 20 unchanged.
Top method regressions (bytes):
1188 (4.35 % of base) : 177457.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
264 (6.13 % of base) : 178426.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
208 (1.93 % of base) : 17191.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
152 (5.11 % of base) : 106204.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
140 (8.31 % of base) : 16062.dasm - System.Type:FindMembers(int,int,System.Reflection.MemberFilter,System.Object):System.Reflection.MemberInfo[]:this (FullOpts)
120 (3.75 % of base) : 178142.dasm - Microsoft.VisualBasic.CompilerServices.VB6File:Print(System.Object[]):this (FullOpts)
112 (13.59 % of base) : 211132.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
112 (6.90 % of base) : 34998.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)
108 (8.94 % of base) : 173729.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext:FindBestMethod(System.Reflection.MethodInfo[],ubyte,ubyte,System.String,int[]):System.Reflection.MethodInfo (FullOpts)
104 (0.74 % of base) : 140580.dasm - System.Data.XmlTreeGen:HandleTable(System.Data.DataTable,System.Xml.XmlDocument,System.Xml.XmlElement,ubyte):System.Xml.XmlElement:this (FullOpts)
100 (5.17 % of base) : 106205.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
100 (3.32 % of base) : 142143.dasm - System.Data.Common.MultipartIdentifier:ParseMultipartIdentifier(System.String,System.String,System.String,ushort,int,ubyte,System.String,ubyte):System.String[] (FullOpts)
100 (2.59 % of base) : 232154.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,System.__Canon]:MergeSortCooperatively():this (FullOpts)
100 (6.38 % of base) : 212933.dasm - System.Numerics.BigInteger:Add(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (FullOpts)
100 (6.33 % of base) : 212934.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (FullOpts)
96 (1.97 % of base) : 53741.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
96 (2.08 % of base) : 102175.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
92 (2.71 % of base) : 108866.dasm - System.Reflection.DispatchProxyGenerator+ProxyBuilder:AddMethodImpl(System.Reflection.MethodInfo,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
92 (2.96 % of base) : 173898.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
88 (9.05 % of base) : 136748.dasm - System.Data.DataRow:SetParentRow(System.Data.DataRow,System.Data.DataRelation):this (FullOpts)
Top method improvements (bytes):
-56 (-1.10 % of base) : 138698.dasm - System.Data.Common.DbDataAdapter:Update(System.Data.DataRow[],System.Data.Common.DataTableMapping):int:this (FullOpts)
-48 (-5.38 % of base) : 203896.dasm - ILCompiler.Reflection.ReadyToRun.NativeCuckooFilter:ToString():System.String:this (FullOpts)
-40 (-1.50 % of base) : 177258.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexGet(System.Object,System.Object[],System.String[]):System.Object (FullOpts)
-40 (-5.38 % of base) : 150896.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo (FullOpts)
-32 (-3.29 % of base) : 139671.dasm - System.Data.DataTable:GetPropertyDescriptorCollection():System.ComponentModel.PropertyDescriptorCollection:this (FullOpts)
-24 (-3.31 % of base) : 135335.dasm - System.Runtime.Serialization.DataContracts.DataContract:ValidatePreviousCollectionTypes(System.Type,System.Type,System.Collections.Generic.HashSet`1[System.Type]) (FullOpts)
-24 (-10.00 % of base) : 174524.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
-20 (-0.88 % of base) : 109339.dasm - Microsoft.Diagnostics.Tracing.ActivityComputer:ResolveWellKnownSymbols():this (FullOpts)
-20 (-1.79 % of base) : 128556.dasm - Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetch:ToStream(FastSerialization.Serializer):this (FullOpts)
-20 (-2.23 % of base) : 33240.dasm - System.Collections.Generic.Dictionary`2[ushort,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-16 (-1.44 % of base) : 49339.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:GetResults(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:this (FullOpts)
-16 (-4.71 % of base) : 71829.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
-12 (-2.75 % of base) : 76380.dasm - Microsoft.CodeAnalysis.CSharp.UnboundLambdaState+ReturnInferenceCacheKey:Equals(System.Object):ubyte:this (FullOpts)
-12 (-1.04 % of base) : 211251.dasm - System.Diagnostics.Metrics.FixedSizeLabelNameDictionary`3[System.Diagnostics.Metrics.StringSequence1,System.Diagnostics.Metrics.ObjectSequence1,System.__Canon]:Collect(System.Action`1[System.Diagnostics.Metrics.LabeledAggregationStatistics]):this (FullOpts)
-12 (-2.42 % of base) : 212912.dasm - System.Globalization.FormatProvider+Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-12 (-0.91 % of base) : 30549.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (FullOpts)
-12 (-3.19 % of base) : 212475.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-12 (-0.97 % of base) : 31893.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-12 (-0.72 % of base) : 232762.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryFormatterWriter:WriteObject(System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,int,System.String[],System.Type[],System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo[]):this (FullOpts)
-12 (-2.31 % of base) : 135157.dasm - System.Xml.XmlCanonicalWriter:SortAttributes():this (FullOpts)
Top method regressions (percentages):
36 (60.00 % of base) : 239.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
36 (60.00 % of base) : 183084.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
32 (57.14 % of base) : 211701.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
36 (56.25 % of base) : 135535.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
32 (53.33 % of base) : 162432.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
32 (53.33 % of base) : 151197.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
36 (52.94 % of base) : 1414.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (52.94 % of base) : 184228.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (52.94 % of base) : 129229.dasm - System.Text.RegularExpressions.Symbolic.UInt64Solver:Or(System.ReadOnlySpan`1[ulong]):ulong:this (FullOpts)
40 (47.62 % of base) : 183170.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
40 (47.62 % of base) : 330.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
40 (47.62 % of base) : 204996.dasm - System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetStartsWithDistance|11_1(System.String,System.String):int (FullOpts)
32 (44.44 % of base) : 161055.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
44 (42.31 % of base) : 2523.dasm - Microsoft.CodeAnalysis.MemoryExtensions:IndexOfAny(System.ReadOnlySpan`1[ushort],ushort[]):int (FullOpts)
44 (42.31 % of base) : 185201.dasm - Microsoft.CodeAnalysis.MemoryExtensions:IndexOfAny(System.ReadOnlySpan`1[ushort],ushort[]):int (FullOpts)
36 (36.00 % of base) : 211112.dasm - System.Diagnostics.ActivityTraceId:IsLowerCaseHexAndNotAllZeros(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
32 (34.78 % of base) : 226928.dasm - System.Formats.Asn1.AsnDecoder:InterpretNamedBitListReversed(System.ReadOnlySpan`1[ubyte]):long (FullOpts)
32 (33.33 % of base) : 183073.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)
32 (33.33 % of base) : 226.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)
36 (32.14 % of base) : 195311.dasm - Microsoft.CodeAnalysis.SpanUtilities:All[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
Top method improvements (percentages):
-24 (-10.00 % of base) : 174524.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
-48 (-5.38 % of base) : 203896.dasm - ILCompiler.Reflection.ReadyToRun.NativeCuckooFilter:ToString():System.String:this (FullOpts)
-40 (-5.38 % of base) : 150896.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo (FullOpts)
-16 (-4.71 % of base) : 71829.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
-24 (-3.31 % of base) : 135335.dasm - System.Runtime.Serialization.DataContracts.DataContract:ValidatePreviousCollectionTypes(System.Type,System.Type,System.Collections.Generic.HashSet`1[System.Type]) (FullOpts)
-32 (-3.29 % of base) : 139671.dasm - System.Data.DataTable:GetPropertyDescriptorCollection():System.ComponentModel.PropertyDescriptorCollection:this (FullOpts)
-12 (-3.19 % of base) : 212475.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-12 (-2.75 % of base) : 76380.dasm - Microsoft.CodeAnalysis.CSharp.UnboundLambdaState+ReturnInferenceCacheKey:Equals(System.Object):ubyte:this (FullOpts)
-12 (-2.42 % of base) : 212912.dasm - System.Globalization.FormatProvider+Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-12 (-2.31 % of base) : 135157.dasm - System.Xml.XmlCanonicalWriter:SortAttributes():this (FullOpts)
-4 (-2.27 % of base) : 139425.dasm - System.Data.DataError:GetColumnsInError():System.Data.DataColumn[]:this (FullOpts)
-20 (-2.23 % of base) : 33240.dasm - System.Collections.Generic.Dictionary`2[ushort,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-4 (-2.08 % of base) : 139560.dasm - System.Data.DataKey:GetIndexDesc():System.Data.IndexField[]:this (FullOpts)
-4 (-1.89 % of base) : 161389.dasm - System.Reflection.Metadata.MetadataReader:ComputeCodedTokenSize(int,int[],ulong):int:this (FullOpts)
-20 (-1.79 % of base) : 128556.dasm - Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetch:ToStream(FastSerialization.Serializer):this (FullOpts)
-8 (-1.61 % of base) : 227717.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities+<>c__DisplayClass18_0:<CreateFactoryReflection>g__GetFactoryParameterContext|3():Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext[]:this (FullOpts)
-8 (-1.52 % of base) : 173503.dasm - System.Xml.Schema.FacetsChecker+FacetsCompiler:Preprocess(System.String):System.String (FullOpts)
-40 (-1.50 % of base) : 177258.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexGet(System.Object,System.Object[],System.String[]):System.Object (FullOpts)
-16 (-1.44 % of base) : 49339.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:GetResults(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:this (FullOpts)
-4 (-1.33 % of base) : 221591.dasm - System.Collections.SortedList:ToDebugViewDictionaryItemArray():System.Collections.Generic.DebugViewDictionaryItem`2[System.Object,System.Object][]:this (FullOpts)
libraries.pmi.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 76294380 (overridden on cmd)
Total bytes of diff: 76383740 (overridden on cmd)
Total bytes of delta: 89360 (0.12 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
832 : 211526.dasm (2.86 % of base)
284 : 211540.dasm (4.67 % of base)
180 : 134231.dasm (3.23 % of base)
144 : 200043.dasm (4.08 % of base)
136 : 138340.dasm (2.94 % of base)
136 : 151880.dasm (1.81 % of base)
136 : 167556.dasm (2.92 % of base)
120 : 119745.dasm (3.35 % of base)
112 : 255388.dasm (8.62 % of base)
108 : 167557.dasm (2.93 % of base)
100 : 165142.dasm (8.56 % of base)
100 : 54088.dasm (1.74 % of base)
100 : 113844.dasm (3.47 % of base)
100 : 153958.dasm (6.33 % of base)
100 : 115462.dasm (4.30 % of base)
100 : 236428.dasm (6.30 % of base)
96 : 198572.dasm (3.51 % of base)
96 : 76857.dasm (3.39 % of base)
92 : 137039.dasm (3.23 % of base)
92 : 109142.dasm (2.49 % of base)
Top file improvements (bytes):
-52 : 210802.dasm (-1.93 % of base)
-36 : 211533.dasm (-1.28 % of base)
-28 : 158098.dasm (-12.50 % of base)
-28 : 73977.dasm (-1.17 % of base)
-24 : 161474.dasm (-3.37 % of base)
-24 : 165478.dasm (-10.71 % of base)
-20 : 89331.dasm (-0.94 % of base)
-16 : 11962.dasm (-2.03 % of base)
-16 : 116023.dasm (-0.22 % of base)
-12 : 147136.dasm (-2.36 % of base)
-12 : 190621.dasm (-0.88 % of base)
-12 : 55767.dasm (-0.61 % of base)
-12 : 66657.dasm (-0.58 % of base)
-8 : 183171.dasm (-1.55 % of base)
-8 : 133983.dasm (-0.16 % of base)
-8 : 260957.dasm (-0.31 % of base)
-8 : 197653.dasm (-0.61 % of base)
-8 : 284472.dasm (-1.32 % of base)
-8 : 284594.dasm (-0.28 % of base)
-4 : 19858.dasm (-0.62 % of base)
85 total files with Code Size differences (28 improved, 57 regressed), 20 unchanged.
Top method regressions (bytes):
832 (2.86 % of base) : 211526.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
284 (4.67 % of base) : 211540.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
180 (3.23 % of base) : 134231.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
144 (4.08 % of base) : 200043.dasm - System.Data.Common.MultipartIdentifier:ParseMultipartIdentifier(System.String,System.String,System.String,ushort,int,ubyte,System.String,ubyte):System.String[] (FullOpts)
136 (1.81 % of base) : 151880.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
136 (2.94 % of base) : 138340.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
136 (2.92 % of base) : 167556.dasm - System.Xml.Serialization.TempAssembly:GenerateSerializerToStream(System.Xml.Serialization.XmlMapping[],System.Type[],System.String,System.Reflection.Assembly,System.Collections.Hashtable,System.IO.Stream):ubyte (FullOpts)
120 (3.35 % of base) : 119745.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbol:GetAttributesToBind(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax]],int,Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax]:this (FullOpts)
112 (8.62 % of base) : 255388.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
108 (2.93 % of base) : 167557.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
100 (1.74 % of base) : 54088.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
100 (3.47 % of base) : 113844.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol] (FullOpts)
100 (4.30 % of base) : 115462.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckForOverloadsErrors(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
100 (8.56 % of base) : 165142.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext:FindBestMethod(System.Reflection.MethodInfo[],ubyte,ubyte,System.String,int[]):System.Reflection.MethodInfo (FullOpts)
100 (6.33 % of base) : 153958.dasm - Xunit.Serialization.XunitSerializationInfo+ArraySerializer:Deserialize(Xunit.Abstractions.IXunitSerializationInfo):this (FullOpts)
100 (6.30 % of base) : 236428.dasm - Xunit.Serialization.XunitSerializationInfo+ArraySerializer:Deserialize(Xunit.Abstractions.IXunitSerializationInfo):this (FullOpts)
96 (3.39 % of base) : 76857.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
96 (3.51 % of base) : 198572.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
92 (3.23 % of base) : 137039.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder+QueryLambdaBinder:BuildJoinSelector(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundExpression):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
92 (2.49 % of base) : 109142.dasm - System.Reflection.DispatchProxyGenerator+ProxyBuilder:AddMethodImpl(System.Reflection.MethodInfo,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
Top method improvements (bytes):
-52 (-1.93 % of base) : 210802.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexSet(System.Object,System.Object[],System.String[]) (FullOpts)
-36 (-1.28 % of base) : 211533.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-28 (-1.17 % of base) : 73977.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
-28 (-12.50 % of base) : 158098.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
-24 (-3.37 % of base) : 161474.dasm - System.Xml.Schema.FacetsChecker+FacetsCompiler:Preprocess(System.String):System.String (FullOpts)
-24 (-10.71 % of base) : 165478.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
-20 (-0.94 % of base) : 89331.dasm - Microsoft.Diagnostics.Tracing.ActivityComputer:ResolveWellKnownSymbols():this (FullOpts)
-16 (-0.22 % of base) : 116023.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedEventAccessorSymbol:ConstructFieldLikeEventAccessorBody_Regular(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceEventSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundBlock (FullOpts)
-16 (-2.03 % of base) : 11962.dasm - System.Collections.Generic.Dictionary`2[ubyte,System.Nullable`1[int]]:Resize(int,ubyte):this (FullOpts)
-12 (-0.61 % of base) : 55767.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:ApplyDeconstructionConversion(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.LocalRewriter+DeconstructionSideEffects,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-12 (-0.58 % of base) : 66657.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__makeContent|428_4(System.ReadOnlySpan`1[ushort],System.Text.StringBuilder,ubyte,ubyte,System.ReadOnlySpan`1[ushort],byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolatedStringContentSyntax:this (FullOpts)
-12 (-0.88 % of base) : 190621.dasm - System.Text.Json.JsonHelpers:TryParseDateTimeOffset(System.ReadOnlySpan`1[ubyte],byref):ubyte (FullOpts)
-12 (-2.36 % of base) : 147136.dasm - System.Xml.XmlCanonicalWriter:SortAttributes():this (FullOpts)
-8 (-0.16 % of base) : 133983.dasm - Microsoft.CodeAnalysis.VisualBasic.AccessCheck:VerifyAccessExposureForMemberType(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.SyntaxNodeOrToken,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte) (FullOpts)
-8 (-0.31 % of base) : 260957.dasm - R2RDump.TextDumper:DumpDisasm(ILCompiler.Reflection.ReadyToRun.RuntimeFunction,int):this (FullOpts)
-8 (-1.55 % of base) : 183171.dasm - System.Data.Index:GetUniqueKeyValues(System.Collections.Generic.List`1[System.Object[]],int):this (FullOpts)
-8 (-1.32 % of base) : 284472.dasm - System.Security.Cryptography.Pkcs.CmsSigner:BuildAttributes(System.Security.Cryptography.CryptographicAttributeObjectCollection):System.Collections.Generic.List`1[System.Security.Cryptography.Asn1.AttributeAsn] (FullOpts)
-8 (-0.28 % of base) : 284594.dasm - System.Security.Cryptography.Pkcs.Pkcs12Info:Decode(System.ReadOnlyMemory`1[ubyte],byref,ubyte):System.Security.Cryptography.Pkcs.Pkcs12Info (FullOpts)
-8 (-0.61 % of base) : 197653.dasm - System.Security.Cryptography.X509Certificates.Pkcs10CertificationRequestInfo:ToPkcs10Request(System.Security.Cryptography.X509Certificates.X509SignatureGenerator,System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts)
-4 (-0.27 % of base) : 48285.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__ensureAllUnderlyingConversionsChecked|210_1(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
Top method regressions (percentages):
24 (40.00 % of base) : 212907.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
24 (40.00 % of base) : 13332.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
20 (35.71 % of base) : 265016.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
24 (35.29 % of base) : 15622.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
24 (35.29 % of base) : 215005.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
24 (35.29 % of base) : 148266.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
24 (35.29 % of base) : 110456.dasm - System.Text.RegularExpressions.Symbolic.UInt64Solver:Or(System.ReadOnlySpan`1[ulong]):ulong:this (FullOpts)
32 (33.33 % of base) : 175312.dasm - Microsoft.Build.Shared.FileMatcher:HasDotDot(System.String):ubyte (FullOpts)
24 (33.33 % of base) : 13321.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ushort]):int (FullOpts)
24 (33.33 % of base) : 212898.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ushort]):int (FullOpts)
28 (33.33 % of base) : 13975.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
28 (33.33 % of base) : 213410.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
28 (33.33 % of base) : 241356.dasm - System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetStartsWithDistance|11_1(System.String,System.String):int (FullOpts)
20 (33.33 % of base) : 288216.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
20 (33.33 % of base) : 234179.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
32 (30.77 % of base) : 16752.dasm - Microsoft.CodeAnalysis.MemoryExtensions:IndexOfAny(System.ReadOnlySpan`1[ushort],ushort[]):int (FullOpts)
32 (30.77 % of base) : 215978.dasm - Microsoft.CodeAnalysis.MemoryExtensions:IndexOfAny(System.ReadOnlySpan`1[ushort],ushort[]):int (FullOpts)
20 (27.78 % of base) : 203347.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
56 (26.92 % of base) : 163670.dasm - System.Xml.Xsl.XPathConvert+BigInteger:CompareTo(System.Object):int:this (FullOpts)
32 (26.67 % of base) : 191718.dasm - System.Text.Json.ReadStack:GetTopJsonTypeInfoWithParameterizedConstructor():System.Text.Json.Serialization.Metadata.JsonTypeInfo:this (FullOpts)
Top method improvements (percentages):
-28 (-12.50 % of base) : 158098.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
-24 (-10.71 % of base) : 165478.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
-24 (-3.37 % of base) : 161474.dasm - System.Xml.Schema.FacetsChecker+FacetsCompiler:Preprocess(System.String):System.String (FullOpts)
-4 (-2.63 % of base) : 181199.dasm - System.Data.DataError:GetColumnsInError():System.Data.DataColumn[]:this (FullOpts)
-4 (-2.38 % of base) : 181535.dasm - System.Data.DataKey:GetIndexDesc():System.Data.IndexField[]:this (FullOpts)
-12 (-2.36 % of base) : 147136.dasm - System.Xml.XmlCanonicalWriter:SortAttributes():this (FullOpts)
-16 (-2.03 % of base) : 11962.dasm - System.Collections.Generic.Dictionary`2[ubyte,System.Nullable`1[int]]:Resize(int,ubyte):this (FullOpts)
-52 (-1.93 % of base) : 210802.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexSet(System.Object,System.Object[],System.String[]) (FullOpts)
-4 (-1.75 % of base) : 40895.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel+SortBy@2594-1[ubyte,System.Nullable`1[int]]:Invoke(int):this (FullOpts)
-4 (-1.61 % of base) : 236553.dasm - System.Collections.SortedList:ToDebugViewDictionaryItemArray():System.Collections.Generic.DebugViewDictionaryItem`2[System.Object,System.Object][]:this (FullOpts)
-8 (-1.55 % of base) : 183171.dasm - System.Data.Index:GetUniqueKeyValues(System.Collections.Generic.List`1[System.Object[]],int):this (FullOpts)
-8 (-1.32 % of base) : 284472.dasm - System.Security.Cryptography.Pkcs.CmsSigner:BuildAttributes(System.Security.Cryptography.CryptographicAttributeObjectCollection):System.Collections.Generic.List`1[System.Security.Cryptography.Asn1.AttributeAsn] (FullOpts)
-4 (-1.30 % of base) : 252500.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:GetValues(System.Object[]):System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]:this (FullOpts)
-36 (-1.28 % of base) : 211533.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-28 (-1.17 % of base) : 73977.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
-4 (-1.09 % of base) : 252078.dasm - System.Collections.Concurrent.ConcurrentStack`1[ubyte]:PushRange(ubyte[],int,int):this (FullOpts)
-20 (-0.94 % of base) : 89331.dasm - Microsoft.Diagnostics.Tracing.ActivityComputer:ResolveWellKnownSymbols():this (FullOpts)
-12 (-0.88 % of base) : 190621.dasm - System.Text.Json.JsonHelpers:TryParseDateTimeOffset(System.ReadOnlySpan`1[ubyte],byref):ubyte (FullOpts)
-4 (-0.70 % of base) : 285205.dasm - System.Buffers.ReadOnlySequenceDebugView`1[System.__Canon]:.ctor(System.Buffers.ReadOnlySequence`1[System.__Canon]):this (FullOpts)
-4 (-0.62 % of base) : 19858.dasm - Microsoft.CodeAnalysis.Syntax.SyntaxTriviaListBuilder:ToList():Microsoft.CodeAnalysis.SyntaxTriviaList:this (FullOpts)
libraries_tests.run.linux.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 395716116 (overridden on cmd)
Total bytes of diff: 396385996 (overridden on cmd)
Total bytes of delta: 669880 (0.17 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
512 : 51141.dasm (4.20 % of base)
484 : 83773.dasm (4.03 % of base)
424 : 672717.dasm (3.53 % of base)
412 : 181808.dasm (6.77 % of base)
392 : 495943.dasm (2.98 % of base)
364 : 174714.dasm (3.06 % of base)
364 : 691269.dasm (5.99 % of base)
360 : 152060.dasm (2.88 % of base)
356 : 328224.dasm (2.70 % of base)
356 : 336076.dasm (2.67 % of base)
352 : 563084.dasm (2.68 % of base)
344 : 389116.dasm (2.78 % of base)
340 : 586530.dasm (2.37 % of base)
336 : 140663.dasm (2.32 % of base)
336 : 199402.dasm (2.56 % of base)
336 : 667418.dasm (2.32 % of base)
332 : 165213.dasm (2.74 % of base)
328 : 382526.dasm (2.55 % of base)
320 : 172591.dasm (2.51 % of base)
308 : 307859.dasm (2.42 % of base)
Top file improvements (bytes):
-156 : 270143.dasm (-6.44 % of base)
-144 : 432418.dasm (-1.56 % of base)
-128 : 668150.dasm (-5.47 % of base)
-84 : 431542.dasm (-1.22 % of base)
-76 : 481428.dasm (-2.02 % of base)
-76 : 481457.dasm (-1.88 % of base)
-76 : 481477.dasm (-2.02 % of base)
-72 : 432131.dasm (-0.98 % of base)
-68 : 429441.dasm (-1.02 % of base)
-64 : 435285.dasm (-0.94 % of base)
-60 : 281439.dasm (-0.42 % of base)
-56 : 425006.dasm (-0.87 % of base)
-44 : 208828.dasm (-5.53 % of base)
-40 : 680080.dasm (-0.52 % of base)
-40 : 425429.dasm (-0.56 % of base)
-32 : 87642.dasm (-3.39 % of base)
-28 : 509162.dasm (-1.28 % of base)
-28 : 675793.dasm (-0.26 % of base)
-28 : 425838.dasm (-0.54 % of base)
-20 : 307967.dasm (-3.21 % of base)
95 total files with Code Size differences (35 improved, 60 regressed), 20 unchanged.
Top method regressions (bytes):
512 (4.20 % of base) : 51141.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
484 (4.03 % of base) : 83773.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
424 (3.53 % of base) : 672717.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
412 (6.77 % of base) : 181808.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]:IntroSort(System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]],int,System.Comparison`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]) (Tier1)
392 (2.98 % of base) : 495943.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
364 (5.99 % of base) : 691269.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]:IntroSort(System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]],int,System.Comparison`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]) (Tier1)
364 (3.06 % of base) : 174714.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
360 (2.88 % of base) : 152060.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
356 (2.70 % of base) : 328224.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
356 (2.67 % of base) : 336076.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
352 (2.68 % of base) : 563084.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
344 (2.78 % of base) : 389116.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
340 (2.37 % of base) : 586530.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
336 (2.32 % of base) : 140663.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
336 (2.32 % of base) : 667418.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
336 (2.56 % of base) : 199402.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
332 (2.74 % of base) : 165213.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
328 (2.55 % of base) : 382526.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
320 (2.51 % of base) : 172591.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
308 (2.42 % of base) : 307859.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
Top method improvements (bytes):
-156 (-6.44 % of base) : 270143.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
-144 (-1.56 % of base) : 432418.dasm - System.Numerics.Tensors.Tests.GenericFloatingPointNumberTensorPrimitivesTests`1+<>c__DisplayClass60_0[float]:<SpanSpanSpanDestination_ThrowsForTooShortDestination>b__0(int):this (Tier1)
-128 (-5.47 % of base) : 668150.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
-84 (-1.22 % of base) : 431542.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[float]:<Min_TwoTensors_ThrowsForMismatchedLengths>b__212_0(int):this (Tier1)
-76 (-1.88 % of base) : 481457.dasm - System.Xml.Tests.TCReadContentAsBinHex:TestTextReadBinHex_24():int:this (Tier1)
-76 (-2.02 % of base) : 481428.dasm - System.Xml.Tests.TCReadElementContentAsBase64:TestReadBase64ReadsTheContent():int:this (Tier1)
-76 (-2.02 % of base) : 481477.dasm - System.Xml.Tests.TCReadElementContentAsBinHex:TestTextReadBinHex_24():int:this (Tier1)
-72 (-0.98 % of base) : 432131.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[float]:<AddMultiply_TensorScalarTensor_ThrowsForMismatchedLengths_x_z>b__125_0(int):this (Tier1)
-68 (-1.02 % of base) : 429441.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[float]:<Max_TwoTensors_ThrowsForTooShortDestination>b__191_0(int):this (Tier1)
-64 (-0.94 % of base) : 435285.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[double]:<Add_TwoTensors_ThrowsForMismatchedLengths>b__106_0(int):this (Tier1)
-60 (-0.42 % of base) : 281439.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (Tier1)
-56 (-0.87 % of base) : 425006.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[double]:<MaxMagnitude_TwoTensors_ThrowsForTooShortDestination>b__202_0(int):this (Tier1)
-44 (-5.53 % of base) : 208828.dasm - System.Linq.Enumerable:ToArray[int](System.Collections.Generic.IEnumerable`1[int]):int[] (Tier1)
-40 (-0.52 % of base) : 680080.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference,Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+FieldInfo]) (Tier1)
-40 (-0.56 % of base) : 425429.dasm - System.Numerics.Tensors.Tests.GenericFloatingPointNumberTensorPrimitivesTests`1+<>c__DisplayClass66_0[double]:<SpanSpanScalarDestination_ThrowsForTooShortDestination>b__0(int):this (Tier1)
-32 (-3.39 % of base) : 87642.dasm - Microsoft.CodeAnalysis.NodeStateTable`1[ubyte]:AsCached():Microsoft.CodeAnalysis.NodeStateTable`1[ubyte]:this (Tier1)
-28 (-0.26 % of base) : 675793.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (Tier1)
-28 (-1.28 % of base) : 509162.dasm - System.Diagnostics.Tracing.EventSource:DoCommand(System.Diagnostics.Tracing.EventCommandEventArgs):this (Instrumented Tier1)
-28 (-0.54 % of base) : 425838.dasm - System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1+<>c__DisplayClass84_0[double]:<ScalarSpanDestination_AllLengths>b__0(int):this (Tier1)
-20 (-3.21 % of base) : 307967.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
Top method regressions (percentages):
24 (46.15 % of base) : 354025.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (Tier1)
20 (45.45 % of base) : 414880.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ushort]:RemoveSignedMinValue(System.Span`1[ushort]):this (Tier1)
24 (42.86 % of base) : 354067.dasm - System.Linq.Enumerable:Sum[float,double](System.ReadOnlySpan`1[float]):double (Tier1)
20 (41.67 % of base) : 358408.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (Tier1)
24 (40.00 % of base) : 180731.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
24 (40.00 % of base) : 676635.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
24 (40.00 % of base) : 57766.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
24 (40.00 % of base) : 87737.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
20 (38.46 % of base) : 426474.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[System.UInt128]:RemoveSignedMinValue(System.Span`1[System.UInt128]):this (Tier1)
20 (38.46 % of base) : 429486.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[System.UInt128]:RemoveSignedMinValue(System.Span`1[System.UInt128]):this (Tier1)
24 (35.29 % of base) : 695465.dasm - System.Text.RegularExpressions.RegexCharClass:IsAscii(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
28 (33.33 % of base) : 715089.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
24 (30.00 % of base) : 589574.dasm - System.Text.Tests.TranscodingStreamTests+<>c:<GetVeryLongAsciiString>b__40_0(System.Span`1[ushort],System.Object):this (Tier1)
20 (29.41 % of base) : 353445.dasm - System.Linq.Enumerable:Sum[long,long](System.ReadOnlySpan`1[long]):long (Tier1)
20 (27.78 % of base) : 688872.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
20 (27.78 % of base) : 179183.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
24 (27.27 % of base) : 388639.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
24 (27.27 % of base) : 689378.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
36 (26.47 % of base) : 557521.dasm - System.Numerics.BigIntegerCalculator:AddSelf(System.Span`1[uint],System.ReadOnlySpan`1[uint]) (Tier1)
36 (26.47 % of base) : 570526.dasm - System.Numerics.BigIntegerCalculator:AddSelf(System.Span`1[uint],System.ReadOnlySpan`1[uint]) (Tier1)
Top method improvements (percentages):
-156 (-6.44 % of base) : 270143.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
-44 (-5.53 % of base) : 208828.dasm - System.Linq.Enumerable:ToArray[int](System.Collections.Generic.IEnumerable`1[int]):int[] (Tier1)
-128 (-5.47 % of base) : 668150.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
-32 (-3.39 % of base) : 87642.dasm - Microsoft.CodeAnalysis.NodeStateTable`1[ubyte]:AsCached():Microsoft.CodeAnalysis.NodeStateTable`1[ubyte]:this (Tier1)
-20 (-3.27 % of base) : 107855.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.27 % of base) : 73319.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.27 % of base) : 741348.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.25 % of base) : 151596.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.23 % of base) : 277669.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.21 % of base) : 307967.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.21 % of base) : 313011.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.21 % of base) : 356877.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.21 % of base) : 556074.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.21 % of base) : 565337.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.21 % of base) : 127299.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.21 % of base) : 335572.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.21 % of base) : 495404.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.21 % of base) : 724110.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.21 % of base) : 500588.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.21 % of base) : 718293.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 165002020 (overridden on cmd)
Total bytes of diff: 165117280 (overridden on cmd)
Total bytes of delta: 115260 (0.07 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
820 : 59123.dasm (2.82 % of base)
280 : 59122.dasm (4.56 % of base)
256 : 19004.dasm (10.29 % of base)
240 : 263620.dasm (2.05 % of base)
232 : 299449.dasm (3.83 % of base)
188 : 18971.dasm (9.46 % of base)
184 : 19010.dasm (8.08 % of base)
176 : 302463.dasm (3.77 % of base)
160 : 175940.dasm (1.29 % of base)
144 : 175938.dasm (1.37 % of base)
140 : 175941.dasm (1.36 % of base)
140 : 175942.dasm (1.37 % of base)
136 : 77267.dasm (6.44 % of base)
128 : 53924.dasm (2.03 % of base)
120 : 50109.dasm (2.08 % of base)
120 : 44029.dasm (2.08 % of base)
112 : 34631.dasm (6.17 % of base)
112 : 97024.dasm (10.00 % of base)
112 : 76399.dasm (2.27 % of base)
112 : 130945.dasm (2.98 % of base)
Top file improvements (bytes):
-72 : 6617.dasm (-1.23 % of base)
-72 : 9818.dasm (-0.91 % of base)
-56 : 244429.dasm (-1.63 % of base)
-56 : 259846.dasm (-1.63 % of base)
-52 : 59638.dasm (-1.95 % of base)
-36 : 176772.dasm (-1.36 % of base)
-36 : 43958.dasm (-1.23 % of base)
-32 : 140449.dasm (-0.87 % of base)
-32 : 140060.dasm (-0.87 % of base)
-32 : 50012.dasm (-0.96 % of base)
-28 : 176255.dasm (-12.50 % of base)
-28 : 55228.dasm (-1.19 % of base)
-24 : 171455.dasm (-3.37 % of base)
-20 : 142843.dasm (-3.03 % of base)
-20 : 142422.dasm (-3.01 % of base)
-20 : 144196.dasm (-3.01 % of base)
-16 : 144337.dasm (-1.00 % of base)
-16 : 17181.dasm (-0.60 % of base)
-16 : 158615.dasm (-0.61 % of base)
-16 : 6147.dasm (-1.97 % of base)
87 total files with Code Size differences (30 improved, 57 regressed), 20 unchanged.
Top method regressions (bytes):
820 (2.82 % of base) : 59123.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
280 (4.56 % of base) : 59122.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
256 (10.29 % of base) : 19004.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:NegateBoolsOut2D(SharedTypes.BoolStruct[][],int,int[],byref) (FullOpts)
240 (2.05 % of base) : 263620.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:WriteNumbers(System.Text.Json.JsonWriterOptions,System.String):this (FullOpts)
232 (3.83 % of base) : 299449.dasm - System.Threading.Tasks.Tests.TaskRtTests:RunFromResult() (FullOpts)
188 (9.46 % of base) : 18971.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:FillRangeArray2D(SharedTypes.IntStructWrapper[][],int,int[],int):ubyte (FullOpts)
184 (8.08 % of base) : 19010.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:NegateBoolsRef2D_ClearMarshalling(byref,int,int[]) (FullOpts)
176 (3.77 % of base) : 302463.dasm - System.Transactions.Tests.NonMsdtcPromoterTests:TestCase_PSPENonMsdtc(ubyte,ubyte,int,int,int,int,int,int,int) (FullOpts)
160 (1.29 % of base) : 175940.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess2():int:this (FullOpts)
144 (1.37 % of base) : 175938.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess1():int:this (FullOpts)
140 (1.36 % of base) : 175941.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess3():int:this (FullOpts)
140 (1.37 % of base) : 175942.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess4():int:this (FullOpts)
136 (6.44 % of base) : 77267.dasm - System.Collections.Tests.List_Generic_Tests_Insert+Driver`1[System.__Canon]:InsertRangeIEnumerable(System.__Canon[],System.__Canon[],int,int,System.Func`2[System.__Canon,System.__Canon]):this (FullOpts)
128 (2.03 % of base) : 53924.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
120 (2.08 % of base) : 50109.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
120 (2.08 % of base) : 44029.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
112 (6.17 % of base) : 34631.dasm - LamarCodeGeneration.Util.ExpressionCompiler+ClosureInfo:ConstructClosureTypeAndObject(ubyte):System.Object:this (FullOpts)
112 (2.27 % of base) : 76399.dasm - System.Collections.Tests.LinkedList_Generic_Tests`1[int]:AddAfter_LLNode_LLNode():this (FullOpts)
112 (10.00 % of base) : 97024.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
112 (2.98 % of base) : 130945.dasm - System.Linq.Parallel.SortHelper`2[double,int]:MergeSortCooperatively():this (FullOpts)
Top method improvements (bytes):
-72 (-1.23 % of base) : 6617.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckAndCoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte):this (FullOpts)
-72 (-0.91 % of base) : 9818.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference,Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+FieldInfo]) (FullOpts)
-56 (-1.63 % of base) : 244429.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadArrayOfIImmutableHashSetT>d__309:MoveNext():this (FullOpts)
-56 (-1.63 % of base) : 259846.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadArrayOfIImmutableHashSetT>d__348:MoveNext():this (FullOpts)
-52 (-1.95 % of base) : 59638.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexSet(System.Object,System.Object[],System.String[]) (FullOpts)
-36 (-1.23 % of base) : 43958.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-36 (-1.36 % of base) : 176772.dasm - System.Xml.NameTableTests.TCRecordNameTableAdd:Variation_10():int:this (FullOpts)
-32 (-0.96 % of base) : 50012.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,uint):this (FullOpts)
-32 (-0.87 % of base) : 140060.dasm - System.Linq.Tests.RangeTests:<IListImplementationIsValid>g__Validate|27_0(System.Collections.Generic.IEnumerable`1[int],int[]) (FullOpts)
-32 (-0.87 % of base) : 140449.dasm - System.Linq.Tests.RepeatTests:<ICollectionImplementationIsValid>g__Validate|30_0(System.Collections.Generic.IEnumerable`1[int],int[]) (FullOpts)
-28 (-1.19 % of base) : 55228.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
-28 (-12.50 % of base) : 176255.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
-24 (-3.37 % of base) : 171455.dasm - System.Xml.Schema.FacetsChecker+FacetsCompiler:Preprocess(System.String):System.String (FullOpts)
-20 (-3.03 % of base) : 142843.dasm - System.SpanTests.ReadOnlySpanTests:TestMultipleMatchCount_String() (FullOpts)
-20 (-3.01 % of base) : 142422.dasm - System.SpanTests.ReadOnlySpanTests:TestMultipleMatchIndexOf_String() (FullOpts)
-20 (-3.01 % of base) : 144196.dasm - System.SpanTests.SpanTests:TestMultipleMatchIndexOf_String() (FullOpts)
-16 (-0.60 % of base) : 17181.dasm - System.AssertExtensions:SequenceEqual[ubyte](System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte]) (FullOpts)
-16 (-1.97 % of base) : 6147.dasm - System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.TypeDefinitionHandle,System.Collections.Immutable.ImmutableArray`1[System.Reflection.Metadata.TypeDefinitionHandle]]:Resize(int,ubyte):this (FullOpts)
-16 (-0.61 % of base) : 158615.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertTruncatingImpl[byte,byte]() (FullOpts)
-16 (-1.00 % of base) : 144337.dasm - System.SpanTests.SpanTests:TestMultipleMatchThree_Byte() (FullOpts)
Top method regressions (percentages):
24 (46.15 % of base) : 134452.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
20 (45.45 % of base) : 225040.dasm - System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
20 (41.67 % of base) : 143550.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
20 (41.67 % of base) : 157825.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[System.UInt128]:RemoveSignedMinValue(System.Span`1[System.UInt128]):this (FullOpts)
24 (40.00 % of base) : 196073.dasm - XmlDictionaryWriterTest+<>c:<XmlBaseWriter_WriteString>b__14_1(System.Span`1[ushort],System.Object):this (FullOpts)
24 (40.00 % of base) : 197883.dasm - XmlDictionaryWriterTest+<>c:<XmlBaseWriter_WriteString>b__14_1(System.Span`1[ushort],System.Object):this (FullOpts)
20 (35.71 % of base) : 116907.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
24 (35.29 % of base) : 4353.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
24 (35.29 % of base) : 195911.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
24 (35.29 % of base) : 267494.dasm - System.Text.RegularExpressions.RegexCharClass:IsAscii(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
20 (33.33 % of base) : 178500.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
24 (30.00 % of base) : 230604.dasm - System.Text.Tests.TranscodingStreamTests+<>c:<GetVeryLongAsciiString>b__40_0(System.Span`1[ushort],System.Object):this (FullOpts)
20 (29.41 % of base) : 134442.dasm - System.Linq.Enumerable:Sum[long,long](System.ReadOnlySpan`1[long]):long (FullOpts)
24 (28.57 % of base) : 129325.dasm - System.IO.Tests.BinaryWriter_EncodingTests+<>c:<GenerateLargeUnicodeString>b__16_0(System.Span`1[ushort],System.Object):this (FullOpts)
20 (27.78 % of base) : 46469.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
32 (26.67 % of base) : 241491.dasm - System.Text.Json.ReadStack:GetTopJsonTypeInfoWithParameterizedConstructor():System.Text.Json.Serialization.Metadata.JsonTypeInfo:this (FullOpts)
24 (25.00 % of base) : 97700.dasm - System.Diagnostics.FileVersionInfo:ParseUInt16UntilNonDigit(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
24 (24.00 % of base) : 96916.dasm - System.Diagnostics.ActivityTraceId:IsLowerCaseHexAndNotAllZeros(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
28 (21.88 % of base) : 191187.dasm - System.Numerics.BigIntegerCalculator:AddSelf(System.Span`1[uint],System.ReadOnlySpan`1[uint]) (FullOpts)
28 (21.88 % of base) : 215074.dasm - System.Numerics.BigIntegerCalculator:SubtractSelf(System.Span`1[uint],System.ReadOnlySpan`1[uint]) (FullOpts)
Top method improvements (percentages):
-28 (-12.50 % of base) : 176255.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
-24 (-3.37 % of base) : 171455.dasm - System.Xml.Schema.FacetsChecker+FacetsCompiler:Preprocess(System.String):System.String (FullOpts)
-20 (-3.03 % of base) : 142843.dasm - System.SpanTests.ReadOnlySpanTests:TestMultipleMatchCount_String() (FullOpts)
-20 (-3.01 % of base) : 142422.dasm - System.SpanTests.ReadOnlySpanTests:TestMultipleMatchIndexOf_String() (FullOpts)
-20 (-3.01 % of base) : 144196.dasm - System.SpanTests.SpanTests:TestMultipleMatchIndexOf_String() (FullOpts)
-4 (-2.63 % of base) : 92961.dasm - System.Data.DataError:GetColumnsInError():System.Data.DataColumn[]:this (FullOpts)
-4 (-2.38 % of base) : 89977.dasm - System.Data.DataKey:GetIndexDesc():System.Data.IndexField[]:this (FullOpts)
-16 (-1.97 % of base) : 6147.dasm - System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.TypeDefinitionHandle,System.Collections.Immutable.ImmutableArray`1[System.Reflection.Metadata.TypeDefinitionHandle]]:Resize(int,ubyte):this (FullOpts)
-52 (-1.95 % of base) : 59638.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexSet(System.Object,System.Object[],System.String[]) (FullOpts)
-8 (-1.64 % of base) : 119124.dasm - System.Globalization.Tests.ConformanceIdnaTestResult:SetSuccess(System.String):this (FullOpts)
-56 (-1.63 % of base) : 244429.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadArrayOfIImmutableHashSetT>d__309:MoveNext():this (FullOpts)
-56 (-1.63 % of base) : 259846.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadArrayOfIImmutableHashSetT>d__348:MoveNext():this (FullOpts)
-4 (-1.61 % of base) : 65587.dasm - System.Collections.SortedList:ToDebugViewDictionaryItemArray():System.Collections.Generic.DebugViewDictionaryItem`2[System.Object,System.Object][]:this (FullOpts)
-12 (-1.55 % of base) : 142166.dasm - System.SpanTests.ReadOnlySpanTests:SequenceCompareToEqual_Byte() (FullOpts)
-12 (-1.55 % of base) : 144659.dasm - System.SpanTests.SpanTests:SequenceCompareToEqual_Byte() (FullOpts)
-8 (-1.55 % of base) : 90195.dasm - System.Data.Index:GetUniqueKeyValues(System.Collections.Generic.List`1[System.Object[]],int):this (FullOpts)
-8 (-1.52 % of base) : 5273.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyDataForAssemblyBeingBuilt[System.__Canon,System.__Canon]:BindAssemblyReferences(Roslyn.Utilities.MultiDictionary`2[System.__Canon,System.ValueTuple`2[System.__Canon,int]],Microsoft.CodeAnalysis.AssemblyIdentityComparer):Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceBinding[System.__Canon,System.__Canon][]:this (FullOpts)
-8 (-1.39 % of base) : 187798.dasm - System.Tests.ConvertToStringTests:FromBoolean() (FullOpts)
-8 (-1.38 % of base) : 217649.dasm - System.Security.Cryptography.Pkcs.CmsSigner:BuildAttributes(System.Security.Cryptography.CryptographicAttributeObjectCollection):System.Collections.Generic.List`1[System.Security.Cryptography.Asn1.AttributeAsn] (FullOpts)
-36 (-1.36 % of base) : 176772.dasm - System.Xml.NameTableTests.TCRecordNameTableAdd:Variation_10():int:this (FullOpts)
realworld.run.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15904164 (overridden on cmd)
Total bytes of diff: 15924772 (overridden on cmd)
Total bytes of delta: 20608 (0.13 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
232 : 32747.dasm (2.26 % of base)
144 : 13696.dasm (2.52 % of base)
144 : 14482.dasm (1.63 % of base)
140 : 5905.dasm (2.39 % of base)
124 : 14198.dasm (3.21 % of base)
120 : 30893.dasm (1.82 % of base)
116 : 13595.dasm (5.86 % of base)
116 : 13714.dasm (3.59 % of base)
100 : 19787.dasm (1.77 % of base)
92 : 16015.dasm (1.65 % of base)
92 : 30879.dasm (4.63 % of base)
88 : 19626.dasm (3.11 % of base)
84 : 33042.dasm (9.29 % of base)
84 : 3703.dasm (1.36 % of base)
84 : 20822.dasm (2.99 % of base)
80 : 14314.dasm (4.98 % of base)
80 : 2794.dasm (3.74 % of base)
76 : 13195.dasm (1.59 % of base)
76 : 6608.dasm (4.82 % of base)
72 : 3155.dasm (0.45 % of base)
Top file improvements (bytes):
-80 : 20974.dasm (-1.03 % of base)
-36 : 19633.dasm (-1.05 % of base)
-32 : 13410.dasm (-0.86 % of base)
-28 : 29045.dasm (-1.19 % of base)
-24 : 12342.dasm (-0.60 % of base)
-20 : 38.dasm (-2.34 % of base)
-16 : 13360.dasm (-2.33 % of base)
-16 : 2777.dasm (-1.20 % of base)
-12 : 27998.dasm (-0.65 % of base)
-12 : 17617.dasm (-0.76 % of base)
-12 : 584.dasm (-0.89 % of base)
-8 : 14190.dasm (-1.08 % of base)
-8 : 14492.dasm (-1.35 % of base)
-8 : 14504.dasm (-1.41 % of base)
-8 : 14526.dasm (-1.35 % of base)
-8 : 21558.dasm (-1.22 % of base)
-8 : 338.dasm (-0.48 % of base)
-8 : 645.dasm (-0.76 % of base)
-8 : 7918.dasm (-1.04 % of base)
-4 : 13950.dasm (-1.05 % of base)
80 total files with Code Size differences (21 improved, 59 regressed), 20 unchanged.
Top method regressions (bytes):
232 (2.26 % of base) : 32747.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
144 (2.52 % of base) : 13696.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
144 (1.63 % of base) : 14482.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
140 (2.39 % of base) : 5905.dasm - FSharp.Compiler.TypedTreePickle:unpickleObjWithDanglingCcus[System.__Canon](System.String,FSharp.Compiler.AbstractIL.IL+ILScopeRef,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILModuleDef],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],FSharp.Compiler.IO.ReadOnlyByteMemory):FSharp.Compiler.TypedTreePickle+PickledDataWithReferences`1[System.__Canon] (FullOpts)
124 (3.21 % of base) : 14198.dasm - Microsoft.ML.Transforms.NormalizingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.IDataView,Microsoft.ML.Transforms.NormalizingEstimator+ColumnOptionsBase[]):Microsoft.ML.Transforms.NormalizingTransformer (FullOpts)
120 (1.82 % of base) : 30893.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
116 (5.86 % of base) : 13595.dasm - Microsoft.ML.Data.ColumnConcatenatingTransformer+Mapper+BoundColumn+<>c__DisplayClass18_0`1[float]:<MakeGetter>b__0(byref):this (FullOpts)
116 (3.59 % of base) : 13714.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:CheckConvergence(Microsoft.ML.Runtime.IProgressChannel,int,Microsoft.ML.Trainers.FloatLabelCursor+Factory,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],Microsoft.ML.Data.VBuffer`1[float][],Microsoft.ML.Data.VBuffer`1[float][],float[],float[],float[],float[],long,double[],byref,byref):ubyte:this (FullOpts)
100 (1.77 % of base) : 19787.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
92 (1.65 % of base) : 16015.dasm - Microsoft.ML.Transforms.Text.NgramExtractingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.Text.NgramExtractingEstimator+ColumnOptions[],System.Collections.Immutable.ImmutableArray`1[Microsoft.ML.Transforms.Text.NgramExtractingTransformer+TransformInfo],Microsoft.ML.IDataView,byref):Microsoft.ML.Internal.Utilities.SequencePool[] (FullOpts)
92 (4.63 % of base) : 30879.dasm - System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String (FullOpts)
88 (3.11 % of base) : 19626.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveWorseMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,byref):this (FullOpts)
84 (1.36 % of base) : 3703.dasm - FSharp.Compiler.CompilerImports:TcConfig.TryResolveLibsUsingMSBuildRules.Static(FSharp.Compiler.CompilerConfig+TcConfig,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerConfig+AssemblyReference],FSharp.Compiler.Text.Range,FSharp.Compiler.CompilerImports+ResolveAssemblyReferenceMode):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerImports+AssemblyResolution],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerConfig+UnresolvedAssemblyReference]] (FullOpts)
84 (2.99 % of base) : 20822.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
84 (9.29 % of base) : 33042.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteTryExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
80 (4.98 % of base) : 14314.dasm - Microsoft.ML.Numeric.VectorUtils:L2DistSquared(byref,byref):float (FullOpts)
80 (3.74 % of base) : 2794.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(long):System.Reflection.MethodInfo:this (FullOpts)
76 (1.59 % of base) : 13195.dasm - Microsoft.ML.Internal.Utilities.StreamUtils:Expand(System.String):System.String[] (FullOpts)
76 (4.82 % of base) : 6608.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
72 (0.45 % of base) : 3155.dasm - <StartupCode$FSharp-Compiler-Service>.$FSharp.Compiler.Syntax.PrettyNaming:.cctor() (FullOpts)
Top method improvements (bytes):
-80 (-1.03 % of base) : 20974.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference,Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+FieldInfo]) (FullOpts)
-36 (-1.05 % of base) : 19633.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression):this (FullOpts)
-32 (-0.86 % of base) : 13410.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-28 (-1.19 % of base) : 29045.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
-24 (-0.60 % of base) : 12342.dasm - SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1+CdfTileData+RowIntervalOperation[SixLabors.ImageSharp.PixelFormats.Rgba32]:Invoke(byref):this (FullOpts)
-20 (-2.34 % of base) : 38.dasm - System.Collections.Generic.Dictionary`2[ushort,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-16 (-2.33 % of base) : 13360.dasm - Microsoft.ML.Internal.Utilities.Utils:BuildSubsetMaps(Microsoft.ML.DataViewSchema,System.Func`2[Microsoft.ML.DataViewSchema+Column,ubyte],byref,byref) (FullOpts)
-16 (-1.20 % of base) : 2777.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-12 (-0.65 % of base) : 27998.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:ApplyDeconstructionConversion(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.LocalRewriter+DeconstructionSideEffects,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-12 (-0.76 % of base) : 17617.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__makeContent|428_4(System.ReadOnlySpan`1[ushort],System.Text.StringBuilder,ubyte,ubyte,System.ReadOnlySpan`1[ushort],byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolatedStringContentSyntax:this (FullOpts)
-12 (-0.89 % of base) : 584.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (FullOpts)
-8 (-1.22 % of base) : 21558.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.VarianceSafety:IsVarianceUnsafe[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.VarianceSafety+LocationProvider`1[System.__Canon],System.__Canon,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte (FullOpts)
-8 (-1.08 % of base) : 14190.dasm - Microsoft.ML.Transforms.KeyToVectorMappingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
-8 (-1.35 % of base) : 14526.dasm - Microsoft.ML.Transforms.Text.StopWordsRemovingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
-8 (-1.35 % of base) : 14492.dasm - Microsoft.ML.Transforms.Text.TextNormalizingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
-8 (-1.41 % of base) : 14504.dasm - Microsoft.ML.Transforms.Text.WordTokenizingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
-8 (-1.04 % of base) : 7918.dasm - System.Collections.Generic.Dictionary`2[FSharp.Compiler.Text.Position,System.ValueTuple`3[int,int,ubyte]]:Resize(int,ubyte):this (FullOpts)
-8 (-0.76 % of base) : 645.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
-8 (-0.48 % of base) : 338.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-4 (-1.05 % of base) : 13950.dasm - Microsoft.ML.Data.TypedCursorable`1+TypedRowBase[System.__Canon]:.ctor(Microsoft.ML.Data.TypedCursorable`1[System.__Canon],Microsoft.ML.DataViewRow,System.String):this (FullOpts)
Top method regressions (percentages):
24 (46.15 % of base) : 1306.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
24 (37.50 % of base) : 13672.dasm - Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)
24 (35.29 % of base) : 16247.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
32 (30.77 % of base) : 16349.dasm - Microsoft.CodeAnalysis.MemoryExtensions:IndexOfAny(System.ReadOnlySpan`1[ushort],ushort[]):int (FullOpts)
24 (28.57 % of base) : 13491.dasm - Microsoft.ML.Internal.Utilities.HashArray`1+HashHelpers[float]:GetPrime(int):int (FullOpts)
20 (27.78 % of base) : 28616.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
24 (25.00 % of base) : 13891.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[int]:ReturnArrays(int):this (FullOpts)
24 (25.00 % of base) : 586.dasm - System.Diagnostics.FileVersionInfo:ParseUInt16UntilNonDigit(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
20 (21.74 % of base) : 16408.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
20 (21.74 % of base) : 11717.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)
24 (21.43 % of base) : 2021.dasm - DemoBenchmarks.CollisionBatcherTaskBenchmarks:<Setup>g__GetRandomShapeTypeIndex|6_0(System.Span`1[float],byref):BepuPhysics.Collidables.TypedIndex (FullOpts)
24 (21.43 % of base) : 1418.dasm - DemoBenchmarks.Sweeper:<.ctor>g__GetRandomShapeTypeIndex|6_0(System.Span`1[float],byref):BepuPhysics.Collidables.TypedIndex (FullOpts)
20 (20.83 % of base) : 18450.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)
20 (19.23 % of base) : 16039.dasm - System.Linq.Enumerable:Sum[int,int](System.ReadOnlySpan`1[int]):int (FullOpts)
32 (19.05 % of base) : 15825.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
24 (16.67 % of base) : 19147.dasm - Microsoft.CodeAnalysis.MetadataHelpers:<InferTypeArityFromMetadataName>g__tryScanArity|16_0(System.ReadOnlySpan`1[ushort]):System.Nullable`1[short] (FullOpts)
32 (16.67 % of base) : 16592.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList+WithLotsOfChildren:CalculateOffsets(Microsoft.CodeAnalysis.ArrayElement`1[Microsoft.CodeAnalysis.GreenNode][]):int[] (FullOpts)
32 (16.67 % of base) : 5772.dasm - Microsoft.FSharp.Collections.ArrayModule:ForAll[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],System.__Canon[]):ubyte (FullOpts)
16 (16.67 % of base) : 18452.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
20 (15.15 % of base) : 16982.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
Top method improvements (percentages):
-20 (-2.34 % of base) : 38.dasm - System.Collections.Generic.Dictionary`2[ushort,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-16 (-2.33 % of base) : 13360.dasm - Microsoft.ML.Internal.Utilities.Utils:BuildSubsetMaps(Microsoft.ML.DataViewSchema,System.Func`2[Microsoft.ML.DataViewSchema+Column,ubyte],byref,byref) (FullOpts)
-8 (-1.41 % of base) : 14504.dasm - Microsoft.ML.Transforms.Text.WordTokenizingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
-8 (-1.35 % of base) : 14526.dasm - Microsoft.ML.Transforms.Text.StopWordsRemovingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
-8 (-1.35 % of base) : 14492.dasm - Microsoft.ML.Transforms.Text.TextNormalizingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
-8 (-1.22 % of base) : 21558.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.VarianceSafety:IsVarianceUnsafe[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.VarianceSafety+LocationProvider`1[System.__Canon],System.__Canon,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte (FullOpts)
-16 (-1.20 % of base) : 2777.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-28 (-1.19 % of base) : 29045.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
-8 (-1.08 % of base) : 14190.dasm - Microsoft.ML.Transforms.KeyToVectorMappingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
-4 (-1.05 % of base) : 13950.dasm - Microsoft.ML.Data.TypedCursorable`1+TypedRowBase[System.__Canon]:.ctor(Microsoft.ML.Data.TypedCursorable`1[System.__Canon],Microsoft.ML.DataViewRow,System.String):this (FullOpts)
-4 (-1.05 % of base) : 1440.dasm - System.Number+Grisu3:TryRoundWeedCounted(System.Span`1[ubyte],int,ulong,ulong,ulong,byref):ubyte (FullOpts)
-36 (-1.05 % of base) : 19633.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression):this (FullOpts)
-8 (-1.04 % of base) : 7918.dasm - System.Collections.Generic.Dictionary`2[FSharp.Compiler.Text.Position,System.ValueTuple`3[int,int,ubyte]]:Resize(int,ubyte):this (FullOpts)
-80 (-1.03 % of base) : 20974.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference,Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+FieldInfo]) (FullOpts)
-12 (-0.89 % of base) : 584.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (FullOpts)
-32 (-0.86 % of base) : 13410.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-8 (-0.76 % of base) : 645.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
-12 (-0.76 % of base) : 17617.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__makeContent|428_4(System.ReadOnlySpan`1[ushort],System.Text.StringBuilder,ubyte,ubyte,System.ReadOnlySpan`1[ushort],byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolatedStringContentSyntax:this (FullOpts)
-12 (-0.65 % of base) : 27998.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:ApplyDeconstructionConversion(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.LocalRewriter+DeconstructionSideEffects,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-24 (-0.60 % of base) : 12342.dasm - SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1+CdfTileData+RowIntervalOperation[SixLabors.ImageSharp.PixelFormats.Rgba32]:Invoke(byref):this (FullOpts)
smoke_tests.nativeaot.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 2946828 (overridden on cmd)
Total bytes of diff: 2956412 (overridden on cmd)
Total bytes of delta: 9584 (0.33 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
208 : 6545.dasm (2.37 % of base)
132 : 18768.dasm (2.70 % of base)
132 : 3305.dasm (2.70 % of base)
112 : 6710.dasm (8.95 % of base)
84 : 2291.dasm (8.47 % of base)
84 : 3214.dasm (9.05 % of base)
80 : 17247.dasm (2.42 % of base)
80 : 2352.dasm (8.06 % of base)
76 : 4767.dasm (7.57 % of base)
76 : 3413.dasm (4.06 % of base)
76 : 7497.dasm (7.48 % of base)
72 : 4394.dasm (7.63 % of base)
72 : 18910.dasm (4.41 % of base)
72 : 4008.dasm (4.42 % of base)
72 : 4573.dasm (4.20 % of base)
68 : 18614.dasm (4.80 % of base)
68 : 6500.dasm (4.83 % of base)
60 : 17260.dasm (3.02 % of base)
60 : 17255.dasm (2.11 % of base)
56 : 1770.dasm (20.59 % of base)
Top file improvements (bytes):
-16 : 2478.dasm (-2.34 % of base)
-12 : 8888.dasm (-1.05 % of base)
-8 : 4344.dasm (-0.56 % of base)
-8 : 5146.dasm (-2.70 % of base)
-4 : 3892.dasm (-1.10 % of base)
74 total files with Code Size differences (5 improved, 69 regressed), 8 unchanged.
Top method regressions (bytes):
208 (2.37 % of base) : 6545.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
132 (2.70 % of base) : 18768.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
132 (2.70 % of base) : 3305.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
112 (8.95 % of base) : 6710.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)
84 (8.47 % of base) : 2291.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
84 (9.05 % of base) : 3214.dasm - System.Threading.WaitSubsystem:Wait(System.Span`1[long],ubyte,int):int (FullOpts)
80 (8.06 % of base) : 2352.dasm - System.Threading.WaitSubsystem+ThreadWaitInfo:RegisterWait(int,ubyte,ubyte):this (FullOpts)
80 (2.42 % of base) : 17247.dasm - WaitSubsystemTests:MutexTest() (FullOpts)
76 (7.57 % of base) : 4767.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
76 (4.06 % of base) : 3413.dasm - System.Threading.WaitSubsystem+WaitableObject:Wait(System.Threading.WaitSubsystem+WaitableObject[],int,ubyte,System.Threading.WaitSubsystem+ThreadWaitInfo,int,ubyte,ubyte):int (FullOpts)
76 (7.48 % of base) : 7497.dasm - System.Type:GetEnumData(byref,byref):this (FullOpts)
72 (4.41 % of base) : 18910.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
72 (4.42 % of base) : 4008.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
72 (4.20 % of base) : 4573.dasm - System.Globalization.TimeSpanParse:TryParseByFormat(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,byref):ubyte (FullOpts)
72 (7.63 % of base) : 4394.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
68 (4.80 % of base) : 18614.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
68 (4.83 % of base) : 6500.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
60 (3.02 % of base) : 17260.dasm - WaitSubsystemTests:AutoResetEventTest() (FullOpts)
60 (2.11 % of base) : 17255.dasm - WaitSubsystemTests:SemaphoreTest() (FullOpts)
56 (20.59 % of base) : 1770.dasm - Internal.NativeFormat.TypeHashingAlgorithms+HashCodeBuilder:Append(System.String):this (FullOpts)
Top method improvements (bytes):
-16 (-2.34 % of base) : 2478.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo]:Resize(int,ubyte):this (FullOpts)
-12 (-1.05 % of base) : 8888.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (FullOpts)
-8 (-0.56 % of base) : 4344.dasm - System.Net.Sockets.SocketPal:SysReceive(System.Net.Sockets.SafeSocketHandle,int,System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],System.Span`1[ubyte],byref,byref,byref):int (FullOpts)
-8 (-2.70 % of base) : 5146.dasm - System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo+<>c__DisplayClass20_0:<get_SyntheticMethods>b__1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
-4 (-1.10 % of base) : 3892.dasm - System.Number+Grisu3:TryRoundWeedCounted(System.Span`1[ubyte],int,ulong,ulong,ulong,byref):ubyte (FullOpts)
Top method regressions (percentages):
20 (21.74 % of base) : 2090.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
12 (21.43 % of base) : 15213.dasm - System.DateTimeFormat:ParseRepeatPattern(System.ReadOnlySpan`1[ushort],int,ushort):int (FullOpts)
56 (20.59 % of base) : 1770.dasm - Internal.NativeFormat.TypeHashingAlgorithms+HashCodeBuilder:Append(System.String):this (FullOpts)
24 (20.00 % of base) : 9817.dasm - System.Buffers.IndexOfAnyAsciiSearcher:TryComputeBitmap(System.ReadOnlySpan`1[ushort],ulong,byref):ubyte (FullOpts)
20 (20.00 % of base) : 15272.dasm - System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (FullOpts)
24 (19.35 % of base) : 7598.dasm - Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int (FullOpts)
16 (19.05 % of base) : 4294.dasm - System.Globalization.CalendricalCalculationsHelper:PolynomialSum(System.ReadOnlySpan`1[double],double):double (FullOpts)
32 (19.05 % of base) : 2992.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
24 (17.65 % of base) : 4388.dasm - System.IPv6AddressHelper:FindCompressionRange(System.ReadOnlySpan`1[ushort]):System.ValueTuple`2[int,int] (FullOpts)
24 (17.65 % of base) : 4407.dasm - System.IPv6AddressHelper:FindCompressionRange(System.ReadOnlySpan`1[ushort]):System.ValueTuple`2[int,int] (FullOpts)
24 (13.64 % of base) : 1469.dasm - System.Buffers.SharedArrayPoolStatics:TryGetInt32EnvironmentVariable(System.String,byref):ubyte (FullOpts)
24 (13.64 % of base) : 4456.dasm - System.IPv4AddressHelper:ParseHostNumber(System.ReadOnlySpan`1[ushort],int,int):int (FullOpts)
20 (13.51 % of base) : 3122.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[long,System.Net.Sockets.SocketAsyncEngine+SocketAsyncContextWrapper]:ReleaseLocks(int):this (FullOpts)
20 (13.51 % of base) : 9000.dasm - System.Linq.Enumerable+SelectIListIterator`2[System.__Canon,System.__Canon]:Fill(System.Collections.Generic.IList`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (FullOpts)
28 (13.46 % of base) : 1831.dasm - System.Globalization.CultureData:DeriveShortTimesFromLong():System.String[]:this (FullOpts)
20 (13.16 % of base) : 8996.dasm - System.Linq.Enumerable+WhereArrayIterator`1[System.__Canon]:GetCount(ubyte,System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (FullOpts)
24 (13.04 % of base) : 1454.dasm - System.Buffers.ProbabilisticMap:.ctor(System.ReadOnlySpan`1[ushort]):this (FullOpts)
32 (12.50 % of base) : 6090.dasm - System.Reflection.Runtime.General.Helpers:ToTypeArray(System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo[]):System.Type[] (FullOpts)
16 (11.43 % of base) : 4380.dasm - System.UriHelper+<>c:<StripBidiControlCharacters>b__23_0(System.Span`1[ushort],long):this (FullOpts)
56 (10.94 % of base) : 18739.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
Top method improvements (percentages):
-8 (-2.70 % of base) : 5146.dasm - System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo+<>c__DisplayClass20_0:<get_SyntheticMethods>b__1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
-16 (-2.34 % of base) : 2478.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo]:Resize(int,ubyte):this (FullOpts)
-4 (-1.10 % of base) : 3892.dasm - System.Number+Grisu3:TryRoundWeedCounted(System.Span`1[ubyte],int,ulong,ulong,ulong,byref):ubyte (FullOpts)
-12 (-1.05 % of base) : 8888.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (FullOpts)
-8 (-0.56 % of base) : 4344.dasm - System.Net.Sockets.SocketPal:SysReceive(System.Net.Sockets.SafeSocketHandle,int,System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],System.Span`1[ubyte],byref,byref,byref):int (FullOpts)
linux x64
Diffs are based on 2,517,881 contexts (991,070 MinOpts, 1,526,811 FullOpts).
MISSED contexts: 28 (0.00%)
Overall (+572,703 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.x64.checked.mch |
14,336,747 |
+1,856 |
| benchmarks.run_pgo.linux.x64.checked.mch |
71,580,068 |
+153,953 |
| benchmarks.run_tiered.linux.x64.checked.mch |
21,436,595 |
-2,845 |
| coreclr_tests.run.linux.x64.checked.mch |
403,712,034 |
-51,428 |
| libraries.crossgen2.linux.x64.checked.mch |
38,727,480 |
+18,381 |
| libraries.pmi.linux.x64.checked.mch |
60,420,078 |
+23,143 |
| libraries_tests.run.linux.x64.Release.mch |
337,125,301 |
+391,429 |
| librariestestsnotieredcompilation.run.linux.x64.Release.mch |
132,553,319 |
+29,341 |
| realworld.run.linux.x64.checked.mch |
13,174,530 |
+8,436 |
| smoke_tests.nativeaot.linux.x64.checked.mch |
4,234,684 |
+437 |
FullOpts (+572,703 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.x64.checked.mch |
14,037,444 |
+1,856 |
| benchmarks.run_pgo.linux.x64.checked.mch |
47,780,079 |
+153,953 |
| benchmarks.run_tiered.linux.x64.checked.mch |
3,695,815 |
-2,845 |
| coreclr_tests.run.linux.x64.checked.mch |
123,957,574 |
-51,428 |
| libraries.crossgen2.linux.x64.checked.mch |
38,726,282 |
+18,381 |
| libraries.pmi.linux.x64.checked.mch |
60,307,221 |
+23,143 |
| libraries_tests.run.linux.x64.Release.mch |
153,365,692 |
+391,429 |
| librariestestsnotieredcompilation.run.linux.x64.Release.mch |
121,935,551 |
+29,341 |
| realworld.run.linux.x64.checked.mch |
12,788,646 |
+8,436 |
| smoke_tests.nativeaot.linux.x64.checked.mch |
4,233,735 |
+437 |
Example diffs
benchmarks.run.linux.x64.checked.mch
-35 (-15.22%) : 20020.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
@@ -11,7 +11,7 @@
; V00 this [V00,T06] ( 5, 11 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer>
; V01 arg1 [V01,T11] ( 4, 6.50) int -> r15 single-def
; V02 loc0 [V02,T10] ( 4, 9 ) ref -> r13 class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]>
-; V03 loc1 [V03,T00] ( 9, 32.50) int -> r12
+;* V03 loc1 [V03,T16] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T03] ( 2, 16 ) ref -> rdi class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo>
; V06 tmp2 [V06,T04] ( 2, 16 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo>
@@ -22,27 +22,26 @@
; V11 tmp7 [V11,T02] ( 3, 24 ) ref -> rsi "arr expr"
;* V12 tmp8 [V12,T13] ( 0, 0 ) ref -> zero-ref "arr expr"
; V13 tmp9 [V13,T05] ( 2, 16 ) int -> rsi "argument with side effect"
-; V14 cse0 [V14,T07] ( 3, 12 ) ref -> rsi "CSE - moderate"
-; V15 cse1 [V15,T15] ( 3, 1.50) int -> r14 "CSE - moderate"
-; V16 cse2 [V16,T08] ( 2, 8 ) ref -> rsi "CSE - moderate"
-; V17 cse3 [V17,T09] ( 2, 8 ) ref -> rsi "CSE - moderate"
-; V18 cse4 [V18,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
+; V14 tmp10 [V14,T00] ( 9, 32.50) long -> r14 "Widened primary induction variable"
+; V15 cse0 [V15,T07] ( 3, 12 ) ref -> rsi "CSE - moderate"
+; V16 cse1 [V16,T15] ( 3, 1.50) int -> r14 "CSE - moderate"
+; V17 cse2 [V17,T08] ( 2, 8 ) ref -> rsi "CSE - moderate"
+; V18 cse3 [V18,T09] ( 2, 8 ) ref -> rsi "CSE - moderate"
+; V19 cse4 [V19,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M22286_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
- push r12
push rbx
- push rax
- lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov rbx, rdi
; gcrRegs +[rbx]
mov r15d, esi
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=19 bbWeight=1 PerfScore 6.00
G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x10]
; gcrRegs +[rdi]
@@ -51,7 +50,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=13 bbWeight=1 PerfScore 3.25
G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
test r15d, r15d
- jle G_M22286_IG07
+ jle SHORT G_M22286_IG07
mov r14d, dword ptr [rdi+0x10]
movsxd rsi, r14d
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]
@@ -61,21 +60,20 @@ G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcr arg pop 0
mov r13, rax
; gcrRegs +[r13]
- xor r12d, r12d
test r14d, r14d
jle SHORT G_M22286_IG05
- ;; size=42 bbWeight=0.50 PerfScore 3.25
+ xor r14d, r14d
+ ;; size=38 bbWeight=0.50 PerfScore 3.25
G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rsi, gword ptr [rbx+0x10]
; gcrRegs +[rsi]
- cmp r12d, dword ptr [rsi+0x10]
- jae G_M22286_IG12
+ cmp r14d, dword ptr [rsi+0x10]
+ jae SHORT G_M22286_IG12
mov rsi, gword ptr [rsi+0x08]
- cmp r12d, dword ptr [rsi+0x08]
+ cmp r14d, dword ptr [rsi+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d
- mov rsi, gword ptr [rsi+8*rdi+0x10]
+ mov rsi, gword ptr [rsi+8*r14+0x10]
mov rdi, rsi
; gcrRegs +[rdi]
mov eax, r15d
@@ -85,67 +83,60 @@ G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {},
call [Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:WithOffset(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:this]
; gcrRegs -[rdi] +[rax]
; gcr arg pop 0
- cmp r12d, dword ptr [r13+0x08]
+ cmp r14d, dword ptr [r13+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d
- lea rdi, bword ptr [r13+8*rdi+0x10]
+ lea rdi, bword ptr [r13+8*r14+0x10]
; byrRegs +[rdi]
mov rsi, rax
; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- inc r12d
+ inc r14d
mov rax, gword ptr [rbx+0x10]
; gcrRegs +[rax]
- cmp r12d, dword ptr [rax+0x10]
+ cmp r14d, dword ptr [rax+0x10]
jl SHORT G_M22286_IG04
- ;; size=84 bbWeight=4 PerfScore 139.00
+ ;; size=74 bbWeight=4 PerfScore 137.00
G_M22286_IG05: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx]
mov rax, r13
; gcrRegs +[rax]
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M22286_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax r13] +[rdi]
cmp dword ptr [rdi], edi
;; size=2 bbWeight=0.50 PerfScore 1.50
G_M22286_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
tail.jmp [System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this]
; gcr arg pop 0
- ;; size=20 bbWeight=0.50 PerfScore 2.62
+ ;; size=14 bbWeight=0.50 PerfScore 2.25
G_M22286_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M22286_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
call CORINFO_HELP_RNGCHKFAIL
@@ -157,7 +148,7 @@ G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 230, prolog size 22, PerfScore 162.12, instruction count 76, allocated bytes for code 230 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
+; Total bytes of code 195, prolog size 19, PerfScore 157.00, instruction count 66, allocated bytes for code 195 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -165,14 +156,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0B
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
-20 (-11.76%) : 4125.dasm - System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
@@ -8,11 +8,11 @@
; 0 inlinees with PGO data; 10 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 6, 39 ) ref -> rbx class-hnd single-def <System.String[]>
-; V01 loc0 [V01,T05] ( 5, 17 ) int -> r15
-; V02 loc1 [V02,T02] ( 6, 84 ) int -> r13
+; V00 arg0 [V00,T04] ( 6, 39 ) ref -> rbx class-hnd single-def <System.String[]>
+;* V01 loc0 [V01,T08] ( 0, 0 ) int -> zero-ref
+;* V02 loc1 [V02,T07] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T06] ( 2, 16 ) ubyte -> rax "Inline return value spill temp"
+; V04 tmp1 [V04,T05] ( 2, 16 ) ubyte -> rax "Inline return value spill temp"
; V05 tmp2 [V05,T00] ( 4, 96 ) ushort -> rdi "Inlining Arg"
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp4 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
@@ -34,113 +34,108 @@
;* V23 tmp20 [V23 ] ( 0, 0 ) byref -> zero-ref "field V12._reference (fldOffset=0x0)" P-INDEP
;* V24 tmp21 [V24 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
; V25 tmp22 [V25,T01] ( 3, 96 ) ref -> rdi "arr expr"
-; V26 cse0 [V26,T07] ( 3, 6 ) int -> r14 "CSE - moderate"
-; V27 cse1 [V27,T04] ( 4, 40 ) long -> r12 "CSE - aggressive"
+; V26 tmp23 [V26,T03] ( 7, 49 ) long -> r14 "Widened primary induction variable"
+; V27 tmp24 [V27,T02] ( 6, 82 ) long -> r13 "Widened primary induction variable"
+; V28 cse0 [V28,T06] ( 3, 6 ) int -> r15 "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M29788_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
- push r12
push rbx
- push rax
- lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=19 bbWeight=1 PerfScore 7.75
+ ;; size=16 bbWeight=1 PerfScore 5.75
G_M29788_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- xor r15d, r15d
- mov r14d, dword ptr [rbx+0x08]
- test r14d, r14d
- jle SHORT G_M29788_IG10
+ mov r15d, dword ptr [rbx+0x08]
+ test r15d, r15d
+ jle SHORT G_M29788_IG11
+ xor r14d, r14d
;; size=12 bbWeight=1 PerfScore 3.50
G_M29788_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- xor r13d, r13d
- mov r12d, r15d
- mov rdi, gword ptr [rbx+8*r12+0x10]
+ mov rdi, gword ptr [rbx+8*r14+0x10]
; gcrRegs +[rdi]
cmp dword ptr [rdi+0x08], 0
- jle SHORT G_M29788_IG09
- ;; size=17 bbWeight=4 PerfScore 26.00
-G_M29788_IG04: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jle SHORT G_M29788_IG10
+ ;; size=11 bbWeight=4 PerfScore 24.00
+G_M29788_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
- mov rdi, gword ptr [rbx+8*r12+0x10]
+ xor r13d, r13d
+ ;; size=3 bbWeight=2 PerfScore 0.50
+G_M29788_IG05: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rdi, gword ptr [rbx+8*r14+0x10]
; gcrRegs +[rdi]
cmp r13d, dword ptr [rdi+0x08]
- jae SHORT G_M29788_IG14
- mov eax, r13d
- movzx rdi, word ptr [rdi+2*rax+0x0C]
+ jae SHORT G_M29788_IG15
+ movzx rdi, word ptr [rdi+2*r13+0x0C]
; gcrRegs -[rdi]
cmp edi, 256
- jb SHORT G_M29788_IG07
- ;; size=27 bbWeight=16 PerfScore 152.00
-G_M29788_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jb SHORT G_M29788_IG08
+ ;; size=25 bbWeight=16 PerfScore 148.00
+G_M29788_IG06: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
; gcr arg pop 0
test eax, eax
- je SHORT G_M29788_IG08
+ je SHORT G_M29788_IG09
;; size=10 bbWeight=8 PerfScore 34.00
-G_M29788_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M29788_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
- jmp SHORT G_M29788_IG12
+ jmp SHORT G_M29788_IG13
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M29788_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M29788_IG08: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx]
mov edi, edi
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rdi+rax], 128
- jne SHORT G_M29788_IG12
+ jne SHORT G_M29788_IG13
;; size=18 bbWeight=8 PerfScore 36.00
-G_M29788_IG08: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M29788_IG09: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
inc r13d
- mov rax, gword ptr [rbx+8*r12+0x10]
+ mov rax, gword ptr [rbx+8*r14+0x10]
; gcrRegs +[rax]
cmp dword ptr [rax+0x08], r13d
- jg SHORT G_M29788_IG04
+ jg SHORT G_M29788_IG05
;; size=14 bbWeight=16 PerfScore 100.00
-G_M29788_IG09: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M29788_IG10: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- inc r15d
- cmp r14d, r15d
+ inc r14d
+ cmp r15d, r14d
jg SHORT G_M29788_IG03
;; size=8 bbWeight=4 PerfScore 6.00
-G_M29788_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29788_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M29788_IG11: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
+G_M29788_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M29788_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
+G_M29788_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M29788_IG13: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
+G_M29788_IG14: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M29788_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
+G_M29788_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 170, prolog size 19, PerfScore 370.75, instruction count 60, allocated bytes for code 170 (MethodHash=bfc38ba3) for method System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
+; Total bytes of code 150, prolog size 16, PerfScore 362.50, instruction count 52, allocated bytes for code 150 (MethodHash=bfc38ba3) for method System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -148,14 +143,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0B
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
-18 (-11.46%) : 16367.dasm - Span.Sorting:TestBubbleSortArray(int[]) (FullOpts)
@@ -10,18 +10,21 @@
; V00 arg0 [V00,T02] ( 11, 51 ) ref -> rdi class-hnd single-def <int[]>
; V01 loc0 [V01,T08] ( 4, 24 ) ubyte -> rdx
; V02 loc1 [V02,T10] ( 4, 16 ) int -> r8
-; V03 loc2 [V03,T03] ( 7, 45 ) int -> rcx
-; V04 loc3 [V04,T00] ( 12, 80.16) int -> rsi
+; V03 loc2 [V03,T04] ( 7, 45 ) int -> rcx
+;* V04 loc3 [V04,T11] ( 0, 0 ) int -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T07] ( 4, 32 ) int -> r11 "Strict ordering of exceptions for Array store"
-; V07 cse0 [V07,T04] ( 3, 39.60) int -> r11 "CSE - aggressive"
-; V08 cse1 [V08,T12] ( 3, 0.40) int -> r11 "CSE - conservative"
-; V09 cse2 [V09,T13] ( 3, 0.40) int -> r8 "CSE - conservative"
-; V10 cse3 [V10,T05] ( 3, 39.60) int -> r8 "CSE - aggressive"
-; V11 cse4 [V11,T06] ( 3, 39.60) long -> r10 "CSE - aggressive"
-; V12 cse5 [V12,T01] ( 4, 63.36) int -> r9 "CSE - aggressive"
-; V13 cse6 [V13,T09] ( 6, 22.16) int -> rax "CSE - aggressive"
-; V14 cse7 [V14,T11] ( 5, 0.72) int -> r9 "CSE - conservative"
+; V06 tmp1 [V06,T07] ( 4, 32 ) int -> r10 "Strict ordering of exceptions for Array store"
+; V07 tmp2 [V07,T12] ( 7, 0.92) long -> rsi "Widened primary induction variable"
+; V08 tmp3 [V08,T00] ( 6, 75.28) long -> rsi "Widened primary induction variable"
+; V09 cse0 [V09,T05] ( 3, 39.60) int -> r10 "CSE - aggressive"
+; V10 cse1 [V10,T15] ( 3, 0.40) int -> r10 "CSE - conservative"
+; V11 cse2 [V11,T16] ( 3, 0.40) int -> r8 "CSE - conservative"
+; V12 cse3 [V12,T06] ( 3, 39.60) int -> r8 "CSE - aggressive"
+; V13 cse4 [V13,T01] ( 4, 55.44) long -> r9 "CSE - aggressive"
+; V14 cse5 [V14,T13] ( 4, 0.56) long -> r9 "CSE - conservative"
+; V15 cse6 [V15,T03] ( 3, 47.52) int -> r9 "CSE - aggressive"
+; V16 cse7 [V16,T14] ( 3, 0.48) int -> r10 "CSE - conservative"
+; V17 cse8 [V17,T09] ( 6, 22.16) int -> rax "CSE - aggressive"
;
; Lcl frame size = 0
@@ -36,81 +39,78 @@ G_M37703_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
;; size=6 bbWeight=1 PerfScore 2.50
G_M37703_IG03: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
xor edx, edx
- xor esi, esi
test ecx, ecx
- jle SHORT G_M37703_IG12
- ;; size=8 bbWeight=8 PerfScore 14.00
+ jle SHORT G_M37703_IG13
+ ;; size=6 bbWeight=8 PerfScore 12.00
G_M37703_IG04: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
cmp eax, ecx
jl SHORT G_M37703_IG09
- ;; size=4 bbWeight=4 PerfScore 5.00
+ xor esi, esi
+ ;; size=6 bbWeight=4 PerfScore 6.00
G_M37703_IG05: ; bbWeight=15.84, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov r8d, esi
- mov r8d, dword ptr [rdi+4*r8+0x10]
+ mov r8d, dword ptr [rdi+4*rsi+0x10]
lea r9d, [rsi+0x01]
cmp r9d, eax
- jae SHORT G_M37703_IG14
- mov r10d, r9d
- mov r11d, dword ptr [rdi+4*r10+0x10]
- cmp r8d, r11d
+ jae SHORT G_M37703_IG15
+ mov r10d, dword ptr [rdi+4*r9+0x10]
+ cmp r8d, r10d
jle SHORT G_M37703_IG07
- ;; size=30 bbWeight=15.84 PerfScore 118.80
+ ;; size=24 bbWeight=15.84 PerfScore 110.88
G_M37703_IG06: ; bbWeight=7.92, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- mov edx, esi
- mov dword ptr [rdi+4*rdx+0x10], r11d
- mov dword ptr [rdi+4*r10+0x10], r8d
+ mov dword ptr [rdi+4*rsi+0x10], r10d
+ mov dword ptr [rdi+4*r9+0x10], r8d
mov edx, 1
- ;; size=17 bbWeight=7.92 PerfScore 19.80
+ ;; size=15 bbWeight=7.92 PerfScore 17.82
G_M37703_IG07: ; bbWeight=15.84, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov esi, r9d
+ mov rsi, r9
cmp esi, ecx
jl SHORT G_M37703_IG05
;; size=7 bbWeight=15.84 PerfScore 23.76
G_M37703_IG08: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M37703_IG12
+ jmp SHORT G_M37703_IG13
;; size=2 bbWeight=8 PerfScore 16.00
-G_M37703_IG09: ; bbWeight=0.16, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M37703_IG09: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ xor esi, esi
+ ;; size=2 bbWeight=0.04 PerfScore 0.01
+G_M37703_IG10: ; bbWeight=0.16, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
cmp esi, eax
- jae SHORT G_M37703_IG14
- mov r8d, esi
- mov r8d, dword ptr [rdi+4*r8+0x10]
- lea r9d, [rsi+0x01]
- cmp r9d, eax
- jae SHORT G_M37703_IG14
- mov r11d, r9d
- mov r11d, dword ptr [rdi+4*r11+0x10]
- cmp r8d, r11d
- jle SHORT G_M37703_IG11
- ;; size=34 bbWeight=0.16 PerfScore 1.40
-G_M37703_IG10: ; bbWeight=0.08, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- mov edx, esi
- mov dword ptr [rdi+4*rdx+0x10], r11d
- mov esi, r9d
- mov dword ptr [rdi+4*rsi+0x10], r8d
+ jae SHORT G_M37703_IG15
+ mov r8d, dword ptr [rdi+4*rsi+0x10]
+ lea r10d, [rsi+0x01]
+ cmp r10d, eax
+ jae SHORT G_M37703_IG15
+ mov r9d, r10d
+ mov r10d, dword ptr [rdi+4*r9+0x10]
+ cmp r8d, r10d
+ jle SHORT G_M37703_IG12
+ ;; size=31 bbWeight=0.16 PerfScore 1.36
+G_M37703_IG11: ; bbWeight=0.08, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ mov dword ptr [rdi+4*rsi+0x10], r10d
+ mov dword ptr [rdi+4*r9+0x10], r8d
mov edx, 1
- ;; size=20 bbWeight=0.08 PerfScore 0.22
-G_M37703_IG11: ; bbWeight=0.16, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov esi, r9d
+ ;; size=15 bbWeight=0.08 PerfScore 0.18
+G_M37703_IG12: ; bbWeight=0.16, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ mov rsi, r9
cmp esi, ecx
- jl SHORT G_M37703_IG09
+ jl SHORT G_M37703_IG10
;; size=7 bbWeight=0.16 PerfScore 0.24
-G_M37703_IG12: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M37703_IG13: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
dec ecx
test edx, edx
- jne G_M37703_IG03
- ;; size=10 bbWeight=8 PerfScore 12.00
-G_M37703_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jne SHORT G_M37703_IG03
+ ;; size=6 bbWeight=8 PerfScore 12.00
+G_M37703_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdi]
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
-G_M37703_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M37703_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 157, prolog size 4, PerfScore 216.47, instruction count 53, allocated bytes for code 157 (MethodHash=e4a36cb8) for method Span.Sorting:TestBubbleSortArray(int[]) (FullOpts)
+; Total bytes of code 139, prolog size 4, PerfScore 205.50, instruction count 48, allocated bytes for code 139 (MethodHash=e4a36cb8) for method Span.Sorting:TestBubbleSortArray(int[]) (FullOpts)
; ============================================================
Unwind Info:
+14 (+45.16%) : 29193.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
@@ -8,12 +8,13 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-;* V01 loc0 [V01,T04] ( 0, 0 ) int -> zero-ref single-def
-; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> rax
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> rcx
+; V01 loc0 [V01,T04] ( 2, 5 ) int -> rax single-def
+; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> rcx
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T03] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T02] ( 3, 6 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T02] ( 4, 7 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp3 [V07,T00] ( 6, 21 ) long -> rdx "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -23,27 +24,37 @@ G_M31628_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=4 bbWeight=1 PerfScore 1.25
G_M31628_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
; byrRegs +[rdi]
- xor eax, eax
+ mov eax, esi
xor ecx, ecx
test esi, esi
jle SHORT G_M31628_IG04
- ;; size=8 bbWeight=1 PerfScore 1.75
+ xor edx, edx
+ ;; size=10 bbWeight=1 PerfScore 2.00
G_M31628_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov edx, ecx
- movzx rdx, byte ptr [rdi+rdx]
- xor eax, edx
- movzx rax, al
- inc ecx
- cmp ecx, esi
+ cmp edx, eax
+ jae SHORT G_M31628_IG06
+ movzx r8, byte ptr [rdi+rdx]
+ xor ecx, r8d
+ movzx rcx, cl
+ inc edx
+ cmp edx, esi
jl SHORT G_M31628_IG03
- ;; size=17 bbWeight=4 PerfScore 17.00
-G_M31628_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=21 bbWeight=4 PerfScore 21.00
+G_M31628_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rdi]
+ mov eax, ecx
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M31628_IG05: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
+G_M31628_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 31, prolog size 4, PerfScore 21.50, instruction count 15, allocated bytes for code 31 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 45, prolog size 4, PerfScore 26.00, instruction count 20, allocated bytes for code 45 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
; ============================================================
Unwind Info:
+14 (+45.16%) : 26830.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
@@ -8,12 +8,13 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-;* V01 loc0 [V01,T04] ( 0, 0 ) int -> zero-ref single-def
-; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> rax
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> rcx
+; V01 loc0 [V01,T04] ( 2, 5 ) int -> rax single-def
+; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> rcx
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T03] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T02] ( 3, 6 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T02] ( 4, 7 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp3 [V07,T00] ( 6, 21 ) long -> rdx "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -23,27 +24,37 @@ G_M44428_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=4 bbWeight=1 PerfScore 1.25
G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
; byrRegs +[rdi]
- xor eax, eax
+ mov eax, esi
xor ecx, ecx
test esi, esi
jle SHORT G_M44428_IG04
- ;; size=8 bbWeight=1 PerfScore 1.75
+ xor edx, edx
+ ;; size=10 bbWeight=1 PerfScore 2.00
G_M44428_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov edx, ecx
- movzx rdx, byte ptr [rdi+rdx]
- xor eax, edx
- movzx rax, al
- inc ecx
- cmp ecx, esi
+ cmp edx, eax
+ jae SHORT G_M44428_IG06
+ movzx r8, byte ptr [rdi+rdx]
+ xor ecx, r8d
+ movzx rcx, cl
+ inc edx
+ cmp edx, esi
jl SHORT G_M44428_IG03
- ;; size=17 bbWeight=4 PerfScore 17.00
-G_M44428_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=21 bbWeight=4 PerfScore 21.00
+G_M44428_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rdi]
+ mov eax, ecx
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M44428_IG05: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
+G_M44428_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 31, prolog size 4, PerfScore 21.50, instruction count 15, allocated bytes for code 31 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 45, prolog size 4, PerfScore 26.00, instruction count 20, allocated bytes for code 45 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
; ============================================================
Unwind Info:
+20 (+58.82%) : 29485.dasm - System.Collections.IterateFor`1[System.Canon]:ImmutableArray():System.Canon:this (FullOpts)
@@ -8,53 +8,66 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Collections.IterateFor`1[System.__Canon]>
-; V01 loc0 [V01,T02] ( 3, 6 ) ref -> rax ld-addr-op class-hnd <System.__Canon>
+; V00 this [V00,T02] ( 3, 3 ) ref -> rbx this class-hnd single-def <System.Collections.IterateFor`1[System.__Canon]>
+; V01 loc0 [V01,T03] ( 3, 6 ) ref -> rax ld-addr-op class-hnd <System.__Canon>
;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> rdx
+;* V03 loc2 [V03,T08] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 tmp3 [V07,T03] ( 3, 6 ) ref -> rcx single-def "field V02.array (fldOffset=0x0)" P-INDEP
-;* V08 cse0 [V08,T08] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
-; V09 cse1 [V09,T04] ( 3, 6 ) int -> rsi "CSE - aggressive"
-;* V10 rat0 [V10,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V11 rat1 [V11,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V12 rat2 [V12,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T04] ( 3, 6 ) ref -> rcx single-def "field V02.array (fldOffset=0x0)" P-INDEP
+; V08 tmp4 [V08,T00] ( 6, 21 ) long -> rdi "Widened primary induction variable"
+;* V09 cse0 [V09,T09] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V10 cse1 [V10,T01] ( 4, 10 ) int -> rdx "CSE - aggressive"
+;* V11 rat0 [V11,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V12 rat1 [V12,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V13 rat2 [V13,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M3722_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M3722_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rdi]
+ push rbx
+ push rax
+ lea rbp, [rsp+0x10]
+ mov rbx, rdi
+ ; gcrRegs +[rbx]
+ ;; size=11 bbWeight=1 PerfScore 3.75
+G_M3722_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
xor rax, rax
; gcrRegs +[rax]
- mov rcx, gword ptr [rdi+0x38]
+ mov rcx, gword ptr [rbx+0x38]
; gcrRegs +[rcx]
- xor edx, edx
- mov esi, dword ptr [rcx+0x08]
- test esi, esi
+ mov edx, dword ptr [rcx+0x08]
+ test edx, edx
jle SHORT G_M3722_IG04
+ xor edi, edi
;; size=15 bbWeight=1 PerfScore 5.75
-G_M3722_IG03: ; bbWeight=4, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref, isz
+G_M3722_IG03: ; bbWeight=4, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- mov eax, edx
- mov rax, gword ptr [rcx+8*rax+0x10]
+ cmp edi, edx
+ jae SHORT G_M3722_IG05
+ mov rax, gword ptr [rcx+8*rdi+0x10]
; gcrRegs +[rax]
- inc edx
- cmp esi, edx
+ inc edi
+ cmp edx, edi
jg SHORT G_M3722_IG03
- ;; size=13 bbWeight=4 PerfScore 15.00
-G_M3722_IG04: ; bbWeight=1, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=15 bbWeight=4 PerfScore 19.00
+G_M3722_IG04: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx]
+ add rsp, 8
+ pop rbx
pop rbp
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=7 bbWeight=1 PerfScore 2.25
+G_M3722_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 34, prolog size 4, PerfScore 23.50, instruction count 15, allocated bytes for code 34 (MethodHash=877ef175) for method System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
+; Total bytes of code 54, prolog size 11, PerfScore 30.75, instruction count 23, allocated bytes for code 54 (MethodHash=877ef175) for method System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -62,9 +75,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x01
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x03
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
benchmarks.run_pgo.linux.x64.checked.mch
-32 (-13.50%) : 68537.dasm - System.Collections.PerfFrozenDictionaryString:TryGetValueTrueDictionary():ubyte:this (Tier1-OSR)
@@ -6,21 +6,23 @@
; optimized using Dynamic PGO
; rbp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 100.15
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 100.15
; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>
-; V01 loc0 [V01,T02] ( 9,199.98) ubyte -> r15
-; V02 loc1 [V02,T04] ( 4,199.98) ref -> r14 class-hnd <<unknown class>>
-; V03 loc2 [V03,T07] ( 3,100 ) ref -> r13 class-hnd exact <<unknown class>>
-; V04 loc3 [V04,T00] ( 17,400.98) int -> rbx
-; V05 loc4 [V05,T08] ( 1, 1 ) ref -> [rbp+0x18] ld-addr-op class-hnd tier0-frame <<unknown class>>
+; V01 loc0 [V01,T03] ( 5,199.98) ubyte -> rbx
+; V02 loc1 [V02,T04] ( 4,199.98) ref -> r15 class-hnd <<unknown class>>
+; V03 loc2 [V03,T07] ( 3,100 ) ref -> r14 class-hnd exact <<unknown class>>
+; V04 loc3 [V04,T10] ( 4, 0.03) int -> rax
+; V05 loc4 [V05,T09] ( 1, 1 ) ref -> [rbp+0x18] ld-addr-op class-hnd tier0-frame <<unknown class>>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T03] ( 8,199.98) ubyte -> rdi "Inline return value spill temp"
-; V08 tmp2 [V08,T01] ( 4,399.96) ref -> rsi class-hnd exact "Inlining Arg" <<unknown class>>
+; V07 tmp1 [V07,T02] ( 6,199.98) ubyte -> rdi "Inline return value spill temp"
+; V08 tmp2 [V08,T00] ( 4,399.96) ref -> rsi class-hnd exact "Inlining Arg" <<unknown class>>
; V09 tmp3 [V09,T05] ( 4,199.98) byref -> rax "Inline stloc first use temp"
-; V10 cse0 [V10,T06] ( 7,101.01) int -> r12 "CSE - aggressive"
+; V10 tmp4 [V10,T08] ( 6, 5.00) long -> r12 "Widened primary induction variable"
+; V11 tmp5 [V11,T01] ( 5,395.97) long -> r12 "Widened primary induction variable"
+; V12 cse0 [V12,T06] ( 5,101.01) int -> r13 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -34,94 +36,96 @@ G_M16914_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov qword ptr [rsp+0x80], r12
mov qword ptr [rsp+0x78], rbx
lea rbp, [rsp+0x30]
- mov r15d, dword ptr [rbp+0x3C]
- mov r14, gword ptr [rbp+0x30]
+ mov ebx, dword ptr [rbp+0x3C]
+ mov r15, gword ptr [rbp+0x30]
+ ; gcrRegs +[r15]
+ mov r14, gword ptr [rbp+0x28]
; gcrRegs +[r14]
- mov r13, gword ptr [rbp+0x28]
- ; gcrRegs +[r13]
- mov ebx, dword ptr [rbp+0x24]
- ;; size=66 bbWeight=0.01 PerfScore 0.17
-G_M16914_IG02: ; bbWeight=0.01, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref
- mov r12d, dword ptr [r13+0x08]
- cmp r12d, ebx
- jle G_M16914_IG09
- ;; size=13 bbWeight=0.01 PerfScore 0.03
-G_M16914_IG03: ; bbWeight=0.01, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
- test ebx, ebx
- jl SHORT G_M16914_IG05
+ mov eax, dword ptr [rbp+0x24]
+ ;; size=65 bbWeight=0.01 PerfScore 0.17
+G_M16914_IG02: ; bbWeight=0.01, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov r13d, dword ptr [r14+0x08]
+ cmp r13d, eax
+ jle SHORT G_M16914_IG14
+ ;; size=9 bbWeight=0.01 PerfScore 0.03
+G_M16914_IG03: ; bbWeight=0.01, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+ test eax, eax
+ jl SHORT G_M16914_IG08
;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M16914_IG04: ; bbWeight=98.99, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
- mov edi, ebx
- mov rsi, gword ptr [r13+8*rdi+0x10]
+G_M16914_IG04: ; bbWeight=0.01, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
+ mov r12d, eax
+ ;; size=3 bbWeight=0.01 PerfScore 0.00
+G_M16914_IG05: ; bbWeight=98.99, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov rsi, gword ptr [r14+8*r12+0x10]
; gcrRegs +[rsi]
- cmp byte ptr [r14], r14b
- mov rdi, r14
+ cmp byte ptr [r15], r15b
+ mov rdi, r15
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rsi rdi]
; byrRegs +[rax]
test rax, rax
- jne SHORT G_M16914_IG07
+ jne SHORT G_M16914_IG12
xor edi, edi
- xor edi, r15d
- movzx r15, dil
- inc ebx
- cmp r12d, ebx
- jle SHORT G_M16914_IG09
- jmp SHORT G_M16914_IG04
- ;; size=42 bbWeight=98.99 PerfScore 1385.86
-G_M16914_IG05: ; bbWeight=1.00, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=24 bbWeight=98.99 PerfScore 965.15
+G_M16914_IG06: ; bbWeight=98.99, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
- cmp ebx, r12d
- jae SHORT G_M16914_IG06
- mov edi, ebx
- mov rsi, gword ptr [r13+8*rdi+0x10]
+ xor edi, ebx
+ movzx rbx, dil
+ inc r12d
+ cmp r13d, r12d
+ jg SHORT G_M16914_IG05
+ ;; size=14 bbWeight=98.99 PerfScore 197.98
+G_M16914_IG07: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r14-r15]
+ jmp SHORT G_M16914_IG14
+ ;; size=2 bbWeight=0.00 PerfScore 0.00
+G_M16914_IG08: ; bbWeight=0.00, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r14-r15]
+ mov r12d, eax
+ ;; size=3 bbWeight=0.00 PerfScore 0.00
+G_M16914_IG09: ; bbWeight=1.00, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+ cmp r12d, r13d
+ jae SHORT G_M16914_IG11
+ mov rsi, gword ptr [r14+8*r12+0x10]
; gcrRegs +[rsi]
- cmp byte ptr [r14], r14b
- mov rdi, r14
+ cmp byte ptr [r15], r15b
+ mov rdi, r15
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rsi rdi]
; byrRegs +[rax]
test rax, rax
- jne SHORT G_M16914_IG08
+ jne SHORT G_M16914_IG13
xor edi, edi
- xor edi, r15d
- movzx r15, dil
- inc ebx
- cmp r12d, ebx
- jle SHORT G_M16914_IG09
- jmp SHORT G_M16914_IG05
- ;; size=47 bbWeight=1.00 PerfScore 15.25
-G_M16914_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r13-r14]
+ ;; size=29 bbWeight=1.00 PerfScore 11.00
+G_M16914_IG10: ; bbWeight=1.00, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
+ xor edi, ebx
+ movzx rbx, dil
+ inc r12d
+ cmp r13d, r12d
+ jle SHORT G_M16914_IG14
+ jmp SHORT G_M16914_IG09
+ ;; size=16 bbWeight=1.00 PerfScore 4.00
+G_M16914_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14-r15]
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
-G_M16914_IG07: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r13-r14]
+G_M16914_IG12: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r14-r15]
mov edi, 1
- xor edi, r15d
- movzx r15, dil
- inc ebx
- cmp r12d, ebx
- jg SHORT G_M16914_IG04
- jmp SHORT G_M16914_IG09
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M16914_IG08: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M16914_IG06
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M16914_IG13: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
mov edi, 1
- mov eax, r15d
- xor eax, edi
- movzx r15, al
- inc ebx
- cmp r12d, ebx
- jg SHORT G_M16914_IG05
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M16914_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r13-r14]
- mov eax, r15d
- ;; size=3 bbWeight=0 PerfScore 0.00
-G_M16914_IG10: ; bbWeight=0, epilog, nogc, extend
+ jmp SHORT G_M16914_IG10
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M16914_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14-r15]
+ mov eax, ebx
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M16914_IG15: ; bbWeight=0, epilog, nogc, extend
add rsp, 120
pop rbx
pop r12
@@ -132,7 +136,7 @@ G_M16914_IG10: ; bbWeight=0, epilog, nogc, extend
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 237, prolog size 51, PerfScore 1401.32, instruction count 72, allocated bytes for code 237 (MethodHash=0a16bded) for method System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
+; Total bytes of code 205, prolog size 51, PerfScore 1178.35, instruction count 62, allocated bytes for code 205 (MethodHash=0a16bded) for method System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
; ============================================================
Unwind Info:
-32 (-13.50%) : 123489.dasm - System.Collections.PerfFrozenDictionaryString:TryGetValueTrueDictionary():ubyte:this (Tier1-OSR)
@@ -6,21 +6,23 @@
; optimized using Dynamic PGO
; rbp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 99.91
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 99.91
; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>
-; V01 loc0 [V01,T02] ( 9,199.98) ubyte -> r15
-; V02 loc1 [V02,T04] ( 4,199.98) ref -> r14 class-hnd <<unknown class>>
-; V03 loc2 [V03,T07] ( 3,100.00) ref -> r13 class-hnd exact <<unknown class>>
-; V04 loc3 [V04,T00] ( 17,400.98) int -> rbx
-; V05 loc4 [V05,T08] ( 1, 1 ) ref -> [rbp+0x18] ld-addr-op class-hnd tier0-frame <<unknown class>>
+; V01 loc0 [V01,T03] ( 5,199.98) ubyte -> rbx
+; V02 loc1 [V02,T04] ( 4,199.98) ref -> r15 class-hnd <<unknown class>>
+; V03 loc2 [V03,T07] ( 3,100.00) ref -> r14 class-hnd exact <<unknown class>>
+; V04 loc3 [V04,T10] ( 4, 0.03) int -> rax
+; V05 loc4 [V05,T09] ( 1, 1 ) ref -> [rbp+0x18] ld-addr-op class-hnd tier0-frame <<unknown class>>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T03] ( 8,199.98) ubyte -> rdi "Inline return value spill temp"
-; V08 tmp2 [V08,T01] ( 4,399.96) ref -> rsi class-hnd exact "Inlining Arg" <<unknown class>>
+; V07 tmp1 [V07,T02] ( 6,199.98) ubyte -> rdi "Inline return value spill temp"
+; V08 tmp2 [V08,T00] ( 4,399.96) ref -> rsi class-hnd exact "Inlining Arg" <<unknown class>>
; V09 tmp3 [V09,T05] ( 4,199.98) byref -> rax "Inline stloc first use temp"
-; V10 cse0 [V10,T06] ( 7,101.01) int -> r12 "CSE - aggressive"
+; V10 tmp4 [V10,T08] ( 6, 5.00) long -> r12 "Widened primary induction variable"
+; V11 tmp5 [V11,T01] ( 5,395.97) long -> r12 "Widened primary induction variable"
+; V12 cse0 [V12,T06] ( 5,101.01) int -> r13 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -34,94 +36,92 @@ G_M16914_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov qword ptr [rsp+0x80], r12
mov qword ptr [rsp+0x78], rbx
lea rbp, [rsp+0x30]
- mov r15d, dword ptr [rbp+0x3C]
- mov r14, gword ptr [rbp+0x30]
+ mov ebx, dword ptr [rbp+0x3C]
+ mov r15, gword ptr [rbp+0x30]
+ ; gcrRegs +[r15]
+ mov r14, gword ptr [rbp+0x28]
; gcrRegs +[r14]
- mov r13, gword ptr [rbp+0x28]
- ; gcrRegs +[r13]
- mov ebx, dword ptr [rbp+0x24]
- ;; size=66 bbWeight=0.01 PerfScore 0.17
-G_M16914_IG02: ; bbWeight=0.01, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref
- mov r12d, dword ptr [r13+0x08]
- cmp r12d, ebx
- jle G_M16914_IG09
- ;; size=13 bbWeight=0.01 PerfScore 0.03
-G_M16914_IG03: ; bbWeight=0.01, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
- test ebx, ebx
- jl SHORT G_M16914_IG05
+ mov eax, dword ptr [rbp+0x24]
+ ;; size=65 bbWeight=0.01 PerfScore 0.17
+G_M16914_IG02: ; bbWeight=0.01, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov r13d, dword ptr [r14+0x08]
+ cmp r13d, eax
+ jle SHORT G_M16914_IG13
+ ;; size=9 bbWeight=0.01 PerfScore 0.03
+G_M16914_IG03: ; bbWeight=0.01, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+ test eax, eax
+ jl SHORT G_M16914_IG07
;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M16914_IG04: ; bbWeight=98.99, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
- mov edi, ebx
- mov rsi, gword ptr [r13+8*rdi+0x10]
+G_M16914_IG04: ; bbWeight=0.01, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
+ mov r12d, eax
+ ;; size=3 bbWeight=0.01 PerfScore 0.00
+G_M16914_IG05: ; bbWeight=98.99, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov rsi, gword ptr [r14+8*r12+0x10]
; gcrRegs +[rsi]
- cmp byte ptr [r14], r14b
- mov rdi, r14
+ cmp byte ptr [r15], r15b
+ mov rdi, r15
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rsi rdi]
; byrRegs +[rax]
test rax, rax
- jne SHORT G_M16914_IG07
+ jne SHORT G_M16914_IG11
xor edi, edi
- xor edi, r15d
- movzx r15, dil
- inc ebx
- cmp r12d, ebx
- jle SHORT G_M16914_IG09
- jmp SHORT G_M16914_IG04
- ;; size=42 bbWeight=98.99 PerfScore 1385.86
-G_M16914_IG05: ; bbWeight=1.00, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=24 bbWeight=98.99 PerfScore 965.15
+G_M16914_IG06: ; bbWeight=98.99, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
- cmp ebx, r12d
- jae SHORT G_M16914_IG06
- mov edi, ebx
- mov rsi, gword ptr [r13+8*rdi+0x10]
- ; gcrRegs +[rsi]
- cmp byte ptr [r14], r14b
- mov rdi, r14
- ; gcrRegs +[rdi]
- call [<unknown method>]
- ; gcrRegs -[rsi rdi]
- ; byrRegs +[rax]
- test rax, rax
- jne SHORT G_M16914_IG08
- xor edi, edi
- xor edi, r15d
- movzx r15, dil
- inc ebx
- cmp r12d, ebx
- jle SHORT G_M16914_IG09
+ xor edi, ebx
+ movzx rbx, dil
+ inc r12d
+ cmp r13d, r12d
+ jle SHORT G_M16914_IG13
jmp SHORT G_M16914_IG05
- ;; size=47 bbWeight=1.00 PerfScore 15.25
-G_M16914_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r13-r14]
+ ;; size=16 bbWeight=98.99 PerfScore 395.96
+G_M16914_IG07: ; bbWeight=0.00, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
+ mov r12d, eax
+ ;; size=3 bbWeight=0.00 PerfScore 0.00
+G_M16914_IG08: ; bbWeight=1.00, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+ cmp r12d, r13d
+ jae SHORT G_M16914_IG10
+ mov rsi, gword ptr [r14+8*r12+0x10]
+ ; gcrRegs +[rsi]
+ cmp byte ptr [r15], r15b
+ mov rdi, r15
+ ; gcrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ; byrRegs +[rax]
+ test rax, rax
+ jne SHORT G_M16914_IG12
+ xor edi, edi
+ ;; size=29 bbWeight=1.00 PerfScore 11.00
+G_M16914_IG09: ; bbWeight=1.00, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
+ xor edi, ebx
+ movzx rbx, dil
+ inc r12d
+ cmp r13d, r12d
+ jle SHORT G_M16914_IG13
+ jmp SHORT G_M16914_IG08
+ ;; size=16 bbWeight=1.00 PerfScore 4.00
+G_M16914_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14-r15]
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
-G_M16914_IG07: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r13-r14]
+G_M16914_IG11: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r14-r15]
+ mov edi, 1
+ jmp SHORT G_M16914_IG06
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M16914_IG12: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
mov edi, 1
- xor edi, r15d
- movzx r15, dil
- inc ebx
- cmp r12d, ebx
- jg SHORT G_M16914_IG04
jmp SHORT G_M16914_IG09
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M16914_IG08: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
- mov edi, 1
- mov eax, r15d
- xor eax, edi
- movzx r15, al
- inc ebx
- cmp r12d, ebx
- jg SHORT G_M16914_IG05
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M16914_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r13-r14]
- mov eax, r15d
- ;; size=3 bbWeight=0 PerfScore 0.00
-G_M16914_IG10: ; bbWeight=0, epilog, nogc, extend
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M16914_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14-r15]
+ mov eax, ebx
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M16914_IG14: ; bbWeight=0, epilog, nogc, extend
add rsp, 120
pop rbx
pop r12
@@ -132,7 +132,7 @@ G_M16914_IG10: ; bbWeight=0, epilog, nogc, extend
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 237, prolog size 51, PerfScore 1401.32, instruction count 72, allocated bytes for code 237 (MethodHash=0a16bded) for method System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
+; Total bytes of code 205, prolog size 51, PerfScore 1376.33, instruction count 62, allocated bytes for code 205 (MethodHash=0a16bded) for method System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
; ============================================================
Unwind Info:
-32 (-13.50%) : 123533.dasm - System.Collections.PerfFrozenDictionaryString:TryGetValueTrueDictionary():ubyte:this (Tier1-OSR)
@@ -6,21 +6,23 @@
; optimized using Dynamic PGO
; rbp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 99.43
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 99.43
; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>
-; V01 loc0 [V01,T02] ( 9,199.98) ubyte -> r15
-; V02 loc1 [V02,T04] ( 4,199.98) ref -> r14 class-hnd <<unknown class>>
-; V03 loc2 [V03,T07] ( 3,100.00) ref -> r13 class-hnd exact <<unknown class>>
-; V04 loc3 [V04,T00] ( 17,400.98) int -> rbx
-; V05 loc4 [V05,T08] ( 1, 1 ) ref -> [rbp+0x18] ld-addr-op class-hnd tier0-frame <<unknown class>>
+; V01 loc0 [V01,T03] ( 5,199.98) ubyte -> rbx
+; V02 loc1 [V02,T04] ( 4,199.98) ref -> r15 class-hnd <<unknown class>>
+; V03 loc2 [V03,T07] ( 3,100.00) ref -> r14 class-hnd exact <<unknown class>>
+; V04 loc3 [V04,T10] ( 4, 0.03) int -> rax
+; V05 loc4 [V05,T09] ( 1, 1 ) ref -> [rbp+0x18] ld-addr-op class-hnd tier0-frame <<unknown class>>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T03] ( 8,199.98) ubyte -> rdi "Inline return value spill temp"
-; V08 tmp2 [V08,T01] ( 4,399.96) ref -> rsi class-hnd exact "Inlining Arg" <<unknown class>>
+; V07 tmp1 [V07,T02] ( 6,199.98) ubyte -> rdi "Inline return value spill temp"
+; V08 tmp2 [V08,T00] ( 4,399.96) ref -> rsi class-hnd exact "Inlining Arg" <<unknown class>>
; V09 tmp3 [V09,T05] ( 4,199.98) byref -> rax "Inline stloc first use temp"
-; V10 cse0 [V10,T06] ( 7,101.01) int -> r12 "CSE - aggressive"
+; V10 tmp4 [V10,T08] ( 6, 5.00) long -> r12 "Widened primary induction variable"
+; V11 tmp5 [V11,T01] ( 5,395.97) long -> r12 "Widened primary induction variable"
+; V12 cse0 [V12,T06] ( 5,101.01) int -> r13 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -34,94 +36,96 @@ G_M16914_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov qword ptr [rsp+0x80], r12
mov qword ptr [rsp+0x78], rbx
lea rbp, [rsp+0x30]
- mov r15d, dword ptr [rbp+0x3C]
- mov r14, gword ptr [rbp+0x30]
+ mov ebx, dword ptr [rbp+0x3C]
+ mov r15, gword ptr [rbp+0x30]
+ ; gcrRegs +[r15]
+ mov r14, gword ptr [rbp+0x28]
; gcrRegs +[r14]
- mov r13, gword ptr [rbp+0x28]
- ; gcrRegs +[r13]
- mov ebx, dword ptr [rbp+0x24]
- ;; size=66 bbWeight=0.01 PerfScore 0.17
-G_M16914_IG02: ; bbWeight=0.01, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref
- mov r12d, dword ptr [r13+0x08]
- cmp r12d, ebx
- jle G_M16914_IG09
- ;; size=13 bbWeight=0.01 PerfScore 0.03
-G_M16914_IG03: ; bbWeight=0.01, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
- test ebx, ebx
- jl SHORT G_M16914_IG05
+ mov eax, dword ptr [rbp+0x24]
+ ;; size=65 bbWeight=0.01 PerfScore 0.17
+G_M16914_IG02: ; bbWeight=0.01, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov r13d, dword ptr [r14+0x08]
+ cmp r13d, eax
+ jle SHORT G_M16914_IG14
+ ;; size=9 bbWeight=0.01 PerfScore 0.03
+G_M16914_IG03: ; bbWeight=0.01, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+ test eax, eax
+ jl SHORT G_M16914_IG08
;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M16914_IG04: ; bbWeight=98.99, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
- mov edi, ebx
- mov rsi, gword ptr [r13+8*rdi+0x10]
+G_M16914_IG04: ; bbWeight=0.01, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
+ mov r12d, eax
+ ;; size=3 bbWeight=0.01 PerfScore 0.00
+G_M16914_IG05: ; bbWeight=98.99, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov rsi, gword ptr [r14+8*r12+0x10]
; gcrRegs +[rsi]
- cmp byte ptr [r14], r14b
- mov rdi, r14
+ cmp byte ptr [r15], r15b
+ mov rdi, r15
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rsi rdi]
; byrRegs +[rax]
test rax, rax
- jne SHORT G_M16914_IG07
+ jne SHORT G_M16914_IG12
xor edi, edi
- xor edi, r15d
- movzx r15, dil
- inc ebx
- cmp r12d, ebx
- jle SHORT G_M16914_IG09
- jmp SHORT G_M16914_IG04
- ;; size=42 bbWeight=98.99 PerfScore 1385.86
-G_M16914_IG05: ; bbWeight=1.00, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=24 bbWeight=98.99 PerfScore 965.15
+G_M16914_IG06: ; bbWeight=98.99, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
- cmp ebx, r12d
- jae SHORT G_M16914_IG06
- mov edi, ebx
- mov rsi, gword ptr [r13+8*rdi+0x10]
+ xor edi, ebx
+ movzx rbx, dil
+ inc r12d
+ cmp r13d, r12d
+ jg SHORT G_M16914_IG05
+ ;; size=14 bbWeight=98.99 PerfScore 197.98
+G_M16914_IG07: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r14-r15]
+ jmp SHORT G_M16914_IG14
+ ;; size=2 bbWeight=0.00 PerfScore 0.00
+G_M16914_IG08: ; bbWeight=0.00, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r14-r15]
+ mov r12d, eax
+ ;; size=3 bbWeight=0.00 PerfScore 0.00
+G_M16914_IG09: ; bbWeight=1.00, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+ cmp r12d, r13d
+ jae SHORT G_M16914_IG11
+ mov rsi, gword ptr [r14+8*r12+0x10]
; gcrRegs +[rsi]
- cmp byte ptr [r14], r14b
- mov rdi, r14
+ cmp byte ptr [r15], r15b
+ mov rdi, r15
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rsi rdi]
; byrRegs +[rax]
test rax, rax
- jne SHORT G_M16914_IG08
+ jne SHORT G_M16914_IG13
xor edi, edi
- xor edi, r15d
- movzx r15, dil
- inc ebx
- cmp r12d, ebx
- jle SHORT G_M16914_IG09
- jmp SHORT G_M16914_IG05
- ;; size=47 bbWeight=1.00 PerfScore 15.25
-G_M16914_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r13-r14]
+ ;; size=29 bbWeight=1.00 PerfScore 11.00
+G_M16914_IG10: ; bbWeight=1.00, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
+ xor edi, ebx
+ movzx rbx, dil
+ inc r12d
+ cmp r13d, r12d
+ jle SHORT G_M16914_IG14
+ jmp SHORT G_M16914_IG09
+ ;; size=16 bbWeight=1.00 PerfScore 4.00
+G_M16914_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14-r15]
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
-G_M16914_IG07: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r13-r14]
+G_M16914_IG12: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r14-r15]
mov edi, 1
- xor edi, r15d
- movzx r15, dil
- inc ebx
- cmp r12d, ebx
- jg SHORT G_M16914_IG04
- jmp SHORT G_M16914_IG09
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M16914_IG08: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M16914_IG06
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M16914_IG13: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
mov edi, 1
- mov eax, r15d
- xor eax, edi
- movzx r15, al
- inc ebx
- cmp r12d, ebx
- jg SHORT G_M16914_IG05
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M16914_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r13-r14]
- mov eax, r15d
- ;; size=3 bbWeight=0 PerfScore 0.00
-G_M16914_IG10: ; bbWeight=0, epilog, nogc, extend
+ jmp SHORT G_M16914_IG10
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M16914_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14-r15]
+ mov eax, ebx
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M16914_IG15: ; bbWeight=0, epilog, nogc, extend
add rsp, 120
pop rbx
pop r12
@@ -132,7 +136,7 @@ G_M16914_IG10: ; bbWeight=0, epilog, nogc, extend
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 237, prolog size 51, PerfScore 1401.32, instruction count 72, allocated bytes for code 237 (MethodHash=0a16bded) for method System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
+; Total bytes of code 205, prolog size 51, PerfScore 1178.35, instruction count 62, allocated bytes for code 205 (MethodHash=0a16bded) for method System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
; ============================================================
Unwind Info:
+9 (+23.68%) : 79209.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
@@ -9,11 +9,12 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 5, 3 ) ref -> rdi class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
+; V00 arg0 [V00,T00] ( 6, 3 ) ref -> rdi class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
; V01 loc0 [V01,T01] ( 4, 1 ) int -> rax
-; V02 loc1 [V02,T02] ( 5, 0 ) int -> rcx
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
+; V05 tmp2 [V05,T02] ( 6, 0 ) long -> rcx "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -36,13 +37,14 @@ G_M16110_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 {
xor ecx, ecx
jmp SHORT G_M16110_IG06
;; size=4 bbWeight=0 PerfScore 0.00
-G_M16110_IG05: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- mov edx, ecx
- mov rdx, gword ptr [rdi+8*rdx+0x10]
+G_M16110_IG05: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ cmp ecx, dword ptr [rdi+0x08]
+ jae SHORT G_M16110_IG08
+ mov rdx, gword ptr [rdi+8*rcx+0x10]
; gcrRegs +[rdx]
add eax, dword ptr [rdx+0x3C]
inc ecx
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=0 PerfScore 0.00
G_M16110_IG06: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx]
cmp dword ptr [rdi+0x08], ecx
@@ -52,8 +54,14 @@ G_M16110_IG07: ; bbWeight=0, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0 PerfScore 0.00
+G_M16110_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rdi]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 38, prolog size 4, PerfScore 4.50, instruction count 18, allocated bytes for code 38 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
+; Total bytes of code 47, prolog size 4, PerfScore 4.50, instruction count 21, allocated bytes for code 47 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
; ============================================================
Unwind Info:
+9 (+23.68%) : 145173.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
@@ -9,11 +9,12 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 5, 3 ) ref -> rdi class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
+; V00 arg0 [V00,T00] ( 6, 3 ) ref -> rdi class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
; V01 loc0 [V01,T01] ( 4, 1 ) int -> rax
-; V02 loc1 [V02,T02] ( 5, 0 ) int -> rcx
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
+; V05 tmp2 [V05,T02] ( 6, 0 ) long -> rcx "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -36,13 +37,14 @@ G_M16110_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 {
xor ecx, ecx
jmp SHORT G_M16110_IG06
;; size=4 bbWeight=0 PerfScore 0.00
-G_M16110_IG05: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- mov edx, ecx
- mov rdx, gword ptr [rdi+8*rdx+0x10]
+G_M16110_IG05: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ cmp ecx, dword ptr [rdi+0x08]
+ jae SHORT G_M16110_IG08
+ mov rdx, gword ptr [rdi+8*rcx+0x10]
; gcrRegs +[rdx]
add eax, dword ptr [rdx+0x3C]
inc ecx
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=0 PerfScore 0.00
G_M16110_IG06: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx]
cmp dword ptr [rdi+0x08], ecx
@@ -52,8 +54,14 @@ G_M16110_IG07: ; bbWeight=0, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0 PerfScore 0.00
+G_M16110_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rdi]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 38, prolog size 4, PerfScore 4.50, instruction count 18, allocated bytes for code 38 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
+; Total bytes of code 47, prolog size 4, PerfScore 4.50, instruction count 21, allocated bytes for code 47 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
; ============================================================
Unwind Info:
+9 (+23.68%) : 147765.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
@@ -9,11 +9,12 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 5, 3 ) ref -> rdi class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
+; V00 arg0 [V00,T00] ( 6, 3 ) ref -> rdi class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
; V01 loc0 [V01,T01] ( 4, 1 ) int -> rax
-; V02 loc1 [V02,T02] ( 5, 0 ) int -> rcx
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
+; V05 tmp2 [V05,T02] ( 6, 0 ) long -> rcx "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -36,13 +37,14 @@ G_M16110_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 {
xor ecx, ecx
jmp SHORT G_M16110_IG06
;; size=4 bbWeight=0 PerfScore 0.00
-G_M16110_IG05: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- mov edx, ecx
- mov rdx, gword ptr [rdi+8*rdx+0x10]
+G_M16110_IG05: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ cmp ecx, dword ptr [rdi+0x08]
+ jae SHORT G_M16110_IG08
+ mov rdx, gword ptr [rdi+8*rcx+0x10]
; gcrRegs +[rdx]
add eax, dword ptr [rdx+0x3C]
inc ecx
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=0 PerfScore 0.00
G_M16110_IG06: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx]
cmp dword ptr [rdi+0x08], ecx
@@ -52,8 +54,14 @@ G_M16110_IG07: ; bbWeight=0, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0 PerfScore 0.00
+G_M16110_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rdi]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 38, prolog size 4, PerfScore 4.50, instruction count 18, allocated bytes for code 38 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
+; Total bytes of code 47, prolog size 4, PerfScore 4.50, instruction count 21, allocated bytes for code 47 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
; ============================================================
Unwind Info:
benchmarks.run_tiered.linux.x64.checked.mch
-35 (-15.22%) : 43458.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (Tier1)
@@ -11,7 +11,7 @@
; V00 this [V00,T06] ( 5, 11 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer>
; V01 arg1 [V01,T11] ( 4, 6.50) int -> r15 single-def
; V02 loc0 [V02,T10] ( 4, 9 ) ref -> r13 class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]>
-; V03 loc1 [V03,T00] ( 9, 32.50) int -> r12
+;* V03 loc1 [V03,T16] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T03] ( 2, 16 ) ref -> rdi class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo>
; V06 tmp2 [V06,T04] ( 2, 16 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo>
@@ -22,27 +22,26 @@
; V11 tmp7 [V11,T02] ( 3, 24 ) ref -> rsi "arr expr"
;* V12 tmp8 [V12,T13] ( 0, 0 ) ref -> zero-ref "arr expr"
; V13 tmp9 [V13,T05] ( 2, 16 ) int -> rsi "argument with side effect"
-; V14 cse0 [V14,T07] ( 3, 12 ) ref -> rsi "CSE - moderate"
-; V15 cse1 [V15,T15] ( 3, 1.50) int -> r14 "CSE - moderate"
-; V16 cse2 [V16,T08] ( 2, 8 ) ref -> rsi "CSE - moderate"
-; V17 cse3 [V17,T09] ( 2, 8 ) ref -> rsi "CSE - moderate"
-; V18 cse4 [V18,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
+; V14 tmp10 [V14,T00] ( 9, 32.50) long -> r14 "Widened primary induction variable"
+; V15 cse0 [V15,T07] ( 3, 12 ) ref -> rsi "CSE - moderate"
+; V16 cse1 [V16,T15] ( 3, 1.50) int -> r14 "CSE - moderate"
+; V17 cse2 [V17,T08] ( 2, 8 ) ref -> rsi "CSE - moderate"
+; V18 cse3 [V18,T09] ( 2, 8 ) ref -> rsi "CSE - moderate"
+; V19 cse4 [V19,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M22286_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
- push r12
push rbx
- push rax
- lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov rbx, rdi
; gcrRegs +[rbx]
mov r15d, esi
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=19 bbWeight=1 PerfScore 6.00
G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x10]
; gcrRegs +[rdi]
@@ -51,7 +50,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=13 bbWeight=1 PerfScore 3.25
G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
test r15d, r15d
- jle G_M22286_IG07
+ jle SHORT G_M22286_IG07
mov r14d, dword ptr [rdi+0x10]
movsxd rsi, r14d
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]
@@ -61,21 +60,20 @@ G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcr arg pop 0
mov r13, rax
; gcrRegs +[r13]
- xor r12d, r12d
test r14d, r14d
jle SHORT G_M22286_IG05
- ;; size=42 bbWeight=0.50 PerfScore 3.25
+ xor r14d, r14d
+ ;; size=38 bbWeight=0.50 PerfScore 3.25
G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rsi, gword ptr [rbx+0x10]
; gcrRegs +[rsi]
- cmp r12d, dword ptr [rsi+0x10]
- jae G_M22286_IG12
+ cmp r14d, dword ptr [rsi+0x10]
+ jae SHORT G_M22286_IG12
mov rsi, gword ptr [rsi+0x08]
- cmp r12d, dword ptr [rsi+0x08]
+ cmp r14d, dword ptr [rsi+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d
- mov rsi, gword ptr [rsi+8*rdi+0x10]
+ mov rsi, gword ptr [rsi+8*r14+0x10]
mov rdi, rsi
; gcrRegs +[rdi]
mov eax, r15d
@@ -85,67 +83,60 @@ G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {},
call [Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:WithOffset(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:this]
; gcrRegs -[rdi] +[rax]
; gcr arg pop 0
- cmp r12d, dword ptr [r13+0x08]
+ cmp r14d, dword ptr [r13+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d
- lea rdi, bword ptr [r13+8*rdi+0x10]
+ lea rdi, bword ptr [r13+8*r14+0x10]
; byrRegs +[rdi]
mov rsi, rax
; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- inc r12d
+ inc r14d
mov rax, gword ptr [rbx+0x10]
; gcrRegs +[rax]
- cmp r12d, dword ptr [rax+0x10]
+ cmp r14d, dword ptr [rax+0x10]
jl SHORT G_M22286_IG04
- ;; size=84 bbWeight=4 PerfScore 139.00
+ ;; size=74 bbWeight=4 PerfScore 137.00
G_M22286_IG05: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx]
mov rax, r13
; gcrRegs +[rax]
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M22286_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax r13] +[rdi]
cmp dword ptr [rdi], edi
;; size=2 bbWeight=0.50 PerfScore 1.50
G_M22286_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
tail.jmp [System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this]
; gcr arg pop 0
- ;; size=20 bbWeight=0.50 PerfScore 2.62
+ ;; size=14 bbWeight=0.50 PerfScore 2.25
G_M22286_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M22286_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
call CORINFO_HELP_RNGCHKFAIL
@@ -157,7 +148,7 @@ G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 230, prolog size 22, PerfScore 162.12, instruction count 76, allocated bytes for code 230 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (Tier1)
+; Total bytes of code 195, prolog size 19, PerfScore 157.00, instruction count 66, allocated bytes for code 195 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (Tier1)
; ============================================================
Unwind Info:
@@ -165,14 +156,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0B
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
-16 (-12.80%) : 61569.dasm - NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
@@ -8,41 +8,40 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T09] ( 5, 14 ) ref -> rdi class-hnd single-def <int[][]>
-; V01 arg1 [V01,T06] ( 4, 26 ) int -> rsi single-def
+; V00 arg0 [V00,T08] ( 5, 14 ) ref -> rdi class-hnd single-def <int[][]>
+; V01 arg1 [V01,T05] ( 4, 26 ) int -> rsi single-def
; V02 arg2 [V02,T10] ( 3, 10 ) int -> rdx single-def
-; V03 loc0 [V03,T05] ( 5, 32 ) int -> rcx
-; V04 loc1 [V04,T00] ( 8,106 ) int -> rax
+; V03 loc0 [V03,T12] ( 1, 0.01) int -> rcx
+; V04 loc1 [V04,T09] ( 3, 14 ) int -> rax
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <int[]>
;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref "Strict ordering of exceptions for Array store"
; V08 tmp3 [V08,T01] ( 3, 96 ) ref -> r10 class-hnd "Strict ordering of exceptions for Array store" <int[]>
; V09 tmp4 [V09,T03] ( 2, 64 ) int -> r11 "Strict ordering of exceptions for Array store"
; V10 tmp5 [V10,T02] ( 3, 96 ) ref -> r11 "arr expr"
-; V11 cse0 [V11,T07] ( 2, 20 ) ref -> r8 hoist "CSE - aggressive"
-; V12 cse1 [V12,T08] ( 2, 20 ) ref -> r9 hoist "CSE - aggressive"
-; V13 cse2 [V13,T11] ( 2, 8 ) int -> r8 hoist "CSE - aggressive"
-; V14 cse3 [V14,T12] ( 2, 8 ) long -> r9 hoist "CSE - aggressive"
-; V15 cse4 [V15,T04] ( 3, 48 ) long -> rbx "CSE - aggressive"
+; V11 tmp6 [V11,T04] ( 6, 32.01) long -> rcx "Widened primary induction variable"
+; V12 tmp7 [V12,T00] ( 8,116 ) long -> rax "Widened primary induction variable"
+; V13 cse0 [V13,T06] ( 2, 20 ) ref -> r8 hoist "CSE - aggressive"
+; V14 cse1 [V14,T07] ( 2, 20 ) ref -> r9 hoist "CSE - aggressive"
+; V15 cse2 [V15,T11] ( 2, 8 ) int -> r8 hoist "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M12699_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
mov rax, qword ptr [rbp]
push rax
- sub rsp, 16
- mov qword ptr [rsp+0x88], rbx
- lea rbp, [rsp+0x10]
+ mov rbp, rsp
mov rdi, gword ptr [rbp+0x50]
; gcrRegs +[rdi]
mov esi, dword ptr [rbp+0x4C]
mov edx, dword ptr [rbp+0x48]
mov ecx, dword ptr [rbp+0x44]
mov eax, dword ptr [rbp+0x40]
- ;; size=38 bbWeight=0.01 PerfScore 0.15
+ ;; size=24 bbWeight=0.01 PerfScore 0.13
G_M12699_IG02: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ mov ecx, ecx
jmp SHORT G_M12699_IG04
- ;; size=2 bbWeight=0.01 PerfScore 0.02
+ ;; size=4 bbWeight=0.01 PerfScore 0.02
G_M12699_IG03: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
xor eax, eax
;; size=2 bbWeight=2 PerfScore 0.50
@@ -51,15 +50,15 @@ G_M12699_IG04: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
jge SHORT G_M12699_IG07
;; size=4 bbWeight=8 PerfScore 10.00
G_M12699_IG05: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ mov eax, eax
mov r8d, dword ptr [rdi+0x08]
- mov r9d, ecx
cmp ecx, r8d
jae SHORT G_M12699_IG09
- mov r8, gword ptr [rdi+8*r9+0x10]
+ mov r8, gword ptr [rdi+8*rcx+0x10]
; gcrRegs +[r8]
mov r9, gword ptr [rdi+0x10]
; gcrRegs +[r9]
- ;; size=21 bbWeight=4 PerfScore 30.00
+ ;; size=20 bbWeight=4 PerfScore 30.00
G_M12699_IG06: ; bbWeight=16, gcrefRegs=0380 {rdi r8 r9}, byrefRegs=0000 {}, byref, isz
mov r10, r8
; gcrRegs +[r10]
@@ -67,16 +66,15 @@ G_M12699_IG06: ; bbWeight=16, gcrefRegs=0380 {rdi r8 r9}, byrefRegs=0000
; gcrRegs +[r11]
cmp eax, dword ptr [r11+0x08]
jae SHORT G_M12699_IG09
- mov ebx, eax
- mov r11d, dword ptr [r11+4*rbx+0x10]
+ mov r11d, dword ptr [r11+4*rax+0x10]
; gcrRegs -[r11]
cmp eax, dword ptr [r10+0x08]
jae SHORT G_M12699_IG09
- mov dword ptr [r10+4*rbx+0x10], r11d
+ mov dword ptr [r10+4*rax+0x10], r11d
inc eax
cmp eax, esi
jl SHORT G_M12699_IG06
- ;; size=36 bbWeight=16 PerfScore 212.00
+ ;; size=34 bbWeight=16 PerfScore 208.00
G_M12699_IG07: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r8-r10]
inc ecx
@@ -85,18 +83,17 @@ G_M12699_IG07: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
;; size=6 bbWeight=8 PerfScore 12.00
G_M12699_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdi]
- add rsp, 136
- pop rbx
+ add rsp, 128
pop rbp
ret
- ;; size=10 bbWeight=1 PerfScore 2.25
+ ;; size=9 bbWeight=1 PerfScore 1.75
G_M12699_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 125, prolog size 38, PerfScore 266.92, instruction count 41, allocated bytes for code 125 (MethodHash=6a3cce64) for method NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
+; Total bytes of code 109, prolog size 24, PerfScore 262.40, instruction count 38, allocated bytes for code 109 (MethodHash=6a3cce64) for method NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -104,14 +101,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x11
- CountOfUnwindCodes: 6
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x11 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
- Scaled Small Offset: 17 * 8 = 136 = 0x00088
- CodeOffset: 0x09 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
CodeOffset: 0x00 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 14 * 8 + 8 = 120 = 0x78
CodeOffset: 0x00 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-36 (-11.80%) : 56030.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
@@ -8,46 +8,46 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T11] ( 9, 30.08) ref -> rdi class-hnd single-def <int[][]>
-; V01 arg1 [V01,T08] ( 9, 46 ) int -> rsi single-def
-; V02 loc0 [V02,T07] ( 10, 48.24) int -> rcx
-; V03 loc1 [V03,T02] ( 17, 94.64) int -> rax
-; V04 loc2 [V04,T12] ( 4, 32 ) int -> rbx
+; V00 arg0 [V00,T09] ( 9, 30.08) ref -> rdi class-hnd single-def <int[][]>
+; V01 arg1 [V01,T07] ( 9, 46 ) int -> rsi single-def
+; V02 loc0 [V02,T18] ( 1, 0.01) int -> rcx
+; V03 loc1 [V03,T14] ( 5, 18.04) int -> rax
+; V04 loc2 [V04,T10] ( 4, 32 ) int -> r11
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T00] ( 6, 96 ) ref -> r11 class-hnd "Strict ordering of exceptions for Array store" <int[]>
-; V07 tmp2 [V07,T05] ( 4, 64 ) int -> r13 "Strict ordering of exceptions for Array store"
-; V08 tmp3 [V08,T03] ( 5, 64.32) ref -> r11 "arr expr"
-; V09 tmp4 [V09,T01] ( 6, 96 ) ref -> r14 "arr expr"
-; V10 tmp5 [V10,T04] ( 5, 64.32) ref -> r15 "arr expr"
-; V11 cse0 [V11,T15] ( 5, 20.20) ref -> r10 hoist multi-def "CSE - moderate"
-; V12 cse1 [V12,T17] ( 3, 0.48) ref -> r15 "CSE - conservative"
-; V13 cse2 [V13,T13] ( 7, 31.92) ref -> r9 multi-def "CSE - moderate"
-; V14 cse3 [V14,T09] ( 3, 47.52) ref -> r15 "CSE - moderate"
-; V15 cse4 [V15,T16] ( 6, 12.24) int -> rdx hoist multi-def "CSE - moderate"
-; V16 cse5 [V16,T14] ( 2, 31.68) int -> r13 "CSE - moderate"
-; V17 cse6 [V17,T10] ( 8, 40.08) long -> r8 hoist multi-def "CSE - moderate"
-; V18 cse7 [V18,T06] ( 4, 63.36) long -> rdx "CSE - moderate"
+; V06 tmp1 [V06,T01] ( 6, 96 ) ref -> r10 class-hnd "Strict ordering of exceptions for Array store" <int[]>
+; V07 tmp2 [V07,T06] ( 4, 64 ) int -> r15 "Strict ordering of exceptions for Array store"
+; V08 tmp3 [V08,T04] ( 5, 64.32) ref -> r10 "arr expr"
+; V09 tmp4 [V09,T02] ( 6, 96 ) ref -> rbx "arr expr"
+; V10 tmp5 [V10,T05] ( 5, 64.32) ref -> registers "arr expr"
+; V11 tmp6 [V11,T03] ( 15, 80.25) long -> rcx "Widened primary induction variable"
+; V12 tmp7 [V12,T16] ( 10, 1.48) long -> rax "Widened primary induction variable"
+; V13 tmp8 [V13,T00] ( 8,114.88) long -> rax "Widened primary induction variable"
+; V14 cse0 [V14,T13] ( 5, 20.20) ref -> r9 hoist multi-def "CSE - moderate"
+; V15 cse1 [V15,T17] ( 3, 0.48) ref -> r8 "CSE - conservative"
+; V16 cse2 [V16,T11] ( 7, 31.92) ref -> r8 multi-def "CSE - moderate"
+; V17 cse3 [V17,T08] ( 3, 47.52) ref -> rdx "CSE - moderate"
+; V18 cse4 [V18,T15] ( 6, 12.24) int -> rdx hoist multi-def "CSE - moderate"
+; V19 cse5 [V19,T12] ( 2, 31.68) int -> r15 "CSE - moderate"
;
; Lcl frame size = 0
G_M43574_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
mov rax, qword ptr [rbp]
push rax
- sub rsp, 32
- mov qword ptr [rsp+0x88], r15
- mov qword ptr [rsp+0x80], r14
- mov qword ptr [rsp+0x78], r13
+ sub rsp, 16
+ mov qword ptr [rsp+0x78], r15
mov qword ptr [rsp+0x70], rbx
- lea rbp, [rsp+0x20]
+ lea rbp, [rsp+0x10]
mov rdi, gword ptr [rbp+0x40]
; gcrRegs +[rdi]
mov esi, dword ptr [rbp+0x3C]
mov ecx, dword ptr [rbp+0x38]
mov eax, dword ptr [rbp+0x34]
- ;; size=53 bbWeight=0.01 PerfScore 0.16
+ ;; size=37 bbWeight=0.01 PerfScore 0.14
G_M43574_IG02: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ mov ecx, ecx
jmp SHORT G_M43574_IG04
- ;; size=2 bbWeight=0.01 PerfScore 0.02
+ ;; size=4 bbWeight=0.01 PerfScore 0.02
G_M43574_IG03: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=2 PerfScore 0.50
@@ -61,89 +61,85 @@ G_M43574_IG05: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
mov edx, dword ptr [rdi+0x08]
cmp edx, ecx
jbe SHORT G_M43574_IG08
- mov r8d, ecx
- mov r9, gword ptr [rdi+8*r8+0x10]
- ; gcrRegs +[r9]
- test r9, r9
+ mov r8, gword ptr [rdi+8*rcx+0x10]
+ ; gcrRegs +[r8]
+ test r8, r8
je SHORT G_M43574_IG08
- mov r10d, eax
- or r10d, esi
+ mov r9d, eax
+ or r9d, esi
jl SHORT G_M43574_IG08
- cmp dword ptr [r9+0x08], esi
+ cmp dword ptr [r8+0x08], esi
jle SHORT G_M43574_IG08
cmp edx, esi
jle SHORT G_M43574_IG08
- mov r10, r9
+ mov eax, eax
+ mov r9, r8
+ ; gcrRegs +[r9]
+ ;; size=45 bbWeight=4 PerfScore 60.00
+G_M43574_IG06: ; bbWeight=15.84, gcrefRegs=0380 {rdi r8 r9}, byrefRegs=0000 {}, byref, isz
+ mov r10, r8
; gcrRegs +[r10]
- ;; size=46 bbWeight=4 PerfScore 60.00
-G_M43574_IG06: ; bbWeight=15.84, gcrefRegs=0680 {rdi r9 r10}, byrefRegs=0000 {}, byref, isz
- mov r11, r9
- ; gcrRegs +[r11]
- mov edx, eax
- mov ebx, dword ptr [r11+4*rdx+0x10]
- mov r11, r10
- mov r15, gword ptr [rdi+8*rdx+0x10]
- ; gcrRegs +[r15]
- mov r14, r15
- ; gcrRegs +[r14]
- mov r13d, dword ptr [r14+0x08]
- cmp ecx, r13d
+ mov r11d, dword ptr [r10+4*rax+0x10]
+ mov r10, r9
+ mov rdx, gword ptr [rdi+8*rax+0x10]
+ ; gcrRegs +[rdx]
+ mov rbx, rdx
+ ; gcrRegs +[rbx]
+ mov r15d, dword ptr [rbx+0x08]
+ cmp ecx, r15d
jae G_M43574_IG12
- mov r13d, dword ptr [r14+4*r8+0x10]
- cmp eax, dword ptr [r11+0x08]
- jae G_M43574_IG12
- mov dword ptr [r11+4*rdx+0x10], r13d
- mov dword ptr [r15+4*r8+0x10], ebx
+ mov r15d, dword ptr [rbx+4*rcx+0x10]
+ cmp eax, dword ptr [r10+0x08]
+ jae SHORT G_M43574_IG12
+ mov dword ptr [r10+4*rax+0x10], r15d
+ mov dword ptr [rdx+4*rcx+0x10], r11d
inc eax
cmp eax, esi
jle SHORT G_M43574_IG06
- ;; size=65 bbWeight=15.84 PerfScore 281.16
+ ;; size=59 bbWeight=15.84 PerfScore 277.20
G_M43574_IG07: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r9-r11 r14-r15]
+ ; gcrRegs -[rdx rbx r8-r10]
jmp SHORT G_M43574_IG10
;; size=2 bbWeight=8 PerfScore 16.00
G_M43574_IG08: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ mov eax, eax
mov edx, dword ptr [rdi+0x08]
- mov r8d, ecx
cmp ecx, edx
jae SHORT G_M43574_IG12
- mov r9, gword ptr [rdi+8*r8+0x10]
+ mov r8, gword ptr [rdi+8*rcx+0x10]
+ ; gcrRegs +[r8]
+ mov r9, r8
; gcrRegs +[r9]
+ ;; size=17 bbWeight=0.04 PerfScore 0.23
+G_M43574_IG09: ; bbWeight=0.16, gcrefRegs=0280 {rdi r9}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r8]
mov r10, r9
; gcrRegs +[r10]
- ;; size=18 bbWeight=0.04 PerfScore 0.23
-G_M43574_IG09: ; bbWeight=0.16, gcrefRegs=0480 {rdi r10}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r9]
- mov r11, r10
- ; gcrRegs +[r11]
- cmp eax, dword ptr [r11+0x08]
+ cmp eax, dword ptr [r10+0x08]
jae SHORT G_M43574_IG12
- mov r9d, eax
- mov ebx, dword ptr [r11+4*r9+0x10]
- mov r11, r10
+ mov r11d, dword ptr [r10+4*rax+0x10]
+ mov r10, r9
cmp eax, edx
jae SHORT G_M43574_IG12
- mov r9d, eax
- mov r15, gword ptr [rdi+8*r9+0x10]
- ; gcrRegs +[r15]
- mov r14, r15
- ; gcrRegs +[r14]
- cmp ecx, dword ptr [r14+0x08]
+ mov r8, gword ptr [rdi+8*rax+0x10]
+ ; gcrRegs +[r8]
+ mov rbx, r8
+ ; gcrRegs +[rbx]
+ cmp ecx, dword ptr [rbx+0x08]
jae SHORT G_M43574_IG12
- mov r13d, dword ptr [r14+4*r8+0x10]
- cmp eax, dword ptr [r11+0x08]
+ mov r15d, dword ptr [rbx+4*rcx+0x10]
+ cmp eax, dword ptr [r10+0x08]
jae SHORT G_M43574_IG12
- mov r9d, eax
- mov dword ptr [r11+4*r9+0x10], r13d
- cmp ecx, dword ptr [r15+0x08]
+ mov dword ptr [r10+4*rax+0x10], r15d
+ cmp ecx, dword ptr [r8+0x08]
jae SHORT G_M43574_IG12
- mov dword ptr [r15+4*r8+0x10], ebx
+ mov dword ptr [r8+4*rcx+0x10], r11d
inc eax
cmp eax, esi
jle SHORT G_M43574_IG09
- ;; size=77 bbWeight=0.16 PerfScore 4.52
+ ;; size=67 bbWeight=0.16 PerfScore 4.40
G_M43574_IG10: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r10-r11 r14-r15]
+ ; gcrRegs -[rbx r8-r10]
inc ecx
cmp ecx, esi
jle G_M43574_IG03
@@ -152,19 +148,17 @@ G_M43574_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs -[rdi]
add rsp, 112
pop rbx
- pop r13
- pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=1 PerfScore 3.75
+ ;; size=9 bbWeight=1 PerfScore 2.75
G_M43574_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 305, prolog size 53, PerfScore 388.34, instruction count 93, allocated bytes for code 305 (MethodHash=d41955c9) for method Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
+; Total bytes of code 269, prolog size 37, PerfScore 383.24, instruction count 86, allocated bytes for code 269 (MethodHash=d41955c9) for method Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -172,20 +166,16 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x23
- CountOfUnwindCodes: 12
+ SizeOfProlog : 0x13
+ CountOfUnwindCodes: 8
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x23 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ CodeOffset: 0x13 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
Scaled Small Offset: 14 * 8 = 112 = 0x00070
- CodeOffset: 0x1E UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r13 (13)
+ CodeOffset: 0x0E UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r15 (15)
Scaled Small Offset: 15 * 8 = 120 = 0x00078
...
+8 (+16.33%) : 47059.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (Tier1)
@@ -9,11 +9,12 @@
;
; V00 arg0 [V00,T02] ( 4, 6.96) ref -> rdi class-hnd single-def <System.String>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-; V02 loc0 [V02,T00] ( 5, 16.34) int -> rax
+;* V02 loc0 [V02,T04] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T04] ( 2, 4.96) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T03] ( 4, 6.46) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V06 cse0 [V06,T01] ( 3, 11.88) long -> rcx "CSE - aggressive"
+; V04 tmp1 [V04,T03] ( 2, 4.96) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V05 tmp2 [V05,T01] ( 5, 10.42) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+;* V06 tmp3 [V06,T05] ( 0, 0 ) long -> zero-ref "Widened primary induction variable"
+; V07 tmp4 [V07,T00] ( 7, 24.26) long -> rax "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -39,20 +40,21 @@ G_M50292_IG04: ; bbWeight=0.50, epilog, nogc, extend
G_M50292_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, gcvars, byref, isz
; gcrRegs +[rdi]
; byrRegs +[rsi]
- xor eax, eax
test edx, edx
jle SHORT G_M50292_IG07
+ xor eax, eax
;; size=6 bbWeight=0.50 PerfScore 0.75
G_M50292_IG06: ; bbWeight=3.96, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
- mov ecx, eax
- movzx r8, byte ptr [rsi+rcx]
- movzx rcx, word ptr [rdi+2*rcx+0x0C]
- cmp r8d, ecx
+ cmp eax, edx
+ jae SHORT G_M50292_IG09
+ movzx rcx, byte ptr [rsi+rax]
+ movzx r8, word ptr [rdi+2*rax+0x0C]
+ cmp ecx, r8d
jne SHORT G_M50292_IG03
inc eax
cmp eax, edx
jl SHORT G_M50292_IG06
- ;; size=23 bbWeight=3.96 PerfScore 27.72
+ ;; size=25 bbWeight=3.96 PerfScore 31.68
G_M50292_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
; byrRegs -[rsi]
@@ -62,8 +64,13 @@ G_M50292_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M50292_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 49, prolog size 4, PerfScore 35.47, instruction count 21, allocated bytes for code 49 (MethodHash=8c563b8b) for method Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (Tier1)
+; Total bytes of code 57, prolog size 4, PerfScore 39.43, instruction count 24, allocated bytes for code 57 (MethodHash=8c563b8b) for method Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (Tier1)
; ============================================================
Unwind Info:
+8 (+21.62%) : 48504.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
@@ -8,11 +8,12 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 loc0 [V01,T01] ( 4, 10 ) int -> rax
-; V02 loc1 [V02,T00] ( 5, 17 ) int -> rcx
+; V01 loc0 [V01,T02] ( 4, 10 ) int -> rax
+;* V02 loc1 [V02,T04] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp2 [V05,T01] ( 4, 10 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T00] ( 6, 21 ) long -> rcx "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -23,26 +24,32 @@ G_M53167_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M53167_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
; byrRegs +[rdi]
mov eax, 0xD1FFAB1E
- xor ecx, ecx
test esi, esi
jle SHORT G_M53167_IG04
+ xor ecx, ecx
;; size=11 bbWeight=1 PerfScore 1.75
G_M53167_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov edx, ecx
- movzx rdx, byte ptr [rdi+rdx]
+ cmp ecx, esi
+ jae SHORT G_M53167_IG05
+ movzx rdx, byte ptr [rdi+rcx]
xor eax, edx
imul eax, eax, 0xD1FFAB1E
inc ecx
cmp ecx, esi
jl SHORT G_M53167_IG03
- ;; size=20 bbWeight=4 PerfScore 24.00
+ ;; size=22 bbWeight=4 PerfScore 28.00
G_M53167_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rdi]
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
+G_M53167_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 37, prolog size 4, PerfScore 28.50, instruction count 15, allocated bytes for code 37 (MethodHash=48b13050) for method System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
+; Total bytes of code 45, prolog size 4, PerfScore 32.50, instruction count 18, allocated bytes for code 45 (MethodHash=48b13050) for method System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
; ============================================================
Unwind Info:
+8 (+23.53%) : 51828.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
@@ -9,10 +9,11 @@
;
; V00 arg0 [V00,T01] ( 5, 11 ) int -> rdi
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 17 ) int -> rax
+;* V02 loc0 [V02,T04] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V05 tmp2 [V05,T02] ( 4, 10 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T00] ( 6, 21 ) long -> rax "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -22,19 +23,20 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=4 bbWeight=1 PerfScore 1.25
G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
; byrRegs +[rsi]
- xor eax, eax
test edx, edx
jle SHORT G_M1770_IG04
+ xor eax, eax
;; size=6 bbWeight=1 PerfScore 1.50
G_M1770_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
- mov ecx, eax
- movzx rcx, word ptr [rsi+2*rcx]
+ cmp eax, edx
+ jae SHORT G_M1770_IG06
+ movzx rcx, word ptr [rsi+2*rax]
xor edi, ecx
imul edi, edi, 0xD1FFAB1E
inc eax
cmp eax, edx
jl SHORT G_M1770_IG03
- ;; size=20 bbWeight=4 PerfScore 24.00
+ ;; size=22 bbWeight=4 PerfScore 28.00
G_M1770_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rsi]
mov eax, edi
@@ -43,8 +45,13 @@ G_M1770_IG05: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
+G_M1770_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 34, prolog size 4, PerfScore 28.50, instruction count 15, allocated bytes for code 34 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
+; Total bytes of code 42, prolog size 4, PerfScore 32.50, instruction count 18, allocated bytes for code 42 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
; ============================================================
Unwind Info:
coreclr_tests.run.linux.x64.checked.mch
-11 (-18.03%) : 592287.dasm - test:test_001() (FullOpts)
@@ -7,49 +7,46 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 2, 1.04) ref -> rax class-hnd exact single-def <<unknown class>>
-; V01 loc1 [V01,T01] ( 6, 0.24) int -> rbx must-init
+; V00 loc0 [V00,T01] ( 2, 1.04) ref -> rax class-hnd exact single-def <<unknown class>>
+;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 tmp1 [V03,T00] ( 7, 1.24) long -> rcx "Widened primary induction variable"
+;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "Widened primary induction variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M18991_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- push rbx
- push rax
- lea rbp, [rsp+0x10]
- xor ebx, ebx
- ;; size=10 bbWeight=1 PerfScore 3.75
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M18991_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; <unknown class>
mov esi, 100
call CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[rax]
; gcr arg pop 0
- ;; size=20 bbWeight=1 PerfScore 1.50
+ xor ecx, ecx
+ ;; size=22 bbWeight=1 PerfScore 1.75
G_M18991_IG03: ; bbWeight=0.04, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- cmp ebx, 100
+ cmp ecx, 100
jae SHORT G_M18991_IG05
- mov ecx, ebx
- mov dword ptr [rax+4*rcx+0x10], ebx
- inc ebx
- cmp ebx, 101
+ mov dword ptr [rax+4*rcx+0x10], ecx
+ inc ecx
+ cmp ecx, 101
jl SHORT G_M18991_IG03
- ;; size=18 bbWeight=0.04 PerfScore 0.16
+ ;; size=16 bbWeight=0.04 PerfScore 0.15
G_M18991_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rax]
- add rsp, 8
- pop rbx
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=2 bbWeight=1 PerfScore 1.50
G_M18991_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 61, prolog size 10, PerfScore 7.66, instruction count 21, allocated bytes for code 61 (MethodHash=f2f8b5d0) for method test:test_001() (FullOpts)
+; Total bytes of code 50, prolog size 4, PerfScore 4.65, instruction count 16, allocated bytes for code 50 (MethodHash=f2f8b5d0) for method test:test_001() (FullOpts)
; ============================================================
Unwind Info:
@@ -57,11 +54,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-11 (-18.03%) : 592307.dasm - test:test_021() (FullOpts)
@@ -7,49 +7,46 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 2, 1.04) ref -> rax class-hnd exact single-def <<unknown class>>
-; V01 loc1 [V01,T01] ( 6, 0.24) int -> rbx must-init
+; V00 loc0 [V00,T01] ( 2, 1.04) ref -> rax class-hnd exact single-def <<unknown class>>
+;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 tmp1 [V03,T00] ( 7, 1.24) long -> rcx "Widened primary induction variable"
+;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "Widened primary induction variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M12653_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- push rbx
- push rax
- lea rbp, [rsp+0x10]
- xor ebx, ebx
- ;; size=10 bbWeight=1 PerfScore 3.75
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M12653_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; <unknown class>
mov esi, 100
call CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[rax]
; gcr arg pop 0
- ;; size=20 bbWeight=1 PerfScore 1.50
+ xor ecx, ecx
+ ;; size=22 bbWeight=1 PerfScore 1.75
G_M12653_IG03: ; bbWeight=0.04, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- cmp ebx, 100
+ cmp ecx, 100
jae SHORT G_M12653_IG05
- mov ecx, ebx
- mov dword ptr [rax+4*rcx+0x10], ebx
- inc ebx
- cmp ebx, 101
+ mov dword ptr [rax+4*rcx+0x10], ecx
+ inc ecx
+ cmp ecx, 101
jl SHORT G_M12653_IG03
- ;; size=18 bbWeight=0.04 PerfScore 0.16
+ ;; size=16 bbWeight=0.04 PerfScore 0.15
G_M12653_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rax]
- add rsp, 8
- pop rbx
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=2 bbWeight=1 PerfScore 1.50
G_M12653_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 61, prolog size 10, PerfScore 7.66, instruction count 21, allocated bytes for code 61 (MethodHash=f2f9ce92) for method test:test_021() (FullOpts)
+; Total bytes of code 50, prolog size 4, PerfScore 4.65, instruction count 16, allocated bytes for code 50 (MethodHash=f2f9ce92) for method test:test_021() (FullOpts)
; ============================================================
Unwind Info:
@@ -57,11 +54,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-11 (-18.03%) : 592288.dasm - test:test_002() (FullOpts)
@@ -7,49 +7,46 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 2, 1.04) ref -> rax class-hnd exact single-def <<unknown class>>
-; V01 loc1 [V01,T01] ( 6, 0.24) int -> rbx must-init
+; V00 loc0 [V00,T01] ( 2, 1.04) ref -> rax class-hnd exact single-def <<unknown class>>
+;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 tmp1 [V03,T00] ( 7, 1.24) long -> rcx "Widened primary induction variable"
+;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "Widened primary induction variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M15788_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- push rbx
- push rax
- lea rbp, [rsp+0x10]
- xor ebx, ebx
- ;; size=10 bbWeight=1 PerfScore 3.75
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M15788_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; <unknown class>
mov esi, 100
call CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[rax]
; gcr arg pop 0
- ;; size=20 bbWeight=1 PerfScore 1.50
+ xor ecx, ecx
+ ;; size=22 bbWeight=1 PerfScore 1.75
G_M15788_IG03: ; bbWeight=0.04, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- cmp ebx, 100
+ cmp ecx, 100
jae SHORT G_M15788_IG05
- mov ecx, ebx
- mov dword ptr [rax+4*rcx+0x10], ebx
- inc ebx
- cmp ebx, 100
+ mov dword ptr [rax+4*rcx+0x10], ecx
+ inc ecx
+ cmp ecx, 100
jle SHORT G_M15788_IG03
- ;; size=18 bbWeight=0.04 PerfScore 0.16
+ ;; size=16 bbWeight=0.04 PerfScore 0.15
G_M15788_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rax]
- add rsp, 8
- pop rbx
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=2 bbWeight=1 PerfScore 1.50
G_M15788_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 61, prolog size 10, PerfScore 7.66, instruction count 21, allocated bytes for code 61 (MethodHash=f2f8c253) for method test:test_002() (FullOpts)
+; Total bytes of code 50, prolog size 4, PerfScore 4.65, instruction count 16, allocated bytes for code 50 (MethodHash=f2f8c253) for method test:test_002() (FullOpts)
; ============================================================
Unwind Info:
@@ -57,11 +54,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+8 (+34.78%) : 502680.dasm - Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
@@ -8,10 +8,11 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 loc0 [V01,T00] ( 6, 21 ) int -> rax
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3, 6 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4, 10 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp3 [V05,T00] ( 7, 25 ) long -> rax "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -21,24 +22,30 @@ G_M31126_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=4 bbWeight=1 PerfScore 1.25
G_M31126_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
; byrRegs +[rdi]
- xor eax, eax
test esi, esi
jle SHORT G_M31126_IG04
+ xor eax, eax
;; size=6 bbWeight=1 PerfScore 1.50
G_M31126_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov ecx, eax
- mov byte ptr [rdi+rcx], al
+ cmp eax, esi
+ jae SHORT G_M31126_IG05
+ mov byte ptr [rdi+rax], al
inc eax
cmp eax, esi
jl SHORT G_M31126_IG03
- ;; size=11 bbWeight=4 PerfScore 11.00
+ ;; size=13 bbWeight=4 PerfScore 15.00
G_M31126_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rdi]
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
+G_M31126_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 23, prolog size 4, PerfScore 15.25, instruction count 12, allocated bytes for code 23 (MethodHash=c32d8669) for method Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
+; Total bytes of code 31, prolog size 4, PerfScore 19.25, instruction count 15, allocated bytes for code 31 (MethodHash=c32d8669) for method Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
; ============================================================
Unwind Info:
+14 (+45.16%) : 501705.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
@@ -8,12 +8,13 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-;* V01 loc0 [V01,T04] ( 0, 0 ) int -> zero-ref single-def
-; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> rax
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> rcx
+; V01 loc0 [V01,T04] ( 2, 5 ) int -> rax single-def
+; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> rcx
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T03] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T02] ( 3, 6 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T02] ( 4, 7 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp3 [V07,T00] ( 6, 21 ) long -> rdx "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -23,27 +24,37 @@ G_M31628_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=4 bbWeight=1 PerfScore 1.25
G_M31628_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
; byrRegs +[rdi]
- xor eax, eax
+ mov eax, esi
xor ecx, ecx
test esi, esi
jle SHORT G_M31628_IG04
- ;; size=8 bbWeight=1 PerfScore 1.75
+ xor edx, edx
+ ;; size=10 bbWeight=1 PerfScore 2.00
G_M31628_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov edx, ecx
- movzx rdx, byte ptr [rdi+rdx]
- xor eax, edx
- movzx rax, al
- inc ecx
- cmp ecx, esi
+ cmp edx, eax
+ jae SHORT G_M31628_IG06
+ movzx r8, byte ptr [rdi+rdx]
+ xor ecx, r8d
+ movzx rcx, cl
+ inc edx
+ cmp edx, esi
jl SHORT G_M31628_IG03
- ;; size=17 bbWeight=4 PerfScore 17.00
-G_M31628_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=21 bbWeight=4 PerfScore 21.00
+G_M31628_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rdi]
+ mov eax, ecx
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M31628_IG05: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
+G_M31628_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 31, prolog size 4, PerfScore 21.50, instruction count 15, allocated bytes for code 31 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 45, prolog size 4, PerfScore 26.00, instruction count 20, allocated bytes for code 45 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
; ============================================================
Unwind Info:
+14 (+45.16%) : 501686.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
@@ -8,12 +8,13 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-;* V01 loc0 [V01,T04] ( 0, 0 ) int -> zero-ref single-def
-; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> rax
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> rcx
+; V01 loc0 [V01,T04] ( 2, 5 ) int -> rax single-def
+; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> rcx
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T03] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T02] ( 3, 6 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T02] ( 4, 7 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp3 [V07,T00] ( 6, 21 ) long -> rdx "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -23,27 +24,37 @@ G_M44428_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=4 bbWeight=1 PerfScore 1.25
G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
; byrRegs +[rdi]
- xor eax, eax
+ mov eax, esi
xor ecx, ecx
test esi, esi
jle SHORT G_M44428_IG04
- ;; size=8 bbWeight=1 PerfScore 1.75
+ xor edx, edx
+ ;; size=10 bbWeight=1 PerfScore 2.00
G_M44428_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov edx, ecx
- movzx rdx, byte ptr [rdi+rdx]
- xor eax, edx
- movzx rax, al
- inc ecx
- cmp ecx, esi
+ cmp edx, eax
+ jae SHORT G_M44428_IG06
+ movzx r8, byte ptr [rdi+rdx]
+ xor ecx, r8d
+ movzx rcx, cl
+ inc edx
+ cmp edx, esi
jl SHORT G_M44428_IG03
- ;; size=17 bbWeight=4 PerfScore 17.00
-G_M44428_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=21 bbWeight=4 PerfScore 21.00
+G_M44428_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rdi]
+ mov eax, ecx
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M44428_IG05: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
+G_M44428_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 31, prolog size 4, PerfScore 21.50, instruction count 15, allocated bytes for code 31 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 45, prolog size 4, PerfScore 26.00, instruction count 20, allocated bytes for code 45 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
; ============================================================
Unwind Info:
libraries.crossgen2.linux.x64.checked.mch
-23 (-14.56%) : 39753.dasm - System.Reflection.Metadata.MetadataReader:ComputeCodedTokenSize(int,int[],ulong):int:this (FullOpts)
@@ -14,26 +14,25 @@
; V03 arg3 [V03,T08] ( 3, 2.50) long -> rcx single-def
; V04 loc0 [V04,T05] ( 4, 5 ) ubyte -> r14
; V05 loc1 [V05,T01] ( 4, 12.50) long -> r13
-; V06 loc2 [V06,T00] ( 6, 16.50) int -> r12
+;* V06 loc2 [V06,T09] ( 0, 0 ) int -> zero-ref
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T04] ( 3, 6 ) int -> rcx
-; V09 cse0 [V09,T07] ( 3, 5 ) int -> rax "CSE - aggressive"
+; V08 tmp1 [V08,T04] ( 3, 6 ) int -> rdx
+; V09 tmp2 [V09,T00] ( 6, 16.50) long -> rcx "Widened primary induction variable"
+; V10 cse0 [V10,T07] ( 3, 5 ) int -> rax "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M26438_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
- push r12
push rbx
- push rax
- lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov r15d, esi
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=19 bbWeight=1 PerfScore 6.00
G_M26438_IG02: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
cmp byte ptr [rdi+0x58], 0
@@ -44,20 +43,17 @@ G_M26438_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov eax, 4
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M26438_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M26438_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx]
mov r14d, 1
mov r13, rcx
- xor r12d, r12d
call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
; byrRegs +[rax]
; gcr arg pop 0
@@ -65,7 +61,8 @@ G_M26438_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; byrRegs -[rax]
test eax, eax
jle SHORT G_M26438_IG12
- ;; size=28 bbWeight=0.50 PerfScore 3.50
+ xor ecx, ecx
+ ;; size=27 bbWeight=0.50 PerfScore 3.50
G_M26438_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test r13b, 1
je SHORT G_M26438_IG10
@@ -73,26 +70,25 @@ G_M26438_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
G_M26438_IG07: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test r14d, r14d
je SHORT G_M26438_IG08
- cmp r12d, dword ptr [rbx+0x08]
+ cmp ecx, dword ptr [rbx+0x08]
jae SHORT G_M26438_IG14
- mov ecx, r12d
+ xor edx, edx
cmp dword ptr [rbx+4*rcx+0x10], r15d
- setl cl
- movzx rcx, cl
+ setl dl
jmp SHORT G_M26438_IG09
- ;; size=27 bbWeight=2 PerfScore 23.50
+ ;; size=22 bbWeight=2 PerfScore 23.00
G_M26438_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- xor ecx, ecx
+ xor edx, edx
;; size=2 bbWeight=2 PerfScore 0.50
G_M26438_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- movzx r14, cl
+ movzx r14, dl
;; size=4 bbWeight=2 PerfScore 0.50
G_M26438_IG10: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
shr r13, 1
- inc r12d
- cmp eax, r12d
+ inc ecx
+ cmp eax, ecx
jg SHORT G_M26438_IG06
- ;; size=11 bbWeight=4 PerfScore 8.00
+ ;; size=9 bbWeight=4 PerfScore 8.00
G_M26438_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
test r14d, r14d
@@ -102,22 +98,20 @@ G_M26438_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov eax, 2
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M26438_IG13: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M26438_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [CORINFO_HELP_RNGCHKFAIL]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 158, prolog size 22, PerfScore 58.12, instruction count 58, allocated bytes for code 158 (MethodHash=9ebe98b9) for method System.Reflection.Metadata.MetadataReader:ComputeCodedTokenSize(int,int[],ulong):int:this (FullOpts)
+; Total bytes of code 135, prolog size 19, PerfScore 54.88, instruction count 51, allocated bytes for code 135 (MethodHash=9ebe98b9) for method System.Reflection.Metadata.MetadataReader:ComputeCodedTokenSize(int,int[],ulong):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -125,14 +119,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0B
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
-27 (-13.50%) : 4178.dasm - System.Data.Index:CompareRecordToKey(int,System.Object[]):int:this (FullOpts)
@@ -10,54 +10,51 @@
; Final local variable assignments
;
; V00 this [V00,T04] ( 6, 11.50) ref -> rbx this class-hnd single-def <System.Data.Index>
-; V01 arg1 [V01,T08] ( 3, 6 ) int -> r14 single-def
-; V02 arg2 [V02,T06] ( 4, 10 ) ref -> r15 class-hnd single-def <System.Object[]>
-; V03 loc0 [V03,T00] ( 8, 25.50) int -> r13
-; V04 loc1 [V04,T07] ( 4, 9 ) int -> rax
+; V01 arg1 [V01,T07] ( 3, 6 ) int -> r14 single-def
+; V02 arg2 [V02,T05] ( 4, 10 ) ref -> r15 class-hnd single-def <System.Object[]>
+; V03 loc0 [V03,T09] ( 3, 1.50) int -> rcx
+; V04 loc1 [V04,T06] ( 4, 9 ) int -> rax
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T02] ( 2, 16 ) ref -> rdi class-hnd "Inlining Arg" <System.Data.DataColumn>
; V07 tmp2 [V07,T03] ( 2, 16 ) ref -> rdx class-hnd "Inlining Arg" <System.Object>
; V08 tmp3 [V08,T01] ( 3, 24 ) ref -> rdi "arr expr"
-; V09 tmp4 [V09,T09] ( 3, 3 ) ref -> rcx "arr expr"
-; V10 cse0 [V10,T05] ( 4, 12.50) long -> r12 "CSE - aggressive"
+; V09 tmp4 [V09,T08] ( 3, 3 ) ref -> rdx "arr expr"
+; V10 tmp5 [V10,T00] ( 9, 29.50) long -> r13 "Widened primary induction variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M46110_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
- push r12
push rbx
- push rax
- lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov rbx, rdi
; gcrRegs +[rbx]
mov r14d, esi
mov r15, rdx
; gcrRegs +[r15]
- ;; size=25 bbWeight=1 PerfScore 8.25
+ ;; size=22 bbWeight=1 PerfScore 6.25
G_M46110_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- xor r13d, r13d
mov rdi, gword ptr [rbx+0x10]
; gcrRegs +[rdi]
cmp dword ptr [rdi+0x08], 0
jle SHORT G_M46110_IG04
+ xor r13d, r13d
;; size=13 bbWeight=1 PerfScore 6.25
G_M46110_IG03: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
mov rdi, gword ptr [rbx+0x10]
; gcrRegs +[rdi]
cmp r13d, dword ptr [rdi+0x08]
- jae G_M46110_IG10
- mov r12d, r13d
- mov rdx, r12
+ jae SHORT G_M46110_IG10
+ mov rdx, r13
shl rdx, 4
mov rdi, gword ptr [rdi+rdx+0x10]
cmp r13d, dword ptr [r15+0x08]
jae SHORT G_M46110_IG10
- mov rdx, gword ptr [r15+8*r12+0x10]
+ mov rdx, gword ptr [r15+8*r13+0x10]
; gcrRegs +[rdx]
mov rsi, qword ptr [(reloc)] ; const ptr
mov rdi, gword ptr [rdi+rsi+0x48]
@@ -73,61 +70,56 @@ G_M46110_IG03: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
; gcrRegs +[rax]
cmp dword ptr [rax+0x08], r13d
jg SHORT G_M46110_IG03
- ;; size=84 bbWeight=4 PerfScore 133.00
+ ;; size=77 bbWeight=4 PerfScore 132.00
G_M46110_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx r15]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M46110_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M46110_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx]
- mov rcx, gword ptr [rbx+0x10]
- ; gcrRegs +[rcx]
- cmp r13d, dword ptr [rcx+0x08]
+ mov ecx, r13d
+ mov rdx, gword ptr [rbx+0x10]
+ ; gcrRegs +[rdx]
+ cmp ecx, dword ptr [rdx+0x08]
jae SHORT G_M46110_IG10
- shl r12, 4
- cmp byte ptr [rcx+r12+0x18], 0
+ shl rcx, 4
+ cmp byte ptr [rdx+rcx+0x18], 0
jne SHORT G_M46110_IG08
- ;; size=22 bbWeight=0.50 PerfScore 5.25
+ ;; size=23 bbWeight=0.50 PerfScore 5.38
G_M46110_IG07: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M46110_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rcx rbx]
+ ; gcrRegs -[rdx rbx]
neg eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M46110_IG09: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M46110_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [CORINFO_HELP_RNGCHKFAIL]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 200, prolog size 16, PerfScore 159.38, instruction count 71, allocated bytes for code 200 (MethodHash=26d94be1) for method System.Data.Index:CompareRecordToKey(int,System.Object[]):int:this (FullOpts)
+; Total bytes of code 173, prolog size 13, PerfScore 155.38, instruction count 63, allocated bytes for code 173 (MethodHash=26d94be1) for method System.Data.Index:CompareRecordToKey(int,System.Object[]):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -135,14 +127,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0B
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
-18 (-13.04%) : 206512.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (FullOpts)
@@ -11,27 +11,26 @@
;
; V00 this [V00,T10] ( 5, 4 ) ref -> rdi this class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer>
; V01 arg1 [V01,T05] ( 5, 10.50) int -> rsi single-def
-; V02 loc0 [V02,T00] ( 8, 28.50) int -> rcx
+;* V02 loc0 [V02,T13] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T08] ( 2, 2 ) ref -> r8 class-hnd exact "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.TypeArray>
+; V04 tmp1 [V04,T08] ( 2, 2 ) ref -> rdx class-hnd exact "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.TypeArray>
; V05 tmp2 [V05,T01] ( 3, 24 ) ref -> r10 "arr expr"
; V06 tmp3 [V06,T02] ( 3, 24 ) ref -> r10 "arr expr"
; V07 tmp4 [V07,T03] ( 3, 24 ) ref -> r10 "arr expr"
; V08 tmp5 [V08,T04] ( 2, 16 ) ref -> r10 "arr expr"
-; V09 cse0 [V09,T07] ( 4, 10 ) ref -> rax "CSE - moderate"
-; V10 cse1 [V10,T11] ( 2, 1 ) ref -> rdx "CSE - moderate"
-; V11 cse2 [V11,T12] ( 3, 5 ) ref -> r8 "CSE - moderate"
-; V12 cse3 [V12,T06] ( 3, 12 ) int -> r11 "CSE - moderate"
-; V13 cse4 [V13,T09] ( 3, 8.50) long -> r9 hoist "CSE - moderate"
+; V09 tmp6 [V09,T00] ( 8, 28.50) long -> r8 "Widened primary induction variable"
+; V10 cse0 [V10,T07] ( 4, 10 ) ref -> rax "CSE - moderate"
+; V11 cse1 [V11,T11] ( 2, 1 ) ref -> rcx "CSE - moderate"
+; V12 cse2 [V12,T12] ( 3, 5 ) ref -> rdx "CSE - moderate"
+; V13 cse3 [V13,T06] ( 3, 12 ) int -> r11 "CSE - moderate"
+; V14 cse4 [V14,T09] ( 3, 8.50) long -> r9 hoist "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M10477_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- push rbx
- push rax
- lea rbp, [rsp+0x10]
- ;; size=8 bbWeight=1 PerfScore 3.50
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M10477_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
mov rax, gword ptr [rdi+0x40]
@@ -41,56 +40,50 @@ G_M10477_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
;; size=9 bbWeight=1 PerfScore 3.25
G_M10477_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rax rdi]
- add rsp, 8
- pop rbx
pop rbp
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
G_M10477_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rax rdi]
- xor ecx, ecx
- mov rdx, gword ptr [rdi+0x08]
+ mov rcx, gword ptr [rdi+0x08]
+ ; gcrRegs +[rcx]
+ mov rdx, rcx
; gcrRegs +[rdx]
- mov r8, rdx
- ; gcrRegs +[r8]
- mov r8, gword ptr [r8+0x08]
- cmp dword ptr [r8+0x08], 0
+ mov rdx, gword ptr [rdx+0x08]
+ cmp dword ptr [rdx+0x08], 0
jle SHORT G_M10477_IG06
+ xor r8d, r8d
mov r9d, esi
;; size=23 bbWeight=0.50 PerfScore 4.38
-G_M10477_IG05: ; bbWeight=4, gcrefRegs=0185 {rax rdx rdi r8}, byrefRegs=0000 {}, byref, isz
+G_M10477_IG05: ; bbWeight=4, gcrefRegs=0087 {rax rcx rdx rdi}, byrefRegs=0000 {}, byref, isz
mov r10, rax
; gcrRegs +[r10]
mov r11d, dword ptr [r10+0x08]
cmp esi, r11d
jae SHORT G_M10477_IG08
mov r10, gword ptr [r10+8*r9+0x10]
- cmp ecx, dword ptr [r10+0x08]
+ cmp r8d, dword ptr [r10+0x08]
jae SHORT G_M10477_IG08
- mov ebx, ecx
- mov dword ptr [r10+4*rbx+0x10], 1
+ mov dword ptr [r10+4*r8+0x10], 1
mov r10, rax
- cmp ecx, r11d
+ cmp r8d, r11d
jae SHORT G_M10477_IG08
- mov r11d, ecx
- mov r10, gword ptr [r10+8*r11+0x10]
+ mov r10, gword ptr [r10+8*r8+0x10]
cmp esi, dword ptr [r10+0x08]
jae SHORT G_M10477_IG08
mov dword ptr [r10+4*r9+0x10], 1
- inc ecx
- cmp dword ptr [r8+0x08], ecx
+ inc r8d
+ cmp dword ptr [rdx+0x08], r8d
jg SHORT G_M10477_IG05
- ;; size=73 bbWeight=4 PerfScore 95.00
+ ;; size=69 bbWeight=4 PerfScore 93.00
G_M10477_IG06: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rdx r8 r10]
+ ; gcrRegs -[rax rcx rdx r10]
mov byte ptr [rdi+0x48], 1
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M10477_IG07: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
- pop rbx
pop rbp
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
G_M10477_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi]
call [CORINFO_HELP_RNGCHKFAIL]
@@ -98,7 +91,7 @@ G_M10477_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 138, prolog size 8, PerfScore 108.88, instruction count 45, allocated bytes for code 138 (MethodHash=74a9d712) for method Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (FullOpts)
+; Total bytes of code 120, prolog size 4, PerfScore 103.88, instruction count 37, allocated bytes for code 120 (MethodHash=74a9d712) for method Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (FullOpts)
; ============================================================
Unwind Info:
@@ -106,11 +99,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+13 (+30.95%) : 209936.dasm - System.CommandLine.Invocation.ParseErrorAction:g_GetStartsWithDistance|111(System.String,System.String):int (FullOpts)
@@ -8,13 +8,13 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rdi class-hnd single-def <System.String>
-; V01 arg1 [V01,T01] ( 4, 10 ) ref -> rsi class-hnd single-def <System.String>
-; V02 loc0 [V02,T00] ( 7, 22 ) int -> rax
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rdi class-hnd single-def <System.String>
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rsi class-hnd single-def <System.String>
+; V02 loc0 [V02,T05] ( 2, 2 ) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T04] ( 2, 9 ) int -> rcx hoist "CSE - aggressive"
-; V05 cse1 [V05,T05] ( 2, 8 ) int -> rdx "CSE - aggressive"
-; V06 cse2 [V06,T02] ( 3, 12 ) long -> rdx "CSE - aggressive"
+; V04 tmp1 [V04,T00] ( 10, 34 ) long -> rax "Widened primary induction variable"
+; V05 cse0 [V05,T01] ( 3, 13 ) int -> rcx hoist "CSE - aggressive"
+; V06 cse1 [V06,T03] ( 3, 12 ) int -> rdx "CSE - aggressive"
;
; Lcl frame size = 0
@@ -39,18 +39,26 @@ G_M8352_IG05: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {},
mov edx, dword ptr [rsi+0x08]
cmp edx, eax
jle SHORT G_M8352_IG06
- mov edx, eax
- movzx r8, word ptr [rdi+2*rdx+0x0C]
- cmp r8w, word ptr [rsi+2*rdx+0x0C]
+ cmp eax, ecx
+ jae SHORT G_M8352_IG07
+ movzx r8, word ptr [rdi+2*rax+0x0C]
+ cmp eax, edx
+ jae SHORT G_M8352_IG07
+ cmp r8w, word ptr [rsi+2*rax+0x0C]
je SHORT G_M8352_IG03
- ;; size=23 bbWeight=4 PerfScore 38.00
+ ;; size=29 bbWeight=4 PerfScore 47.00
G_M8352_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rsi rdi]
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
+G_M8352_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call [CORINFO_HELP_RNGCHKFAIL]
+ ; gcr arg pop 0
+ int3
+ ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 42, prolog size 4, PerfScore 55.50, instruction count 17, allocated bytes for code 42 (MethodHash=aa3edf5f) for method System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetStartsWithDistance|11_1(System.String,System.String):int (FullOpts)
+; Total bytes of code 55, prolog size 4, PerfScore 64.50, instruction count 22, allocated bytes for code 55 (MethodHash=aa3edf5f) for method System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetStartsWithDistance|11_1(System.String,System.String):int (FullOpts)
; ============================================================
Unwind Info:
+9 (+32.14%) : 228961.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
@@ -11,13 +11,14 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
; V01 loc0 [V01,T01] ( 4, 10 ) int -> rax
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> rcx
+;* V03 loc2 [V03,T06] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) ubyte -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T04] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V07 tmp2 [V07,T05] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V08 tmp3 [V08,T03] ( 2, 5 ) byref -> rdi single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V09 tmp4 [V09,T02] ( 3, 6 ) int -> rsi "field V02._length (fldOffset=0x8)" P-INDEP
+; V09 tmp4 [V09,T02] ( 4, 10 ) int -> rsi "field V02._length (fldOffset=0x8)" P-INDEP
+; V10 tmp5 [V10,T00] ( 6, 21 ) long -> rcx "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -28,25 +29,31 @@ G_M59336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M59336_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
; byrRegs +[rdi]
xor eax, eax
- xor ecx, ecx
test esi, esi
jle SHORT G_M59336_IG04
+ xor ecx, ecx
;; size=8 bbWeight=1 PerfScore 1.75
G_M59336_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov edx, ecx
- movzx rdx, byte ptr [rdi+rdx]
+ cmp ecx, esi
+ jae SHORT G_M59336_IG05
+ movzx rdx, byte ptr [rdi+rcx]
add eax, edx
inc ecx
cmp ecx, esi
jl SHORT G_M59336_IG03
- ;; size=14 bbWeight=4 PerfScore 16.00
+ ;; size=16 bbWeight=4 PerfScore 20.00
G_M59336_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rdi]
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
+G_M59336_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call [CORINFO_HELP_RNGCHKFAIL]
+ ; gcr arg pop 0
+ int3
+ ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 28, prolog size 4, PerfScore 20.50, instruction count 14, allocated bytes for code 28 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 37, prolog size 4, PerfScore 24.50, instruction count 17, allocated bytes for code 37 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================
Unwind Info:
+37 (+32.17%) : 124620.dasm - Xunit.Sdk.DisplayNameFormatter+ReplaceEscapeSequenceRule:HexToInt32(ushort[]):int (FullOpts)
@@ -10,37 +10,39 @@
;
; V00 arg0 [V00,T04] ( 5, 7 ) ref -> rdi class-hnd single-def <ushort[]>
; V01 loc0 [V01,T03] ( 6, 10 ) int -> rax
-; V02 loc1 [V02,T02] ( 7, 11 ) int -> rdx single-def
-; V03 loc2 [V03,T00] ( 11, 21 ) int -> rsi
-; V04 loc3 [V04,T01] ( 8, 12 ) ushort -> r8
+; V02 loc1 [V02,T02] ( 7, 11 ) int -> rsi single-def
+;* V03 loc2 [V03,T07] ( 0, 0 ) int -> zero-ref
+; V04 loc3 [V04,T01] ( 8, 12 ) ushort -> registers
;* V05 loc4 [V05 ] ( 0, 0 ) int -> zero-ref
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T05] ( 6, 8 ) int -> r8
-; V08 cse0 [V08,T06] ( 3, 3 ) int -> rcx "CSE - aggressive"
+; V07 tmp1 [V07,T05] ( 6, 8 ) int -> [rbp-0x04]
+; V08 tmp2 [V08,T08] ( 7, 0.25) long -> r8 "Widened primary induction variable"
+; V09 tmp3 [V09,T00] ( 6, 20.80) long -> rdx "Widened primary induction variable"
+; V10 cse0 [V10,T06] ( 4, 3.04) int -> rdx "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 16
G_M3741_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
+ sub rsp, 16
+ lea rbp, [rsp+0x10]
+ ;; size=10 bbWeight=1 PerfScore 1.75
G_M3741_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
xor eax, eax
- mov ecx, dword ptr [rdi+0x08]
- lea edx, [rcx-0x01]
- xor esi, esi
- test edx, edx
- jl SHORT G_M3741_IG12
- cmp ecx, edx
+ mov edx, dword ptr [rdi+0x08]
+ lea esi, [rdx-0x01]
+ test esi, esi
+ jl SHORT G_M3741_IG13
+ cmp edx, esi
jle SHORT G_M3741_IG08
+ xor edx, edx
;; size=18 bbWeight=1 PerfScore 5.50
G_M3741_IG03: ; bbWeight=3.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov ecx, esi
- movzx r8, word ptr [rdi+2*rcx+0x10]
+ movzx r8, word ptr [rdi+2*rdx+0x10]
cmp r8d, 58
jl SHORT G_M3741_IG05
- ;; size=14 bbWeight=3.96 PerfScore 13.86
+ ;; size=12 bbWeight=3.96 PerfScore 12.87
G_M3741_IG04: ; bbWeight=1.98, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
add r8d, -55
jmp SHORT G_M3741_IG06
@@ -49,51 +51,64 @@ G_M3741_IG05: ; bbWeight=1.98, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, b
add r8d, -48
;; size=4 bbWeight=1.98 PerfScore 0.49
G_M3741_IG06: ; bbWeight=3.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov ecx, edx
- sub ecx, esi
+ mov ecx, esi
+ sub ecx, edx
shl ecx, 2
shl r8d, cl
add eax, r8d
- inc esi
- cmp esi, edx
+ inc edx
+ cmp edx, esi
jle SHORT G_M3741_IG03
;; size=19 bbWeight=3.96 PerfScore 18.81
G_M3741_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
- jmp SHORT G_M3741_IG12
+ jmp SHORT G_M3741_IG13
;; size=2 bbWeight=1 PerfScore 2.00
-G_M3741_IG08: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M3741_IG08: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdi]
- mov ecx, esi
- movzx r8, word ptr [rdi+2*rcx+0x10]
- cmp r8d, 58
- jl SHORT G_M3741_IG10
- ;; size=14 bbWeight=0.04 PerfScore 0.14
-G_M3741_IG09: ; bbWeight=0.02, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- add r8d, -55
- jmp SHORT G_M3741_IG11
- ;; size=6 bbWeight=0.02 PerfScore 0.05
-G_M3741_IG10: ; bbWeight=0.02, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- add r8d, -48
- ;; size=4 bbWeight=0.02 PerfScore 0.01
-G_M3741_IG11: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov ecx, edx
- sub ecx, esi
- shl ecx, 2
- shl r8d, cl
- add r8d, eax
- mov eax, r8d
- inc esi
- cmp esi, edx
- jle SHORT G_M3741_IG08
- ;; size=22 bbWeight=0.04 PerfScore 0.20
-G_M3741_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ xor r8d, r8d
+ ;; size=3 bbWeight=0.01 PerfScore 0.00
+G_M3741_IG09: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ cmp r8d, edx
+ jae SHORT G_M3741_IG14
+ movzx rcx, word ptr [rdi+2*r8+0x10]
+ cmp ecx, 58
+ jl SHORT G_M3741_IG11
+ ;; size=16 bbWeight=0.04 PerfScore 0.18
+G_M3741_IG10: ; bbWeight=0.02, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ add ecx, -55
+ mov dword ptr [rbp-0x04], ecx
+ jmp SHORT G_M3741_IG12
+ ;; size=8 bbWeight=0.02 PerfScore 0.07
+G_M3741_IG11: ; bbWeight=0.02, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ add ecx, -48
+ mov dword ptr [rbp-0x04], ecx
+ ;; size=6 bbWeight=0.02 PerfScore 0.03
+G_M3741_IG12: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ mov r9d, esi
+ sub r9d, r8d
+ lea ecx, [4*r9]
+ mov r9d, dword ptr [rbp-0x04]
+ shl r9d, cl
+ add r9d, eax
+ mov eax, r9d
+ inc r8d
+ cmp r8d, esi
+ jle SHORT G_M3741_IG09
+ ;; size=35 bbWeight=0.04 PerfScore 0.24
+G_M3741_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdi]
+ add rsp, 16
pop rbp
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=6 bbWeight=1 PerfScore 1.75
+G_M3741_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call [CORINFO_HELP_RNGCHKFAIL]
+ ; gcr arg pop 0
+ int3
+ ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 115, prolog size 4, PerfScore 48.26, instruction count 44, allocated bytes for code 115 (MethodHash=e7bef162) for method Xunit.Sdk.DisplayNameFormatter+ReplaceEscapeSequenceRule:HexToInt32(ushort[]):int (FullOpts)
+; Total bytes of code 152, prolog size 10, PerfScore 48.14, instruction count 52, allocated bytes for code 152 (MethodHash=e7bef162) for method Xunit.Sdk.DisplayNameFormatter+ReplaceEscapeSequenceRule:HexToInt32(ushort[]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -101,9 +116,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x01
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
libraries.pmi.linux.x64.checked.mch
-35 (-15.22%) : 82447.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
@@ -11,7 +11,7 @@
; V00 this [V00,T06] ( 5, 11 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer>
; V01 arg1 [V01,T11] ( 4, 6.50) int -> r15 single-def
; V02 loc0 [V02,T10] ( 4, 9 ) ref -> r13 class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]>
-; V03 loc1 [V03,T00] ( 9, 32.50) int -> r12
+;* V03 loc1 [V03,T16] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T03] ( 2, 16 ) ref -> rdi class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo>
; V06 tmp2 [V06,T04] ( 2, 16 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo>
@@ -22,27 +22,26 @@
; V11 tmp7 [V11,T02] ( 3, 24 ) ref -> rsi "arr expr"
;* V12 tmp8 [V12,T13] ( 0, 0 ) ref -> zero-ref "arr expr"
; V13 tmp9 [V13,T05] ( 2, 16 ) int -> rsi "argument with side effect"
-; V14 cse0 [V14,T07] ( 3, 12 ) ref -> rsi "CSE - moderate"
-; V15 cse1 [V15,T15] ( 3, 1.50) int -> r14 "CSE - moderate"
-; V16 cse2 [V16,T08] ( 2, 8 ) ref -> rsi "CSE - moderate"
-; V17 cse3 [V17,T09] ( 2, 8 ) ref -> rsi "CSE - moderate"
-; V18 cse4 [V18,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
+; V14 tmp10 [V14,T00] ( 9, 32.50) long -> r14 "Widened primary induction variable"
+; V15 cse0 [V15,T07] ( 3, 12 ) ref -> rsi "CSE - moderate"
+; V16 cse1 [V16,T15] ( 3, 1.50) int -> r14 "CSE - moderate"
+; V17 cse2 [V17,T08] ( 2, 8 ) ref -> rsi "CSE - moderate"
+; V18 cse3 [V18,T09] ( 2, 8 ) ref -> rsi "CSE - moderate"
+; V19 cse4 [V19,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M22286_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
- push r12
push rbx
- push rax
- lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov rbx, rdi
; gcrRegs +[rbx]
mov r15d, esi
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=19 bbWeight=1 PerfScore 6.00
G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x10]
; gcrRegs +[rdi]
@@ -51,7 +50,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=13 bbWeight=1 PerfScore 3.25
G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
test r15d, r15d
- jle G_M22286_IG07
+ jle SHORT G_M22286_IG07
mov r14d, dword ptr [rdi+0x10]
movsxd rsi, r14d
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]
@@ -61,21 +60,20 @@ G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcr arg pop 0
mov r13, rax
; gcrRegs +[r13]
- xor r12d, r12d
test r14d, r14d
jle SHORT G_M22286_IG05
- ;; size=42 bbWeight=0.50 PerfScore 3.25
+ xor r14d, r14d
+ ;; size=38 bbWeight=0.50 PerfScore 3.25
G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rsi, gword ptr [rbx+0x10]
; gcrRegs +[rsi]
- cmp r12d, dword ptr [rsi+0x10]
- jae G_M22286_IG12
+ cmp r14d, dword ptr [rsi+0x10]
+ jae SHORT G_M22286_IG12
mov rsi, gword ptr [rsi+0x08]
- cmp r12d, dword ptr [rsi+0x08]
+ cmp r14d, dword ptr [rsi+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d
- mov rsi, gword ptr [rsi+8*rdi+0x10]
+ mov rsi, gword ptr [rsi+8*r14+0x10]
mov rdi, rsi
; gcrRegs +[rdi]
mov eax, r15d
@@ -85,67 +83,60 @@ G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {},
call [Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:WithOffset(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:this]
; gcrRegs -[rdi] +[rax]
; gcr arg pop 0
- cmp r12d, dword ptr [r13+0x08]
+ cmp r14d, dword ptr [r13+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d
- lea rdi, bword ptr [r13+8*rdi+0x10]
+ lea rdi, bword ptr [r13+8*r14+0x10]
; byrRegs +[rdi]
mov rsi, rax
; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- inc r12d
+ inc r14d
mov rax, gword ptr [rbx+0x10]
; gcrRegs +[rax]
- cmp r12d, dword ptr [rax+0x10]
+ cmp r14d, dword ptr [rax+0x10]
jl SHORT G_M22286_IG04
- ;; size=84 bbWeight=4 PerfScore 139.00
+ ;; size=74 bbWeight=4 PerfScore 137.00
G_M22286_IG05: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx]
mov rax, r13
; gcrRegs +[rax]
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M22286_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax r13] +[rdi]
cmp dword ptr [rdi], edi
;; size=2 bbWeight=0.50 PerfScore 1.50
G_M22286_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
tail.jmp [System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this]
; gcr arg pop 0
- ;; size=20 bbWeight=0.50 PerfScore 2.62
+ ;; size=14 bbWeight=0.50 PerfScore 2.25
G_M22286_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M22286_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
call CORINFO_HELP_RNGCHKFAIL
@@ -157,7 +148,7 @@ G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 230, prolog size 22, PerfScore 162.12, instruction count 76, allocated bytes for code 230 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
+; Total bytes of code 195, prolog size 19, PerfScore 157.00, instruction count 66, allocated bytes for code 195 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -165,14 +156,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0B
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
-27 (-14.29%) : 23479.dasm - System.Data.Index:CompareRecordToKey(int,System.Object[]):int:this (FullOpts)
@@ -9,55 +9,52 @@
; Final local variable assignments
;
; V00 this [V00,T05] ( 6, 11.50) ref -> rbx this class-hnd single-def <System.Data.Index>
-; V01 arg1 [V01,T09] ( 3, 6 ) int -> r14 single-def
-; V02 arg2 [V02,T07] ( 4, 10 ) ref -> r15 class-hnd single-def <System.Object[]>
-; V03 loc0 [V03,T00] ( 8, 25.50) int -> r13
-; V04 loc1 [V04,T08] ( 4, 9 ) int -> rax
+; V01 arg1 [V01,T08] ( 3, 6 ) int -> r14 single-def
+; V02 arg2 [V02,T06] ( 4, 10 ) ref -> r15 class-hnd single-def <System.Object[]>
+; V03 loc0 [V03,T10] ( 3, 1.50) int -> rcx
+; V04 loc1 [V04,T07] ( 4, 9 ) int -> rax
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T03] ( 2, 16 ) ref -> rdi class-hnd "Inlining Arg" <System.Data.DataColumn>
; V07 tmp2 [V07,T04] ( 2, 16 ) ref -> rdx class-hnd "Inlining Arg" <System.Object>
; V08 tmp3 [V08,T01] ( 3, 24 ) ref -> rdi "arr expr"
; V09 tmp4 [V09,T02] ( 3, 24 ) ref -> rdi "argument with side effect"
-; V10 tmp5 [V10,T10] ( 3, 3 ) ref -> rcx "arr expr"
-; V11 cse0 [V11,T06] ( 4, 12.50) long -> r12 "CSE - aggressive"
+; V10 tmp5 [V10,T09] ( 3, 3 ) ref -> rdx "arr expr"
+; V11 tmp6 [V11,T00] ( 9, 29.50) long -> r13 "Widened primary induction variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M46110_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
- push r12
push rbx
- push rax
- lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov rbx, rdi
; gcrRegs +[rbx]
mov r14d, esi
mov r15, rdx
; gcrRegs +[r15]
- ;; size=25 bbWeight=1 PerfScore 8.25
+ ;; size=22 bbWeight=1 PerfScore 6.25
G_M46110_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- xor r13d, r13d
mov rdi, gword ptr [rbx+0x10]
; gcrRegs +[rdi]
cmp dword ptr [rdi+0x08], 0
jle SHORT G_M46110_IG04
+ xor r13d, r13d
;; size=13 bbWeight=1 PerfScore 6.25
G_M46110_IG03: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
mov rdi, gword ptr [rbx+0x10]
; gcrRegs +[rdi]
cmp r13d, dword ptr [rdi+0x08]
- jae G_M46110_IG10
- mov r12d, r13d
- mov rsi, r12
+ jae SHORT G_M46110_IG10
+ mov rsi, r13
shl rsi, 4
mov rdi, gword ptr [rdi+rsi+0x10]
cmp r13d, dword ptr [r15+0x08]
jae SHORT G_M46110_IG10
- mov rdx, gword ptr [r15+8*r12+0x10]
+ mov rdx, gword ptr [r15+8*r13+0x10]
; gcrRegs +[rdx]
mov rdi, gword ptr [rdi+0x60]
mov esi, r14d
@@ -72,61 +69,56 @@ G_M46110_IG03: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
; gcrRegs +[rax]
cmp dword ptr [rax+0x08], r13d
jg SHORT G_M46110_IG03
- ;; size=74 bbWeight=4 PerfScore 127.00
+ ;; size=67 bbWeight=4 PerfScore 126.00
G_M46110_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx r15]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M46110_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M46110_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx]
- mov rcx, gword ptr [rbx+0x10]
- ; gcrRegs +[rcx]
- cmp r13d, dword ptr [rcx+0x08]
+ mov ecx, r13d
+ mov rdx, gword ptr [rbx+0x10]
+ ; gcrRegs +[rdx]
+ cmp ecx, dword ptr [rdx+0x08]
jae SHORT G_M46110_IG10
- shl r12, 4
- cmp byte ptr [rcx+r12+0x18], 0
+ shl rcx, 4
+ cmp byte ptr [rdx+rcx+0x18], 0
jne SHORT G_M46110_IG08
- ;; size=22 bbWeight=0.50 PerfScore 5.25
+ ;; size=23 bbWeight=0.50 PerfScore 5.38
G_M46110_IG07: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M46110_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rcx rbx]
+ ; gcrRegs -[rdx rbx]
neg eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M46110_IG09: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M46110_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 189, prolog size 16, PerfScore 153.38, instruction count 70, allocated bytes for code 189 (MethodHash=26d94be1) for method System.Data.Index:CompareRecordToKey(int,System.Object[]):int:this (FullOpts)
+; Total bytes of code 162, prolog size 13, PerfScore 149.38, instruction count 62, allocated bytes for code 162 (MethodHash=26d94be1) for method System.Data.Index:CompareRecordToKey(int,System.Object[]):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -134,14 +126,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0B
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
-18 (-13.14%) : 243045.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (FullOpts)
@@ -10,27 +10,26 @@
;
; V00 this [V00,T10] ( 5, 4 ) ref -> rdi this class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer>
; V01 arg1 [V01,T05] ( 5, 10.50) int -> rsi single-def
-; V02 loc0 [V02,T00] ( 8, 28.50) int -> rcx
+;* V02 loc0 [V02,T13] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T08] ( 2, 2 ) ref -> r8 class-hnd exact "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.TypeArray>
+; V04 tmp1 [V04,T08] ( 2, 2 ) ref -> rdx class-hnd exact "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.TypeArray>
; V05 tmp2 [V05,T01] ( 3, 24 ) ref -> r10 "arr expr"
; V06 tmp3 [V06,T02] ( 3, 24 ) ref -> r10 "arr expr"
; V07 tmp4 [V07,T03] ( 3, 24 ) ref -> r10 "arr expr"
; V08 tmp5 [V08,T04] ( 2, 16 ) ref -> r10 "arr expr"
-; V09 cse0 [V09,T07] ( 4, 10 ) ref -> rax "CSE - moderate"
-; V10 cse1 [V10,T11] ( 2, 1 ) ref -> rdx "CSE - moderate"
-; V11 cse2 [V11,T12] ( 3, 5 ) ref -> r8 "CSE - moderate"
-; V12 cse3 [V12,T06] ( 3, 12 ) int -> r11 "CSE - moderate"
-; V13 cse4 [V13,T09] ( 3, 8.50) long -> r9 hoist "CSE - moderate"
+; V09 tmp6 [V09,T00] ( 8, 28.50) long -> r8 "Widened primary induction variable"
+; V10 cse0 [V10,T07] ( 4, 10 ) ref -> rax "CSE - moderate"
+; V11 cse1 [V11,T11] ( 2, 1 ) ref -> rcx "CSE - moderate"
+; V12 cse2 [V12,T12] ( 3, 5 ) ref -> rdx "CSE - moderate"
+; V13 cse3 [V13,T06] ( 3, 12 ) int -> r11 "CSE - moderate"
+; V14 cse4 [V14,T09] ( 3, 8.50) long -> r9 hoist "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M10477_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- push rbx
- push rax
- lea rbp, [rsp+0x10]
- ;; size=8 bbWeight=1 PerfScore 3.50
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M10477_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
mov rax, gword ptr [rdi+0x40]
@@ -40,56 +39,50 @@ G_M10477_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
;; size=9 bbWeight=1 PerfScore 3.25
G_M10477_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rax rdi]
- add rsp, 8
- pop rbx
pop rbp
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
G_M10477_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rax rdi]
- xor ecx, ecx
- mov rdx, gword ptr [rdi+0x08]
+ mov rcx, gword ptr [rdi+0x08]
+ ; gcrRegs +[rcx]
+ mov rdx, rcx
; gcrRegs +[rdx]
- mov r8, rdx
- ; gcrRegs +[r8]
- mov r8, gword ptr [r8+0x08]
- cmp dword ptr [r8+0x08], 0
+ mov rdx, gword ptr [rdx+0x08]
+ cmp dword ptr [rdx+0x08], 0
jle SHORT G_M10477_IG06
+ xor r8d, r8d
mov r9d, esi
;; size=23 bbWeight=0.50 PerfScore 4.38
-G_M10477_IG05: ; bbWeight=4, gcrefRegs=0185 {rax rdx rdi r8}, byrefRegs=0000 {}, byref, isz
+G_M10477_IG05: ; bbWeight=4, gcrefRegs=0087 {rax rcx rdx rdi}, byrefRegs=0000 {}, byref, isz
mov r10, rax
; gcrRegs +[r10]
mov r11d, dword ptr [r10+0x08]
cmp esi, r11d
jae SHORT G_M10477_IG08
mov r10, gword ptr [r10+8*r9+0x10]
- cmp ecx, dword ptr [r10+0x08]
+ cmp r8d, dword ptr [r10+0x08]
jae SHORT G_M10477_IG08
- mov ebx, ecx
- mov dword ptr [r10+4*rbx+0x10], 1
+ mov dword ptr [r10+4*r8+0x10], 1
mov r10, rax
- cmp ecx, r11d
+ cmp r8d, r11d
jae SHORT G_M10477_IG08
- mov r11d, ecx
- mov r10, gword ptr [r10+8*r11+0x10]
+ mov r10, gword ptr [r10+8*r8+0x10]
cmp esi, dword ptr [r10+0x08]
jae SHORT G_M10477_IG08
mov dword ptr [r10+4*r9+0x10], 1
- inc ecx
- cmp dword ptr [r8+0x08], ecx
+ inc r8d
+ cmp dword ptr [rdx+0x08], r8d
jg SHORT G_M10477_IG05
- ;; size=73 bbWeight=4 PerfScore 95.00
+ ;; size=69 bbWeight=4 PerfScore 93.00
G_M10477_IG06: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rdx r8 r10]
+ ; gcrRegs -[rax rcx rdx r10]
mov byte ptr [rdi+0x48], 1
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M10477_IG07: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
- pop rbx
pop rbp
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
G_M10477_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi]
call CORINFO_HELP_RNGCHKFAIL
@@ -97,7 +90,7 @@ G_M10477_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 137, prolog size 8, PerfScore 108.88, instruction count 45, allocated bytes for code 137 (MethodHash=74a9d712) for method Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (FullOpts)
+; Total bytes of code 119, prolog size 4, PerfScore 103.88, instruction count 37, allocated bytes for code 119 (MethodHash=74a9d712) for method Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (FullOpts)
; ============================================================
Unwind Info:
@@ -105,11 +98,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+8 (+28.57%) : 283583.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
@@ -10,13 +10,14 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
; V01 loc0 [V01,T01] ( 4, 10 ) int -> rax
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> rcx
+;* V03 loc2 [V03,T06] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) ubyte -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T04] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V07 tmp2 [V07,T05] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V08 tmp3 [V08,T03] ( 2, 5 ) byref -> rdi single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V09 tmp4 [V09,T02] ( 3, 6 ) int -> rsi "field V02._length (fldOffset=0x8)" P-INDEP
+; V09 tmp4 [V09,T02] ( 4, 10 ) int -> rsi "field V02._length (fldOffset=0x8)" P-INDEP
+; V10 tmp5 [V10,T00] ( 6, 21 ) long -> rcx "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -27,25 +28,31 @@ G_M59336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M59336_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
; byrRegs +[rdi]
xor eax, eax
- xor ecx, ecx
test esi, esi
jle SHORT G_M59336_IG04
+ xor ecx, ecx
;; size=8 bbWeight=1 PerfScore 1.75
G_M59336_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov edx, ecx
- movzx rdx, byte ptr [rdi+rdx]
+ cmp ecx, esi
+ jae SHORT G_M59336_IG05
+ movzx rdx, byte ptr [rdi+rcx]
add eax, edx
inc ecx
cmp ecx, esi
jl SHORT G_M59336_IG03
- ;; size=14 bbWeight=4 PerfScore 16.00
+ ;; size=16 bbWeight=4 PerfScore 20.00
G_M59336_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rdi]
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
+G_M59336_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 28, prolog size 4, PerfScore 20.50, instruction count 14, allocated bytes for code 28 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 36, prolog size 4, PerfScore 24.50, instruction count 17, allocated bytes for code 36 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================
Unwind Info:
+12 (+28.57%) : 177140.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
@@ -7,13 +7,13 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rdi class-hnd single-def <System.String>
-; V01 arg1 [V01,T01] ( 4, 10 ) ref -> rsi class-hnd single-def <System.String>
-; V02 loc0 [V02,T00] ( 7, 22 ) int -> rax
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rdi class-hnd single-def <System.String>
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rsi class-hnd single-def <System.String>
+; V02 loc0 [V02,T05] ( 2, 2 ) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T04] ( 2, 9 ) int -> rcx hoist "CSE - aggressive"
-; V05 cse1 [V05,T05] ( 2, 8 ) int -> rdx "CSE - aggressive"
-; V06 cse2 [V06,T02] ( 3, 12 ) long -> rdx "CSE - aggressive"
+; V04 tmp1 [V04,T00] ( 10, 34 ) long -> rax "Widened primary induction variable"
+; V05 cse0 [V05,T01] ( 3, 13 ) int -> rcx hoist "CSE - aggressive"
+; V06 cse1 [V06,T03] ( 3, 12 ) int -> rdx "CSE - aggressive"
;
; Lcl frame size = 0
@@ -38,18 +38,26 @@ G_M16586_IG05: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {},
mov edx, dword ptr [rsi+0x08]
cmp edx, eax
jle SHORT G_M16586_IG06
- mov edx, eax
- movzx r8, word ptr [rdi+2*rdx+0x0C]
- cmp r8w, word ptr [rsi+2*rdx+0x0C]
+ cmp eax, ecx
+ jae SHORT G_M16586_IG07
+ movzx r8, word ptr [rdi+2*rax+0x0C]
+ cmp eax, edx
+ jae SHORT G_M16586_IG07
+ cmp r8w, word ptr [rsi+2*rax+0x0C]
je SHORT G_M16586_IG03
- ;; size=23 bbWeight=4 PerfScore 38.00
+ ;; size=29 bbWeight=4 PerfScore 47.00
G_M16586_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rsi rdi]
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
+G_M16586_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 42, prolog size 4, PerfScore 55.50, instruction count 17, allocated bytes for code 42 (MethodHash=6acbbf35) for method Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
+; Total bytes of code 54, prolog size 4, PerfScore 64.50, instruction count 22, allocated bytes for code 54 (MethodHash=6acbbf35) for method Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
; ============================================================
Unwind Info:
+16 (+30.19%) : 240264.dasm - Microsoft.Build.Shared.FileMatcher:HasDotDot(System.String):ubyte (FullOpts)
@@ -7,41 +7,47 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 5, 9 ) ref -> rdi class-hnd single-def <System.String>
-; V01 loc0 [V01,T00] ( 6, 19 ) int -> rax
+; V00 arg0 [V00,T02] ( 5, 9 ) ref -> rdi class-hnd single-def <System.String>
+;* V01 loc0 [V01,T05] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T02] ( 3, 6 ) int -> rcx "CSE - aggressive"
-; V04 cse1 [V04,T03] ( 2, 2 ) int -> rcx "CSE - aggressive"
+; V03 tmp1 [V03,T00] ( 7, 23 ) long -> rdx "Widened primary induction variable"
+; V04 cse0 [V04,T04] ( 3, 6 ) int -> rcx "CSE - aggressive"
+; V05 cse1 [V05,T01] ( 5, 14 ) int -> rsi multi-def "CSE - aggressive"
+; V06 cse2 [V06,T03] ( 4, 8 ) int -> rax "CSE - aggressive"
;
; Lcl frame size = 0
-G_M53831_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M53831_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
mov rbp, rsp
;; size=4 bbWeight=1 PerfScore 1.25
G_M53831_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
- xor eax, eax
- mov ecx, dword ptr [rdi+0x08]
- dec ecx
+ mov eax, dword ptr [rdi+0x08]
+ lea ecx, [rax-0x01]
test ecx, ecx
jle SHORT G_M53831_IG06
- ;; size=11 bbWeight=1 PerfScore 3.75
+ xor edx, edx
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M53831_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov edx, eax
+ cmp edx, eax
+ jae SHORT G_M53831_IG10
cmp word ptr [rdi+2*rdx+0x0C], 46
jne SHORT G_M53831_IG05
- ;; size=10 bbWeight=4 PerfScore 17.00
+ ;; size=12 bbWeight=4 PerfScore 21.00
G_M53831_IG04: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- lea edx, [rax+0x01]
- cmp word ptr [rdi+2*rdx+0x0C], 46
+ lea esi, [rdx+0x01]
+ cmp esi, eax
+ jae SHORT G_M53831_IG10
+ cmp word ptr [rdi+2*rsi+0x0C], 46
je SHORT G_M53831_IG08
- ;; size=11 bbWeight=2 PerfScore 9.00
+ ;; size=15 bbWeight=2 PerfScore 11.50
G_M53831_IG05: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- inc eax
- cmp ecx, eax
+ lea esi, [rdx+0x01]
+ mov edx, esi
+ cmp ecx, edx
jg SHORT G_M53831_IG03
- ;; size=6 bbWeight=4 PerfScore 6.00
+ ;; size=9 bbWeight=4 PerfScore 8.00
G_M53831_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
xor eax, eax
@@ -57,8 +63,13 @@ G_M53831_IG09: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M53831_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 53, prolog size 4, PerfScore 38.75, instruction count 22, allocated bytes for code 53 (MethodHash=36dc2db8) for method Microsoft.Build.Shared.FileMatcher:HasDotDot(System.String):ubyte (FullOpts)
+; Total bytes of code 69, prolog size 4, PerfScore 47.50, instruction count 28, allocated bytes for code 69 (MethodHash=36dc2db8) for method Microsoft.Build.Shared.FileMatcher:HasDotDot(System.String):ubyte (FullOpts)
; ============================================================
Unwind Info:
libraries_tests.run.linux.x64.Release.mch
-27 (-20.93%) : 443683.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests1[ushort]:RemoveSignedMinValue(System.Span1[ushort]):this (Tier1)
@@ -11,44 +11,44 @@
;
; V00 this [V00,T03] ( 4, 2 ) ref -> r14 this class-hnd single-def <System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ushort]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ushort]>
-; V02 loc0 [V02,T00] ( 8,474.77) int -> r13
+;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V05 tmp2 [V05 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
;* V06 tmp3 [V06 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
;* V07 tmp4 [V07 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V08 tmp5 [V08,T02] ( 5,119.19) byref -> r15 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V09 tmp6 [V09,T01] ( 2,120.19) int -> rbx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp5 [V08,T02] ( 4,119.19) byref -> r15 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V09 tmp6 [V09,T01] ( 3,238.38) int -> rbx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V10 tmp7 [V10,T00] ( 8,592.96) long -> r13 "Widened primary induction variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M58468_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
- push r12
push rbx
- push rax
- lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov r14, rdi
; gcrRegs +[r14]
mov r15, rsi
; byrRegs +[r15]
mov ebx, edx
- ;; size=24 bbWeight=1 PerfScore 8.25
+ ;; size=21 bbWeight=1 PerfScore 6.25
G_M58468_IG02: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
xor r13d, r13d
jmp SHORT G_M58468_IG05
;; size=5 bbWeight=1 PerfScore 2.25
G_M58468_IG03: ; bbWeight=118.19, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
- mov edi, r13d
- cmp word ptr [r15+2*rdi], 0
+ cmp r13d, ebx
+ jae SHORT G_M58468_IG07
+ xor edi, edi
+ cmp word ptr [r15+2*r13], 0
setne dil
- movzx rdi, dil
test edi, edi
- jl SHORT G_M58468_IG08
- ;; size=21 bbWeight=118.19 PerfScore 679.61
+ jl SHORT G_M58468_IG09
+ ;; size=21 bbWeight=118.19 PerfScore 797.80
G_M58468_IG04: ; bbWeight=118.19, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref
inc r13d
;; size=3 bbWeight=118.19 PerfScore 29.55
@@ -59,19 +59,20 @@ G_M58468_IG05: ; bbWeight=119.19, gcrefRegs=4000 {r14}, byrefRegs=8000 {r
G_M58468_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r14]
; byrRegs -[r15]
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M58468_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, gcvars, byref, isz
+ ;; size=9 bbWeight=1 PerfScore 3.50
+G_M58468_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M58468_IG08: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
; gcrRegs +[r14]
; byrRegs +[r15]
- mov r12d, r13d
mov rdi, r14
; gcrRegs +[rdi]
mov rax, qword ptr [r14]
@@ -79,22 +80,16 @@ G_M58468_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4000 {
call [rax+0x28]<unknown method>
; gcrRegs -[rdi]
; gcr arg pop 0
- mov word ptr [r15+2*r12], ax
- mov eax, r13d
- cmp word ptr [r15+2*rax], 0
- setne al
- movzx rax, al
- test eax, eax
- jge SHORT G_M58468_IG04
- ;; size=43 bbWeight=0 PerfScore 0.00
-G_M58468_IG08: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
- mov edi, r13d
- cmp word ptr [r15+2*rdi], 0
- je SHORT G_M58468_IG07
+ mov word ptr [r15+2*r13], ax
+ jmp SHORT G_M58468_IG03
+ ;; size=23 bbWeight=0 PerfScore 0.00
+G_M58468_IG09: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
+ cmp word ptr [r15+2*r13], 0
+ je SHORT G_M58468_IG08
jmp SHORT G_M58468_IG04
- ;; size=13 bbWeight=0 PerfScore 0.00
+ ;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 129, prolog size 24, PerfScore 872.90, instruction count 46, allocated bytes for code 129 (MethodHash=46261b9b) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ushort]:RemoveSignedMinValue(System.Span`1[ushort]):this (Tier1)
+; Total bytes of code 102, prolog size 21, PerfScore 988.34, instruction count 37, allocated bytes for code 102 (MethodHash=46261b9b) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ushort]:RemoveSignedMinValue(System.Span`1[ushort]):this (Tier1)
; ============================================================
Unwind Info:
@@ -102,14 +97,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0B
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
-26 (-20.80%) : 438089.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests1[uint]:RemoveSignedMinValue(System.Span1[uint]):this (Tier1)
@@ -11,43 +11,43 @@
;
; V00 this [V00,T03] ( 4, 2 ) ref -> r14 this class-hnd single-def <System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[uint]>
-; V02 loc0 [V02,T00] ( 8,428.11) int -> r13
+;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V05 tmp2 [V05 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
;* V06 tmp3 [V06 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V07 tmp4 [V07,T02] ( 5,107.53) byref -> r15 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T01] ( 2,108.53) int -> rbx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T02] ( 4,107.53) byref -> r15 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T01] ( 3,215.05) int -> rbx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 tmp6 [V09,T00] ( 8,534.63) long -> r13 "Widened primary induction variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M7684_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
- push r12
push rbx
- push rax
- lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov r14, rdi
; gcrRegs +[r14]
mov r15, rsi
; byrRegs +[r15]
mov ebx, edx
- ;; size=24 bbWeight=1 PerfScore 8.25
+ ;; size=21 bbWeight=1 PerfScore 6.25
G_M7684_IG02: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
xor r13d, r13d
jmp SHORT G_M7684_IG05
;; size=5 bbWeight=1 PerfScore 2.25
G_M7684_IG03: ; bbWeight=106.53, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
- mov edi, r13d
- cmp dword ptr [r15+4*rdi], 0
+ cmp r13d, ebx
+ jae SHORT G_M7684_IG07
+ xor edi, edi
+ cmp dword ptr [r15+4*r13], 0
setne dil
- movzx rdi, dil
test edi, edi
- jl SHORT G_M7684_IG08
- ;; size=20 bbWeight=106.53 PerfScore 612.53
+ jl SHORT G_M7684_IG09
+ ;; size=20 bbWeight=106.53 PerfScore 719.05
G_M7684_IG04: ; bbWeight=106.53, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref
inc r13d
;; size=3 bbWeight=106.53 PerfScore 26.63
@@ -58,19 +58,20 @@ G_M7684_IG05: ; bbWeight=107.53, gcrefRegs=4000 {r14}, byrefRegs=8000 {r1
G_M7684_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r14]
; byrRegs -[r15]
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M7684_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, gcvars, byref, isz
+ ;; size=9 bbWeight=1 PerfScore 3.50
+G_M7684_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M7684_IG08: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
; gcrRegs +[r14]
; byrRegs +[r15]
- mov r12d, r13d
mov rdi, r14
; gcrRegs +[rdi]
mov rax, qword ptr [r14]
@@ -78,22 +79,16 @@ G_M7684_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4000 {r
call [rax+0x28]<unknown method>
; gcrRegs -[rdi]
; gcr arg pop 0
- mov dword ptr [r15+4*r12], eax
- mov eax, r13d
- cmp dword ptr [r15+4*rax], 0
- setne al
- movzx rax, al
- test eax, eax
- jge SHORT G_M7684_IG04
- ;; size=41 bbWeight=0 PerfScore 0.00
-G_M7684_IG08: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
- mov edi, r13d
- cmp dword ptr [r15+4*rdi], 0
- je SHORT G_M7684_IG07
+ mov dword ptr [r15+4*r13], eax
+ jmp SHORT G_M7684_IG03
+ ;; size=22 bbWeight=0 PerfScore 0.00
+G_M7684_IG09: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
+ cmp dword ptr [r15+4*r13], 0
+ je SHORT G_M7684_IG08
jmp SHORT G_M7684_IG04
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 125, prolog size 24, PerfScore 788.32, instruction count 46, allocated bytes for code 125 (MethodHash=3ffbe1fb) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[uint]:RemoveSignedMinValue(System.Span`1[uint]):this (Tier1)
+; Total bytes of code 99, prolog size 21, PerfScore 892.09, instruction count 37, allocated bytes for code 99 (MethodHash=3ffbe1fb) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[uint]:RemoveSignedMinValue(System.Span`1[uint]):this (Tier1)
; ============================================================
Unwind Info:
@@ -101,14 +96,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0B
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
-26 (-20.80%) : 444750.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests1[ubyte]:RemoveSignedMinValue(System.Span1[ubyte]):this (Tier1)
@@ -11,44 +11,44 @@
;
; V00 this [V00,T03] ( 4, 2 ) ref -> r14 this class-hnd single-def <System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ubyte]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V02 loc0 [V02,T00] ( 8,515.74) int -> r13
+;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V05 tmp2 [V05 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
;* V06 tmp3 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V07 tmp4 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V08 tmp5 [V08,T02] ( 5,129.44) byref -> r15 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V09 tmp6 [V09,T01] ( 2,130.44) int -> rbx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp5 [V08,T02] ( 4,129.44) byref -> r15 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V09 tmp6 [V09,T01] ( 3,258.87) int -> rbx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V10 tmp7 [V10,T00] ( 8,644.18) long -> r13 "Widened primary induction variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M15780_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
- push r12
push rbx
- push rax
- lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov r14, rdi
; gcrRegs +[r14]
mov r15, rsi
; byrRegs +[r15]
mov ebx, edx
- ;; size=24 bbWeight=1 PerfScore 8.25
+ ;; size=21 bbWeight=1 PerfScore 6.25
G_M15780_IG02: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
xor r13d, r13d
jmp SHORT G_M15780_IG05
;; size=5 bbWeight=1 PerfScore 2.25
G_M15780_IG03: ; bbWeight=128.44, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
- mov edi, r13d
- cmp byte ptr [r15+rdi], 0
+ cmp r13d, ebx
+ jae SHORT G_M15780_IG07
+ xor edi, edi
+ cmp byte ptr [r15+r13], 0
setne dil
- movzx rdi, dil
test edi, edi
- jl SHORT G_M15780_IG08
- ;; size=20 bbWeight=128.44 PerfScore 738.51
+ jl SHORT G_M15780_IG09
+ ;; size=20 bbWeight=128.44 PerfScore 866.94
G_M15780_IG04: ; bbWeight=128.44, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref
inc r13d
;; size=3 bbWeight=128.44 PerfScore 32.11
@@ -59,19 +59,20 @@ G_M15780_IG05: ; bbWeight=129.44, gcrefRegs=4000 {r14}, byrefRegs=8000 {r
G_M15780_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r14]
; byrRegs -[r15]
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M15780_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, gcvars, byref, isz
+ ;; size=9 bbWeight=1 PerfScore 3.50
+G_M15780_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M15780_IG08: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
; gcrRegs +[r14]
; byrRegs +[r15]
- mov r12d, r13d
mov rdi, r14
; gcrRegs +[rdi]
mov rax, qword ptr [r14]
@@ -79,22 +80,16 @@ G_M15780_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4000 {
call [rax+0x28]<unknown method>
; gcrRegs -[rdi]
; gcr arg pop 0
- mov byte ptr [r15+r12], al
- mov eax, r13d
- cmp byte ptr [r15+rax], 0
- setne al
- movzx rax, al
- test eax, eax
- jge SHORT G_M15780_IG04
- ;; size=41 bbWeight=0 PerfScore 0.00
-G_M15780_IG08: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
- mov edi, r13d
- cmp byte ptr [r15+rdi], 0
- je SHORT G_M15780_IG07
+ mov byte ptr [r15+r13], al
+ jmp SHORT G_M15780_IG03
+ ;; size=22 bbWeight=0 PerfScore 0.00
+G_M15780_IG09: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
+ cmp byte ptr [r15+r13], 0
+ je SHORT G_M15780_IG08
jmp SHORT G_M15780_IG04
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 125, prolog size 24, PerfScore 947.16, instruction count 46, allocated bytes for code 125 (MethodHash=123ac25b) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ubyte]:RemoveSignedMinValue(System.Span`1[ubyte]):this (Tier1)
+; Total bytes of code 99, prolog size 21, PerfScore 1072.85, instruction count 37, allocated bytes for code 99 (MethodHash=123ac25b) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ubyte]:RemoveSignedMinValue(System.Span`1[ubyte]):this (Tier1)
; ============================================================
Unwind Info:
@@ -102,14 +97,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0B
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+8 (+33.33%) : 382209.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (Tier1)
@@ -9,10 +9,11 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 loc0 [V01,T00] ( 5,559.23) int -> rax
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 2,140.56) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3,141.56) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4,281.11) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp3 [V05,T00] ( 6,698.78) long -> rax "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -22,24 +23,32 @@ G_M58764_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=4 bbWeight=1 PerfScore 1.25
G_M58764_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
; byrRegs +[rdi]
- xor eax, eax
test esi, esi
- jle SHORT G_M58764_IG04
- ;; size=6 bbWeight=1 PerfScore 1.50
-G_M58764_IG03: ; bbWeight=139.56, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov ecx, eax
- mov byte ptr [rdi+rcx], 204
+ jle SHORT G_M58764_IG05
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M58764_IG03: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.99 PerfScore 0.25
+G_M58764_IG04: ; bbWeight=139.56, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+ cmp eax, esi
+ jae SHORT G_M58764_IG06
+ mov byte ptr [rdi+rax], 204
inc eax
cmp eax, esi
- jl SHORT G_M58764_IG03
- ;; size=12 bbWeight=139.56 PerfScore 383.78
-G_M58764_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jl SHORT G_M58764_IG04
+ ;; size=14 bbWeight=139.56 PerfScore 523.34
+G_M58764_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rdi]
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
+G_M58764_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 24, prolog size 4, PerfScore 388.03, instruction count 12, allocated bytes for code 24 (MethodHash=de8b1a73) for method System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (Tier1)
+; Total bytes of code 32, prolog size 4, PerfScore 527.59, instruction count 15, allocated bytes for code 32 (MethodHash=de8b1a73) for method System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (Tier1)
; ============================================================
Unwind Info:
+8 (+36.36%) : 436649.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests1[ushort]:RemoveSignedMinValue(System.Span1[ushort]):this (Tier1)
@@ -11,15 +11,16 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ushort]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ushort]>
-; V02 loc0 [V02,T00] ( 5,511.39) int -> rax
+;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V05 tmp2 [V05 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
-;* V06 tmp3 [V06,T01] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V06 tmp3 [V06,T02] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V07 tmp4 [V07 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
;* V08 tmp5 [V08 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
; V09 tmp6 [V09,T03] ( 2,128.35) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp7 [V10,T02] ( 2,129.35) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V10 tmp7 [V10,T01] ( 3,256.69) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V11 tmp8 [V11,T00] ( 6,638.73) long -> rax "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -32,11 +33,12 @@ G_M58468_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr
xor eax, eax
jmp SHORT G_M58468_IG04
;; size=4 bbWeight=1 PerfScore 2.25
-G_M58468_IG03: ; bbWeight=127.35, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
- mov ecx, eax
- movzx rcx, word ptr [rsi+2*rcx]
+G_M58468_IG03: ; bbWeight=127.35, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+ cmp eax, edx
+ jae SHORT G_M58468_IG06
+ movzx rcx, word ptr [rsi+2*rax]
inc eax
- ;; size=8 bbWeight=127.35 PerfScore 318.37
+ ;; size=10 bbWeight=127.35 PerfScore 445.71
G_M58468_IG04: ; bbWeight=128.35, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
cmp eax, edx
jl SHORT G_M58468_IG03
@@ -46,8 +48,13 @@ G_M58468_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
+G_M58468_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 22, prolog size 4, PerfScore 483.80, instruction count 11, allocated bytes for code 22 (MethodHash=46261b9b) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ushort]:RemoveSignedMinValue(System.Span`1[ushort]):this (Tier1)
+; Total bytes of code 30, prolog size 4, PerfScore 611.14, instruction count 14, allocated bytes for code 30 (MethodHash=46261b9b) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ushort]:RemoveSignedMinValue(System.Span`1[ushort]):this (Tier1)
; ============================================================
Unwind Info:
+11 (+37.93%) : 442665.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests1[System.UInt128]:RemoveSignedMinValue(System.Span1[System.UInt128]):this (Tier1)
@@ -11,7 +11,7 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[System.UInt128]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.UInt128]>
-; V02 loc0 [V02,T00] ( 5,457.97) int -> rax
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.UInt128>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.UInt128>
@@ -24,7 +24,7 @@
;* V12 tmp9 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.UInt128>
;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V14 tmp11 [V14,T03] ( 2,115.24) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V15 tmp12 [V15,T02] ( 3,116.24) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V15 tmp12 [V15,T02] ( 4,230.49) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V16 tmp13 [V16 ] ( 0, 0 ) long -> zero-ref "field V04._lower (fldOffset=0x0)" P-INDEP
;* V17 tmp14 [V17 ] ( 0, 0 ) long -> zero-ref "field V04._upper (fldOffset=0x8)" P-INDEP
;* V18 tmp15 [V18 ] ( 0, 0 ) long -> zero-ref "field V05._lower (fldOffset=0x0)" P-INDEP
@@ -41,6 +41,7 @@
;* V29 tmp26 [V29 ] ( 0, 0 ) long -> zero-ref "field V12._upper (fldOffset=0x8)" P-INDEP
; V30 tmp27 [V30,T01] ( 2,456.97) byref -> rcx "BlockOp address local"
;* V31 tmp28 [V31 ] ( 0, 0 ) byref -> zero-ref "BlockOp address local"
+; V32 tmp29 [V32,T00] ( 6,571.72) long -> rax "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -50,27 +51,36 @@ G_M1732_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=4 bbWeight=1 PerfScore 1.25
G_M1732_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
; byrRegs +[rsi]
- xor eax, eax
test edx, edx
- jle SHORT G_M1732_IG04
- ;; size=6 bbWeight=1 PerfScore 1.50
-G_M1732_IG03: ; bbWeight=114.24, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
- mov ecx, eax
+ jle SHORT G_M1732_IG05
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M1732_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M1732_IG04: ; bbWeight=114.24, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+ cmp eax, edx
+ jae SHORT G_M1732_IG06
+ mov rcx, rax
shl rcx, 4
add rcx, rsi
; byrRegs +[rcx]
cmp dword ptr [rcx], ecx
inc eax
cmp eax, edx
- jl SHORT G_M1732_IG03
- ;; size=17 bbWeight=114.24 PerfScore 628.34
-G_M1732_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jl SHORT G_M1732_IG04
+ ;; size=22 bbWeight=114.24 PerfScore 771.14
+G_M1732_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rcx rsi]
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
+G_M1732_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 29, prolog size 4, PerfScore 632.59, instruction count 14, allocated bytes for code 29 (MethodHash=a857f93b) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[System.UInt128]:RemoveSignedMinValue(System.Span`1[System.UInt128]):this (Tier1)
+; Total bytes of code 40, prolog size 4, PerfScore 775.27, instruction count 18, allocated bytes for code 40 (MethodHash=a857f93b) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[System.UInt128]:RemoveSignedMinValue(System.Span`1[System.UInt128]):this (Tier1)
; ============================================================
Unwind Info:
librariestestsnotieredcompilation.run.linux.x64.Release.mch
-35 (-15.22%) : 4667.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
@@ -11,7 +11,7 @@
; V00 this [V00,T06] ( 5, 11 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer>
; V01 arg1 [V01,T11] ( 4, 6.50) int -> r15 single-def
; V02 loc0 [V02,T10] ( 4, 9 ) ref -> r13 class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]>
-; V03 loc1 [V03,T00] ( 9, 32.50) int -> r12
+;* V03 loc1 [V03,T16] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T03] ( 2, 16 ) ref -> rdi class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo>
; V06 tmp2 [V06,T04] ( 2, 16 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo>
@@ -22,27 +22,26 @@
; V11 tmp7 [V11,T02] ( 3, 24 ) ref -> rsi "arr expr"
;* V12 tmp8 [V12,T13] ( 0, 0 ) ref -> zero-ref "arr expr"
; V13 tmp9 [V13,T05] ( 2, 16 ) int -> rsi "argument with side effect"
-; V14 cse0 [V14,T07] ( 3, 12 ) ref -> rsi "CSE - moderate"
-; V15 cse1 [V15,T15] ( 3, 1.50) int -> r14 "CSE - moderate"
-; V16 cse2 [V16,T08] ( 2, 8 ) ref -> rsi "CSE - moderate"
-; V17 cse3 [V17,T09] ( 2, 8 ) ref -> rsi "CSE - moderate"
-; V18 cse4 [V18,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
+; V14 tmp10 [V14,T00] ( 9, 32.50) long -> r14 "Widened primary induction variable"
+; V15 cse0 [V15,T07] ( 3, 12 ) ref -> rsi "CSE - moderate"
+; V16 cse1 [V16,T15] ( 3, 1.50) int -> r14 "CSE - moderate"
+; V17 cse2 [V17,T08] ( 2, 8 ) ref -> rsi "CSE - moderate"
+; V18 cse3 [V18,T09] ( 2, 8 ) ref -> rsi "CSE - moderate"
+; V19 cse4 [V19,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M22286_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
- push r12
push rbx
- push rax
- lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov rbx, rdi
; gcrRegs +[rbx]
mov r15d, esi
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=19 bbWeight=1 PerfScore 6.00
G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x10]
; gcrRegs +[rdi]
@@ -51,7 +50,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=13 bbWeight=1 PerfScore 3.25
G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
test r15d, r15d
- jle G_M22286_IG07
+ jle SHORT G_M22286_IG07
mov r14d, dword ptr [rdi+0x10]
movsxd rsi, r14d
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]
@@ -61,21 +60,20 @@ G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcr arg pop 0
mov r13, rax
; gcrRegs +[r13]
- xor r12d, r12d
test r14d, r14d
jle SHORT G_M22286_IG05
- ;; size=42 bbWeight=0.50 PerfScore 3.25
+ xor r14d, r14d
+ ;; size=38 bbWeight=0.50 PerfScore 3.25
G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rsi, gword ptr [rbx+0x10]
; gcrRegs +[rsi]
- cmp r12d, dword ptr [rsi+0x10]
- jae G_M22286_IG12
+ cmp r14d, dword ptr [rsi+0x10]
+ jae SHORT G_M22286_IG12
mov rsi, gword ptr [rsi+0x08]
- cmp r12d, dword ptr [rsi+0x08]
+ cmp r14d, dword ptr [rsi+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d
- mov rsi, gword ptr [rsi+8*rdi+0x10]
+ mov rsi, gword ptr [rsi+8*r14+0x10]
mov rdi, rsi
; gcrRegs +[rdi]
mov eax, r15d
@@ -85,67 +83,60 @@ G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {},
call [Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:WithOffset(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:this]
; gcrRegs -[rdi] +[rax]
; gcr arg pop 0
- cmp r12d, dword ptr [r13+0x08]
+ cmp r14d, dword ptr [r13+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d
- lea rdi, bword ptr [r13+8*rdi+0x10]
+ lea rdi, bword ptr [r13+8*r14+0x10]
; byrRegs +[rdi]
mov rsi, rax
; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- inc r12d
+ inc r14d
mov rax, gword ptr [rbx+0x10]
; gcrRegs +[rax]
- cmp r12d, dword ptr [rax+0x10]
+ cmp r14d, dword ptr [rax+0x10]
jl SHORT G_M22286_IG04
- ;; size=84 bbWeight=4 PerfScore 139.00
+ ;; size=74 bbWeight=4 PerfScore 137.00
G_M22286_IG05: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx]
mov rax, r13
; gcrRegs +[rax]
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M22286_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax r13] +[rdi]
cmp dword ptr [rdi], edi
;; size=2 bbWeight=0.50 PerfScore 1.50
G_M22286_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
tail.jmp [System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this]
; gcr arg pop 0
- ;; size=20 bbWeight=0.50 PerfScore 2.62
+ ;; size=14 bbWeight=0.50 PerfScore 2.25
G_M22286_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M22286_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
call CORINFO_HELP_RNGCHKFAIL
@@ -157,7 +148,7 @@ G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 230, prolog size 22, PerfScore 162.12, instruction count 76, allocated bytes for code 230 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
+; Total bytes of code 195, prolog size 19, PerfScore 157.00, instruction count 66, allocated bytes for code 195 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -165,14 +156,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0B
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
-35 (-15.22%) : 42707.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
@@ -11,7 +11,7 @@
; V00 this [V00,T06] ( 5, 11 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer>
; V01 arg1 [V01,T11] ( 4, 6.50) int -> r15 single-def
; V02 loc0 [V02,T10] ( 4, 9 ) ref -> r13 class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]>
-; V03 loc1 [V03,T00] ( 9, 32.50) int -> r12
+;* V03 loc1 [V03,T16] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T03] ( 2, 16 ) ref -> rdi class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo>
; V06 tmp2 [V06,T04] ( 2, 16 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo>
@@ -22,27 +22,26 @@
; V11 tmp7 [V11,T02] ( 3, 24 ) ref -> rsi "arr expr"
;* V12 tmp8 [V12,T13] ( 0, 0 ) ref -> zero-ref "arr expr"
; V13 tmp9 [V13,T05] ( 2, 16 ) int -> rsi "argument with side effect"
-; V14 cse0 [V14,T07] ( 3, 12 ) ref -> rsi "CSE - moderate"
-; V15 cse1 [V15,T15] ( 3, 1.50) int -> r14 "CSE - moderate"
-; V16 cse2 [V16,T08] ( 2, 8 ) ref -> rsi "CSE - moderate"
-; V17 cse3 [V17,T09] ( 2, 8 ) ref -> rsi "CSE - moderate"
-; V18 cse4 [V18,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
+; V14 tmp10 [V14,T00] ( 9, 32.50) long -> r14 "Widened primary induction variable"
+; V15 cse0 [V15,T07] ( 3, 12 ) ref -> rsi "CSE - moderate"
+; V16 cse1 [V16,T15] ( 3, 1.50) int -> r14 "CSE - moderate"
+; V17 cse2 [V17,T08] ( 2, 8 ) ref -> rsi "CSE - moderate"
+; V18 cse3 [V18,T09] ( 2, 8 ) ref -> rsi "CSE - moderate"
+; V19 cse4 [V19,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M22286_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
- push r12
push rbx
- push rax
- lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov rbx, rdi
; gcrRegs +[rbx]
mov r15d, esi
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=19 bbWeight=1 PerfScore 6.00
G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x10]
; gcrRegs +[rdi]
@@ -51,7 +50,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=13 bbWeight=1 PerfScore 3.25
G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
test r15d, r15d
- jle G_M22286_IG07
+ jle SHORT G_M22286_IG07
mov r14d, dword ptr [rdi+0x10]
movsxd rsi, r14d
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]
@@ -61,21 +60,20 @@ G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcr arg pop 0
mov r13, rax
; gcrRegs +[r13]
- xor r12d, r12d
test r14d, r14d
jle SHORT G_M22286_IG05
- ;; size=42 bbWeight=0.50 PerfScore 3.25
+ xor r14d, r14d
+ ;; size=38 bbWeight=0.50 PerfScore 3.25
G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rsi, gword ptr [rbx+0x10]
; gcrRegs +[rsi]
- cmp r12d, dword ptr [rsi+0x10]
- jae G_M22286_IG12
+ cmp r14d, dword ptr [rsi+0x10]
+ jae SHORT G_M22286_IG12
mov rsi, gword ptr [rsi+0x08]
- cmp r12d, dword ptr [rsi+0x08]
+ cmp r14d, dword ptr [rsi+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d
- mov rsi, gword ptr [rsi+8*rdi+0x10]
+ mov rsi, gword ptr [rsi+8*r14+0x10]
mov rdi, rsi
; gcrRegs +[rdi]
mov eax, r15d
@@ -85,67 +83,60 @@ G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {},
call [Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:WithOffset(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:this]
; gcrRegs -[rdi] +[rax]
; gcr arg pop 0
- cmp r12d, dword ptr [r13+0x08]
+ cmp r14d, dword ptr [r13+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d
- lea rdi, bword ptr [r13+8*rdi+0x10]
+ lea rdi, bword ptr [r13+8*r14+0x10]
; byrRegs +[rdi]
mov rsi, rax
; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- inc r12d
+ inc r14d
mov rax, gword ptr [rbx+0x10]
; gcrRegs +[rax]
- cmp r12d, dword ptr [rax+0x10]
+ cmp r14d, dword ptr [rax+0x10]
jl SHORT G_M22286_IG04
- ;; size=84 bbWeight=4 PerfScore 139.00
+ ;; size=74 bbWeight=4 PerfScore 137.00
G_M22286_IG05: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx]
mov rax, r13
; gcrRegs +[rax]
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M22286_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax r13] +[rdi]
cmp dword ptr [rdi], edi
;; size=2 bbWeight=0.50 PerfScore 1.50
G_M22286_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
tail.jmp [System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this]
; gcr arg pop 0
- ;; size=20 bbWeight=0.50 PerfScore 2.62
+ ;; size=14 bbWeight=0.50 PerfScore 2.25
G_M22286_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M22286_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
call CORINFO_HELP_RNGCHKFAIL
@@ -157,7 +148,7 @@ G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 230, prolog size 22, PerfScore 162.12, instruction count 76, allocated bytes for code 230 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
+; Total bytes of code 195, prolog size 19, PerfScore 157.00, instruction count 66, allocated bytes for code 195 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -165,14 +156,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0B
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
-35 (-15.22%) : 48344.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
@@ -11,7 +11,7 @@
; V00 this [V00,T06] ( 5, 11 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer>
; V01 arg1 [V01,T11] ( 4, 6.50) int -> r15 single-def
; V02 loc0 [V02,T10] ( 4, 9 ) ref -> r13 class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]>
-; V03 loc1 [V03,T00] ( 9, 32.50) int -> r12
+;* V03 loc1 [V03,T16] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T03] ( 2, 16 ) ref -> rdi class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo>
; V06 tmp2 [V06,T04] ( 2, 16 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo>
@@ -22,27 +22,26 @@
; V11 tmp7 [V11,T02] ( 3, 24 ) ref -> rsi "arr expr"
;* V12 tmp8 [V12,T13] ( 0, 0 ) ref -> zero-ref "arr expr"
; V13 tmp9 [V13,T05] ( 2, 16 ) int -> rsi "argument with side effect"
-; V14 cse0 [V14,T07] ( 3, 12 ) ref -> rsi "CSE - moderate"
-; V15 cse1 [V15,T15] ( 3, 1.50) int -> r14 "CSE - moderate"
-; V16 cse2 [V16,T08] ( 2, 8 ) ref -> rsi "CSE - moderate"
-; V17 cse3 [V17,T09] ( 2, 8 ) ref -> rsi "CSE - moderate"
-; V18 cse4 [V18,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
+; V14 tmp10 [V14,T00] ( 9, 32.50) long -> r14 "Widened primary induction variable"
+; V15 cse0 [V15,T07] ( 3, 12 ) ref -> rsi "CSE - moderate"
+; V16 cse1 [V16,T15] ( 3, 1.50) int -> r14 "CSE - moderate"
+; V17 cse2 [V17,T08] ( 2, 8 ) ref -> rsi "CSE - moderate"
+; V18 cse3 [V18,T09] ( 2, 8 ) ref -> rsi "CSE - moderate"
+; V19 cse4 [V19,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M22286_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
- push r12
push rbx
- push rax
- lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov rbx, rdi
; gcrRegs +[rbx]
mov r15d, esi
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=19 bbWeight=1 PerfScore 6.00
G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x10]
; gcrRegs +[rdi]
@@ -51,7 +50,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=13 bbWeight=1 PerfScore 3.25
G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
test r15d, r15d
- jle G_M22286_IG07
+ jle SHORT G_M22286_IG07
mov r14d, dword ptr [rdi+0x10]
movsxd rsi, r14d
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]
@@ -61,21 +60,20 @@ G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcr arg pop 0
mov r13, rax
; gcrRegs +[r13]
- xor r12d, r12d
test r14d, r14d
jle SHORT G_M22286_IG05
- ;; size=42 bbWeight=0.50 PerfScore 3.25
+ xor r14d, r14d
+ ;; size=38 bbWeight=0.50 PerfScore 3.25
G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rsi, gword ptr [rbx+0x10]
; gcrRegs +[rsi]
- cmp r12d, dword ptr [rsi+0x10]
- jae G_M22286_IG12
+ cmp r14d, dword ptr [rsi+0x10]
+ jae SHORT G_M22286_IG12
mov rsi, gword ptr [rsi+0x08]
- cmp r12d, dword ptr [rsi+0x08]
+ cmp r14d, dword ptr [rsi+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d
- mov rsi, gword ptr [rsi+8*rdi+0x10]
+ mov rsi, gword ptr [rsi+8*r14+0x10]
mov rdi, rsi
; gcrRegs +[rdi]
mov eax, r15d
@@ -85,67 +83,60 @@ G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {},
call [Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:WithOffset(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:this]
; gcrRegs -[rdi] +[rax]
; gcr arg pop 0
- cmp r12d, dword ptr [r13+0x08]
+ cmp r14d, dword ptr [r13+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d
- lea rdi, bword ptr [r13+8*rdi+0x10]
+ lea rdi, bword ptr [r13+8*r14+0x10]
; byrRegs +[rdi]
mov rsi, rax
; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- inc r12d
+ inc r14d
mov rax, gword ptr [rbx+0x10]
; gcrRegs +[rax]
- cmp r12d, dword ptr [rax+0x10]
+ cmp r14d, dword ptr [rax+0x10]
jl SHORT G_M22286_IG04
- ;; size=84 bbWeight=4 PerfScore 139.00
+ ;; size=74 bbWeight=4 PerfScore 137.00
G_M22286_IG05: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx]
mov rax, r13
; gcrRegs +[rax]
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M22286_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax r13] +[rdi]
cmp dword ptr [rdi], edi
;; size=2 bbWeight=0.50 PerfScore 1.50
G_M22286_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
tail.jmp [System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this]
; gcr arg pop 0
- ;; size=20 bbWeight=0.50 PerfScore 2.62
+ ;; size=14 bbWeight=0.50 PerfScore 2.25
G_M22286_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M22286_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
call CORINFO_HELP_RNGCHKFAIL
@@ -157,7 +148,7 @@ G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 230, prolog size 22, PerfScore 162.12, instruction count 76, allocated bytes for code 230 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
+; Total bytes of code 195, prolog size 19, PerfScore 157.00, instruction count 66, allocated bytes for code 195 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -165,14 +156,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0B
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+8 (+28.57%) : 118028.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
@@ -10,13 +10,14 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
; V01 loc0 [V01,T01] ( 4, 10 ) int -> rax
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> rcx
+;* V03 loc2 [V03,T06] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) ubyte -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T04] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V07 tmp2 [V07,T05] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V08 tmp3 [V08,T03] ( 2, 5 ) byref -> rdi single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V09 tmp4 [V09,T02] ( 3, 6 ) int -> rsi "field V02._length (fldOffset=0x8)" P-INDEP
+; V09 tmp4 [V09,T02] ( 4, 10 ) int -> rsi "field V02._length (fldOffset=0x8)" P-INDEP
+; V10 tmp5 [V10,T00] ( 6, 21 ) long -> rcx "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -27,25 +28,31 @@ G_M59336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M59336_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
; byrRegs +[rdi]
xor eax, eax
- xor ecx, ecx
test esi, esi
jle SHORT G_M59336_IG04
+ xor ecx, ecx
;; size=8 bbWeight=1 PerfScore 1.75
G_M59336_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov edx, ecx
- movzx rdx, byte ptr [rdi+rdx]
+ cmp ecx, esi
+ jae SHORT G_M59336_IG05
+ movzx rdx, byte ptr [rdi+rcx]
add eax, edx
inc ecx
cmp ecx, esi
jl SHORT G_M59336_IG03
- ;; size=14 bbWeight=4 PerfScore 16.00
+ ;; size=16 bbWeight=4 PerfScore 20.00
G_M59336_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rdi]
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
+G_M59336_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 28, prolog size 4, PerfScore 20.50, instruction count 14, allocated bytes for code 28 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 36, prolog size 4, PerfScore 24.50, instruction count 17, allocated bytes for code 36 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================
Unwind Info:
+8 (+33.33%) : 143170.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
@@ -8,10 +8,11 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 loc0 [V01,T00] ( 5, 17 ) int -> rax
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3, 6 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4, 10 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp3 [V05,T00] ( 6, 21 ) long -> rax "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -21,24 +22,30 @@ G_M58764_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=4 bbWeight=1 PerfScore 1.25
G_M58764_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
; byrRegs +[rdi]
- xor eax, eax
test esi, esi
jle SHORT G_M58764_IG04
+ xor eax, eax
;; size=6 bbWeight=1 PerfScore 1.50
G_M58764_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov ecx, eax
- mov byte ptr [rdi+rcx], 204
+ cmp eax, esi
+ jae SHORT G_M58764_IG05
+ mov byte ptr [rdi+rax], 204
inc eax
cmp eax, esi
jl SHORT G_M58764_IG03
- ;; size=12 bbWeight=4 PerfScore 11.00
+ ;; size=14 bbWeight=4 PerfScore 15.00
G_M58764_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rdi]
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
+G_M58764_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 24, prolog size 4, PerfScore 15.25, instruction count 12, allocated bytes for code 24 (MethodHash=de8b1a73) for method System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
+; Total bytes of code 32, prolog size 4, PerfScore 19.25, instruction count 15, allocated bytes for code 32 (MethodHash=de8b1a73) for method System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
; ============================================================
Unwind Info:
+8 (+34.78%) : 225657.dasm - System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
@@ -8,10 +8,11 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 loc0 [V01,T00] ( 6, 21 ) int -> rax
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3, 6 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4, 10 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp3 [V05,T00] ( 7, 25 ) long -> rax "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -21,24 +22,30 @@ G_M39013_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=4 bbWeight=1 PerfScore 1.25
G_M39013_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
; byrRegs +[rdi]
- xor eax, eax
test esi, esi
jle SHORT G_M39013_IG04
+ xor eax, eax
;; size=6 bbWeight=1 PerfScore 1.50
G_M39013_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov ecx, eax
- mov byte ptr [rdi+rcx], al
+ cmp eax, esi
+ jae SHORT G_M39013_IG05
+ mov byte ptr [rdi+rax], al
inc eax
cmp eax, esi
jl SHORT G_M39013_IG03
- ;; size=11 bbWeight=4 PerfScore 11.00
+ ;; size=13 bbWeight=4 PerfScore 15.00
G_M39013_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rdi]
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
+G_M39013_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 23, prolog size 4, PerfScore 15.25, instruction count 12, allocated bytes for code 23 (MethodHash=6c0d679a) for method System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
+; Total bytes of code 31, prolog size 4, PerfScore 19.25, instruction count 15, allocated bytes for code 31 (MethodHash=6c0d679a) for method System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
; ============================================================
Unwind Info:
realworld.run.linux.x64.checked.mch
-35 (-15.22%) : 16219.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
@@ -11,7 +11,7 @@
; V00 this [V00,T06] ( 5, 11 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer>
; V01 arg1 [V01,T11] ( 4, 6.50) int -> r15 single-def
; V02 loc0 [V02,T10] ( 4, 9 ) ref -> r13 class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]>
-; V03 loc1 [V03,T00] ( 9, 32.50) int -> r12
+;* V03 loc1 [V03,T16] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T03] ( 2, 16 ) ref -> rdi class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo>
; V06 tmp2 [V06,T04] ( 2, 16 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo>
@@ -22,27 +22,26 @@
; V11 tmp7 [V11,T02] ( 3, 24 ) ref -> rsi "arr expr"
;* V12 tmp8 [V12,T13] ( 0, 0 ) ref -> zero-ref "arr expr"
; V13 tmp9 [V13,T05] ( 2, 16 ) int -> rsi "argument with side effect"
-; V14 cse0 [V14,T07] ( 3, 12 ) ref -> rsi "CSE - moderate"
-; V15 cse1 [V15,T15] ( 3, 1.50) int -> r14 "CSE - moderate"
-; V16 cse2 [V16,T08] ( 2, 8 ) ref -> rsi "CSE - moderate"
-; V17 cse3 [V17,T09] ( 2, 8 ) ref -> rsi "CSE - moderate"
-; V18 cse4 [V18,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
+; V14 tmp10 [V14,T00] ( 9, 32.50) long -> r14 "Widened primary induction variable"
+; V15 cse0 [V15,T07] ( 3, 12 ) ref -> rsi "CSE - moderate"
+; V16 cse1 [V16,T15] ( 3, 1.50) int -> r14 "CSE - moderate"
+; V17 cse2 [V17,T08] ( 2, 8 ) ref -> rsi "CSE - moderate"
+; V18 cse3 [V18,T09] ( 2, 8 ) ref -> rsi "CSE - moderate"
+; V19 cse4 [V19,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M22286_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
- push r12
push rbx
- push rax
- lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov rbx, rdi
; gcrRegs +[rbx]
mov r15d, esi
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=19 bbWeight=1 PerfScore 6.00
G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x10]
; gcrRegs +[rdi]
@@ -51,7 +50,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=13 bbWeight=1 PerfScore 3.25
G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
test r15d, r15d
- jle G_M22286_IG07
+ jle SHORT G_M22286_IG07
mov r14d, dword ptr [rdi+0x10]
movsxd rsi, r14d
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]
@@ -61,21 +60,20 @@ G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcr arg pop 0
mov r13, rax
; gcrRegs +[r13]
- xor r12d, r12d
test r14d, r14d
jle SHORT G_M22286_IG05
- ;; size=42 bbWeight=0.50 PerfScore 3.25
+ xor r14d, r14d
+ ;; size=38 bbWeight=0.50 PerfScore 3.25
G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rsi, gword ptr [rbx+0x10]
; gcrRegs +[rsi]
- cmp r12d, dword ptr [rsi+0x10]
- jae G_M22286_IG12
+ cmp r14d, dword ptr [rsi+0x10]
+ jae SHORT G_M22286_IG12
mov rsi, gword ptr [rsi+0x08]
- cmp r12d, dword ptr [rsi+0x08]
+ cmp r14d, dword ptr [rsi+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d
- mov rsi, gword ptr [rsi+8*rdi+0x10]
+ mov rsi, gword ptr [rsi+8*r14+0x10]
mov rdi, rsi
; gcrRegs +[rdi]
mov eax, r15d
@@ -85,67 +83,60 @@ G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {},
call [Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:WithOffset(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:this]
; gcrRegs -[rdi] +[rax]
; gcr arg pop 0
- cmp r12d, dword ptr [r13+0x08]
+ cmp r14d, dword ptr [r13+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d
- lea rdi, bword ptr [r13+8*rdi+0x10]
+ lea rdi, bword ptr [r13+8*r14+0x10]
; byrRegs +[rdi]
mov rsi, rax
; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- inc r12d
+ inc r14d
mov rax, gword ptr [rbx+0x10]
; gcrRegs +[rax]
- cmp r12d, dword ptr [rax+0x10]
+ cmp r14d, dword ptr [rax+0x10]
jl SHORT G_M22286_IG04
- ;; size=84 bbWeight=4 PerfScore 139.00
+ ;; size=74 bbWeight=4 PerfScore 137.00
G_M22286_IG05: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx]
mov rax, r13
; gcrRegs +[rax]
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M22286_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax r13] +[rdi]
cmp dword ptr [rdi], edi
;; size=2 bbWeight=0.50 PerfScore 1.50
G_M22286_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
tail.jmp [System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this]
; gcr arg pop 0
- ;; size=20 bbWeight=0.50 PerfScore 2.62
+ ;; size=14 bbWeight=0.50 PerfScore 2.25
G_M22286_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M22286_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
call CORINFO_HELP_RNGCHKFAIL
@@ -157,7 +148,7 @@ G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 230, prolog size 22, PerfScore 162.12, instruction count 76, allocated bytes for code 230 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
+; Total bytes of code 195, prolog size 19, PerfScore 157.00, instruction count 66, allocated bytes for code 195 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -165,14 +156,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0B
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
-11 (-11.70%) : 17556.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan1[uint],uint,System.Span1[uint],byref) (FullOpts)
@@ -8,69 +8,65 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V01 arg1 [V01,T11] ( 3, 3 ) int -> rdx single-def
+; V01 arg1 [V01,T10] ( 3, 3 ) int -> rdx single-def
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[uint]>
-; V03 arg3 [V03,T10] ( 3, 3 ) byref -> r9 single-def
-; V04 loc0 [V04,T04] ( 4, 10 ) long -> r10
-; V05 loc1 [V05,T00] ( 8, 26 ) int -> r11
+; V03 arg3 [V03,T09] ( 3, 3 ) byref -> r9 single-def
+; V04 loc0 [V04,T03] ( 4, 10 ) long -> r10
+; V05 loc1 [V05,T11] ( 3, 3 ) int -> rax
; V06 loc2 [V06,T01] ( 3, 12 ) long -> r10
; V07 loc3 [V07,T02] ( 3, 12 ) long -> rax
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T07] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp2 [V10,T06] ( 3, 6 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V11 tmp3 [V11,T08] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp4 [V12,T09] ( 2, 5 ) int -> r8 single-def "field V02._length (fldOffset=0x8)" P-INDEP
-; V13 cse0 [V13,T05] ( 3, 9 ) long -> rbx hoist "CSE - aggressive"
-; V14 cse1 [V14,T03] ( 3, 12 ) long -> r15 "CSE - aggressive"
+; V09 tmp1 [V09,T06] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp2 [V10,T05] ( 3, 6 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V11 tmp3 [V11,T07] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V12 tmp4 [V12,T08] ( 2, 5 ) int -> r8 single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V13 tmp5 [V13,T00] ( 8, 29 ) long -> r11 "Widened primary induction variable"
+; V14 cse0 [V14,T04] ( 3, 9 ) long -> rbx hoist "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M32639_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
- push r14
push rbx
- push rax
- lea rbp, [rsp+0x20]
- ;; size=12 bbWeight=1 PerfScore 5.50
+ lea rbp, [rsp+0x10]
+ ;; size=9 bbWeight=1 PerfScore 3.50
G_M32639_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0282 {rcx rdi r9}, byref, isz
; byrRegs +[rcx rdi r9]
xor r10d, r10d
- lea r11d, [rsi-0x01]
- test r11d, r11d
+ lea eax, [rsi-0x01]
+ test eax, eax
jl SHORT G_M32639_IG04
+ mov r11d, eax
mov ebx, edx
- ;; size=14 bbWeight=1 PerfScore 2.25
+ ;; size=15 bbWeight=1 PerfScore 2.50
G_M32639_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0282 {rcx rdi r9}, byref, isz
cmp r11d, esi
jae SHORT G_M32639_IG06
- mov r15d, r11d
- mov r14d, dword ptr [rdi+4*r15]
+ mov r15d, dword ptr [rdi+4*r11]
shl r10, 32
- or r10, r14
+ or r10, r15
mov rax, r10
xor edx, edx
div rdx:rax, rbx
cmp r11d, r8d
jae SHORT G_M32639_IG06
- mov dword ptr [rcx+4*r15], eax
+ mov dword ptr [rcx+4*r11], eax
imul rax, rbx
sub r10, rax
dec r11d
jns SHORT G_M32639_IG03
- ;; size=48 bbWeight=4 PerfScore 286.00
+ ;; size=45 bbWeight=4 PerfScore 285.00
G_M32639_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0200 {r9}, byref
; byrRegs -[rcx rdi]
mov dword ptr [r9], r10d
;; size=3 bbWeight=1 PerfScore 1.00
G_M32639_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=1 PerfScore 3.25
+ ;; size=5 bbWeight=1 PerfScore 2.50
G_M32639_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[r9]
call CORINFO_HELP_RNGCHKFAIL
@@ -78,7 +74,7 @@ G_M32639_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 94, prolog size 12, PerfScore 298.00, instruction count 36, allocated bytes for code 94 (MethodHash=723d8080) for method System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint],byref) (FullOpts)
+; Total bytes of code 83, prolog size 9, PerfScore 294.50, instruction count 32, allocated bytes for code 83 (MethodHash=723d8080) for method System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint],byref) (FullOpts)
; ============================================================
Unwind Info:
@@ -86,13 +82,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-13 (-6.88%) : 14021.dasm - Microsoft.ML.Trainers.KMeansModelParameters:Map(byref,System.Span`1[float]):this (FullOpts)
@@ -8,21 +8,21 @@
; Final local variable assignments
;
; V00 this [V00,T03] ( 6, 15 ) ref -> rbx this class-hnd single-def <Microsoft.ML.Trainers.KMeansModelParameters>
-; V01 arg1 [V01,T06] ( 4, 7 ) byref -> r15 single-def
+; V01 arg1 [V01,T05] ( 4, 7 ) byref -> r15 single-def
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[float]>
; V03 loc0 [V03,T10] ( 2, 5 ) float -> [rbp-0x2C] spill-single-def
-; V04 loc1 [V04,T00] ( 8, 29 ) int -> r12
+;* V04 loc1 [V04,T08] ( 0, 0 ) int -> zero-ref
;* V05 loc2 [V05 ] ( 0, 0 ) float -> zero-ref
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T09] ( 3, 24 ) simd16 -> mm0 "Cloning non-constant for Math.Max/Min"
-; V08 tmp2 [V08,T07] ( 2, 5 ) byref -> r14 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V09 tmp3 [V09,T08] ( 2, 5 ) int -> r13 single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V08 tmp2 [V08,T06] ( 2, 5 ) byref -> r14 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V09 tmp3 [V09,T07] ( 2, 5 ) int -> r13 single-def "field V02._length (fldOffset=0x8)" P-INDEP
; V10 tmp4 [V10,T01] ( 3, 24 ) ref -> rdi "arr expr"
-; V11 tmp5 [V11,T05] ( 2, 16 ) byref -> rdi "argument with side effect"
+; V11 tmp5 [V11,T04] ( 2, 16 ) byref -> rdi "argument with side effect"
; V12 tmp6 [V12,T02] ( 3, 24 ) ref -> rax "arr expr"
-; V13 cse0 [V13,T04] ( 4, 16 ) long -> [rbp-0x38] spill-single-def "CSE - aggressive"
+; V13 tmp7 [V13,T00] ( 10, 37 ) long -> r12 "Widened primary induction variable"
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M50770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -31,9 +31,9 @@ G_M50770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push r13
push r12
push rbx
- sub rsp, 24
+ push rax
vzeroupper
- lea rbp, [rsp+0x40]
+ lea rbp, [rsp+0x30]
mov rbx, rdi
; gcrRegs +[rbx]
mov r15, rsi
@@ -41,25 +41,23 @@ G_M50770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r14, rdx
; byrRegs +[r14]
mov r13d, ecx
- ;; size=34 bbWeight=1 PerfScore 8.75
+ ;; size=31 bbWeight=1 PerfScore 9.50
G_M50770_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14 r15}, byref, isz
mov rdi, r15
; byrRegs +[rdi]
call [Microsoft.ML.Numeric.VectorUtils:NormSquared(byref):float]
; byrRegs -[rdi]
vmovss dword ptr [rbp-0x2C], xmm0
- xor r12d, r12d
cmp dword ptr [rbx+0x34], 0
jle SHORT G_M50770_IG04
+ xor r12d, r12d
;; size=23 bbWeight=1 PerfScore 8.50
G_M50770_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14 r15}, byref, isz
mov rdi, gword ptr [rbx+0x20]
; gcrRegs +[rdi]
cmp r12d, dword ptr [rdi+0x08]
jae SHORT G_M50770_IG05
- mov eax, r12d
- mov qword ptr [rbp-0x38], rax
- lea rsi, [rax+2*rax]
+ lea rsi, [r12+2*r12]
lea rdi, bword ptr [rdi+8*rsi+0x10]
; gcrRegs -[rdi]
; byrRegs +[rdi]
@@ -72,8 +70,7 @@ G_M50770_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14 r1
; gcrRegs +[rax]
cmp r12d, dword ptr [rax+0x08]
jae SHORT G_M50770_IG05
- mov rcx, qword ptr [rbp-0x38]
- vaddss xmm0, xmm0, dword ptr [rax+4*rcx+0x10]
+ vaddss xmm0, xmm0, dword ptr [rax+4*r12+0x10]
vmovss xmm1, dword ptr [rbp-0x2C]
vaddss xmm0, xmm0, xmm1
cmp r12d, r13d
@@ -81,15 +78,15 @@ G_M50770_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14 r1
vxorps xmm2, xmm2, xmm2
vmaxss xmm2, xmm2, xmm0
vfixupimmss xmm2, xmm0, xmmword ptr [reloc @RWD16], 0
- vmovss dword ptr [r14+4*rcx], xmm2
+ vmovss dword ptr [r14+4*r12], xmm2
inc r12d
cmp r12d, dword ptr [rbx+0x34]
jl SHORT G_M50770_IG03
- ;; size=111 bbWeight=4 PerfScore 207.33
+ ;; size=101 bbWeight=4 PerfScore 198.33
G_M50770_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rax rbx]
; byrRegs -[r14-r15]
- add rsp, 24
+ add rsp, 8
pop rbx
pop r12
pop r13
@@ -107,7 +104,7 @@ RWD04 dd 00000000h, 00000000h, 00000000h
RWD16 dq 0000000000000800h, 0000000000000000h
-; Total bytes of code 189, prolog size 22, PerfScore 228.83, instruction count 55, allocated bytes for code 189 (MethodHash=73ef39ad) for method Microsoft.ML.Trainers.KMeansModelParameters:Map(byref,System.Span`1[float]):this (FullOpts)
+; Total bytes of code 176, prolog size 19, PerfScore 220.58, instruction count 52, allocated bytes for code 176 (MethodHash=73ef39ad) for method Microsoft.ML.Trainers.KMeansModelParameters:Map(byref,System.Span`1[float]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -115,12 +112,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0E
+ SizeOfProlog : 0x0B
CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18
+ CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
+8 (+21.62%) : 28243.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
@@ -8,11 +8,12 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 loc0 [V01,T01] ( 4, 10 ) int -> rax
-; V02 loc1 [V02,T00] ( 5, 17 ) int -> rcx
+; V01 loc0 [V01,T02] ( 4, 10 ) int -> rax
+;* V02 loc1 [V02,T04] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp2 [V05,T01] ( 4, 10 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T00] ( 6, 21 ) long -> rcx "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -23,26 +24,32 @@ G_M53167_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M53167_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
; byrRegs +[rdi]
mov eax, 0xD1FFAB1E
- xor ecx, ecx
test esi, esi
jle SHORT G_M53167_IG04
+ xor ecx, ecx
;; size=11 bbWeight=1 PerfScore 1.75
G_M53167_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov edx, ecx
- movzx rdx, byte ptr [rdi+rdx]
+ cmp ecx, esi
+ jae SHORT G_M53167_IG05
+ movzx rdx, byte ptr [rdi+rcx]
xor eax, edx
imul eax, eax, 0xD1FFAB1E
inc ecx
cmp ecx, esi
jl SHORT G_M53167_IG03
- ;; size=20 bbWeight=4 PerfScore 24.00
+ ;; size=22 bbWeight=4 PerfScore 28.00
G_M53167_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rdi]
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
+G_M53167_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 37, prolog size 4, PerfScore 28.50, instruction count 15, allocated bytes for code 37 (MethodHash=48b13050) for method System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 45, prolog size 4, PerfScore 32.50, instruction count 18, allocated bytes for code 45 (MethodHash=48b13050) for method System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================
Unwind Info:
+8 (+22.22%) : 15890.dasm - Microsoft.CodeAnalysis.CommandLineParser:g_isAllAscii|170(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
@@ -9,33 +9,35 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V02 loc1 [V02,T00] ( 5, 17 ) int -> rax
+;* V02 loc1 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V05 tmp2 [V05,T04] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V06 tmp3 [V06,T02] ( 2, 5 ) byref -> rdi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V07 tmp4 [V07,T01] ( 3, 6 ) int -> rsi single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T01] ( 4, 10 ) int -> rsi single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp5 [V08,T00] ( 6, 21 ) long -> rax "Widened primary induction variable"
;
; Lcl frame size = 0
-G_M41908_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M41908_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
mov rbp, rsp
;; size=4 bbWeight=1 PerfScore 1.25
G_M41908_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
; byrRegs +[rdi]
- xor eax, eax
test esi, esi
jle SHORT G_M41908_IG04
+ xor eax, eax
;; size=6 bbWeight=1 PerfScore 1.50
G_M41908_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov ecx, eax
- cmp word ptr [rdi+2*rcx], 127
+ cmp eax, esi
+ jae SHORT G_M41908_IG08
+ cmp word ptr [rdi+2*rax], 127
ja SHORT G_M41908_IG06
inc eax
cmp eax, esi
jl SHORT G_M41908_IG03
- ;; size=15 bbWeight=4 PerfScore 23.00
+ ;; size=17 bbWeight=4 PerfScore 27.00
G_M41908_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rdi]
mov eax, 1
@@ -51,8 +53,13 @@ G_M41908_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M41908_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 36, prolog size 4, PerfScore 27.50, instruction count 17, allocated bytes for code 36 (MethodHash=61d05c4b) for method Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
+; Total bytes of code 44, prolog size 4, PerfScore 31.50, instruction count 20, allocated bytes for code 44 (MethodHash=61d05c4b) for method Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
; ============================================================
Unwind Info:
+8 (+25.00%) : 1049.dasm - System.Linq.Enumerable:Sumdouble,double:double (FullOpts)
@@ -9,9 +9,9 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[double]>
-; V01 loc0 [V01,T05] ( 4, 10 ) double -> mm0
+; V01 loc0 [V01,T06] ( 4, 10 ) double -> mm0
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[double]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> rax
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) double -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -20,7 +20,8 @@
; V09 tmp4 [V09,T03] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V10 tmp5 [V10,T04] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V11 tmp6 [V11,T02] ( 2, 5 ) byref -> rdi single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp7 [V12,T01] ( 3, 6 ) int -> rsi "field V02._length (fldOffset=0x8)" P-INDEP
+; V12 tmp7 [V12,T01] ( 4, 10 ) int -> rsi "field V02._length (fldOffset=0x8)" P-INDEP
+; V13 tmp8 [V13,T00] ( 6, 21 ) long -> rax "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -32,24 +33,30 @@ G_M25021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M25021_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
; byrRegs +[rdi]
vxorps xmm0, xmm0, xmm0
- xor eax, eax
test esi, esi
jle SHORT G_M25021_IG04
+ xor eax, eax
;; size=10 bbWeight=1 PerfScore 1.83
G_M25021_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov ecx, eax
- vaddsd xmm0, xmm0, qword ptr [rdi+8*rcx]
+ cmp eax, esi
+ jae SHORT G_M25021_IG05
+ vaddsd xmm0, xmm0, qword ptr [rdi+8*rax]
inc eax
cmp eax, esi
jl SHORT G_M25021_IG03
- ;; size=13 bbWeight=4 PerfScore 31.00
+ ;; size=15 bbWeight=4 PerfScore 35.00
G_M25021_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rdi]
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
+G_M25021_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 32, prolog size 7, PerfScore 36.58, instruction count 14, allocated bytes for code 32 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
+; Total bytes of code 40, prolog size 7, PerfScore 40.58, instruction count 17, allocated bytes for code 40 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
; ============================================================
Unwind Info:
smoke_tests.nativeaot.linux.x64.checked.mch
-20 (-12.82%) : 4452.dasm - System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
@@ -7,9 +7,9 @@
; fully interruptible
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 6, 39 ) ref -> rbx class-hnd single-def <System.String[]>
-; V01 loc0 [V01,T06] ( 5, 17 ) int -> r15
-; V02 loc1 [V02,T02] ( 6, 84 ) int -> r13
+; V00 arg0 [V00,T04] ( 6, 39 ) ref -> rbx class-hnd single-def <System.String[]>
+;* V01 loc0 [V01,T08] ( 0, 0 ) int -> zero-ref
+;* V02 loc1 [V02,T07] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T05] ( 3, 32 ) ubyte -> rax "Inline return value spill temp"
; V05 tmp2 [V05,T00] ( 4, 96 ) ushort -> rdi "Inlining Arg"
@@ -20,107 +20,102 @@
;* V10 tmp7 [V10 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V11 tmp8 [V11 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
; V12 tmp9 [V12,T01] ( 3, 96 ) ref -> rdi "arr expr"
-; V13 cse0 [V13,T07] ( 3, 6 ) int -> r14 "CSE - moderate"
-; V14 cse1 [V14,T04] ( 4, 40 ) long -> r12 "CSE - aggressive"
+; V13 tmp10 [V13,T03] ( 7, 49 ) long -> r14 "Widened primary induction variable"
+; V14 tmp11 [V14,T02] ( 6, 82 ) long -> r13 "Widened primary induction variable"
+; V15 cse0 [V15,T06] ( 3, 6 ) int -> r15 "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M29788_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
- push r12
push rbx
- push rax
- lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=19 bbWeight=1 PerfScore 7.75
+ ;; size=16 bbWeight=1 PerfScore 5.75
G_M29788_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- xor r15d, r15d
- mov r14d, dword ptr [rbx+0x08]
- test r14d, r14d
- jle SHORT G_M29788_IG09
+ mov r15d, dword ptr [rbx+0x08]
+ test r15d, r15d
+ jle SHORT G_M29788_IG10
+ xor r14d, r14d
;; size=12 bbWeight=1 PerfScore 3.50
G_M29788_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- xor r13d, r13d
- mov r12d, r15d
- mov rdi, gword ptr [rbx+8*r12+0x10]
+ mov rdi, gword ptr [rbx+8*r14+0x10]
; gcrRegs +[rdi]
cmp dword ptr [rdi+0x08], 0
- jle SHORT G_M29788_IG08
- ;; size=17 bbWeight=4 PerfScore 26.00
-G_M29788_IG04: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jle SHORT G_M29788_IG09
+ ;; size=11 bbWeight=4 PerfScore 24.00
+G_M29788_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
- mov rdi, gword ptr [rbx+8*r12+0x10]
+ xor r13d, r13d
+ ;; size=3 bbWeight=2 PerfScore 0.50
+G_M29788_IG05: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rdi, gword ptr [rbx+8*r14+0x10]
; gcrRegs +[rdi]
cmp r13d, dword ptr [rdi+0x08]
- jae SHORT G_M29788_IG13
- mov eax, r13d
- movzx rdi, word ptr [rdi+2*rax+0x0C]
+ jae SHORT G_M29788_IG14
+ movzx rdi, word ptr [rdi+2*r13+0x0C]
; gcrRegs -[rdi]
cmp edi, 256
- jae SHORT G_M29788_IG06
- ;; size=27 bbWeight=16 PerfScore 152.00
-G_M29788_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jae SHORT G_M29788_IG07
+ ;; size=25 bbWeight=16 PerfScore 148.00
+G_M29788_IG06: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
call System.Char:IsWhiteSpaceLatin1(ushort):ubyte
; gcr arg pop 0
- jmp SHORT G_M29788_IG07
+ jmp SHORT G_M29788_IG08
;; size=7 bbWeight=8 PerfScore 24.00
-G_M29788_IG06: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M29788_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
; gcr arg pop 0
;; size=5 bbWeight=8 PerfScore 8.00
-G_M29788_IG07: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M29788_IG08: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test eax, eax
- jne SHORT G_M29788_IG11
+ jne SHORT G_M29788_IG12
inc r13d
- mov rax, gword ptr [rbx+8*r12+0x10]
+ mov rax, gword ptr [rbx+8*r14+0x10]
; gcrRegs +[rax]
cmp dword ptr [rax+0x08], r13d
- jg SHORT G_M29788_IG04
+ jg SHORT G_M29788_IG05
;; size=18 bbWeight=16 PerfScore 120.00
-G_M29788_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M29788_IG09: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- inc r15d
- cmp r14d, r15d
+ inc r14d
+ cmp r15d, r14d
jg SHORT G_M29788_IG03
;; size=8 bbWeight=4 PerfScore 6.00
-G_M29788_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29788_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M29788_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
+G_M29788_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M29788_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
+G_M29788_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M29788_IG12: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
+G_M29788_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M29788_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
+G_M29788_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 156, prolog size 19, PerfScore 351.75, instruction count 57, allocated bytes for code 156 (MethodHash=bfc38ba3) for method System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
+; Total bytes of code 136, prolog size 16, PerfScore 343.50, instruction count 49, allocated bytes for code 136 (MethodHash=bfc38ba3) for method System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
; ============================================================
Cfi Info:
@@ -134,8 +129,5 @@ Cfi Info:
CodeOffset: 0x05 Op: RelOffset DwarfReg:0xe Offset:0x0
CodeOffset: 0x07 Op: AdjustCfaOffset Offset:0x8
CodeOffset: 0x07 Op: RelOffset DwarfReg:0xd Offset:0x0
- CodeOffset: 0x09 Op: AdjustCfaOffset Offset:0x8
- CodeOffset: 0x09 Op: RelOffset DwarfReg:0xc Offset:0x0
- CodeOffset: 0x0A Op: AdjustCfaOffset Offset:0x8
- CodeOffset: 0x0A Op: RelOffset DwarfReg:0x3 Offset:0x0
- CodeOffset: 0x0B Op: AdjustCfaOffset Offset:0x8
+ CodeOffset: 0x08 Op: AdjustCfaOffset Offset:0x8
+ CodeOffset: 0x08 Op: RelOffset DwarfReg:0x3 Offset:0x0
-24 (-12.06%) : 21860.dasm - PInvokeTests.LowLevelExtensions:LowLevelToString(int):System.String (FullOpts)
@@ -7,25 +7,24 @@
; fully interruptible
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 11, 21 ) int -> rbx
+; V00 arg0 [V00,T00] ( 11, 23 ) int -> rbx
; V01 loc0 [V01,T04] ( 5, 6.50) ref -> r15 class-hnd exact single-def <ushort[]>
-; V02 loc1 [V02,T02] ( 11, 20 ) int -> r14
-; V03 loc2 [V03,T05] ( 3, 1.50) ubyte -> rdi single-def
+; V02 loc1 [V02,T05] ( 7, 3.50) int -> rbx
+; V03 loc2 [V03,T06] ( 3, 2.50) ubyte -> rdi single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 3, 12 ) int -> rax "CSE - aggressive"
-; V06 rat0 [V06,T00] ( 3, 24 ) int -> rdx "ReplaceWithLclVar is creating a new local variable"
+; V05 tmp1 [V05,T02] ( 6, 17.50) long -> rcx "Widened primary induction variable"
+; V06 cse0 [V06,T03] ( 3, 12 ) int -> rax "CSE - aggressive"
+; V07 rat0 [V07,T01] ( 3, 24 ) int -> rdx "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M46937_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
- push r14
push rbx
- push rax
- lea rbp, [rsp+0x20]
+ lea rbp, [rsp+0x10]
mov ebx, edi
- ;; size=14 bbWeight=1 PerfScore 5.75
+ ;; size=11 bbWeight=1 PerfScore 3.75
G_M46937_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lea rdi, [(reloc)] ; ushort[]
mov esi, 11
@@ -34,24 +33,21 @@ G_M46937_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcr arg pop 0
mov r15, rax
; gcrRegs +[r15]
- xor r14d, r14d
cmp ebx, 0xD1FFAB1E
jne SHORT G_M46937_IG05
- ;; size=31 bbWeight=1 PerfScore 3.50
+ ;; size=28 bbWeight=1 PerfScore 3.25
G_M46937_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax r15]
lea rax, gword ptr [(reloc)]
; gcrRegs +[rax]
;; size=7 bbWeight=0.50 PerfScore 0.25
G_M46937_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M46937_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M46937_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] +[r15]
mov edi, ebx
shr edi, 31
@@ -59,11 +55,11 @@ G_M46937_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
neg eax
test edi, edi
cmovne ebx, eax
- ;; size=14 bbWeight=0.50 PerfScore 0.88
+ xor ecx, ecx
+ ;; size=16 bbWeight=1 PerfScore 2.00
G_M46937_IG06: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
- cmp r14d, 11
+ cmp ecx, 11
jae SHORT G_M46937_IG10
- mov ecx, r14d
mov edx, 0xD1FFAB1E
mov eax, edx
imul edx:eax, ebx
@@ -76,20 +72,21 @@ G_M46937_IG06: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byr
sub ebx, edx
add ebx, 48
mov word ptr [r15+2*rcx+0x10], bx
- inc r14d
+ inc ecx
mov ebx, eax
test ebx, ebx
jne SHORT G_M46937_IG06
- ;; size=53 bbWeight=4 PerfScore 42.00
+ ;; size=48 bbWeight=4 PerfScore 41.00
G_M46937_IG07: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+ mov ebx, ecx
test edi, edi
je SHORT G_M46937_IG08
- cmp r14d, 11
+ cmp ebx, 11
jae SHORT G_M46937_IG10
- mov edi, r14d
+ mov edi, ebx
mov word ptr [r15+2*rdi+0x10], 45
- inc r14d
- ;; size=24 bbWeight=0.50 PerfScore 2.00
+ inc ebx
+ ;; size=23 bbWeight=0.50 PerfScore 2.12
G_M46937_IG08: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
mov rdi, r15
; gcrRegs +[rdi]
@@ -97,23 +94,21 @@ G_M46937_IG08: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {},
; gcrRegs -[rdi]
; gcr arg pop 0
mov esi, 11
- sub esi, r14d
+ sub esi, ebx
mov rdi, r15
; gcrRegs +[rdi]
- mov edx, r14d
+ mov edx, ebx
call <unknown method>
; gcrRegs -[rdi r15] +[rax]
; gcr arg pop 0
nop
- ;; size=28 bbWeight=0.50 PerfScore 1.75
+ ;; size=26 bbWeight=0.50 PerfScore 1.75
G_M46937_IG09: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
G_M46937_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
call CORINFO_HELP_RNGCHKFAIL
@@ -121,7 +116,7 @@ G_M46937_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 199, prolog size 14, PerfScore 59.38, instruction count 69, allocated bytes for code 199 (MethodHash=585e48a6) for method PInvokeTests.LowLevelExtensions:LowLevelToString(int):System.String (FullOpts)
+; Total bytes of code 175, prolog size 11, PerfScore 56.62, instruction count 63, allocated bytes for code 175 (MethodHash=585e48a6) for method PInvokeTests.LowLevelExtensions:LowLevelToString(int):System.String (FullOpts)
; ============================================================
Cfi Info:
@@ -131,8 +126,5 @@ Cfi Info:
CodeOffset: 0x01 Op: RelOffset DwarfReg:0x6 Offset:0x0
CodeOffset: 0x03 Op: AdjustCfaOffset Offset:0x8
CodeOffset: 0x03 Op: RelOffset DwarfReg:0xf Offset:0x0
- CodeOffset: 0x05 Op: AdjustCfaOffset Offset:0x8
- CodeOffset: 0x05 Op: RelOffset DwarfReg:0xe Offset:0x0
- CodeOffset: 0x06 Op: AdjustCfaOffset Offset:0x8
- CodeOffset: 0x06 Op: RelOffset DwarfReg:0x3 Offset:0x0
- CodeOffset: 0x07 Op: AdjustCfaOffset Offset:0x8
+ CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x8
+ CodeOffset: 0x04 Op: RelOffset DwarfReg:0x3 Offset:0x0
-37 (-11.28%) : 10212.dasm - System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList1[System.__Canon]:Filter(System.Func2[System.Canon,ubyte]):System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.Canon]:this (FullOpts)
@@ -13,16 +13,17 @@
; V03 loc1 [V03,T11] ( 3, 4 ) ref -> r13 class-hnd exact single-def <System.__Canon[]>
; V04 loc2 [V04,T10] ( 4, 6 ) int -> [rbp-0x34]
; V05 loc3 [V05,T03] ( 7, 12 ) int -> [rbp-0x38]
-; V06 loc4 [V06,T00] ( 9, 27 ) int -> [rbp-0x3C]
-; V07 loc5 [V07,T07] ( 3, 10 ) ref -> r14 class-hnd <System.__Canon>
+;* V06 loc4 [V06,T15] ( 0, 0 ) int -> zero-ref
+; V07 loc5 [V07,T07] ( 3, 10 ) ref -> [rbp-0x48] class-hnd spill-single-def <System.__Canon>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V09 tmp1 [V09,T08] ( 2, 8 ) int -> rdi "Strict ordering of exceptions for Array store"
; V10 tmp2 [V10,T04] ( 6, 12 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]>
; V11 tmp3 [V11,T01] ( 3, 24 ) ref -> rsi "arr expr"
; V12 tmp4 [V12,T06] ( 3, 12 ) ref -> rdi "arr expr"
-; V13 cse0 [V13,T12] ( 3, 3 ) long -> [rbp-0x48] spill-single-def "CSE - moderate"
-; V14 cse1 [V14,T13] ( 3, 3 ) long -> r13 "CSE - moderate"
-; V15 cse2 [V15,T14] ( 3, 3 ) int -> r14 "CSE - moderate"
+; V13 tmp5 [V13,T00] ( 9, 27 ) long -> r14 "Widened primary induction variable"
+; V14 cse0 [V14,T12] ( 3, 3 ) long -> [rbp-0x40] spill-single-def "CSE - moderate"
+; V15 cse1 [V15,T13] ( 3, 3 ) long -> r13 "CSE - moderate"
+; V16 cse2 [V16,T14] ( 3, 3 ) int -> r14 "CSE - moderate"
;
; Lcl frame size = 40
@@ -41,7 +42,7 @@ G_M51283_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r15, rsi
; gcrRegs +[r15]
;; size=29 bbWeight=1 PerfScore 8.25
-G_M51283_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M51283_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov r14d, dword ptr [rbx+0x18]
movsxd r13, r14d
mov rsi, r13
@@ -53,7 +54,7 @@ G_M51283_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
mov rdi, qword ptr [rbx]
mov rax, qword ptr [rdi+0x30]
; gcrRegs -[rax]
- mov qword ptr [rbp-0x48], rax
+ mov qword ptr [rbp-0x40], rax
mov rdi, qword ptr [rax+0x08]
mov rsi, r13
call CORINFO_HELP_NEWARR_1_VC
@@ -65,67 +66,63 @@ G_M51283_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
mov dword ptr [rbp-0x34], eax
xor ecx, ecx
mov dword ptr [rbp-0x38], ecx
- xor edx, edx
test r14d, r14d
- jle G_M51283_IG06
- ;; size=72 bbWeight=1 PerfScore 16.75
+ jle SHORT G_M51283_IG06
+ xor r14d, r14d
+ ;; size=69 bbWeight=1 PerfScore 16.75
G_M51283_IG03: ; bbWeight=4, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
mov rsi, gword ptr [rbx+0x08]
; gcrRegs +[rsi]
- cmp edx, dword ptr [rsi+0x08]
- jae G_M51283_IG09
- mov dword ptr [rbp-0x3C], edx
- mov edi, edx
- mov r14, gword ptr [rsi+8*rdi+0x10]
- ; gcrRegs +[r14]
- mov rsi, r14
+ cmp r14d, dword ptr [rsi+0x08]
+ jae G_M51283_IG08
+ mov rdx, gword ptr [rsi+8*r14+0x10]
+ ; gcrRegs +[rdx]
+ mov gword ptr [rbp-0x48], rdx
+ ; GC ptr vars +{V07}
+ mov rsi, rdx
mov rdi, gword ptr [r15+0x08]
; gcrRegs +[rdi]
call [r15+0x20]<unknown method>
- ; gcrRegs -[rsi rdi]
+ ; gcrRegs -[rdx rsi rdi]
test eax, eax
je SHORT G_M51283_IG05
- ;; size=38 bbWeight=4 PerfScore 63.00
-G_M51283_IG04: ; bbWeight=2, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=38 bbWeight=4 PerfScore 62.00
+G_M51283_IG04: ; bbWeight=2, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
movsxd rsi, dword ptr [rbp-0x38]
mov rdi, r13
; gcrRegs +[rdi]
- mov rdx, r14
+ mov rdx, gword ptr [rbp-0x48]
; gcrRegs +[rdx]
+ ; GC ptr vars -{V07}
call CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[rdx rdi r14]
+ ; gcrRegs -[rdx rdi]
mov rdi, gword ptr [rbx+0x10]
; gcrRegs +[rdi]
- mov r14d, dword ptr [rbp-0x3C]
cmp r14d, dword ptr [rdi+0x08]
- jae G_M51283_IG09
- mov eax, r14d
- mov edi, dword ptr [rdi+4*rax+0x10]
+ jae SHORT G_M51283_IG08
+ mov edi, dword ptr [rdi+4*r14+0x10]
; gcrRegs -[rdi]
mov eax, dword ptr [rbp-0x38]
cmp eax, dword ptr [r12+0x08]
- jae G_M51283_IG09
+ jae SHORT G_M51283_IG08
mov ecx, eax
mov dword ptr [r12+4*rcx+0x10], edi
inc eax
mov dword ptr [rbp-0x38], eax
cmp r14d, dword ptr [rbx+0x1C]
- jge SHORT G_M51283_IG08
+ jge SHORT G_M51283_IG05
mov edi, dword ptr [rbp-0x34]
inc edi
mov dword ptr [rbp-0x34], edi
- mov dword ptr [rbp-0x3C], r14d
- ;; size=84 bbWeight=2 PerfScore 57.00
-G_M51283_IG05: ; bbWeight=4, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref
- mov r14d, dword ptr [rbp-0x3C]
+ ;; size=67 bbWeight=2 PerfScore 54.00
+G_M51283_IG05: ; bbWeight=4, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
inc r14d
cmp r14d, dword ptr [rbx+0x18]
- mov edx, r14d
- jl G_M51283_IG03
- ;; size=20 bbWeight=4 PerfScore 22.00
+ jl SHORT G_M51283_IG03
+ ;; size=9 bbWeight=4 PerfScore 17.00
G_M51283_IG06: ; bbWeight=1, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref
; gcrRegs -[r15]
- mov r15, qword ptr [rbp-0x48]
+ mov r15, qword ptr [rbp-0x40]
mov rdi, qword ptr [r15]
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -162,18 +159,13 @@ G_M51283_IG07: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M51283_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax] +[r12-r13]
- mov dword ptr [rbp-0x3C], r14d
- jmp SHORT G_M51283_IG05
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M51283_IG09: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r12-r13 r15]
+G_M51283_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax r15]
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 328, prolog size 23, PerfScore 186.25, instruction count 97, allocated bytes for code 328 (MethodHash=aa3837ac) for method System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:Filter(System.Func`2[System.__Canon,ubyte]):System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 291, prolog size 23, PerfScore 174.25, instruction count 89, allocated bytes for code 291 (MethodHash=aa3837ac) for method System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:Filter(System.Func`2[System.__Canon,ubyte]):System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:this (FullOpts)
; ============================================================
Cfi Info:
+10 (+18.18%) : 26937.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
@@ -8,22 +8,22 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 loc0 [V01,T06] ( 4, 4 ) ref -> rax class-hnd exact single-def <System.String>
+; V01 loc0 [V01,T05] ( 4, 4 ) ref -> rax class-hnd exact single-def <System.String>
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> rdx
+;* V03 loc2 [V03,T09] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-;* V06 tmp2 [V06,T09] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V07 tmp3 [V07,T07] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
+;* V06 tmp2 [V06,T08] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V07 tmp3 [V07,T06] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp6 [V10,T03] ( 2, 5 ) byref -> r15 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V11 tmp7 [V11,T02] ( 3, 3 ) int -> rbx single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V12 tmp8 [V12,T05] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp9 [V13,T04] ( 3, 6 ) int -> rbx "field V02._length (fldOffset=0x8)" P-INDEP
-; V14 tmp10 [V14,T08] ( 2, 2 ) byref -> rcx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp6 [V10,T02] ( 2, 5 ) byref -> r15 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V11 tmp7 [V11,T01] ( 4, 7 ) int -> rbx single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V12 tmp8 [V12,T04] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp9 [V13,T03] ( 3, 6 ) int -> rdx "field V02._length (fldOffset=0x8)" P-INDEP
+; V14 tmp10 [V14,T07] ( 2, 2 ) byref -> rcx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V15 tmp11 [V15,T10] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V16 cse0 [V16,T01] ( 3, 12 ) long -> rdi "CSE - aggressive"
+; V16 tmp12 [V16,T00] ( 7, 25 ) long -> rdi "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -44,18 +44,20 @@ G_M6504_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byre
cmp byte ptr [rax], al
lea rcx, bword ptr [rax+0x0C]
; byrRegs +[rcx]
- xor edx, edx
- test ebx, ebx
+ mov edx, ebx
+ test edx, edx
jle SHORT G_M6504_IG04
- ;; size=19 bbWeight=1 PerfScore 6.25
+ xor edi, edi
+ ;; size=21 bbWeight=1 PerfScore 6.50
G_M6504_IG03: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=8002 {rcx r15}, byref, isz
- mov edi, edx
+ cmp edi, ebx
+ jae SHORT G_M6504_IG05
movzx rsi, byte ptr [r15+rdi]
mov word ptr [rcx+2*rdi], si
- inc edx
- cmp edx, ebx
+ inc edi
+ cmp edi, edx
jl SHORT G_M6504_IG03
- ;; size=17 bbWeight=4 PerfScore 19.00
+ ;; size=19 bbWeight=4 PerfScore 23.00
G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rcx r15]
pop rbx
@@ -63,8 +65,14 @@ G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byre
pop rbp
ret
;; size=5 bbWeight=1 PerfScore 2.50
+G_M6504_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 55, prolog size 14, PerfScore 31.75, instruction count 23, allocated bytes for code 55 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
+; Total bytes of code 65, prolog size 14, PerfScore 36.00, instruction count 27, allocated bytes for code 65 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
; ============================================================
Cfi Info:
+10 (+18.18%) : 19478.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
@@ -8,22 +8,22 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 loc0 [V01,T06] ( 4, 4 ) ref -> rax class-hnd exact single-def <System.String>
+; V01 loc0 [V01,T05] ( 4, 4 ) ref -> rax class-hnd exact single-def <System.String>
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> rdx
+;* V03 loc2 [V03,T09] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-;* V06 tmp2 [V06,T09] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V07 tmp3 [V07,T07] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
+;* V06 tmp2 [V06,T08] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V07 tmp3 [V07,T06] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp6 [V10,T03] ( 2, 5 ) byref -> r15 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V11 tmp7 [V11,T02] ( 3, 3 ) int -> rbx single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V12 tmp8 [V12,T05] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp9 [V13,T04] ( 3, 6 ) int -> rbx "field V02._length (fldOffset=0x8)" P-INDEP
-; V14 tmp10 [V14,T08] ( 2, 2 ) byref -> rcx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp6 [V10,T02] ( 2, 5 ) byref -> r15 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V11 tmp7 [V11,T01] ( 4, 7 ) int -> rbx single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V12 tmp8 [V12,T04] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp9 [V13,T03] ( 3, 6 ) int -> rdx "field V02._length (fldOffset=0x8)" P-INDEP
+; V14 tmp10 [V14,T07] ( 2, 2 ) byref -> rcx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V15 tmp11 [V15,T10] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V16 cse0 [V16,T01] ( 3, 12 ) long -> rdi "CSE - aggressive"
+; V16 tmp12 [V16,T00] ( 7, 25 ) long -> rdi "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -44,18 +44,20 @@ G_M6504_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byre
cmp byte ptr [rax], al
lea rcx, bword ptr [rax+0x0C]
; byrRegs +[rcx]
- xor edx, edx
- test ebx, ebx
+ mov edx, ebx
+ test edx, edx
jle SHORT G_M6504_IG04
- ;; size=19 bbWeight=1 PerfScore 6.25
+ xor edi, edi
+ ;; size=21 bbWeight=1 PerfScore 6.50
G_M6504_IG03: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=8002 {rcx r15}, byref, isz
- mov edi, edx
+ cmp edi, ebx
+ jae SHORT G_M6504_IG05
movzx rsi, byte ptr [r15+rdi]
mov word ptr [rcx+2*rdi], si
- inc edx
- cmp edx, ebx
+ inc edi
+ cmp edi, edx
jl SHORT G_M6504_IG03
- ;; size=17 bbWeight=4 PerfScore 19.00
+ ;; size=19 bbWeight=4 PerfScore 23.00
G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rcx r15]
pop rbx
@@ -63,8 +65,14 @@ G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byre
pop rbp
ret
;; size=5 bbWeight=1 PerfScore 2.50
+G_M6504_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 55, prolog size 14, PerfScore 31.75, instruction count 23, allocated bytes for code 55 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
+; Total bytes of code 65, prolog size 14, PerfScore 36.00, instruction count 27, allocated bytes for code 65 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
; ============================================================
Cfi Info:
+10 (+18.18%) : 24212.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
@@ -8,22 +8,22 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 loc0 [V01,T06] ( 4, 4 ) ref -> rax class-hnd exact single-def <System.String>
+; V01 loc0 [V01,T05] ( 4, 4 ) ref -> rax class-hnd exact single-def <System.String>
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> rdx
+;* V03 loc2 [V03,T09] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-;* V06 tmp2 [V06,T09] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V07 tmp3 [V07,T07] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
+;* V06 tmp2 [V06,T08] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V07 tmp3 [V07,T06] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp6 [V10,T03] ( 2, 5 ) byref -> r15 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V11 tmp7 [V11,T02] ( 3, 3 ) int -> rbx single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V12 tmp8 [V12,T05] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp9 [V13,T04] ( 3, 6 ) int -> rbx "field V02._length (fldOffset=0x8)" P-INDEP
-; V14 tmp10 [V14,T08] ( 2, 2 ) byref -> rcx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp6 [V10,T02] ( 2, 5 ) byref -> r15 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V11 tmp7 [V11,T01] ( 4, 7 ) int -> rbx single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V12 tmp8 [V12,T04] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp9 [V13,T03] ( 3, 6 ) int -> rdx "field V02._length (fldOffset=0x8)" P-INDEP
+; V14 tmp10 [V14,T07] ( 2, 2 ) byref -> rcx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V15 tmp11 [V15,T10] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V16 cse0 [V16,T01] ( 3, 12 ) long -> rdi "CSE - aggressive"
+; V16 tmp12 [V16,T00] ( 7, 25 ) long -> rdi "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -44,18 +44,20 @@ G_M6504_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byre
cmp byte ptr [rax], al
lea rcx, bword ptr [rax+0x0C]
; byrRegs +[rcx]
- xor edx, edx
- test ebx, ebx
+ mov edx, ebx
+ test edx, edx
jle SHORT G_M6504_IG04
- ;; size=19 bbWeight=1 PerfScore 6.25
+ xor edi, edi
+ ;; size=21 bbWeight=1 PerfScore 6.50
G_M6504_IG03: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=8002 {rcx r15}, byref, isz
- mov edi, edx
+ cmp edi, ebx
+ jae SHORT G_M6504_IG05
movzx rsi, byte ptr [r15+rdi]
mov word ptr [rcx+2*rdi], si
- inc edx
- cmp edx, ebx
+ inc edi
+ cmp edi, edx
jl SHORT G_M6504_IG03
- ;; size=17 bbWeight=4 PerfScore 19.00
+ ;; size=19 bbWeight=4 PerfScore 23.00
G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rcx r15]
pop rbx
@@ -63,8 +65,14 @@ G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byre
pop rbp
ret
;; size=5 bbWeight=1 PerfScore 2.50
+G_M6504_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 55, prolog size 14, PerfScore 31.75, instruction count 23, allocated bytes for code 55 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
+; Total bytes of code 65, prolog size 14, PerfScore 36.00, instruction count 27, allocated bytes for code 65 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
; ============================================================
Cfi Info:
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.linux.x64.checked.mch |
1,688 |
1,041 |
573 |
74 |
-7,294 |
+9,150 |
| benchmarks.run_pgo.linux.x64.checked.mch |
19,451 |
2,822 |
16,248 |
381 |
-24,305 |
+178,258 |
| benchmarks.run_tiered.linux.x64.checked.mch |
608 |
354 |
225 |
29 |
-5,779 |
+2,934 |
| coreclr_tests.run.linux.x64.checked.mch |
21,671 |
18,246 |
3,114 |
311 |
-96,350 |
+44,922 |
| libraries.crossgen2.linux.x64.checked.mch |
5,108 |
2,941 |
1,915 |
252 |
-14,546 |
+32,927 |
| libraries.pmi.linux.x64.checked.mch |
6,642 |
3,823 |
2,428 |
391 |
-18,006 |
+41,149 |
| libraries_tests.run.linux.x64.Release.mch |
28,600 |
10,239 |
17,389 |
972 |
-64,237 |
+455,666 |
| librariestestsnotieredcompilation.run.linux.x64.Release.mch |
8,452 |
4,876 |
3,183 |
393 |
-23,665 |
+53,006 |
| realworld.run.linux.x64.checked.mch |
1,438 |
709 |
643 |
86 |
-3,578 |
+12,014 |
| smoke_tests.nativeaot.linux.x64.checked.mch |
1,052 |
664 |
331 |
57 |
-3,275 |
+3,712 |
|
94,710 |
45,715 |
46,049 |
2,946 |
-261,035 |
+833,738 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.linux.x64.checked.mch |
36,217 |
3,549 |
32,668 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_pgo.linux.x64.checked.mch |
160,327 |
63,207 |
97,120 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_tiered.linux.x64.checked.mch |
65,386 |
50,236 |
15,150 |
0 (0.00%) |
0 (0.00%) |
| coreclr_tests.run.linux.x64.checked.mch |
598,985 |
355,942 |
243,043 |
28 (0.00%) |
28 (0.00%) |
| libraries.crossgen2.linux.x64.checked.mch |
234,329 |
15 |
234,314 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.linux.x64.checked.mch |
296,931 |
6 |
296,925 |
0 (0.00%) |
0 (0.00%) |
| libraries_tests.run.linux.x64.Release.mch |
759,766 |
496,184 |
263,582 |
0 (0.00%) |
0 (0.00%) |
| librariestestsnotieredcompilation.run.linux.x64.Release.mch |
305,443 |
21,912 |
283,531 |
0 (0.00%) |
0 (0.00%) |
| realworld.run.linux.x64.checked.mch |
33,083 |
9 |
33,074 |
0 (0.00%) |
0 (0.00%) |
| smoke_tests.nativeaot.linux.x64.checked.mch |
27,414 |
10 |
27,404 |
0 (0.00%) |
0 (0.00%) |
|
2,517,881 |
991,070 |
1,526,811 |
28 (0.00%) |
28 (0.00%) |
jit-analyze output
benchmarks.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 14336747 (overridden on cmd)
Total bytes of diff: 14338603 (overridden on cmd)
Total bytes of delta: 1856 (0.01 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
309 : 27846.dasm (11.03 % of base)
302 : 20096.dasm (7.81 % of base)
281 : 4031.dasm (3.03 % of base)
256 : 5113.dasm (6.20 % of base)
253 : 14188.dasm (3.74 % of base)
247 : 10282.dasm (9.04 % of base)
113 : 4477.dasm (6.36 % of base)
108 : 3531.dasm (1.09 % of base)
107 : 8293.dasm (7.20 % of base)
105 : 20318.dasm (1.38 % of base)
87 : 21503.dasm (3.32 % of base)
85 : 20556.dasm (2.99 % of base)
83 : 2378.dasm (4.72 % of base)
73 : 20602.dasm (2.63 % of base)
69 : 20555.dasm (4.99 % of base)
65 : 10178.dasm (5.48 % of base)
65 : 21329.dasm (8.31 % of base)
65 : 4481.dasm (5.93 % of base)
65 : 22276.dasm (3.65 % of base)
62 : 20606.dasm (2.82 % of base)
Top file improvements (bytes):
-476 : 18107.dasm (-15.02 % of base)
-395 : 17464.dasm (-11.14 % of base)
-344 : 23263.dasm (-4.25 % of base)
-187 : 17710.dasm (-6.96 % of base)
-158 : 28516.dasm (-1.62 % of base)
-121 : 28324.dasm (-1.11 % of base)
-116 : 23264.dasm (-8.12 % of base)
-112 : 34856.dasm (-1.03 % of base)
-100 : 18106.dasm (-9.00 % of base)
-93 : 15126.dasm (-6.03 % of base)
-61 : 18105.dasm (-5.68 % of base)
-56 : 9862.dasm (-3.76 % of base)
-53 : 3726.dasm (-2.48 % of base)
-50 : 27045.dasm (-5.07 % of base)
-46 : 10377.dasm (-3.80 % of base)
-44 : 18108.dasm (-4.79 % of base)
-43 : 17556.dasm (-2.65 % of base)
-43 : 30085.dasm (-8.07 % of base)
-42 : 9861.dasm (-4.64 % of base)
-41 : 28517.dasm (-2.21 % of base)
91 total files with Code Size differences (50 improved, 41 regressed), 20 unchanged.
Top method regressions (bytes):
309 (11.03 % of base) : 27846.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (FullOpts)
302 (7.81 % of base) : 20096.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseNamespaceBody(byref,byref,byref,ushort):this (FullOpts)
281 (3.03 % of base) : 4031.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
256 (6.20 % of base) : 5113.dasm - Utf8Json.Internal.AutomataDictionary+AutomataNode:EmitSearchNextCore(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Action`1[System.Collections.Generic.KeyValuePair`2[System.String,int]],System.Action,Utf8Json.Internal.AutomataDictionary+AutomataNode[],int) (FullOpts)
253 (3.74 % of base) : 14188.dasm - Jil.Deserialize.Methods:_ReadISO8601Date(System.IO.TextReader,ushort[]):System.DateTime (FullOpts)
247 (9.04 % of base) : 10282.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
113 (6.36 % of base) : 4477.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(long):System.Reflection.MethodInfo:this (FullOpts)
108 (1.09 % of base) : 3531.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (FullOpts)
107 (7.20 % of base) : 8293.dasm - ProtoBuf.Meta.MetaType:ResolveTupleConstructor(System.Type,byref):System.Reflection.ConstructorInfo (FullOpts)
105 (1.38 % of base) : 20318.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ResolveMetadataReferences(System.__Canon,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]]:this (FullOpts)
87 (3.32 % of base) : 21503.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
85 (2.99 % of base) : 20556.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
83 (4.72 % of base) : 2378.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:BuildChainElements(System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+WorkingChain,byref):System.Security.Cryptography.X509Certificates.X509ChainElement[]:this (FullOpts)
73 (2.63 % of base) : 20602.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
69 (4.99 % of base) : 20555.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
65 (3.65 % of base) : 22276.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:BuildStoresToTemps(ubyte,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression[],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator]):this (FullOpts)
65 (8.31 % of base) : 21329.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,int](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,int,ubyte],int):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
65 (5.93 % of base) : 4481.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
65 (5.48 % of base) : 10178.dasm - System.Xml.Serialization.XmlReflectionImporter:XsdTypeName(System.Type,System.Xml.Serialization.XmlAttributes,System.String):System.String:this (FullOpts)
62 (2.82 % of base) : 20606.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
Top method improvements (bytes):
-476 (-15.02 % of base) : 18107.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
-395 (-11.14 % of base) : 17464.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
-344 (-4.25 % of base) : 23263.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
-187 (-6.96 % of base) : 17710.dasm - System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateMetadata(int,System.String,long,uint,uint,int,System.Diagnostics.Tracing.EventParameterInfo[]):ubyte[]:this (FullOpts)
-158 (-1.62 % of base) : 28516.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
-121 (-1.11 % of base) : 28324.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffsetThunkReader(byref,ushort[]):System.DateTimeOffset (FullOpts)
-116 (-8.12 % of base) : 23264.dasm - Benchstone.BenchF.LLoops:Init():this (FullOpts)
-112 (-1.03 % of base) : 34856.dasm - Jil.Deserialize.Methods:_ReadISO8601DateThunkReader(byref,ushort[]):System.DateTime (FullOpts)
-100 (-9.00 % of base) : 18106.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (FullOpts)
-93 (-6.03 % of base) : 15126.dasm - AssignJagged:second_assignments(int[][],short[][]) (FullOpts)
-61 (-5.68 % of base) : 18105.dasm - LUDecomp:build_problem(double[][],int,double[]) (FullOpts)
-56 (-3.76 % of base) : 9862.dasm - SciMark2.LU:factor(double[][],int[]):int (FullOpts)
-53 (-2.48 % of base) : 3726.dasm - System.Enum:TryFormatFlagNames[uint](System.Enum+EnumInfo`1[uint],uint,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
-50 (-5.07 % of base) : 27045.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (FullOpts)
-46 (-3.80 % of base) : 10377.dasm - System.Xml.Serialization.TypeScope:PopulateMemberInfos(System.Xml.Serialization.StructMapping,System.Xml.Serialization.MemberMapping[],System.Collections.Generic.Dictionary`2[System.String,System.Reflection.MemberInfo]) (FullOpts)
-44 (-4.79 % of base) : 18108.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (FullOpts)
-43 (-8.07 % of base) : 30085.dasm - Benchstone.BenchI.Array2:Bench(int):ubyte (FullOpts)
-43 (-2.65 % of base) : 17556.dasm - System.Decimal+DecCalc:DecAddSub(byref,byref,ubyte) (FullOpts)
-42 (-4.64 % of base) : 9861.dasm - SciMark2.kernel:CopyMatrix(double[][],double[][]) (FullOpts)
-41 (-2.21 % of base) : 28517.dasm - Benchstone.MDBenchF.MDLLoops:Init():this (FullOpts)
Top method regressions (percentages):
20 (58.82 % of base) : 29485.dasm - System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
14 (45.16 % of base) : 26830.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
14 (45.16 % of base) : 29193.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
8 (32.00 % of base) : 17534.dasm - Struct.SpanWrapper:SumSpan(System.ReadOnlySpan`1[int]):int:this (FullOpts)
8 (28.57 % of base) : 14106.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
8 (25.81 % of base) : 27032.dasm - Span.IndexerBench:TestIndexer2(System.Span`1[ubyte]):ubyte (FullOpts)
8 (25.81 % of base) : 27314.dasm - Span.IndexerBench:TestIndexer3(System.Span`1[ubyte]):ubyte (FullOpts)
8 (25.81 % of base) : 4103.dasm - Span.IndexerBench:TestReadOnlyIndexer2(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
13 (25.49 % of base) : 27410.dasm - Span.IndexerBench:TestIndexer4(System.Span`1[ubyte],int):ubyte (FullOpts)
8 (25.00 % of base) : 1046.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
8 (21.62 % of base) : 22391.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
38 (21.59 % of base) : 35257.dasm - Benchstone.BenchI.BubbleSort2:Test():ubyte:this (FullOpts)
11 (19.64 % of base) : 29634.dasm - Span.IndexerBench:TestKnownSizeCtor(ubyte[]):ubyte (FullOpts)
10 (18.18 % of base) : 7539.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
17 (17.17 % of base) : 29742.dasm - Span.IndexerBench:TestKnownSizeCtor2(ubyte[]):ubyte (FullOpts)
7 (17.07 % of base) : 27790.dasm - Span.IndexerBench:TestIndexer6(System.Span`1[ubyte],Span.Sink):ubyte (FullOpts)
8 (17.02 % of base) : 25477.dasm - System.Collections.IterateFor`1[int]:ReadOnlySpan():int:this (FullOpts)
8 (17.02 % of base) : 24001.dasm - System.Collections.IterateFor`1[int]:Span():int:this (FullOpts)
8 (17.02 % of base) : 34072.dasm - System.Collections.IterateForEach`1[int]:ReadOnlySpan():int:this (FullOpts)
8 (17.02 % of base) : 30843.dasm - System.Collections.IterateForEach`1[int]:Span():int:this (FullOpts)
Top method improvements (percentages):
-35 (-15.22 % of base) : 20020.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
-476 (-15.02 % of base) : 18107.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
-20 (-11.76 % of base) : 4125.dasm - System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
-18 (-11.46 % of base) : 16367.dasm - Span.Sorting:TestBubbleSortArray(int[]) (FullOpts)
-395 (-11.14 % of base) : 17464.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
-22 (-10.73 % of base) : 16636.dasm - Benchstone.BenchI.LogicArray:Inner(byref):ubyte (FullOpts)
-9 (-10.00 % of base) : 30633.dasm - Span.IndexerBench:TestSameIndex2(System.Span`1[ubyte],byref,int,int):ubyte (FullOpts)
-8 (-9.64 % of base) : 13472.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (FullOpts)
-23 (-9.62 % of base) : 35258.dasm - Benchstone.BenchI.BubbleSort2:Inner(int[]) (FullOpts)
-100 (-9.00 % of base) : 18106.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (FullOpts)
-29 (-8.76 % of base) : 30086.dasm - Benchstone.BenchI.Array2:Initialize(int[][][]) (FullOpts)
-25 (-8.71 % of base) : 17733.dasm - NeuralJagged:zero_changes() (FullOpts)
-32 (-8.56 % of base) : 18067.dasm - Benchstone.BenchF.InvMt:Inner(double[][],byref,byref) (FullOpts)
-14 (-8.54 % of base) : 33853.dasm - Benchstone.BenchI.BubbleSort:SortArray(int[],int) (FullOpts)
-4 (-8.51 % of base) : 12117.dasm - System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (FullOpts)
-3 (-8.33 % of base) : 15596.dasm - System.DateTimeFormat:ParseRepeatPattern(System.ReadOnlySpan`1[ushort],int,ushort):int (FullOpts)
-26 (-8.18 % of base) : 17740.dasm - NeuralJagged:adjust_out_wts() (FullOpts)
-32 (-8.16 % of base) : 10919.dasm - BenchmarksGame.SpectralNorm_1:MultiplyAtv(int,double[],double[]):this (FullOpts)
-32 (-8.16 % of base) : 10918.dasm - BenchmarksGame.SpectralNorm_1:MultiplyAv(int,double[],double[]):this (FullOpts)
-8 (-8.16 % of base) : 33854.dasm - Benchstone.BenchI.BubbleSort:VerifySort(int[],int):ubyte (FullOpts)
benchmarks.run_pgo.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 71580068 (overridden on cmd)
Total bytes of diff: 71734021 (overridden on cmd)
Total bytes of delta: 153953 (0.22 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
281 : 127067.dasm (9.33 % of base)
137 : 147568.dasm (2.29 % of base)
130 : 79418.dasm (8.39 % of base)
130 : 69896.dasm (8.39 % of base)
107 : 118915.dasm (6.86 % of base)
107 : 128445.dasm (6.86 % of base)
107 : 34469.dasm (6.86 % of base)
107 : 131179.dasm (6.86 % of base)
107 : 61474.dasm (6.86 % of base)
107 : 98604.dasm (6.86 % of base)
107 : 123019.dasm (6.86 % of base)
107 : 146220.dasm (6.86 % of base)
107 : 156881.dasm (6.86 % of base)
90 : 157480.dasm (1.51 % of base)
79 : 134764.dasm (5.49 % of base)
79 : 145248.dasm (5.49 % of base)
79 : 147746.dasm (5.49 % of base)
79 : 156587.dasm (5.49 % of base)
79 : 103124.dasm (5.49 % of base)
79 : 153751.dasm (5.49 % of base)
Top file improvements (bytes):
-484 : 78242.dasm (-14.90 % of base)
-453 : 125771.dasm (-4.10 % of base)
-400 : 70825.dasm (-11.51 % of base)
-379 : 84871.dasm (-4.15 % of base)
-367 : 84856.dasm (-4.03 % of base)
-342 : 84870.dasm (-4.17 % of base)
-266 : 78252.dasm (-4.02 % of base)
-177 : 105906.dasm (-14.08 % of base)
-166 : 70813.dasm (-10.97 % of base)
-155 : 70824.dasm (-10.32 % of base)
-152 : 125770.dasm (-1.55 % of base)
-145 : 78224.dasm (-11.08 % of base)
-145 : 78240.dasm (-11.08 % of base)
-142 : 78254.dasm (-5.70 % of base)
-132 : 84855.dasm (-4.05 % of base)
-132 : 84869.dasm (-4.05 % of base)
-124 : 70812.dasm (-11.23 % of base)
-124 : 70823.dasm (-11.23 % of base)
-113 : 54159.dasm (-5.88 % of base)
-111 : 84867.dasm (-7.79 % of base)
88 total files with Code Size differences (51 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
281 (9.33 % of base) : 127067.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
137 (2.29 % of base) : 147568.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
130 (8.39 % of base) : 79418.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
130 (8.39 % of base) : 69896.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
107 (6.86 % of base) : 118915.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
107 (6.86 % of base) : 128445.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
107 (6.86 % of base) : 34469.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
107 (6.86 % of base) : 131179.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
107 (6.86 % of base) : 61474.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
107 (6.86 % of base) : 98604.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
107 (6.86 % of base) : 123019.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
107 (6.86 % of base) : 146220.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
107 (6.86 % of base) : 156881.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
90 (1.51 % of base) : 157480.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
79 (5.49 % of base) : 134764.dasm - System.Buffers.SharedArrayPool`1[ushort]:Trim():ubyte:this (Tier1)
79 (5.49 % of base) : 145248.dasm - System.Buffers.SharedArrayPool`1[ushort]:Trim():ubyte:this (Tier1)
79 (5.49 % of base) : 147746.dasm - System.Buffers.SharedArrayPool`1[ushort]:Trim():ubyte:this (Tier1)
79 (5.49 % of base) : 156587.dasm - System.Buffers.SharedArrayPool`1[ushort]:Trim():ubyte:this (Tier1)
79 (5.49 % of base) : 103124.dasm - System.Buffers.SharedArrayPool`1[ushort]:Trim():ubyte:this (Tier1)
79 (5.49 % of base) : 153751.dasm - System.Buffers.SharedArrayPool`1[ushort]:Trim():ubyte:this (Tier1)
Top method improvements (bytes):
-484 (-14.90 % of base) : 78242.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
-453 (-4.10 % of base) : 125771.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
-400 (-11.51 % of base) : 70825.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
-379 (-4.15 % of base) : 84871.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
-367 (-4.03 % of base) : 84856.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
-342 (-4.17 % of base) : 84870.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
-266 (-4.02 % of base) : 78252.dasm - LUDecomp:Run():double:this (Tier1)
-177 (-14.08 % of base) : 105906.dasm - Benchstone.BenchI.Puzzle:Trial(int):ubyte:this (Tier1)
-166 (-10.97 % of base) : 70813.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
-155 (-10.32 % of base) : 70824.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
-152 (-1.55 % of base) : 125770.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
-145 (-11.08 % of base) : 78224.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
-145 (-11.08 % of base) : 78240.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
-142 (-5.70 % of base) : 78254.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
-132 (-4.05 % of base) : 84855.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
-132 (-4.05 % of base) : 84869.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
-124 (-11.23 % of base) : 70812.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
-124 (-11.23 % of base) : 70823.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
-113 (-5.88 % of base) : 54159.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
-111 (-7.79 % of base) : 84867.dasm - Benchstone.BenchF.LLoops:Init():this (Tier1)
Top method regressions (percentages):
9 (23.68 % of base) : 145173.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
9 (23.68 % of base) : 147765.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
9 (23.68 % of base) : 79209.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
8 (21.62 % of base) : 96933.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
8 (16.00 % of base) : 95824.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
8 (16.00 % of base) : 102711.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
7 (14.29 % of base) : 103579.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (Tier1)
54 (12.03 % of base) : 78218.dasm - LUDecomp:Run():double:this (Tier1-OSR)
54 (12.03 % of base) : 78250.dasm - LUDecomp:Run():double:this (Tier1-OSR)
9 (11.25 % of base) : 157568.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
9 (11.25 % of base) : 147618.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
8 (9.88 % of base) : 94142.dasm - Microsoft.CodeAnalysis.DiagnosticBag:AddRange[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):this (Tier1)
281 (9.33 % of base) : 127067.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
130 (8.39 % of base) : 79418.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
130 (8.39 % of base) : 69896.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
29 (8.26 % of base) : 138239.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
29 (8.26 % of base) : 102614.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
8 (7.77 % of base) : 103873.dasm - Microsoft.CodeAnalysis.MetadataHelpers:<InferTypeArityFromMetadataName>g__tryScanArity|16_0(System.ReadOnlySpan`1[ushort]):System.Nullable`1[short] (Tier1)
17 (7.11 % of base) : 53404.dasm - Benchstone.BenchI.HeapSort:Test():ubyte:this (Tier1-OSR)
7 (7.07 % of base) : 157436.dasm - System.Text.RegularExpressions.Symbolic.CharSetSolver:Or(System.ReadOnlySpan`1[System.Text.RegularExpressions.Symbolic.BDD]):System.Text.RegularExpressions.Symbolic.BDD:this (Tier1)
Top method improvements (percentages):
-484 (-14.90 % of base) : 78242.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
-177 (-14.08 % of base) : 105906.dasm - Benchstone.BenchI.Puzzle:Trial(int):ubyte:this (Tier1)
-32 (-13.50 % of base) : 116803.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-32 (-13.50 % of base) : 123489.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-32 (-13.50 % of base) : 123533.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-32 (-13.50 % of base) : 64435.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-32 (-13.50 % of base) : 68537.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-16 (-12.60 % of base) : 149848.dasm - NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
-16 (-12.60 % of base) : 149873.dasm - NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
-30 (-12.35 % of base) : 62228.dasm - Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
-400 (-11.51 % of base) : 70825.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
-124 (-11.23 % of base) : 70812.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
-124 (-11.23 % of base) : 70823.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
-145 (-11.08 % of base) : 78224.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
-145 (-11.08 % of base) : 78240.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
-166 (-10.97 % of base) : 70813.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
-22 (-10.73 % of base) : 62239.dasm - Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1)
-22 (-10.68 % of base) : 155880.dasm - Benchstone.BenchI.BubbleSort2:Inner(int[]) (Tier1-OSR)
-26 (-10.40 % of base) : 4281.dasm - System.Numerics.BigIntegerCalculator:LehmerCore(System.Span`1[uint],System.Span`1[uint],long,long,long,long):int (Tier1-OSR)
-155 (-10.32 % of base) : 70824.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
benchmarks.run_tiered.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 21436595 (overridden on cmd)
Total bytes of diff: 21433750 (overridden on cmd)
Total bytes of delta: -2845 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
309 : 58518.dasm (11.03 % of base)
113 : 28319.dasm (6.76 % of base)
108 : 64375.dasm (1.10 % of base)
75 : 38620.dasm (16.45 % of base)
56 : 47587.dasm (3.53 % of base)
56 : 47189.dasm (8.38 % of base)
53 : 29911.dasm (1.76 % of base)
51 : 35240.dasm (1.60 % of base)
48 : 47594.dasm (1.69 % of base)
46 : 30684.dasm (1.95 % of base)
44 : 3873.dasm (3.75 % of base)
40 : 15009.dasm (0.80 % of base)
39 : 60258.dasm (3.06 % of base)
37 : 21989.dasm (6.20 % of base)
36 : 60252.dasm (2.43 % of base)
33 : 32926.dasm (1.30 % of base)
32 : 47130.dasm (1.78 % of base)
31 : 5296.dasm (4.23 % of base)
30 : 7330.dasm (3.34 % of base)
28 : 12219.dasm (3.88 % of base)
Top file improvements (bytes):
-568 : 35976.dasm (-17.07 % of base)
-476 : 38627.dasm (-15.02 % of base)
-395 : 35977.dasm (-11.14 % of base)
-357 : 38624.dasm (-12.16 % of base)
-344 : 40519.dasm (-4.25 % of base)
-158 : 58279.dasm (-1.62 % of base)
-158 : 40517.dasm (-4.92 % of base)
-116 : 40518.dasm (-8.12 % of base)
-115 : 32006.dasm (-6.40 % of base)
-100 : 38631.dasm (-9.00 % of base)
-100 : 40516.dasm (-7.68 % of base)
-96 : 58277.dasm (-2.71 % of base)
-93 : 32008.dasm (-6.03 % of base)
-91 : 38622.dasm (-10.77 % of base)
-61 : 38630.dasm (-5.68 % of base)
-56 : 24396.dasm (-3.76 % of base)
-47 : 38619.dasm (-5.30 % of base)
-44 : 38628.dasm (-4.79 % of base)
-43 : 64661.dasm (-2.65 % of base)
-42 : 24395.dasm (-4.64 % of base)
82 total files with Code Size differences (44 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
309 (11.03 % of base) : 58518.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
113 (6.76 % of base) : 28319.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(long):System.Reflection.MethodInfo:this (Tier1)
108 (1.10 % of base) : 64375.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (Tier1)
75 (16.45 % of base) : 38620.dasm - LUDecomp:Run():double:this (Tier1-OSR)
56 (3.53 % of base) : 47587.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:LoadAndValidateAttributes(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]],byref,short,ubyte,Microsoft.CodeAnalysis.CSharp.Binder,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,ubyte],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax]):ubyte:this (Tier1)
56 (8.38 % of base) : 47189.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol] (Tier1)
53 (1.76 % of base) : 29911.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
51 (1.60 % of base) : 35240.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:<FindFixedDistanceSets>g__TryFindRawFixedSets|2_0(System.Text.RegularExpressions.RegexNode,System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet],byref,ubyte):ubyte (Tier1)
48 (1.69 % of base) : 47594.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:GetAttributesToBind(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]],short,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,ubyte],Microsoft.CodeAnalysis.CSharp.Binder,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax]:this (Tier1)
46 (1.95 % of base) : 30684.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon]:Transform[ulong](System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Func`3[System.__Canon,System.__Canon,ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier1)
44 (3.75 % of base) : 3873.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
40 (0.80 % of base) : 15009.dasm - System.Text.RegularExpressions.RegexCompiler:<EmitTryFindNextPossibleStartingPosition>g__EmitFixedSet_LeftToRight|157_3(byref):this (Tier0-FullOpts)
39 (3.06 % of base) : 60258.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
37 (6.20 % of base) : 21989.dasm - System.String:MakeSeparatorListAny(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref) (Tier1)
36 (2.43 % of base) : 60252.dasm - System.Numerics.BigInteger:Add(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
33 (1.30 % of base) : 32926.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier1)
32 (1.78 % of base) : 47130.dasm - Microsoft.CodeAnalysis.MetadataDecoder`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:DecodeTypeOrThrow(byref,ubyte,byref):System.__Canon:this (Tier1)
31 (4.23 % of base) : 5296.dasm - System.Reflection.AssemblyNameParser:ParseVersion(System.String):System.Version:this (Tier0-FullOpts)
30 (3.34 % of base) : 7330.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
28 (3.88 % of base) : 12219.dasm - System.Collections.Frozen.FrozenHashTable:CalcNumBuckets(System.ReadOnlySpan`1[int],ubyte):int (Tier1-OSR)
Top method improvements (bytes):
-568 (-17.07 % of base) : 35976.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
-476 (-15.02 % of base) : 38627.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
-395 (-11.14 % of base) : 35977.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
-357 (-12.16 % of base) : 38624.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
-344 (-4.25 % of base) : 40519.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
-158 (-4.92 % of base) : 40517.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
-158 (-1.62 % of base) : 58279.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
-116 (-8.12 % of base) : 40518.dasm - Benchstone.BenchF.LLoops:Init():this (Tier1)
-115 (-6.40 % of base) : 32006.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
-100 (-7.68 % of base) : 40516.dasm - Benchstone.BenchF.LLoops:Init():this (Tier1-OSR)
-100 (-9.00 % of base) : 38631.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
-96 (-2.71 % of base) : 58277.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
-93 (-6.03 % of base) : 32008.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
-91 (-10.77 % of base) : 38622.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-61 (-5.68 % of base) : 38630.dasm - LUDecomp:build_problem(double[][],int,double[]) (Tier1)
-56 (-3.76 % of base) : 24396.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1)
-47 (-5.30 % of base) : 38619.dasm - LUDecomp:build_problem(double[][],int,double[]) (Tier1-OSR)
-44 (-4.79 % of base) : 38628.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1)
-43 (-2.65 % of base) : 64661.dasm - System.Decimal+DecCalc:DecAddSub(byref,byref,ubyte) (Tier1)
-42 (-4.64 % of base) : 24395.dasm - SciMark2.kernel:CopyMatrix(double[][],double[][]) (Tier1)
Top method regressions (percentages):
8 (23.53 % of base) : 51828.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
8 (21.62 % of base) : 48504.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
75 (16.45 % of base) : 38620.dasm - LUDecomp:Run():double:this (Tier1-OSR)
8 (16.33 % of base) : 47059.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (Tier1)
8 (16.00 % of base) : 46977.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
8 (13.56 % of base) : 46913.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
7 (12.28 % of base) : 21988.dasm - System.Diagnostics.FileVersionInfo:ParseUInt16UntilNonDigit(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
9 (11.25 % of base) : 60660.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
309 (11.03 % of base) : 58518.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
56 (8.38 % of base) : 47189.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol] (Tier1)
8 (8.08 % of base) : 65197.dasm - System.Text.RegularExpressions.Symbolic.CharSetSolver:Or(System.ReadOnlySpan`1[System.Text.RegularExpressions.Symbolic.BDD]):System.Text.RegularExpressions.Symbolic.BDD:this (Tier1)
8 (7.77 % of base) : 47003.dasm - Microsoft.CodeAnalysis.MetadataHelpers:<InferTypeArityFromMetadataName>g__tryScanArity|16_0(System.ReadOnlySpan`1[ushort]):System.Nullable`1[short] (Tier1)
19 (7.69 % of base) : 60273.dasm - System.Numerics.BigIntegerCalculator:Subtract(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1)
19 (7.60 % of base) : 60262.dasm - System.Numerics.BigIntegerCalculator:Add(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1)
8 (7.27 % of base) : 33192.dasm - System.Security.Cryptography.X509Certificates.X509Certificate:GetHashCode():int:this (Tier1)
9 (7.09 % of base) : 32563.dasm - System.Text.RegularExpressions.Symbolic.UInt64Solver:ConvertFromBDD(System.Text.RegularExpressions.Symbolic.BDD,System.Text.RegularExpressions.Symbolic.CharSetSolver):ulong:this (Tier1)
113 (6.76 % of base) : 28319.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(long):System.Reflection.MethodInfo:this (Tier1)
8 (6.72 % of base) : 50078.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1)
10 (6.62 % of base) : 65301.dasm - IfStatements.IfStatements:AndAndAnd():this (Tier1-OSR)
12 (6.59 % of base) : 13346.dasm - System.Collections.HashHelpers:GetPrime(int):int (Tier1)
Top method improvements (percentages):
-568 (-17.07 % of base) : 35976.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
-35 (-15.22 % of base) : 43458.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (Tier1)
-476 (-15.02 % of base) : 38627.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
-16 (-12.80 % of base) : 61569.dasm - NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
-357 (-12.16 % of base) : 38624.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
-36 (-11.80 % of base) : 56030.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
-14 (-11.48 % of base) : 2878.dasm - System.Random+CompatPrng:NextBytes(System.Span`1[ubyte]):this (Tier1-OSR)
-18 (-11.46 % of base) : 31967.dasm - Span.Sorting:TestBubbleSortArray(int[]) (Tier1)
-395 (-11.14 % of base) : 35977.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
-91 (-10.77 % of base) : 38622.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-8 (-9.64 % of base) : 30993.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (Tier1)
-16 (-9.04 % of base) : 65201.dasm - Benchstone.BenchI.BubbleSort2:Inner(int[]) (Tier1-OSR)
-100 (-9.00 % of base) : 38631.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
-25 (-8.71 % of base) : 36048.dasm - NeuralJagged:zero_changes() (Tier1)
-3 (-8.33 % of base) : 34158.dasm - System.DateTimeFormat:ParseRepeatPattern(System.ReadOnlySpan`1[ushort],int,ushort):int (Tier1)
-26 (-8.18 % of base) : 36043.dasm - NeuralJagged:adjust_out_wts() (Tier1)
-116 (-8.12 % of base) : 40518.dasm - Benchstone.BenchF.LLoops:Init():this (Tier1)
-100 (-7.68 % of base) : 40516.dasm - Benchstone.BenchF.LLoops:Init():this (Tier1-OSR)
-25 (-7.55 % of base) : 37775.dasm - Benchstone.BenchF.InProd:InitMatrix(double[][]) (Tier1)
-10 (-7.46 % of base) : 28427.dasm - EMFloat:ShiftMantRight1(byref,ushort[]) (Tier1)
coreclr_tests.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 403712034 (overridden on cmd)
Total bytes of diff: 403660606 (overridden on cmd)
Total bytes of delta: -51428 (-0.01 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
459 : 392625.dasm (4.16 % of base)
302 : 503020.dasm (7.80 % of base)
231 : 114781.dasm (10.39 % of base)
231 : 159923.dasm (10.39 % of base)
231 : 143711.dasm (10.39 % of base)
230 : 398722.dasm (9.26 % of base)
229 : 392440.dasm (9.33 % of base)
200 : 399337.dasm (1.76 % of base)
172 : 398510.dasm (5.21 % of base)
140 : 299854.dasm (8.11 % of base)
130 : 111881.dasm (3.48 % of base)
130 : 154644.dasm (3.48 % of base)
130 : 134136.dasm (3.48 % of base)
130 : 29741.dasm (3.30 % of base)
129 : 241833.dasm (7.63 % of base)
127 : 34326.dasm (3.59 % of base)
127 : 173686.dasm (3.60 % of base)
127 : 234305.dasm (3.60 % of base)
127 : 68480.dasm (3.61 % of base)
127 : 175222.dasm (3.40 % of base)
Top file improvements (bytes):
-484 : 223287.dasm (-14.90 % of base)
-476 : 500384.dasm (-15.02 % of base)
-395 : 501986.dasm (-11.14 % of base)
-344 : 501881.dasm (-4.25 % of base)
-282 : 223296.dasm (-4.27 % of base)
-215 : 394360.dasm (-1.34 % of base)
-180 : 245835.dasm (-5.83 % of base)
-172 : 527444.dasm (-9.70 % of base)
-164 : 472381.dasm (-1.27 % of base)
-164 : 472384.dasm (-1.27 % of base)
-161 : 582564.dasm (-1.96 % of base)
-158 : 501942.dasm (-1.62 % of base)
-145 : 223276.dasm (-11.08 % of base)
-145 : 223284.dasm (-11.08 % of base)
-142 : 223289.dasm (-5.70 % of base)
-135 : 415807.dasm (-9.18 % of base)
-132 : 223024.dasm (-7.77 % of base)
-126 : 527447.dasm (-6.98 % of base)
-125 : 493548.dasm (-5.44 % of base)
-124 : 234772.dasm (-11.23 % of base)
96 total files with Code Size differences (56 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
459 (4.16 % of base) : 392625.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (Tier1)
302 (7.80 % of base) : 503020.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseNamespaceBody(byref,byref,byref,ushort):this (FullOpts)
231 (10.39 % of base) : 114781.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier1)
231 (10.39 % of base) : 159923.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier1)
231 (10.39 % of base) : 143711.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier1)
230 (9.26 % of base) : 398722.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:Expand(System.__Canon[]):this (Tier1)
229 (9.33 % of base) : 392440.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:Expand(System.__Canon[]):this (Tier1)
200 (1.76 % of base) : 399337.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (Tier1)
172 (5.21 % of base) : 398510.dasm - Internal.TypeSystem.MetadataVirtualMethodAlgorithm:ResolveInterfaceMethodToDefaultImplementationOnType(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MetadataType,byref):int (Tier1)
140 (8.11 % of base) : 299854.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Tier1)
130 (3.48 % of base) : 111881.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
130 (3.48 % of base) : 154644.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
130 (3.48 % of base) : 134136.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
130 (3.30 % of base) : 29741.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
129 (7.63 % of base) : 241833.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Tier1)
127 (3.59 % of base) : 34326.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
127 (3.60 % of base) : 173686.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
127 (3.60 % of base) : 234305.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
127 (3.61 % of base) : 68480.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
127 (3.40 % of base) : 175222.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
Top method improvements (bytes):
-484 (-14.90 % of base) : 223287.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
-476 (-15.02 % of base) : 500384.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
-395 (-11.14 % of base) : 501986.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
-344 (-4.25 % of base) : 501881.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
-282 (-4.27 % of base) : 223296.dasm - LUDecomp:Run():double:this (Tier1)
-215 (-1.34 % of base) : 394360.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
-180 (-5.83 % of base) : 245835.dasm - System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateMetadata(int,System.String,long,uint,uint,int,System.Diagnostics.Tracing.EventParameterInfo[]):ubyte[]:this (Instrumented Tier1)
-172 (-9.70 % of base) : 527444.dasm - string1:ProcessJagged2DArray(byref) (FullOpts)
-164 (-1.27 % of base) : 472381.dasm - IntelHardwareIntrinsicTest._Avx2.Program:ShiftLeftLogicalVariable() (FullOpts)
-164 (-1.27 % of base) : 472384.dasm - IntelHardwareIntrinsicTest._Avx2.Program:ShiftRightLogicalVariable() (FullOpts)
-161 (-1.96 % of base) : 582564.dasm - ILCompiler.Program:RunSingleCompilation(System.Collections.Generic.Dictionary`2[System.String,System.String],ILCompiler.InstructionSetSupport,System.String,System.Collections.Generic.Dictionary`2[System.String,System.String],System.Collections.Generic.HashSet`1[Internal.TypeSystem.ModuleDesc],ILCompiler.ReadyToRunCompilerContext,ILCompiler.Logger):this (FullOpts)
-158 (-1.62 % of base) : 501942.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
-145 (-11.08 % of base) : 223276.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
-145 (-11.08 % of base) : 223284.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
-142 (-5.70 % of base) : 223289.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
-135 (-9.18 % of base) : 415807.dasm - Complex_Array_Test:TestEntryPoint():int (FullOpts)
-132 (-7.77 % of base) : 223024.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
-126 (-6.98 % of base) : 527447.dasm - string1:ProcessJagged3DArray(System.String[][]) (FullOpts)
-125 (-5.44 % of base) : 493548.dasm - Test:TestEntryPoint():int (FullOpts)
-124 (-11.23 % of base) : 234772.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
Top method regressions (percentages):
14 (45.16 % of base) : 501686.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
14 (45.16 % of base) : 501705.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
8 (34.78 % of base) : 502680.dasm - Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
8 (30.77 % of base) : 541837.dasm - GitHub_5556:SpanAsParam(System.Span`1[long]):long (FullOpts)
8 (30.77 % of base) : 541838.dasm - GitHub_5556:SpanWithLocalCopy(System.Span`1[long]):long (FullOpts)
9 (26.47 % of base) : 518305.dasm - CreateSpanTest:Main():int (FullOpts)
8 (25.81 % of base) : 501689.dasm - Span.IndexerBench:TestIndexer2(System.Span`1[ubyte]):ubyte (FullOpts)
8 (25.81 % of base) : 501692.dasm - Span.IndexerBench:TestIndexer3(System.Span`1[ubyte]):ubyte (FullOpts)
8 (25.81 % of base) : 501708.dasm - Span.IndexerBench:TestReadOnlyIndexer2(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
13 (25.49 % of base) : 501695.dasm - Span.IndexerBench:TestIndexer4(System.Span`1[ubyte],int):ubyte (FullOpts)
9 (23.68 % of base) : 361266.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
8 (21.62 % of base) : 505452.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
21 (16.80 % of base) : 501724.dasm - Span.IndexerBench:TestKnownSizeCtor2(ubyte[],int):ubyte (FullOpts)
7 (16.67 % of base) : 501698.dasm - Span.IndexerBench:TestIndexer5(System.Span`1[ubyte],byref):ubyte (FullOpts)
8 (16.33 % of base) : 503839.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
8 (16.00 % of base) : 503508.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
8 (16.00 % of base) : 535780.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)
24 (14.46 % of base) : 500443.dasm - Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)
10 (13.70 % of base) : 501721.dasm - Span.IndexerBench:TestKnownSizeCtor(ubyte[],int):ubyte (FullOpts)
8 (13.56 % of base) : 503465.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)
Top method improvements (percentages):
-11 (-18.03 % of base) : 592287.dasm - test:test_001() (FullOpts)
-11 (-18.03 % of base) : 592288.dasm - test:test_002() (FullOpts)
-11 (-18.03 % of base) : 592307.dasm - test:test_021() (FullOpts)
-11 (-18.03 % of base) : 592308.dasm - test:test_022() (FullOpts)
-11 (-17.74 % of base) : 592291.dasm - test:test_005() (FullOpts)
-11 (-17.74 % of base) : 592292.dasm - test:test_006() (FullOpts)
-11 (-17.74 % of base) : 592311.dasm - test:test_025() (FullOpts)
-11 (-17.74 % of base) : 592312.dasm - test:test_026() (FullOpts)
-35 (-15.22 % of base) : 502944.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
-476 (-15.02 % of base) : 500384.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
-484 (-14.90 % of base) : 223287.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
-18 (-13.14 % of base) : 518697.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (FullOpts)
-85 (-12.86 % of base) : 592105.dasm - SimpleArray_01.Test:BadMatrixMul2() (FullOpts)
-16 (-12.80 % of base) : 222748.dasm - NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
-27 (-12.62 % of base) : 537851.dasm - Utils:CompareArray[int](int[],int[]):ubyte (FullOpts)
-18 (-11.46 % of base) : 502702.dasm - Span.SpanBench:TestBubbleSortArray(int[]) (FullOpts)
-30 (-11.36 % of base) : 394005.dasm - System.Linq.OrderedEnumerable`1[Internal.NativeFormat.VertexHashtable+Entry]:Fill(Internal.NativeFormat.VertexHashtable+Entry[],System.Span`1[Internal.NativeFormat.VertexHashtable+Entry]):this (Tier1-OSR)
-30 (-11.36 % of base) : 399748.dasm - System.Linq.OrderedEnumerable`1[Internal.NativeFormat.VertexHashtable+Entry]:Fill(Internal.NativeFormat.VertexHashtable+Entry[],System.Span`1[Internal.NativeFormat.VertexHashtable+Entry]):this (Tier1-OSR)
-124 (-11.23 % of base) : 234772.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
-395 (-11.14 % of base) : 501986.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
libraries.crossgen2.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 38727480 (overridden on cmd)
Total bytes of diff: 38745861 (overridden on cmd)
Total bytes of delta: 18381 (0.05 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
867 : 200572.dasm (3.43 % of base)
466 : 7159.dasm (5.17 % of base)
435 : 201540.dasm (12.20 % of base)
254 : 198002.dasm (10.96 % of base)
229 : 224372.dasm (9.08 % of base)
183 : 120071.dasm (5.68 % of base)
159 : 117049.dasm (3.65 % of base)
152 : 121083.dasm (10.11 % of base)
151 : 136655.dasm (5.18 % of base)
142 : 136666.dasm (6.85 % of base)
138 : 116354.dasm (4.78 % of base)
131 : 4379.dasm (1.16 % of base)
130 : 154637.dasm (3.97 % of base)
124 : 121082.dasm (4.89 % of base)
124 : 40755.dasm (2.59 % of base)
123 : 177382.dasm (8.13 % of base)
115 : 157947.dasm (7.04 % of base)
114 : 73494.dasm (5.09 % of base)
112 : 137023.dasm (1.87 % of base)
112 : 101557.dasm (10.43 % of base)
Top file improvements (bytes):
-153 : 27556.dasm (-6.46 % of base)
-142 : 22321.dasm (-2.73 % of base)
-127 : 41391.dasm (-10.06 % of base)
-74 : 21229.dasm (-13.19 % of base)
-63 : 232186.dasm (-2.28 % of base)
-51 : 198059.dasm (-4.68 % of base)
-48 : 200375.dasm (-2.33 % of base)
-47 : 200080.dasm (-1.98 % of base)
-44 : 119828.dasm (-6.40 % of base)
-43 : 200072.dasm (-1.94 % of base)
-42 : 21858.dasm (-2.27 % of base)
-42 : 21869.dasm (-1.30 % of base)
-41 : 2804.dasm (-2.36 % of base)
-39 : 200373.dasm (-2.09 % of base)
-39 : 20286.dasm (-2.46 % of base)
-37 : 2883.dasm (-1.30 % of base)
-37 : 116918.dasm (-2.05 % of base)
-37 : 53784.dasm (-3.07 % of base)
-36 : 2011.dasm (-2.71 % of base)
-36 : 161734.dasm (-6.57 % of base)
98 total files with Code Size differences (58 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
867 (3.43 % of base) : 200572.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
466 (5.17 % of base) : 7159.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
435 (12.20 % of base) : 201540.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
254 (10.96 % of base) : 198002.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
229 (9.08 % of base) : 224372.dasm - System.Reflection.DispatchProxyGenerator+ProxyBuilder:AddMethodImpl(System.Reflection.MethodInfo,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
183 (5.68 % of base) : 120071.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousDelegatePublicSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
159 (3.65 % of base) : 117049.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
152 (10.11 % of base) : 121083.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
151 (5.18 % of base) : 136655.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteListInitExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
142 (6.85 % of base) : 136666.dasm - System.Dynamic.Utils.DelegateHelpers:CreateObjectArrayDelegateRefEmit(System.Type,System.Func`2[System.Object[],System.Object]):System.Delegate (FullOpts)
138 (4.78 % of base) : 116354.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:VisitFieldOrPropertyInitializer(Microsoft.CodeAnalysis.VisualBasic.BoundFieldOrPropertyInitializer,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
131 (1.16 % of base) : 4379.dasm - System.Data.XmlTreeGen:HandleTable(System.Data.DataTable,System.Xml.XmlDocument,System.Xml.XmlElement,ubyte):System.Xml.XmlElement:this (FullOpts)
130 (3.97 % of base) : 154637.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyData[System.__Canon,System.__Canon]],int):this (FullOpts)
124 (2.59 % of base) : 40755.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedStringHandlerInMemberCall(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
124 (4.89 % of base) : 121082.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
123 (8.13 % of base) : 177382.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:BuildChainElements(System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+WorkingChain,byref):System.Security.Cryptography.X509Certificates.X509ChainElement[]:this (FullOpts)
115 (7.04 % of base) : 157947.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
114 (5.09 % of base) : 73494.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression):this (FullOpts)
112 (10.43 % of base) : 101557.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSubstitution:CreateAdditionalMethodTypeParameterSubstitution(Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers]):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSubstitution (FullOpts)
112 (1.87 % of base) : 137023.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitLift(int,System.Type,System.Linq.Expressions.MethodCallExpression,System.Linq.Expressions.ParameterExpression[],System.Linq.Expressions.Expression[]):this (FullOpts)
Top method improvements (bytes):
-153 (-6.46 % of base) : 27556.dasm - System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateMetadata(int,System.String,long,uint,uint,int,System.Diagnostics.Tracing.EventParameterInfo[]):ubyte[]:this (FullOpts)
-142 (-2.73 % of base) : 22321.dasm - System.Diagnostics.Tracing.EventPipePayloadDecoder:DecodePayload(byref,System.ReadOnlySpan`1[ubyte]):System.Object[] (FullOpts)
-127 (-10.06 % of base) : 41391.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:GetInvocationArgumentsForEscape(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[int],ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis+MixableDestination],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis+EscapeArgument]):this (FullOpts)
-74 (-13.19 % of base) : 21229.dasm - System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this (FullOpts)
-63 (-2.28 % of base) : 232186.dasm - System.DirectoryServices.Protocols.DirectoryControl:TransformControls(System.DirectoryServices.Protocols.DirectoryControl[]) (FullOpts)
-51 (-4.68 % of base) : 198059.dasm - System.Xml.Serialization.TypeScope:PopulateMemberInfos(System.Xml.Serialization.StructMapping,System.Xml.Serialization.MemberMapping[],System.Collections.Generic.Dictionary`2[System.String,System.Reflection.MemberInfo]) (FullOpts)
-48 (-2.33 % of base) : 200375.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexSet(System.Object,System.Object[],System.String[]) (FullOpts)
-47 (-1.98 % of base) : 200080.dasm - System.Xml.Xsl.Xslt.XsltLoader:LoadDecimalFormat(System.Xml.Xsl.Xslt.NsDecl):this (FullOpts)
-44 (-6.40 % of base) : 119828.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder+QueryLambdaBinder:BuildEqualsOperandIsBadErrorArgument(System.Text.StringBuilder,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol]):System.String (FullOpts)
-43 (-1.94 % of base) : 200072.dasm - System.Xml.Xsl.Xslt.XsltInput:GetAttributes(System.Xml.Xsl.Xslt.XsltInput+XsltAttribute[]):System.Xml.Xsl.Xslt.XsltInput+ContextInfo:this (FullOpts)
-42 (-2.27 % of base) : 21858.dasm - System.Reflection.ConstructorInvoker:InvokeWithManyArgs(System.Span`1[System.Object]):System.Object:this (FullOpts)
-42 (-1.30 % of base) : 21869.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-41 (-2.36 % of base) : 2804.dasm - System.Data.Common.TimeSpanStorage:Aggregate(int[],int):System.Object:this (FullOpts)
-39 (-2.09 % of base) : 200373.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexGet(System.Object,System.Object[],System.String[]):System.Object (FullOpts)
-39 (-2.46 % of base) : 20286.dasm - System.Decimal+DecCalc:DecAddSub(byref,byref,ubyte) (FullOpts)
-37 (-3.07 % of base) : 53784.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.CSharpPragmaWarningStateMap:CreatePragmaWarningStateEntries(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.DirectiveTriviaSyntax]):Microsoft.CodeAnalysis.Syntax.AbstractWarningStateMap`1+WarningStateMapEntry[ubyte][] (FullOpts)
-37 (-2.05 % of base) : 116918.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
-37 (-1.30 % of base) : 2883.dasm - System.Data.Common.SqlDoubleStorage:Aggregate(int[],int):System.Object:this (FullOpts)
-36 (-6.57 % of base) : 161734.dasm - Microsoft.CodeAnalysis.CommonCompiler:UpdateAnalyzerConfigOptionsProvider(Microsoft.CodeAnalysis.Diagnostics.CompilerAnalyzerConfigOptionsProvider,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxTree],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AnalyzerConfigOptionsResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AnalyzerConfigOptionsResult]):Microsoft.CodeAnalysis.Diagnostics.CompilerAnalyzerConfigOptionsProvider (FullOpts)
-36 (-2.71 % of base) : 2011.dasm - System.Data.Common.UInt64Storage:Aggregate(int[],int):System.Object:this (FullOpts)
Top method regressions (percentages):
37 (32.17 % of base) : 124620.dasm - Xunit.Sdk.DisplayNameFormatter+ReplaceEscapeSequenceRule:HexToInt32(ushort[]):int (FullOpts)
9 (32.14 % of base) : 228961.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
13 (30.95 % of base) : 143153.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
13 (30.95 % of base) : 160631.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
13 (30.95 % of base) : 209936.dasm - System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetStartsWithDistance|11_1(System.String,System.String):int (FullOpts)
10 (27.03 % of base) : 180513.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
9 (26.47 % of base) : 160545.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
9 (26.47 % of base) : 143064.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
9 (26.47 % of base) : 158949.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
9 (26.47 % of base) : 157919.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
9 (25.00 % of base) : 144137.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
9 (25.00 % of base) : 161686.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
9 (24.32 % of base) : 39418.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
8 (24.24 % of base) : 188025.dasm - System.Text.RegularExpressions.Symbolic.UInt64Solver:Or(System.ReadOnlySpan`1[ulong]):ulong:this (FullOpts)
11 (19.64 % of base) : 25323.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
56 (19.38 % of base) : 21321.dasm - System.Globalization.UmAlQuraCalendar:InitDateMapping():System.Globalization.UmAlQuraCalendar+DateMapping[] (FullOpts)
9 (18.37 % of base) : 143191.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
9 (18.37 % of base) : 160668.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
9 (17.65 % of base) : 170493.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
9 (17.65 % of base) : 39507.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)
Top method improvements (percentages):
-23 (-14.56 % of base) : 39753.dasm - System.Reflection.Metadata.MetadataReader:ComputeCodedTokenSize(int,int[],ulong):int:this (FullOpts)
-27 (-13.50 % of base) : 4178.dasm - System.Data.Index:CompareRecordToKey(int,System.Object[]):int:this (FullOpts)
-74 (-13.19 % of base) : 21229.dasm - System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this (FullOpts)
-18 (-13.04 % of base) : 206512.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (FullOpts)
-20 (-12.58 % of base) : 27755.dasm - System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
-11 (-11.58 % of base) : 226632.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint],byref) (FullOpts)
-23 (-11.44 % of base) : 142548.dasm - System.Data.Odbc.OdbcDataReader:SetBaseTableNames(System.Data.Odbc.OdbcDataReader+QualifiedTableName):this (FullOpts)
-32 (-11.39 % of base) : 42543.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:FixParameters(System.Func`3[Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer,int,ubyte],byref):int:this (FullOpts)
-15 (-11.36 % of base) : 1002.dasm - System.Data.FillErrorEventArgs:get_Values():System.Object[]:this (FullOpts)
-22 (-11.17 % of base) : 192613.dasm - System.Xml.Schema.XmlSchemaSimpleTypeUnion:Clone():System.Xml.Schema.XmlSchemaObject:this (FullOpts)
-17 (-10.62 % of base) : 201336.dasm - Microsoft.VisualBasic.Financial:OptPV2(byref,double):double (FullOpts)
-127 (-10.06 % of base) : 41391.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:GetInvocationArgumentsForEscape(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[int],ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis+MixableDestination],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis+EscapeArgument]):this (FullOpts)
-35 (-10.03 % of base) : 189123.dasm - MS.Internal.Xml.Cache.XPathNodeInfoTable:ToString():System.String:this (FullOpts)
-15 (-9.15 % of base) : 132811.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,System.__Canon]:Dispose():this (FullOpts)
-14 (-8.54 % of base) : 39310.dasm - System.Reflection.Metadata.Ecma335.MetadataAggregator:GetBaseRowCounts(System.Collections.Generic.IReadOnlyList`1[int],int):System.Reflection.Metadata.Ecma335.MetadataAggregator+RowCounts[][] (FullOpts)
-10 (-8.47 % of base) : 229509.dasm - System.Net.Mime.MailBnfHelper:CreateCharactersAllowedInComments():ubyte[] (FullOpts)
-21 (-8.43 % of base) : 31309.dasm - Microsoft.FSharp.Core.StringModule:MapIndexed(Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[ushort,ushort]],System.String):System.String (FullOpts)
-19 (-8.37 % of base) : 198375.dasm - System.Xml.XmlTextReaderImpl:StripSpaces(ushort[],int,byref) (FullOpts)
-16 (-8.33 % of base) : 206406.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+GroupToArgsBinder:ConstructExpandedParameters():ubyte:this (FullOpts)
-6 (-8.33 % of base) : 3973.dasm - System.Data.ConstraintCollection:CompareArrays(System.Data.DataColumn[],System.Data.DataColumn[]):ubyte (FullOpts)
libraries.pmi.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 60420078 (overridden on cmd)
Total bytes of diff: 60443221 (overridden on cmd)
Total bytes of delta: 23143 (0.04 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
868 : 149346.dasm (3.07 % of base)
328 : 146215.dasm (8.97 % of base)
308 : 274519.dasm (10.81 % of base)
302 : 82599.dasm (7.81 % of base)
298 : 102299.dasm (1.71 % of base)
265 : 149360.dasm (4.57 % of base)
263 : 102340.dasm (1.07 % of base)
248 : 146216.dasm (8.48 % of base)
236 : 129517.dasm (4.94 % of base)
218 : 129516.dasm (6.21 % of base)
216 : 296345.dasm (6.36 % of base)
186 : 153682.dasm (5.23 % of base)
181 : 129515.dasm (3.79 % of base)
178 : 125402.dasm (2.97 % of base)
168 : 70366.dasm (1.40 % of base)
159 : 97827.dasm (5.77 % of base)
133 : 238079.dasm (3.08 % of base)
126 : 156730.dasm (9.09 % of base)
120 : 22378.dasm (1.93 % of base)
119 : 109394.dasm (2.72 % of base)
Top file improvements (bytes):
-176 : 149353.dasm (-5.82 % of base)
-161 : 263833.dasm (-1.96 % of base)
-117 : 24905.dasm (-4.10 % of base)
-107 : 243656.dasm (-3.32 % of base)
-96 : 109541.dasm (-6.32 % of base)
-52 : 26825.dasm (-2.45 % of base)
-52 : 26826.dasm (-2.44 % of base)
-51 : 266539.dasm (-1.82 % of base)
-50 : 26824.dasm (-2.33 % of base)
-47 : 291791.dasm (-4.44 % of base)
-47 : 26796.dasm (-2.40 % of base)
-46 : 146905.dasm (-3.48 % of base)
-45 : 23991.dasm (-2.25 % of base)
-43 : 23980.dasm (-3.65 % of base)
-39 : 128216.dasm (-3.83 % of base)
-37 : 149345.dasm (-4.79 % of base)
-37 : 154894.dasm (-3.17 % of base)
-35 : 160936.dasm (-5.61 % of base)
-35 : 141894.dasm (-1.36 % of base)
-35 : 82447.dasm (-15.22 % of base)
98 total files with Code Size differences (58 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
868 (3.07 % of base) : 149346.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
328 (8.97 % of base) : 146215.dasm - System.Xml.Serialization.TempAssembly:GenerateSerializerToStream(System.Xml.Serialization.XmlMapping[],System.Type[],System.String,System.Reflection.Assembly,System.Collections.Hashtable,System.IO.Stream):ubyte (FullOpts)
308 (10.81 % of base) : 274519.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (FullOpts)
302 (7.81 % of base) : 82599.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseNamespaceBody(byref,byref,byref,ushort):this (FullOpts)
298 (1.71 % of base) : 102299.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindFieldAndPropertyInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.FieldOrPropertyInitializer]],Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedInteractiveInitializerMethod,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundInitializer] (FullOpts)
265 (4.57 % of base) : 149360.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
263 (1.07 % of base) : 102340.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this (FullOpts)
248 (8.48 % of base) : 146216.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
236 (4.94 % of base) : 129517.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
218 (6.21 % of base) : 129516.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
216 (6.36 % of base) : 296345.dasm - System.Reflection.DispatchProxyGenerator+ProxyBuilder:AddMethodImpl(System.Reflection.MethodInfo,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
186 (5.23 % of base) : 153682.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteListInitExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
181 (3.79 % of base) : 129515.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
178 (2.97 % of base) : 125402.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
168 (1.40 % of base) : 70366.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
159 (5.77 % of base) : 97827.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
133 (3.08 % of base) : 238079.dasm - Microsoft.Build.BackEnd.Scheduler:WriteNodeUtilizationGraph(Microsoft.Build.BackEnd.Logging.ILoggingService,Microsoft.Build.Framework.BuildEventContext,ubyte):this (FullOpts)
126 (9.09 % of base) : 156730.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (FullOpts)
120 (1.93 % of base) : 22378.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
119 (2.72 % of base) : 109394.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitOnedimensionalElementInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte):this (FullOpts)
Top method improvements (bytes):
-176 (-5.82 % of base) : 149353.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-161 (-1.96 % of base) : 263833.dasm - ILCompiler.Program:RunSingleCompilation(System.Collections.Generic.Dictionary`2[System.String,System.String],ILCompiler.InstructionSetSupport,System.String,System.Collections.Generic.Dictionary`2[System.String,System.String],System.Collections.Generic.HashSet`1[Internal.TypeSystem.ModuleDesc],ILCompiler.ReadyToRunCompilerContext,ILCompiler.Logger):this (FullOpts)
-117 (-4.10 % of base) : 24905.dasm - System.Data.ProviderBase.SchemaMapping:SetupSchemaWithoutKeyInfo(int,int,ubyte,System.Data.DataColumn,System.Object):System.Object[]:this (FullOpts)
-107 (-3.32 % of base) : 243656.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
-96 (-6.32 % of base) : 109541.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitCaseBlocks(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundCaseBlock],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.GeneratedLabelSymbol],Microsoft.CodeAnalysis.VisualBasic.Symbols.LabelSymbol):this (FullOpts)
-52 (-2.45 % of base) : 26825.dasm - System.Enum:TryFormatFlagNames[int](System.Enum+EnumInfo`1[int],int,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
-52 (-2.44 % of base) : 26826.dasm - System.Enum:TryFormatFlagNames[long](System.Enum+EnumInfo`1[long],long,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
-51 (-1.82 % of base) : 266539.dasm - System.DirectoryServices.Protocols.DirectoryControl:TransformControls(System.DirectoryServices.Protocols.DirectoryControl[]) (FullOpts)
-50 (-2.33 % of base) : 26824.dasm - System.Enum:TryFormatFlagNames[short](System.Enum+EnumInfo`1[short],short,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
-47 (-2.40 % of base) : 26796.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
-47 (-4.44 % of base) : 291791.dasm - System.Numerics.BigInteger:TryGetBytes(int,System.Span`1[ubyte],ubyte,ubyte,byref):ubyte[]:this (FullOpts)
-46 (-3.48 % of base) : 146905.dasm - System.Xml.Serialization.TypeScope:PopulateMemberInfos(System.Xml.Serialization.StructMapping,System.Xml.Serialization.MemberMapping[],System.Collections.Generic.Dictionary`2[System.String,System.Reflection.MemberInfo]) (FullOpts)
-45 (-2.25 % of base) : 23991.dasm - System.Data.SqlTypes.SqlDecimal:op_Multiply(System.Data.SqlTypes.SqlDecimal,System.Data.SqlTypes.SqlDecimal):System.Data.SqlTypes.SqlDecimal (FullOpts)
-43 (-3.65 % of base) : 23980.dasm - System.Data.SqlTypes.SqlDecimal:Parse(System.String):System.Data.SqlTypes.SqlDecimal (FullOpts)
-39 (-3.83 % of base) : 128216.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder+QueryLambdaBinder:BuildEqualsOperandIsBadErrorArgument(System.Text.StringBuilder,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol]):System.String (FullOpts)
-37 (-4.79 % of base) : 149345.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:ReorderArgumentArray(byref,System.Object):this (FullOpts)
-37 (-3.17 % of base) : 154894.dasm - Xunit.Sdk.TypeUtility:GetDisplayNameWithArguments(Xunit.Abstractions.IMethodInfo,System.String,System.Object[],Xunit.Abstractions.ITypeInfo[]):System.String (FullOpts)
-35 (-5.61 % of base) : 160936.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__removeFastPath|43_1(System.ReadOnlyMemory`1[ushort]):System.Nullable`1[System.ReadOnlyMemory`1[ushort]] (FullOpts)
-35 (-15.22 % of base) : 82447.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
-35 (-1.36 % of base) : 141894.dasm - System.Xml.Schema.XsdValidator:EndElementIdentityConstraints():this (FullOpts)
Top method regressions (percentages):
16 (30.19 % of base) : 240264.dasm - Microsoft.Build.Shared.FileMatcher:HasDotDot(System.String):ubyte (FullOpts)
12 (28.57 % of base) : 159337.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
12 (28.57 % of base) : 177140.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
12 (28.57 % of base) : 290450.dasm - System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetStartsWithDistance|11_1(System.String,System.String):int (FullOpts)
8 (28.57 % of base) : 283583.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
8 (23.53 % of base) : 158696.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
8 (23.53 % of base) : 176636.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
8 (23.53 % of base) : 226433.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
8 (23.53 % of base) : 193779.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
9 (22.50 % of base) : 207944.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
8 (22.22 % of base) : 178776.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
8 (22.22 % of base) : 160932.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
8 (21.62 % of base) : 176627.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ushort]):int (FullOpts)
8 (21.62 % of base) : 158685.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ushort]):int (FullOpts)
8 (21.62 % of base) : 4134.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
7 (21.21 % of base) : 221178.dasm - System.Text.RegularExpressions.Symbolic.UInt64Solver:Or(System.ReadOnlySpan`1[ulong]):ulong:this (FullOpts)
7 (18.92 % of base) : 272438.dasm - System.Linq.Enumerable:Sum[ubyte,long](System.ReadOnlySpan`1[ubyte]):long (FullOpts)
10 (17.24 % of base) : 31061.dasm - System.Buffers.Text.Base64:IndexOfAnyExceptWhiteSpace(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
8 (16.33 % of base) : 177175.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
8 (16.33 % of base) : 159374.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
Top method improvements (percentages):
-35 (-15.22 % of base) : 82447.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
-27 (-14.29 % of base) : 23479.dasm - System.Data.Index:CompareRecordToKey(int,System.Object[]):int:this (FullOpts)
-18 (-13.14 % of base) : 243045.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (FullOpts)
-24 (-13.11 % of base) : 2464.dasm - System.Reflection.Metadata.MetadataReader:ComputeCodedTokenSize(int,int[],ulong):int:this (FullOpts)
-11 (-11.70 % of base) : 291687.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint],byref) (FullOpts)
-17 (-10.69 % of base) : 149773.dasm - Microsoft.VisualBasic.Financial:OptPV2(byref,double):double (FullOpts)
-12 (-9.60 % of base) : 231882.dasm - Newtonsoft.Json.Utilities.CollectionUtils:FastReverse[ubyte](System.Collections.Generic.List`1[ubyte]) (FullOpts)
-18 (-9.57 % of base) : 287303.dasm - System.Security.Cryptography.Xml.Transform:AcceptsType(System.Type):ubyte:this (FullOpts)
-15 (-9.20 % of base) : 249789.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,System.Nullable`1[int]]:Dispose():this (FullOpts)
-15 (-9.20 % of base) : 249798.dasm - System.Linq.Parallel.SortHelper`2[ubyte,System.Nullable`1[int]]:Dispose():this (FullOpts)
-18 (-8.87 % of base) : 141250.dasm - System.Xml.Schema.XmlSchemaSimpleTypeUnion:Clone():System.Xml.Schema.XmlSchemaObject:this (FullOpts)
-15 (-8.77 % of base) : 38682.dasm - System.Collections.Generic.List`1[System.__Canon]:ConvertAll[ubyte](System.Converter`2[System.__Canon,ubyte]):System.Collections.Generic.List`1[ubyte]:this (FullOpts)
-15 (-8.72 % of base) : 38683.dasm - System.Collections.Generic.List`1[ubyte]:ConvertAll[ubyte](System.Converter`2[ubyte,ubyte]):System.Collections.Generic.List`1[ubyte]:this (FullOpts)
-16 (-8.56 % of base) : 242842.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+GroupToArgsBinder:ConstructExpandedParameters():ubyte:this (FullOpts)
-19 (-8.41 % of base) : 137118.dasm - System.Xml.XmlTextReaderImpl:StripSpaces(ushort[],int,byref) (FullOpts)
-6 (-8.33 % of base) : 21259.dasm - System.Data.ConstraintCollection:CompareArrays(System.Data.DataColumn[],System.Data.DataColumn[]):ubyte (FullOpts)
-12 (-8.22 % of base) : 21843.dasm - System.Data.DataKey:GetKeyValues(int):System.Object[]:this (FullOpts)
-17 (-8.21 % of base) : 154838.dasm - Xunit.Sdk.ReflectionMethodInfo:ParametersHaveSameTypes(System.Reflection.ParameterInfo[],System.Reflection.ParameterInfo[]):ubyte (FullOpts)
-5 (-8.20 % of base) : 206892.dasm - System.Xml.XmlConverter:ToAsciiChars(System.String,ubyte[],int):int (FullOpts)
-11 (-8.15 % of base) : 264738.dasm - System.Reflection.Context.CollectionServices:CompareArrays[ubyte](ubyte[],ubyte[]):ubyte (FullOpts)
libraries_tests.run.linux.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 337125301 (overridden on cmd)
Total bytes of diff: 337516730 (overridden on cmd)
Total bytes of delta: 391429 (0.12 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
906 : 748497.dasm (6.94 % of base)
862 : 745537.dasm (6.50 % of base)
838 : 514326.dasm (6.34 % of base)
836 : 236734.dasm (6.35 % of base)
809 : 88710.dasm (4.32 % of base)
795 : 328405.dasm (6.40 % of base)
790 : 417913.dasm (6.07 % of base)
767 : 208813.dasm (6.15 % of base)
702 : 358987.dasm (5.30 % of base)
661 : 405237.dasm (5.23 % of base)
641 : 576635.dasm (4.88 % of base)
639 : 608632.dasm (6.65 % of base)
595 : 351296.dasm (4.56 % of base)
588 : 488129.dasm (2.76 % of base)
576 : 97988.dasm (4.56 % of base)
576 : 212624.dasm (4.52 % of base)
569 : 380839.dasm (4.52 % of base)
567 : 196673.dasm (5.98 % of base)
564 : 350093.dasm (4.84 % of base)
562 : 136412.dasm (5.82 % of base)
Top file improvements (bytes):
-859 : 681153.dasm (-7.66 % of base)
-704 : 456919.dasm (-4.33 % of base)
-453 : 240726.dasm (-3.33 % of base)
-352 : 240903.dasm (-1.65 % of base)
-263 : 421975.dasm (-1.57 % of base)
-213 : 412762.dasm (-1.33 % of base)
-183 : 306667.dasm (-6.90 % of base)
-182 : 295634.dasm (-6.18 % of base)
-175 : 710851.dasm (-2.31 % of base)
-173 : 696327.dasm (-1.36 % of base)
-166 : 131158.dasm (-2.05 % of base)
-129 : 701058.dasm (-4.58 % of base)
-124 : 85382.dasm (-1.79 % of base)
-104 : 224778.dasm (-4.05 % of base)
-104 : 91672.dasm (-0.90 % of base)
-98 : 91650.dasm (-1.67 % of base)
-94 : 389323.dasm (-3.12 % of base)
-93 : 693395.dasm (-0.44 % of base)
-92 : 700191.dasm (-0.83 % of base)
-90 : 678870.dasm (-3.50 % of base)
99 total files with Code Size differences (59 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
906 (6.94 % of base) : 748497.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
862 (6.50 % of base) : 745537.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
838 (6.34 % of base) : 514326.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
836 (6.35 % of base) : 236734.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
809 (4.32 % of base) : 88710.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1)
795 (6.40 % of base) : 328405.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
790 (6.07 % of base) : 417913.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
767 (6.15 % of base) : 208813.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
702 (5.30 % of base) : 358987.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
661 (5.23 % of base) : 405237.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
641 (4.88 % of base) : 576635.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
639 (6.65 % of base) : 608632.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
595 (4.56 % of base) : 351296.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
588 (2.76 % of base) : 488129.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (Tier1)
576 (4.56 % of base) : 97988.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
576 (4.52 % of base) : 212624.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
569 (4.52 % of base) : 380839.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
567 (5.98 % of base) : 196673.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
564 (4.84 % of base) : 350093.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
562 (5.82 % of base) : 136412.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
Top method improvements (bytes):
-859 (-7.66 % of base) : 681153.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:GetCallbackMethodsForType(System.Type,byref,byref,byref,byref,byref):this (Tier1)
-704 (-4.33 % of base) : 456919.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:Write(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo):this (Tier1)
-453 (-3.33 % of base) : 240726.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:Write(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo):this (Tier1)
-352 (-1.65 % of base) : 240903.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteArray(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):this (Tier1)
-263 (-1.57 % of base) : 421975.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
-213 (-1.33 % of base) : 412762.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
-183 (-6.90 % of base) : 306667.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (Tier1)
-182 (-6.18 % of base) : 295634.dasm - System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateMetadata(int,System.String,long,uint,uint,int,System.Diagnostics.Tracing.EventParameterInfo[]):ubyte[]:this (Instrumented Tier1)
-175 (-2.31 % of base) : 710851.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]:IntroSort(System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]],int,System.Comparison`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]) (Tier1)
-173 (-1.36 % of base) : 696327.dasm - Microsoft.Cci.MetadataWriter:SerializeMethodBodies(System.Reflection.Metadata.BlobBuilder,Microsoft.Cci.PdbWriter,byref):int[]:this (Tier1-OSR)
-166 (-2.05 % of base) : 131158.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance(System.IServiceProvider,System.Type,System.Object[]):System.Object (Tier1)
-129 (-4.58 % of base) : 701058.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindSubcaptures[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoZAnchorInputReader[ulong]](System.ReadOnlySpan`1[ushort],int,int,System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+PerThreadData[ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+Registers[ulong]:this (Tier1-OSR)
-124 (-1.79 % of base) : 85382.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNonGenericSimpleNamespaceOrTypeOrAliasSymbol(Microsoft.CodeAnalysis.CSharp.Syntax.IdentifierNameSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations:this (Tier1)
-104 (-0.90 % of base) : 91672.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:Equals(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):ubyte:this (Tier1)
-104 (-4.05 % of base) : 224778.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1)
-98 (-1.67 % of base) : 91650.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:CreateAndSetSourceAssemblyReuseData(Microsoft.CodeAnalysis.CSharp.CSharpCompilation):this (Tier1)
-94 (-3.12 % of base) : 389323.dasm - System.SpanTests.SpanTests:TestMatchValuesLargerMany_Byte() (Tier1-OSR)
-93 (-0.44 % of base) : 693395.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeCore(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundAttribute:this (Tier1)
-92 (-0.83 % of base) : 700191.dasm - Microsoft.CodeAnalysis.CodeGen.SequencePointList:GetSequencePoints(Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.Cci.SequencePoint]):this (Tier1)
-90 (-3.50 % of base) : 678870.dasm - System.Text.Json.Serialization.Tests.PolymorphicTests+<PolymorphicDictionaryInterface_Deserialization>d__108:MoveNext():this (Tier1)
Top method regressions (percentages):
11 (37.93 % of base) : 442665.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[System.UInt128]:RemoveSignedMinValue(System.Span`1[System.UInt128]):this (Tier1)
8 (36.36 % of base) : 436649.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ushort]:RemoveSignedMinValue(System.Span`1[ushort]):this (Tier1)
8 (33.33 % of base) : 382209.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (Tier1)
8 (25.00 % of base) : 376821.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (Tier1)
8 (23.53 % of base) : 61857.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
8 (23.53 % of base) : 190959.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
8 (23.53 % of base) : 90825.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
8 (23.53 % of base) : 692747.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
8 (21.62 % of base) : 708299.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
8 (21.62 % of base) : 189427.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
8 (21.62 % of base) : 714520.dasm - System.Text.RegularExpressions.RegexCharClass:IsAscii(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
8 (20.00 % of base) : 536893.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (Tier1)
8 (16.00 % of base) : 47646.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
8 (16.00 % of base) : 74022.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
8 (16.00 % of base) : 76283.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
8 (16.00 % of base) : 183550.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
8 (16.00 % of base) : 118167.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
8 (16.00 % of base) : 690825.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
8 (16.00 % of base) : 179919.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
8 (16.00 % of base) : 194735.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
Top method improvements (percentages):
-27 (-20.93 % of base) : 443683.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ushort]:RemoveSignedMinValue(System.Span`1[ushort]):this (Tier1)
-26 (-20.80 % of base) : 444750.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ubyte]:RemoveSignedMinValue(System.Span`1[ubyte]):this (Tier1)
-26 (-20.80 % of base) : 438089.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[uint]:RemoveSignedMinValue(System.Span`1[uint]):this (Tier1)
-26 (-20.80 % of base) : 448220.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ulong]:RemoveSignedMinValue(System.Span`1[ulong]):this (Tier1)
-26 (-20.80 % of base) : 437968.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ulong]:RemoveSignedMinValue(System.Span`1[ulong]):this (Tier1)
-28 (-14.58 % of base) : 701650.dasm - Microsoft.CodeAnalysis.BitVector:IntersectWith(byref):ubyte:this (Tier1)
-29 (-14.36 % of base) : 96186.dasm - Microsoft.CodeAnalysis.BitVector:IntersectWith(byref):ubyte:this (Tier1)
-18 (-13.14 % of base) : 309506.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (Tier1)
-18 (-13.14 % of base) : 108863.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (Tier1)
-26 (-13.00 % of base) : 309466.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:DeduceDependencies():ubyte:this (Tier1)
-26 (-13.00 % of base) : 108345.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:DeduceDependencies():ubyte:this (Tier1)
-70 (-11.80 % of base) : 232313.dasm - System.Linq.Enumerable:ToArray[short](System.Collections.Generic.IEnumerable`1[short]):short[] (Tier1)
-11 (-11.70 % of base) : 558005.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint],byref) (Tier1)
-11 (-11.70 % of base) : 521228.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint],byref) (Tier1)
-40 (-11.70 % of base) : 108343.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:DeduceAllDependencies():this (Tier1)
-40 (-11.70 % of base) : 309464.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:DeduceAllDependencies():this (Tier1)
-5 (-10.00 % of base) : 518984.dasm - System.Numerics.NumericsHelpers:DangerousMakeTwosComplement(System.Span`1[uint]) (Tier1-OSR)
-18 (-9.18 % of base) : 707549.dasm - Microsoft.CodeAnalysis.BitVector:UnionWith(byref):ubyte:this (Tier1)
-12 (-8.96 % of base) : 519050.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1-OSR)
-12 (-8.96 % of base) : 519313.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1-OSR)
librariestestsnotieredcompilation.run.linux.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 132553319 (overridden on cmd)
Total bytes of diff: 132582660 (overridden on cmd)
Total bytes of delta: 29341 (0.02 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
882 : 59177.dasm (3.12 % of base)
352 : 42650.dasm (9.99 % of base)
352 : 48285.dasm (9.99 % of base)
328 : 4642.dasm (9.12 % of base)
328 : 61335.dasm (8.98 % of base)
323 : 146850.dasm (10.52 % of base)
291 : 175048.dasm (1.61 % of base)
263 : 59176.dasm (4.48 % of base)
248 : 61609.dasm (8.71 % of base)
232 : 77239.dasm (8.61 % of base)
229 : 177968.dasm (7.45 % of base)
222 : 77090.dasm (4.68 % of base)
203 : 19021.dasm (8.73 % of base)
194 : 7035.dasm (3.23 % of base)
193 : 19015.dasm (7.46 % of base)
189 : 263636.dasm (1.78 % of base)
186 : 137360.dasm (5.27 % of base)
171 : 77189.dasm (8.07 % of base)
154 : 77252.dasm (14.31 % of base)
147 : 77293.dasm (6.29 % of base)
Top file improvements (bytes):
-207 : 182134.dasm (-4.66 % of base)
-123 : 257399.dasm (-4.90 % of base)
-107 : 24652.dasm (-3.38 % of base)
-74 : 184257.dasm (-3.64 % of base)
-67 : 184267.dasm (-4.43 % of base)
-60 : 182483.dasm (-1.79 % of base)
-59 : 261341.dasm (-0.97 % of base)
-52 : 179824.dasm (-2.77 % of base)
-51 : 17217.dasm (-2.23 % of base)
-47 : 31473.dasm (-4.44 % of base)
-46 : 301220.dasm (-2.53 % of base)
-46 : 61703.dasm (-3.58 % of base)
-46 : 176518.dasm (-1.22 % of base)
-46 : 176520.dasm (-1.22 % of base)
-45 : 158476.dasm (-2.03 % of base)
-43 : 92801.dasm (-3.65 % of base)
-41 : 159107.dasm (-4.93 % of base)
-39 : 143820.dasm (-1.72 % of base)
-38 : 659.dasm (-3.30 % of base)
-37 : 146245.dasm (-3.06 % of base)
98 total files with Code Size differences (57 improved, 41 regressed), 20 unchanged.
Top method regressions (bytes):
882 (3.12 % of base) : 59177.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
352 (9.99 % of base) : 42650.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseNamespaceBody(byref,byref,byref,ushort):this (FullOpts)
352 (9.99 % of base) : 48285.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseNamespaceBody(byref,byref,byref,ushort):this (FullOpts)
328 (9.12 % of base) : 4642.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseNamespaceBody(byref,byref,byref,ushort):this (FullOpts)
328 (8.98 % of base) : 61335.dasm - System.Xml.Serialization.TempAssembly:GenerateSerializerToStream(System.Xml.Serialization.XmlMapping[],System.Type[],System.String,System.Reflection.Assembly,System.Collections.Hashtable,System.IO.Stream):ubyte (FullOpts)
323 (10.52 % of base) : 146850.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (FullOpts)
291 (1.61 % of base) : 175048.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (FullOpts)
263 (4.48 % of base) : 59176.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
248 (8.71 % of base) : 61609.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
232 (8.61 % of base) : 77239.dasm - System.Collections.Tests.LinkedList_Generic_Tests`1[int]:AddBefore_LLNode_LLNode():this (FullOpts)
229 (7.45 % of base) : 177968.dasm - System.Reflection.DispatchProxyGenerator+ProxyBuilder:AddMethodImpl(System.Reflection.MethodInfo,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
222 (4.68 % of base) : 77090.dasm - System.Collections.Tests.LinkedList_Generic_Tests`1[int]:AddAfter_LLNode_LLNode():this (FullOpts)
203 (8.73 % of base) : 19021.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:NegateBoolsRef2D_ClearMarshalling(byref,int,int[]) (FullOpts)
194 (3.23 % of base) : 7035.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckAndCoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte):this (FullOpts)
193 (7.46 % of base) : 19015.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:NegateBoolsOut2D(SharedTypes.BoolStruct[][],int,int[],byref) (FullOpts)
189 (1.78 % of base) : 263636.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:WriteNumbers(System.Text.Json.JsonWriterOptions,System.String):this (FullOpts)
186 (5.27 % of base) : 137360.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteListInitExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
171 (8.07 % of base) : 77189.dasm - System.Collections.Tests.LinkedList_Generic_Tests`1[int]:AddBefore_LLNode():this (FullOpts)
154 (14.31 % of base) : 77252.dasm - System.Collections.Tests.LinkedList_Generic_Tests`1[int]:AddFirst_T_Tests():this (FullOpts)
147 (6.29 % of base) : 77293.dasm - System.Collections.Tests.LinkedList_Generic_Tests`1[int]:AddAfter_LLNode():this (FullOpts)
Top method improvements (bytes):
-207 (-4.66 % of base) : 182134.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateFieldDef(System.Reflection.Metadata.MetadataReader,uint,uint,ubyte):this (FullOpts)
-123 (-4.90 % of base) : 257399.dasm - System.Text.Json.Serialization.Tests.PolymorphicTests+<PolymorphicDictionaryInterface_Deserialization>d__108:MoveNext():this (FullOpts)
-107 (-3.38 % of base) : 24652.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
-74 (-3.64 % of base) : 184257.dasm - System.Reflection.Tests.IdentityTests:Identity_Handle1() (FullOpts)
-67 (-4.43 % of base) : 184267.dasm - System.Reflection.Tests.IdentityTests:ParameterEquality1() (FullOpts)
-60 (-1.79 % of base) : 182483.dasm - System.Reflection.Metadata.Ecma335.Tests.MetadataAggregatorTests:RowCounts():this (FullOpts)
-59 (-0.97 % of base) : 261341.dasm - System.Text.Json.Tests.JsonDocumentTests:GetPropertyFindsLast_WithEscaping(System.String) (FullOpts)
-52 (-2.77 % of base) : 179824.dasm - System.Reflection.Emit.Tests.AssemblySaveTools:AssertParameters(System.Reflection.ParameterInfo[],System.Reflection.ParameterInfo[]) (FullOpts)
-51 (-2.23 % of base) : 17217.dasm - System.IO.Tests.StreamConformanceTests+<WriteAsync>d__47:MoveNext():this (FullOpts)
-47 (-4.44 % of base) : 31473.dasm - System.Numerics.BigInteger:TryGetBytes(int,System.Span`1[ubyte],ubyte,ubyte,byref):ubyte[]:this (FullOpts)
-46 (-2.53 % of base) : 301220.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType>d__14:MoveNext():this (FullOpts)
-46 (-3.58 % of base) : 61703.dasm - System.Xml.Serialization.TypeScope:PopulateMemberInfos(System.Xml.Serialization.StructMapping,System.Xml.Serialization.MemberMapping[],System.Collections.Generic.Dictionary`2[System.String,System.Reflection.MemberInfo]) (FullOpts)
-46 (-1.22 % of base) : 176518.dasm - System.Xml.Tests.TCAttributeXmlDeclaration:TAXmlDecl_6():int:this (FullOpts)
-46 (-1.22 % of base) : 176520.dasm - System.Xml.Tests.TCAttributeXmlDeclaration:TAXmlDecl_8():int:this (FullOpts)
-45 (-2.03 % of base) : 158476.dasm - System.Net.WebSockets.Tests.WebSocketDeflateTests+<PayloadShouldHaveSimilarSizeWhenSplitIntoSegments>d__18:MoveNext():this (FullOpts)
-43 (-3.65 % of base) : 92801.dasm - System.Data.SqlTypes.SqlDecimal:Parse(System.String):System.Data.SqlTypes.SqlDecimal (FullOpts)
-41 (-4.93 % of base) : 159107.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[long]:<MultiplyAdd_ThreeTensors>b__235_0(int):this (FullOpts)
-39 (-1.72 % of base) : 143820.dasm - System.SpanTests.SpanTests:RunIndexOfAnyAlgComplexityTest[ushort](ushort[]) (FullOpts)
-38 (-3.30 % of base) : 659.dasm - Xunit.Sdk.TypeUtility:GetDisplayNameWithArguments(Xunit.Abstractions.IMethodInfo,System.String,System.Object[],Xunit.Abstractions.ITypeInfo[]):System.String (FullOpts)
-37 (-3.06 % of base) : 146245.dasm - System.Threading.Tasks.TaskTimeoutExtensions+<WhenAllOrAnyFailed>d__10:MoveNext():this (FullOpts)
Top method regressions (percentages):
8 (34.78 % of base) : 225657.dasm - System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
8 (33.33 % of base) : 143170.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
8 (28.57 % of base) : 118028.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
8 (25.00 % of base) : 135955.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
8 (23.53 % of base) : 179187.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
9 (22.50 % of base) : 196665.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
8 (22.22 % of base) : 4373.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
8 (21.62 % of base) : 46547.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
8 (21.62 % of base) : 267278.dasm - System.Text.RegularExpressions.RegexCharClass:IsAscii(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
8 (16.33 % of base) : 48843.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
8 (16.33 % of base) : 5260.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
8 (16.33 % of base) : 43152.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
8 (16.00 % of base) : 22110.dasm - Analyzer.Utilities.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
8 (16.00 % of base) : 48612.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
8 (16.00 % of base) : 47704.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
8 (16.00 % of base) : 5009.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
8 (16.00 % of base) : 2310.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
8 (16.00 % of base) : 42059.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
8 (16.00 % of base) : 42965.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
8 (16.00 % of base) : 16964.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)
Top method improvements (percentages):
-35 (-15.22 % of base) : 42707.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
-35 (-15.22 % of base) : 48344.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
-35 (-15.22 % of base) : 4667.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
-27 (-14.29 % of base) : 92414.dasm - System.Data.Index:CompareRecordToKey(int,System.Object[]):int:this (FullOpts)
-18 (-13.14 % of base) : 25011.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (FullOpts)
-11 (-11.70 % of base) : 31502.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint],byref) (FullOpts)
-17 (-10.69 % of base) : 59020.dasm - Microsoft.VisualBasic.Financial:OptPV2(byref,double):double (FullOpts)
-18 (-9.57 % of base) : 227000.dasm - System.Security.Cryptography.Xml.Transform:AcceptsType(System.Type):ubyte:this (FullOpts)
-15 (-9.20 % of base) : 132188.dasm - System.Linq.Parallel.SortHelper`2[double,int]:Dispose():this (FullOpts)
-15 (-9.20 % of base) : 132259.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,int]:Dispose():this (FullOpts)
-33 (-8.97 % of base) : 183190.dasm - System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:Filter(System.Func`2[System.__Canon,ubyte]):System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:this (FullOpts)
-18 (-8.87 % of base) : 172666.dasm - System.Xml.Schema.XmlSchemaSimpleTypeUnion:Clone():System.Xml.Schema.XmlSchemaObject:this (FullOpts)
-16 (-8.56 % of base) : 24895.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+GroupToArgsBinder:ConstructExpandedParameters():ubyte:this (FullOpts)
-4 (-8.51 % of base) : 138160.dasm - System.Linq.SingleLinkedNode`1[int]:Fill(System.Span`1[int]):this (FullOpts)
-4 (-8.51 % of base) : 135903.dasm - System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (FullOpts)
-19 (-8.41 % of base) : 227498.dasm - System.Xml.XmlTextReaderImpl:StripSpaces(ushort[],int,byref) (FullOpts)
-6 (-8.33 % of base) : 92392.dasm - System.Data.ConstraintCollection:CompareArrays(System.Data.DataColumn[],System.Data.DataColumn[]):ubyte (FullOpts)
-14 (-8.24 % of base) : 76441.dasm - System.Collections.Generic.List`1[int]:ConvertAll[int](System.Converter`2[int,int]):System.Collections.Generic.List`1[int]:this (FullOpts)
-12 (-8.22 % of base) : 92410.dasm - System.Data.DataKey:GetKeyValues(int):System.Object[]:this (FullOpts)
-17 (-8.21 % of base) : 634.dasm - Xunit.Sdk.ReflectionMethodInfo:ParametersHaveSameTypes(System.Reflection.ParameterInfo[],System.Reflection.ParameterInfo[]):ubyte (FullOpts)
realworld.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 13174530 (overridden on cmd)
Total bytes of diff: 13182966 (overridden on cmd)
Total bytes of delta: 8436 (0.06 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
328 : 16351.dasm (9.12 % of base)
281 : 31609.dasm (3.03 % of base)
265 : 14146.dasm (3.37 % of base)
231 : 6050.dasm (3.72 % of base)
195 : 15688.dasm (3.65 % of base)
168 : 25362.dasm (1.42 % of base)
162 : 13880.dasm (4.08 % of base)
160 : 13275.dasm (2.14 % of base)
120 : 3197.dasm (1.85 % of base)
117 : 2287.dasm (6.76 % of base)
110 : 13573.dasm (4.62 % of base)
107 : 13293.dasm (3.44 % of base)
102 : 19275.dasm (2.70 % of base)
88 : 17774.dasm (1.19 % of base)
87 : 20460.dasm (3.32 % of base)
85 : 18204.dasm (2.99 % of base)
84 : 12174.dasm (2.35 % of base)
83 : 12875.dasm (1.85 % of base)
83 : 15037.dasm (4.72 % of base)
82 : 32083.dasm (4.42 % of base)
Top file improvements (bytes):
-61 : 17500.dasm (-14.77 % of base)
-50 : 14060.dasm (-4.71 % of base)
-42 : 14053.dasm (-1.09 % of base)
-38 : 21066.dasm (-0.54 % of base)
-37 : 325.dasm (-2.38 % of base)
-35 : 15812.dasm (-5.61 % of base)
-35 : 16219.dasm (-15.22 % of base)
-35 : 13177.dasm (-1.92 % of base)
-34 : 30470.dasm (-0.70 % of base)
-34 : 318.dasm (-5.50 % of base)
-32 : 24782.dasm (-2.66 % of base)
-28 : 11427.dasm (-2.32 % of base)
-28 : 1105.dasm (-0.43 % of base)
-26 : 12226.dasm (-0.81 % of base)
-26 : 14068.dasm (-3.97 % of base)
-24 : 19777.dasm (-1.04 % of base)
-24 : 26299.dasm (-1.70 % of base)
-22 : 18226.dasm (-5.60 % of base)
-21 : 13992.dasm (-5.74 % of base)
-21 : 5678.dasm (-3.08 % of base)
92 total files with Code Size differences (51 improved, 41 regressed), 20 unchanged.
Top method regressions (bytes):
328 (9.12 % of base) : 16351.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseNamespaceBody(byref,byref,byref,ushort):this (FullOpts)
281 (3.03 % of base) : 31609.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
265 (3.37 % of base) : 14146.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
231 (3.72 % of base) : 6050.dasm - FSharp.Compiler.TypedTreePickle:unpickleObjWithDanglingCcus[System.__Canon](System.String,FSharp.Compiler.AbstractIL.IL+ILScopeRef,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILModuleDef],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],FSharp.Compiler.IO.ReadOnlyByteMemory):FSharp.Compiler.TypedTreePickle+PickledDataWithReferences`1[System.__Canon] (FullOpts)
195 (3.65 % of base) : 15688.dasm - Microsoft.ML.Transforms.Text.NgramExtractingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.Text.NgramExtractingEstimator+ColumnOptions[],System.Collections.Immutable.ImmutableArray`1[Microsoft.ML.Transforms.Text.NgramExtractingTransformer+TransformInfo],Microsoft.ML.IDataView,byref):Microsoft.ML.Internal.Utilities.SequencePool[] (FullOpts)
168 (1.42 % of base) : 25362.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
162 (4.08 % of base) : 13880.dasm - Microsoft.ML.Transforms.NormalizingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.IDataView,Microsoft.ML.Transforms.NormalizingEstimator+ColumnOptionsBase[]):Microsoft.ML.Transforms.NormalizingTransformer (FullOpts)
160 (2.14 % of base) : 13275.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
120 (1.85 % of base) : 3197.dasm - FSharp.Compiler.CompilerImports:TcConfig.TryResolveLibsUsingMSBuildRules.Static(FSharp.Compiler.CompilerConfig+TcConfig,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerConfig+AssemblyReference],FSharp.Compiler.Text.Range,FSharp.Compiler.CompilerImports+ResolveAssemblyReferenceMode):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerImports+AssemblyResolution],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerConfig+UnresolvedAssemblyReference]] (FullOpts)
117 (6.76 % of base) : 2287.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(long):System.Reflection.MethodInfo:this (FullOpts)
110 (4.62 % of base) : 13573.dasm - Microsoft.ML.Transforms.HashingTransformer:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.IDataView,Microsoft.ML.Transforms.HashingEstimator+ColumnOptions[]):this (FullOpts)
107 (3.44 % of base) : 13293.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:CheckConvergence(Microsoft.ML.Runtime.IProgressChannel,int,Microsoft.ML.Trainers.FloatLabelCursor+Factory,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],Microsoft.ML.Data.VBuffer`1[float][],Microsoft.ML.Data.VBuffer`1[float][],float[],float[],float[],float[],long,double[],byref,byref):ubyte:this (FullOpts)
102 (2.70 % of base) : 19275.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression):this (FullOpts)
88 (1.19 % of base) : 17774.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ResolveMetadataReferences(System.__Canon,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]]:this (FullOpts)
87 (3.32 % of base) : 20460.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
85 (2.99 % of base) : 18204.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
84 (2.35 % of base) : 12174.dasm - SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1+CdfTileData+RowIntervalOperation[SixLabors.ImageSharp.PixelFormats.Rgba32]:Invoke(byref):this (FullOpts)
83 (1.85 % of base) : 12875.dasm - Microsoft.ML.Transforms.ValueToKeyMappingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Runtime.IChannel,Microsoft.ML.Transforms.ValueToKeyMappingTransformer+ColInfo[],Microsoft.ML.IDataView,Microsoft.ML.Transforms.ValueToKeyMappingEstimator+ColumnOptionsBase[],Microsoft.ML.IDataView,ubyte):Microsoft.ML.Transforms.ValueToKeyMappingTransformer+TermMap[] (FullOpts)
83 (4.72 % of base) : 15037.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:BuildChainElements(System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+WorkingChain,byref):System.Security.Cryptography.X509Certificates.X509ChainElement[]:this (FullOpts)
82 (4.42 % of base) : 32083.dasm - System.Management.Automation.MemberInvocationLoggingOps:LogMemberInvocation(System.String,System.String,System.Object[]) (FullOpts)
Top method improvements (bytes):
-61 (-14.77 % of base) : 17500.dasm - System.Number:<NumberToBigInteger>g__ProcessChunk|12_4(System.ReadOnlySpan`1[ubyte],byref,byref,byref):ubyte (FullOpts)
-50 (-4.71 % of base) : 14060.dasm - Microsoft.ML.Numeric.Optimizer+OptimizerState:MapDirByInverseHessian():this (FullOpts)
-42 (-1.09 % of base) : 14053.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyWithCore[float,float](byref,byref,Microsoft.ML.Internal.Utilities.VBufferUtils+PairManipulator`2[float,float],ubyte) (FullOpts)
-38 (-0.54 % of base) : 21066.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference,Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+FieldInfo]) (FullOpts)
-37 (-2.38 % of base) : 325.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-35 (-5.61 % of base) : 15812.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__removeFastPath|43_1(System.ReadOnlyMemory`1[ushort]):System.Nullable`1[System.ReadOnlyMemory`1[ushort]] (FullOpts)
-35 (-15.22 % of base) : 16219.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
-35 (-1.92 % of base) : 13177.dasm - Microsoft.ML.Data.ColumnConcatenatingTransformer+Mapper+BoundColumn+<>c__DisplayClass18_0`1[float]:<MakeGetter>b__0(byref):this (FullOpts)
-34 (-0.70 % of base) : 30470.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
-34 (-5.50 % of base) : 318.dasm - System.Reflection.MethodInvokerCommon:Initialize(System.RuntimeType[],byref,byref,byref) (FullOpts)
-32 (-2.66 % of base) : 24782.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:IsAnonymousFunctionCompatibleWithDelegate(Microsoft.CodeAnalysis.CSharp.UnboundLambda,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):int (FullOpts)
-28 (-0.43 % of base) : 1105.dasm - BepuPhysics.Collidables.ConvexHullHelper:ComputeHull(System.Span`1[System.Numerics.Vector3],BepuUtilities.Memory.BufferPool,byref) (FullOpts)
-28 (-2.32 % of base) : 11427.dasm - System.Diagnostics.StackFrameHelper:InitializeSourceInfo(int,ubyte,System.Exception):this (FullOpts)
-26 (-3.97 % of base) : 14068.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyIntoEitherDefined[float,float](byref,byref,System.Func`3[int,float,float]) (FullOpts)
-26 (-0.81 % of base) : 12226.dasm - SixLabors.ImageSharp.Processing.Processors.Dithering.OrderedDither:ApplyQuantizationDither[SixLabors.ImageSharp.Processing.Processors.Quantization.PaletteQuantizer`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.PixelFormats.Rgba32](byref,SixLabors.ImageSharp.ImageFrame`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.IndexedImageFrame`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Rectangle):this (FullOpts)
-24 (-1.70 % of base) : 26299.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:GetEffectiveArgumentRefKinds(System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]):System.Collections.Immutable.ImmutableArray`1[ubyte] (FullOpts)
-24 (-1.04 % of base) : 19777.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PETypeParameterSymbol:GetDeclaredConstraintTypes(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PETypeParameterSymbol]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:this (FullOpts)
-22 (-5.60 % of base) : 18226.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEAssemblySymbol:.ctor(Microsoft.CodeAnalysis.PEAssembly,Microsoft.CodeAnalysis.DocumentationProvider,ubyte,ubyte):this (FullOpts)
-21 (-3.08 % of base) : 5678.dasm - Microsoft.FSharp.Primitives.Basics.Array:stableSortWithKeysAndComparer[System.__Canon,System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[],System.__Canon[]) (FullOpts)
-21 (-1.46 % of base) : 13012.dasm - Microsoft.ML.Data.TextLoader+Parser+HelperImpl:FetchNextField(byref,System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
Top method regressions (percentages):
8 (25.00 % of base) : 1049.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
8 (22.22 % of base) : 15890.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
8 (21.62 % of base) : 28243.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
9 (18.75 % of base) : 13063.dasm - Microsoft.ML.Internal.Utilities.HashArray`1+HashHelpers[float]:GetPrime(int):int (FullOpts)
8 (16.33 % of base) : 18112.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
8 (16.00 % of base) : 16051.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
8 (16.00 % of base) : 11519.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)
8 (13.79 % of base) : 13251.dasm - Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)
8 (13.56 % of base) : 18110.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)
7 (13.46 % of base) : 15712.dasm - System.Linq.Enumerable:Sum[int,int](System.ReadOnlySpan`1[int]):int (FullOpts)
19 (13.38 % of base) : 5920.dasm - Microsoft.FSharp.Collections.ArrayModule:ForAll[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],System.__Canon[]):ubyte (FullOpts)
9 (13.04 % of base) : 13476.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[int]:ReturnArrays(int):this (FullOpts)
7 (12.28 % of base) : 563.dasm - System.Diagnostics.FileVersionInfo:ParseUInt16UntilNonDigit(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
13 (11.71 % of base) : 16237.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList+WithLotsOfChildren:CalculateOffsets(Microsoft.CodeAnalysis.ArrayElement`1[Microsoft.CodeAnalysis.GreenNode][]):int[] (FullOpts)
7 (10.77 % of base) : 15992.dasm - Microsoft.CodeAnalysis.MemoryExtensions:IndexOfAny(System.ReadOnlySpan`1[ushort],ushort[]):int (FullOpts)
8 (10.26 % of base) : 1675.dasm - DemoBenchmarks.CollisionBatcherTaskBenchmarks:<Setup>g__GetRandomShapeTypeIndex|6_0(System.Span`1[float],byref):BepuPhysics.Collidables.TypedIndex (FullOpts)
8 (10.26 % of base) : 1139.dasm - DemoBenchmarks.Sweeper:<.ctor>g__GetRandomShapeTypeIndex|6_0(System.Span`1[float],byref):BepuPhysics.Collidables.TypedIndex (FullOpts)
21 (9.95 % of base) : 23863.dasm - Microsoft.CodeAnalysis.Text.SourceText+LineInfo:IndexOf(int):int:this (FullOpts)
11 (9.82 % of base) : 15483.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
36 (9.35 % of base) : 10471.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,FSharp.Compiler.Text.Range]:CopyTo(System.Collections.Generic.KeyValuePair`2[System.__Canon,FSharp.Compiler.Text.Range][],int):this (FullOpts)
Top method improvements (percentages):
-35 (-15.22 % of base) : 16219.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
-61 (-14.77 % of base) : 17500.dasm - System.Number:<NumberToBigInteger>g__ProcessChunk|12_4(System.ReadOnlySpan`1[ubyte],byref,byref,byref):ubyte (FullOpts)
-11 (-11.70 % of base) : 17556.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint],byref) (FullOpts)
-13 (-6.88 % of base) : 14021.dasm - Microsoft.ML.Trainers.KMeansModelParameters:Map(byref,System.Span`1[float]):this (FullOpts)
-11 (-6.40 % of base) : 13504.dasm - Microsoft.ML.Data.VectorDataViewType:Equals(Microsoft.ML.Data.DataViewType):ubyte:this (FullOpts)
-19 (-6.13 % of base) : 13452.dasm - Microsoft.ML.Data.TransformerChain`1[System.__Canon]:Microsoft.ML.ITransformer.GetRowToRowMapper(Microsoft.ML.DataViewSchema):Microsoft.ML.Data.IRowToRowMapper:this (FullOpts)
-4 (-5.97 % of base) : 18123.dasm - Microsoft.CodeAnalysis.Collections.ByteSequenceComparer:Equals(System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[ubyte]):ubyte (FullOpts)
-21 (-5.74 % of base) : 13992.dasm - Microsoft.ML.Trainers.KMeansLloydsYinYangTrain+WorkChunkStateBase:Reduce(Microsoft.ML.Trainers.KMeansLloydsYinYangTrain+WorkChunkState[],Microsoft.ML.Trainers.KMeansLloydsYinYangTrain+ReducedWorkChunkState) (FullOpts)
-19 (-5.69 % of base) : 23634.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:FixParameters(System.Func`3[Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer,int,ubyte],byref):int:this (FullOpts)
-35 (-5.61 % of base) : 15812.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__removeFastPath|43_1(System.ReadOnlyMemory`1[ushort]):System.Nullable`1[System.ReadOnlyMemory`1[ushort]] (FullOpts)
-22 (-5.60 % of base) : 18226.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEAssemblySymbol:.ctor(Microsoft.CodeAnalysis.PEAssembly,Microsoft.CodeAnalysis.DocumentationProvider,ubyte,ubyte):this (FullOpts)
-34 (-5.50 % of base) : 318.dasm - System.Reflection.MethodInvokerCommon:Initialize(System.RuntimeType[],byref,byref,byref) (FullOpts)
-6 (-5.45 % of base) : 16823.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder:ToArray():Microsoft.CodeAnalysis.GreenNode[]:this (FullOpts)
-12 (-5.38 % of base) : 13861.dasm - Microsoft.ML.Internal.Utilities.NormStr+Pool:GrowTable():this (FullOpts)
-3 (-5.26 % of base) : 16226.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:GetFullWidth(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder):int (FullOpts)
-2 (-5.26 % of base) : 18371.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.String):int (FullOpts)
-11 (-4.93 % of base) : 15709.dasm - Microsoft.ML.Internal.Utilities.SequencePool:GrowTable():this (FullOpts)
-12 (-4.92 % of base) : 13050.dasm - Microsoft.ML.Data.DataViewUtils+Splitter+Batch:SetAll(Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe[]):this (FullOpts)
-2 (-4.88 % of base) : 13677.dasm - Microsoft.ML.Data.VectorDataViewType:ComputeSize(System.Collections.Immutable.ImmutableArray`1[int]):int (FullOpts)
-6 (-4.88 % of base) : 11516.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this (FullOpts)
smoke_tests.nativeaot.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 4234684 (overridden on cmd)
Total bytes of diff: 4235121 (overridden on cmd)
Total bytes of delta: 437 (0.01 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
437 : 14342.dasm (5.20 % of base)
121 : 16642.dasm (8.44 % of base)
65 : 9013.dasm (6.06 % of base)
53 : 14416.dasm (2.04 % of base)
50 : 2083.dasm (3.71 % of base)
45 : 15091.dasm (3.56 % of base)
37 : 14549.dasm (2.77 % of base)
37 : 21859.dasm (10.00 % of base)
36 : 12414.dasm (1.97 % of base)
36 : 1165.dasm (1.97 % of base)
34 : 20383.dasm (5.66 % of base)
33 : 26493.dasm (2.51 % of base)
33 : 5942.dasm (5.62 % of base)
33 : 9951.dasm (2.51 % of base)
33 : 19047.dasm (2.51 % of base)
33 : 2049.dasm (5.77 % of base)
33 : 23786.dasm (2.51 % of base)
32 : 14374.dasm (12.96 % of base)
31 : 12576.dasm (4.59 % of base)
27 : 6607.dasm (3.12 % of base)
Top file improvements (bytes):
-45 : 13499.dasm (-1.57 % of base)
-45 : 13500.dasm (-2.42 % of base)
-37 : 10212.dasm (-11.28 % of base)
-34 : 15046.dasm (-2.96 % of base)
-33 : 9098.dasm (-0.77 % of base)
-33 : 12580.dasm (-0.77 % of base)
-31 : 2913.dasm (-1.23 % of base)
-30 : 13498.dasm (-0.99 % of base)
-30 : 17535.dasm (-9.46 % of base)
-30 : 22275.dasm (-9.46 % of base)
-30 : 24985.dasm (-9.46 % of base)
-30 : 9582.dasm (-9.46 % of base)
-28 : 15861.dasm (-3.11 % of base)
-27 : 13457.dasm (-5.92 % of base)
-27 : 16980.dasm (-5.92 % of base)
-24 : 21860.dasm (-12.06 % of base)
-21 : 18529.dasm (-3.44 % of base)
-21 : 23265.dasm (-3.44 % of base)
-21 : 15818.dasm (-1.10 % of base)
-21 : 11097.dasm (-3.44 % of base)
90 total files with Code Size differences (53 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
437 (5.20 % of base) : 14342.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
121 (8.44 % of base) : 16642.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (FullOpts)
65 (6.06 % of base) : 9013.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
53 (2.04 % of base) : 14416.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileAddress(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Interpreter.ByRefUpdater:this (FullOpts)
50 (3.71 % of base) : 2083.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)
45 (3.56 % of base) : 15091.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileMultiDimArrayAccess(System.Linq.Expressions.Expression,System.Linq.Expressions.IArgumentProvider,int):System.Linq.Expressions.Interpreter.ByRefUpdater:this (FullOpts)
37 (10.00 % of base) : 21859.dasm - PInvokeTests.Program:StructTest_Array(PInvokeTests.Program+SequentialStruct[],int):ubyte (FullOpts)
37 (2.77 % of base) : 14549.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:Resize(int,ubyte):this (FullOpts)
36 (1.97 % of base) : 12414.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
36 (1.97 % of base) : 1165.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
34 (5.66 % of base) : 20383.dasm - System.Reflection.Runtime.General.ReflectionCoreCallbacksImplementation:LookupMethodForCreateDelegate(System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo,System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo,System.String,ubyte,ubyte):System.Reflection.Runtime.MethodInfos.RuntimeMethodInfo (FullOpts)
33 (5.62 % of base) : 5942.dasm - Internal.Reflection.Execution.ConstraintValidator:TypeParametersAreCompatible(System.Type[],System.Type[],System.Type[],ubyte):ubyte (FullOpts)
33 (2.51 % of base) : 26493.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Resize(int,ubyte):this (FullOpts)
33 (2.51 % of base) : 9951.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Resize(int,ubyte):this (FullOpts)
33 (2.51 % of base) : 19047.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Resize(int,ubyte):this (FullOpts)
33 (2.51 % of base) : 23786.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Resize(int,ubyte):this (FullOpts)
33 (5.77 % of base) : 2049.dasm - System.String:MakeSeparatorListAny(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref) (FullOpts)
32 (12.96 % of base) : 14374.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAll(System.Predicate`1[System.__Canon]):int:this (FullOpts)
31 (4.59 % of base) : 12576.dasm - System.Reflection.AssemblyNameParser:ParseVersion(System.String):System.Version:this (FullOpts)
27 (3.12 % of base) : 6607.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
Top method improvements (bytes):
-45 (-2.42 % of base) : 13500.dasm - WaitSubsystemTests:AutoResetEventTest() (FullOpts)
-45 (-1.57 % of base) : 13499.dasm - WaitSubsystemTests:SemaphoreTest() (FullOpts)
-37 (-11.28 % of base) : 10212.dasm - System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:Filter(System.Func`2[System.__Canon,ubyte]):System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:this (FullOpts)
-34 (-2.96 % of base) : 15046.dasm - System.Threading.PortableThreadPool+WaitThread:ProcessRemovals():int:this (FullOpts)
-33 (-0.77 % of base) : 9098.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
-33 (-0.77 % of base) : 12580.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
-31 (-1.23 % of base) : 2913.dasm - System.Reflection.Runtime.General.NativeFormatMetadataReaderExtensions:TryParseConstantArray(Internal.Metadata.NativeFormat.Handle,Internal.Metadata.NativeFormat.MetadataReader,byref):System.Array (FullOpts)
-30 (-9.46 % of base) : 17535.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-30 (-9.46 % of base) : 22275.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-30 (-9.46 % of base) : 24985.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-30 (-9.46 % of base) : 9582.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-30 (-0.99 % of base) : 13498.dasm - WaitSubsystemTests:MutexTest() (FullOpts)
-28 (-3.11 % of base) : 15861.dasm - System.IO.Path:Combine(System.String[]):System.String (FullOpts)
-27 (-5.92 % of base) : 13457.dasm - Interfaces:TestInterfaceCache():int (FullOpts)
-27 (-5.92 % of base) : 16980.dasm - Interfaces:TestInterfaceCache():int (FullOpts)
-24 (-12.06 % of base) : 21860.dasm - PInvokeTests.LowLevelExtensions:LowLevelToString(int):System.String (FullOpts)
-21 (-3.44 % of base) : 18529.dasm - System.Runtime.CompilerServices.ClassConstructorRunner+Cctor:GetCctor(ulong):System.Runtime.CompilerServices.ClassConstructorRunner+CctorHandle (FullOpts)
-21 (-3.44 % of base) : 23265.dasm - System.Runtime.CompilerServices.ClassConstructorRunner+Cctor:GetCctor(ulong):System.Runtime.CompilerServices.ClassConstructorRunner+CctorHandle (FullOpts)
-21 (-3.44 % of base) : 11097.dasm - System.Runtime.CompilerServices.ClassConstructorRunner+Cctor:GetCctor(ulong):System.Runtime.CompilerServices.ClassConstructorRunner+CctorHandle (FullOpts)
-21 (-1.10 % of base) : 15818.dasm - System.Threading.AsyncLocalValueMap+MultiElementAsyncLocalValueMap:Set(System.Threading.IAsyncLocal,System.Object,ubyte):System.Threading.IAsyncLocalValueMap:this (FullOpts)
Top method regressions (percentages):
10 (18.18 % of base) : 19478.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
10 (18.18 % of base) : 24212.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
10 (18.18 % of base) : 26937.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
10 (18.18 % of base) : 5369.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
32 (12.96 % of base) : 14374.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAll(System.Predicate`1[System.__Canon]):int:this (FullOpts)
37 (10.00 % of base) : 21859.dasm - PInvokeTests.Program:StructTest_Array(PInvokeTests.Program+SequentialStruct[],int):ubyte (FullOpts)
11 (9.82 % of base) : 4363.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
9 (9.47 % of base) : 7540.dasm - Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int (FullOpts)
8 (8.99 % of base) : 4076.dasm - System.Buffers.IndexOfAnyAsciiSearcher:TryComputeBitmap(System.ReadOnlySpan`1[ushort],ulong,byref):ubyte (FullOpts)
7 (8.75 % of base) : 8733.dasm - System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (FullOpts)
11 (8.66 % of base) : 15803.dasm - System.Linq.Enumerable+SelectIListIterator`2[System.__Canon,System.__Canon]:Fill(System.Collections.Generic.IList`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (FullOpts)
121 (8.44 % of base) : 16642.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (FullOpts)
8 (7.34 % of base) : 16657.dasm - System.IPv6AddressHelper:FindCompressionRange(System.ReadOnlySpan`1[ushort]):System.ValueTuple`2[int,int] (FullOpts)
8 (7.34 % of base) : 16669.dasm - System.IPv6AddressHelper:FindCompressionRange(System.ReadOnlySpan`1[ushort]):System.ValueTuple`2[int,int] (FullOpts)
12 (6.98 % of base) : 10577.dasm - System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
12 (6.98 % of base) : 16082.dasm - System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
12 (6.98 % of base) : 23715.dasm - System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
12 (6.98 % of base) : 26418.dasm - System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
12 (6.98 % of base) : 18979.dasm - System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
12 (6.94 % of base) : 12449.dasm - System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
Top method improvements (percentages):
-20 (-12.82 % of base) : 4452.dasm - System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
-24 (-12.06 % of base) : 21860.dasm - PInvokeTests.LowLevelExtensions:LowLevelToString(int):System.String (FullOpts)
-37 (-11.28 % of base) : 10212.dasm - System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:Filter(System.Func`2[System.__Canon,ubyte]):System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:this (FullOpts)
-12 (-9.52 % of base) : 4229.dasm - System.Type:GetMethod(System.String,int,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (FullOpts)
-30 (-9.46 % of base) : 17535.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-30 (-9.46 % of base) : 22275.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-30 (-9.46 % of base) : 24985.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-30 (-9.46 % of base) : 9582.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-3 (-8.33 % of base) : 8551.dasm - System.DateTimeFormat:ParseRepeatPattern(System.ReadOnlySpan`1[ushort],int,ushort):int (FullOpts)
-14 (-7.87 % of base) : 6079.dasm - System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo+<>c__DisplayClass18_0:<get_SyntheticConstructors>b__0(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
-12 (-7.23 % of base) : 24021.dasm - System.Threading.WaitSubsystem+ThreadWaitInfo:UnregisterWait():this (FullOpts)
-12 (-7.23 % of base) : 10026.dasm - System.Threading.WaitSubsystem+ThreadWaitInfo:UnregisterWait():this (FullOpts)
-12 (-7.23 % of base) : 26706.dasm - System.Threading.WaitSubsystem+ThreadWaitInfo:UnregisterWait():this (FullOpts)
-12 (-7.23 % of base) : 19262.dasm - System.Threading.WaitSubsystem+ThreadWaitInfo:UnregisterWait():this (FullOpts)
-14 (-7.18 % of base) : 6069.dasm - System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo+<>c__DisplayClass20_0:<get_SyntheticMethods>b__0(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
-14 (-6.60 % of base) : 6065.dasm - System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo+<>c__DisplayClass20_0:<get_SyntheticMethods>b__1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
-18 (-6.52 % of base) : 7684.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment+GenericTypeLookupData:MatchGenericTypeEntry(Internal.Runtime.TypeLoader.TypeLoaderEnvironment+GenericTypeEntry):ubyte:this (FullOpts)
-15 (-6.22 % of base) : 6078.dasm - System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo+<>c__DisplayClass18_0:<get_SyntheticConstructors>b__1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
-12 (-6.09 % of base) : 6099.dasm - System.Type:BinarySearch(System.Array,System.Object):int (FullOpts)
-27 (-5.92 % of base) : 13457.dasm - Interfaces:TestInterfaceCache():int (FullOpts)
osx arm64
Diffs are based on 2,270,841 contexts (932,669 MinOpts, 1,338,172 FullOpts).
MISSED contexts: base: 26 (0.00%), diff: 29 (0.00%)
Overall (+1,124,576 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.osx.arm64.checked.mch |
11,186,636 |
+27,356 |
| benchmarks.run_pgo.osx.arm64.checked.mch |
34,442,660 |
+59,268 |
| benchmarks.run_tiered.osx.arm64.checked.mch |
15,517,000 |
+13,372 |
| coreclr_tests.run.osx.arm64.checked.mch |
486,415,276 |
+312,820 |
| libraries.crossgen2.osx.arm64.checked.mch |
55,725,640 |
+77,884 |
| libraries.pmi.osx.arm64.checked.mch |
80,218,788 |
+99,136 |
| libraries_tests.run.osx.arm64.Release.mch |
324,601,508 |
+399,340 |
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
162,572,640 |
+114,848 |
| realworld.run.osx.arm64.checked.mch |
15,061,556 |
+20,552 |
FullOpts (+1,124,576 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.osx.arm64.checked.mch |
11,186,100 |
+27,356 |
| benchmarks.run_pgo.osx.arm64.checked.mch |
18,141,360 |
+59,268 |
| benchmarks.run_tiered.osx.arm64.checked.mch |
4,012,516 |
+13,372 |
| coreclr_tests.run.osx.arm64.checked.mch |
153,802,352 |
+312,820 |
| libraries.crossgen2.osx.arm64.checked.mch |
55,724,012 |
+77,884 |
| libraries.pmi.osx.arm64.checked.mch |
80,097,660 |
+99,136 |
| libraries_tests.run.osx.arm64.Release.mch |
120,885,660 |
+399,340 |
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
149,418,912 |
+114,848 |
| realworld.run.osx.arm64.checked.mch |
14,497,600 |
+20,552 |
Example diffs
benchmarks.run.osx.arm64.checked.mch
-20 (-2.34%) : 199.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (FullOpts)
@@ -11,12 +11,12 @@
; V00 this [V00,T01] ( 14, 14 ) ref -> x19 this class-hnd single-def <System.Collections.Generic.Dictionary`2[int,System.__Canon]>
; V01 arg1 [V01,T08] ( 6, 6 ) int -> x20 single-def
; V02 arg2 [V02,T15] ( 3, 3 ) ubyte -> x2 single-def
-; V03 loc0 [V03,T04] ( 11, 12.04) ref -> x21 class-hnd exact single-def <<unknown class>>
+; V03 loc0 [V03,T04] ( 9, 12 ) ref -> x21 class-hnd exact single-def <<unknown class>>
; V04 loc1 [V04,T09] ( 6, 8 ) int -> x22
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V07 loc4 [V07 ] ( 0, 0 ) int -> zero-ref
-; V08 loc5 [V08,T00] ( 14, 19.08) int -> x20
+;* V08 loc5 [V08,T20] ( 0, 0 ) int -> zero-ref
; V09 loc6 [V09,T12] ( 6, 6 ) byref -> x26
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11,T19] ( 0, 0 ) int -> zero-ref
@@ -35,12 +35,15 @@
;* V24 tmp14 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp15 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V26 tmp16 [V26,T18] ( 2, 4 ) long -> x0 "argument with side effect"
-; V27 cse0 [V27,T05] ( 4, 11.88) long -> x23 "CSE - aggressive"
-; V28 cse1 [V28,T06] ( 14, 10 ) ref -> x1 multi-def "CSE - aggressive"
-; V29 cse2 [V29,T13] ( 3, 5.94) int -> x26 "CSE - aggressive"
-; V30 rat0 [V30,T16] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V31 rat1 [V31,T17] ( 3, 4 ) long -> x0 "runtime lookup"
-; V32 rat2 [V32,T14] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V27 tmp17 [V27,T21] ( 7, 0.23) long -> x20 "Widened primary induction variable"
+; V28 tmp18 [V28,T00] ( 6, 18.82) long -> x20 "Widened primary induction variable"
+; V29 cse0 [V29,T22] ( 4, 0.12) byref -> x23 "CSE - conservative"
+; V30 cse1 [V30,T05] ( 4, 11.88) long -> x23 "CSE - aggressive"
+; V31 cse2 [V31,T06] ( 14, 10 ) ref -> x1 multi-def "CSE - aggressive"
+; V32 cse3 [V32,T13] ( 3, 5.94) int -> x26 "CSE - aggressive"
+; V33 rat0 [V33,T16] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V34 rat1 [V34,T17] ( 3, 4 ) long -> x0 "runtime lookup"
+; V35 rat2 [V35,T14] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
@@ -171,28 +174,28 @@ G_M4165_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
movn x0, #0
mov w1, w20
cmp x1, #0
- beq G_M4165_IG24
+ beq G_M4165_IG25
udiv x0, x0, x1
add x0, x0, #1
str x0, [x19, #0x30]
- mov w20, wzr
cmp w22, #0
- ble G_M4165_IG21
+ ble G_M4165_IG22
ldr w0, [x21, #0x08]
cmp w0, w22
blt G_M4165_IG17
+ mov x20, xzr
;; size=132 bbWeight=1 PerfScore 49.00
G_M4165_IG12: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mov w0, #24
- mov x1, #16
- umaddl x23, w20, w0, x1
+ mov x0, #24
+ mul x0, x20, x0
+ add x23, x0, #16
add x0, x21, x23
; byrRegs +[x0]
ldr w0, [x0, #0x0C]
; byrRegs -[x0]
cmn w0, #1
blt G_M4165_IG15
- ;; size=28 bbWeight=3.96 PerfScore 43.56
+ ;; size=28 bbWeight=3.96 PerfScore 31.68
G_M4165_IG13: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
add x0, x21, x23
; byrRegs +[x0]
@@ -211,7 +214,7 @@ G_M4165_IG13: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
mul x0, x0, x1
lsr x28, x0, #32
cmp w2, #0
- beq G_M4165_IG24
+ beq G_M4165_IG25
udiv w0, w24, w2
msub w0, w0, w2, w24
cmp w0, w28
@@ -231,7 +234,7 @@ G_M4165_IG13: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
;; size=112 bbWeight=1.98 PerfScore 87.12
G_M4165_IG14: ; bbWeight=1.98, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
cmp w28, w26
- bhs G_M4165_IG23
+ bhs G_M4165_IG24
add x0, x25, #16
; byrRegs +[x0]
ubfiz x1, x28, #2, #32
@@ -249,40 +252,37 @@ G_M4165_IG14: ; bbWeight=1.98, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs
G_M4165_IG15: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
; byrRegs -[x26]
- add w20, w20, #1
+ add w0, w20, #1
+ mov w20, w0
cmp w20, w22
blt G_M4165_IG12
- ;; size=12 bbWeight=3.96 PerfScore 7.92
+ ;; size=16 bbWeight=3.96 PerfScore 9.90
G_M4165_IG16: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
- b G_M4165_IG21
+ b G_M4165_IG22
;; size=4 bbWeight=1 PerfScore 1.00
-G_M4165_IG17: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M4165_IG17: ; bbWeight=0.01, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ mov x20, xzr
+ ;; size=4 bbWeight=0.01 PerfScore 0.01
+G_M4165_IG18: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x21, #0x08]
cmp w20, w0
- bhs G_M4165_IG23
- mov w0, #24
- mov x1, #16
- umaddl x0, w20, w0, x1
- add x0, x21, x0
- ; byrRegs +[x0]
- ldr w0, [x0, #0x0C]
- ; byrRegs -[x0]
+ bhs G_M4165_IG24
+ mov x0, #24
+ mul x0, x20, x0
+ add x0, x0, #16
+ add x23, x21, x0
+ ; byrRegs +[x23]
+ ldr w0, [x23, #0x0C]
cmn w0, #1
- blt G_M4165_IG20
- ;; size=40 bbWeight=0.04 PerfScore 0.62
-G_M4165_IG18: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mov w0, #24
- mov x1, #16
- umaddl x0, w20, w0, x1
- add x0, x21, x0
- ; byrRegs +[x0]
- ldr w24, [x0, #0x08]
+ blt G_M4165_IG21
+ ;; size=40 bbWeight=0.04 PerfScore 0.50
+G_M4165_IG19: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=800000 {x23}, byref, isz
+ ldr w24, [x23, #0x08]
ldr x25, [x19, #0x08]
; gcrRegs +[x25]
ldr w2, [x25, #0x08]
ldr x27, [x19, #0x30]
mov w0, w24
- ; byrRegs -[x0]
mul x0, x27, x0
lsr x0, x0, #32
add x0, x0, #1
@@ -290,11 +290,11 @@ G_M4165_IG18: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
mul x0, x0, x1
lsr x28, x0, #32
cmp w2, #0
- beq G_M4165_IG24
+ beq G_M4165_IG25
udiv w0, w24, w2
msub w0, w0, w2, w24
cmp w0, w28
- beq G_M4165_IG19
+ beq G_M4165_IG20
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -307,38 +307,33 @@ G_M4165_IG18: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=120 bbWeight=0.02 PerfScore 0.99
-G_M4165_IG19: ; bbWeight=0.02, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
+ ;; size=104 bbWeight=0.02 PerfScore 0.86
+G_M4165_IG20: ; bbWeight=0.02, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=800000 {x23}, byref, isz
ldr w14, [x25, #0x08]
cmp w28, w14
- bhs G_M4165_IG23
+ bhs G_M4165_IG24
add x14, x25, #16
; byrRegs +[x14]
ubfiz x15, x28, #2, #32
add x26, x14, x15
; byrRegs +[x26]
- mov w14, #24
- ; byrRegs -[x14]
- mov x15, #16
- umaddl x14, w20, w14, x15
- add x14, x21, x14
- ; byrRegs +[x14]
- add x14, x14, #12
+ add x14, x23, #12
ldr w15, [x26]
sub w15, w15, #1
str w15, [x14]
add w14, w20, #1
; byrRegs -[x14]
str w14, [x26]
- ;; size=64 bbWeight=0.02 PerfScore 0.39
-G_M4165_IG20: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=48 bbWeight=0.02 PerfScore 0.26
+G_M4165_IG21: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
- ; byrRegs -[x26]
- add w20, w20, #1
+ ; byrRegs -[x23 x26]
+ add w14, w20, #1
+ mov w20, w14
cmp w20, w22
- blt G_M4165_IG17
- ;; size=12 bbWeight=0.04 PerfScore 0.08
-G_M4165_IG21: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ blt G_M4165_IG18
+ ;; size=16 bbWeight=0.04 PerfScore 0.10
+G_M4165_IG22: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
add x14, x19, #16
; byrRegs +[x14]
mov x15, x21
@@ -347,7 +342,7 @@ G_M4165_IG21: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}
; gcrRegs -[x15 x21]
; byrRegs -[x14]
;; size=12 bbWeight=1 PerfScore 2.00
-G_M4165_IG22: ; bbWeight=1, epilog, nogc, extend
+G_M4165_IG23: ; bbWeight=1, epilog, nogc, extend
ldp x27, x28, [sp, #0x60]
ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40]
@@ -356,17 +351,17 @@ G_M4165_IG22: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x70
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M4165_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M4165_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M4165_IG24: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M4165_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROWDIVZERO
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 856, prolog size 40, PerfScore 268.42, instruction count 214, allocated bytes for code 856 (MethodHash=3669efba) for method System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (FullOpts)
+; Total bytes of code 836, prolog size 40, PerfScore 258.17, instruction count 209, allocated bytes for code 836 (MethodHash=3669efba) for method System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (FullOpts)
; ============================================================
Unwind Info:
@@ -377,7 +372,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
...
-16 (-1.97%) : 2939.dasm - System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory+ServiceDescriptorCacheItem]:Resize(int,ubyte):this (FullOpts)
@@ -11,12 +11,12 @@
; V00 this [V00,T03] ( 13, 13 ) ref -> x19 this class-hnd single-def <System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory+ServiceDescriptorCacheItem]>
; V01 arg1 [V01,T08] ( 6, 6 ) int -> x20 single-def
; V02 arg2 [V02,T14] ( 3, 3 ) ubyte -> x2 single-def
-; V03 loc0 [V03,T04] ( 11, 12.04) ref -> x21 class-hnd exact single-def <<unknown class>>
+; V03 loc0 [V03,T04] ( 10, 12.02) ref -> x21 class-hnd exact single-def <<unknown class>>
; V04 loc1 [V04,T09] ( 6, 8 ) int -> x22
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V07 loc4 [V07 ] ( 0, 0 ) int -> zero-ref
-; V08 loc5 [V08,T00] ( 14, 19.08) int -> x20
+;* V08 loc5 [V08,T16] ( 0, 0 ) int -> zero-ref
; V09 loc6 [V09,T12] ( 6, 6 ) byref -> x26
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11,T15] ( 0, 0 ) int -> zero-ref
@@ -33,9 +33,13 @@
;* V22 tmp12 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp13 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp14 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V25 cse0 [V25,T05] ( 4, 11.88) long -> x23 "CSE - aggressive"
-; V26 cse1 [V26,T06] ( 14, 10 ) ref -> x1 multi-def "CSE - aggressive"
-; V27 cse2 [V27,T13] ( 3, 5.94) int -> x26 "CSE - aggressive"
+; V25 tmp15 [V25,T17] ( 7, 0.23) long -> x20 "Widened primary induction variable"
+; V26 tmp16 [V26,T00] ( 6, 18.82) long -> x20 "Widened primary induction variable"
+; V27 cse0 [V27,T18] ( 3, 0.10) byref -> x23 "CSE - conservative"
+; V28 cse1 [V28,T05] ( 4, 11.88) long -> x23 "CSE - aggressive"
+; V29 cse2 [V29,T19] ( 3, 0.10) long -> x0 "CSE - conservative"
+; V30 cse3 [V30,T06] ( 14, 10 ) ref -> x1 multi-def "CSE - aggressive"
+; V31 cse4 [V31,T13] ( 3, 5.94) int -> x26 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -150,28 +154,28 @@ G_M35343_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
movn x0, #0
mov w1, w20
cmp x1, #0
- beq G_M35343_IG21
+ beq G_M35343_IG22
udiv x0, x0, x1
add x0, x0, #1
str x0, [x19, #0x30]
- mov w20, wzr
cmp w22, #0
- ble G_M35343_IG18
+ ble G_M35343_IG19
ldr w0, [x21, #0x08]
cmp w0, w22
blt G_M35343_IG14
+ mov x20, xzr
;; size=144 bbWeight=1 PerfScore 50.50
G_M35343_IG09: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mov w0, #40
- mov x1, #16
- umaddl x23, w20, w0, x1
+ mov x0, #40
+ mul x0, x20, x0
+ add x23, x0, #16
add x0, x21, x23
; byrRegs +[x0]
ldr w0, [x0, #0x04]
; byrRegs -[x0]
cmn w0, #1
blt G_M35343_IG12
- ;; size=28 bbWeight=3.96 PerfScore 43.56
+ ;; size=28 bbWeight=3.96 PerfScore 31.68
G_M35343_IG10: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w24, [x21, x23]
ldr x25, [x19, #0x08]
@@ -187,7 +191,7 @@ G_M35343_IG10: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=000
mul x0, x0, x1
lsr x28, x0, #32
cmp w2, #0
- beq G_M35343_IG21
+ beq G_M35343_IG22
udiv w0, w24, w2
msub w0, w0, w2, w24
cmp w0, w28
@@ -207,7 +211,7 @@ G_M35343_IG10: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=000
;; size=108 bbWeight=1.98 PerfScore 86.13
G_M35343_IG11: ; bbWeight=1.98, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
cmp w28, w26
- bhs G_M35343_IG20
+ bhs G_M35343_IG21
add x0, x25, #16
; byrRegs +[x0]
ubfiz x1, x28, #2, #32
@@ -225,31 +229,31 @@ G_M35343_IG11: ; bbWeight=1.98, gcrefRegs=2280000 {x19 x21 x25}, byrefReg
G_M35343_IG12: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
; byrRegs -[x26]
- add w20, w20, #1
+ add w0, w20, #1
+ mov w20, w0
cmp w20, w22
blt G_M35343_IG09
- ;; size=12 bbWeight=3.96 PerfScore 7.92
+ ;; size=16 bbWeight=3.96 PerfScore 9.90
G_M35343_IG13: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
- b G_M35343_IG18
+ b G_M35343_IG19
;; size=4 bbWeight=1 PerfScore 1.00
-G_M35343_IG14: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M35343_IG14: ; bbWeight=0.01, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ mov x20, xzr
+ ;; size=4 bbWeight=0.01 PerfScore 0.01
+G_M35343_IG15: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x21, #0x08]
cmp w20, w0
- bhs G_M35343_IG20
- mov w0, #40
- mov x1, #16
- umaddl x0, w20, w0, x1
- add x0, x21, x0
- ; byrRegs +[x0]
- ldr w0, [x0, #0x04]
- ; byrRegs -[x0]
- cmn w0, #1
- blt G_M35343_IG17
- ;; size=40 bbWeight=0.04 PerfScore 0.62
-G_M35343_IG15: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mov w0, #40
- mov x1, #16
- umaddl x0, w20, w0, x1
+ bhs G_M35343_IG21
+ mov x0, #40
+ mul x0, x20, x0
+ add x0, x0, #16
+ add x23, x21, x0
+ ; byrRegs +[x23]
+ ldr w1, [x23, #0x04]
+ cmn w1, #1
+ blt G_M35343_IG18
+ ;; size=40 bbWeight=0.04 PerfScore 0.50
+G_M35343_IG16: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=800000 {x23}, byref, isz
ldr w24, [x21, x0]
ldr x25, [x19, #0x08]
; gcrRegs +[x25]
@@ -263,11 +267,11 @@ G_M35343_IG15: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=000
mul x0, x0, x1
lsr x28, x0, #32
cmp w2, #0
- beq G_M35343_IG21
+ beq G_M35343_IG22
udiv w0, w24, w2
msub w0, w0, w2, w24
cmp w0, w28
- beq G_M35343_IG16
+ beq G_M35343_IG17
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -280,38 +284,33 @@ G_M35343_IG15: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=000
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=116 bbWeight=0.02 PerfScore 0.98
-G_M35343_IG16: ; bbWeight=0.02, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
+ ;; size=104 bbWeight=0.02 PerfScore 0.86
+G_M35343_IG17: ; bbWeight=0.02, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=800000 {x23}, byref, isz
ldr w14, [x25, #0x08]
cmp w28, w14
- bhs G_M35343_IG20
+ bhs G_M35343_IG21
add x14, x25, #16
; byrRegs +[x14]
ubfiz x15, x28, #2, #32
add x26, x14, x15
; byrRegs +[x26]
- mov w14, #40
- ; byrRegs -[x14]
- mov x15, #16
- umaddl x14, w20, w14, x15
- add x14, x21, x14
- ; byrRegs +[x14]
- add x14, x14, #4
+ add x14, x23, #4
ldr w15, [x26]
sub w15, w15, #1
str w15, [x14]
add w14, w20, #1
; byrRegs -[x14]
str w14, [x26]
- ;; size=64 bbWeight=0.02 PerfScore 0.39
-G_M35343_IG17: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=48 bbWeight=0.02 PerfScore 0.26
+G_M35343_IG18: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
- ; byrRegs -[x26]
- add w20, w20, #1
+ ; byrRegs -[x23 x26]
+ add w14, w20, #1
+ mov w20, w14
cmp w20, w22
- blt G_M35343_IG14
- ;; size=12 bbWeight=0.04 PerfScore 0.08
-G_M35343_IG18: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ blt G_M35343_IG15
+ ;; size=16 bbWeight=0.04 PerfScore 0.10
+G_M35343_IG19: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
add x14, x19, #16
; byrRegs +[x14]
mov x15, x21
@@ -320,7 +319,7 @@ G_M35343_IG18: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
; gcrRegs -[x15 x19 x21]
; byrRegs -[x14]
;; size=12 bbWeight=1 PerfScore 2.00
-G_M35343_IG19: ; bbWeight=1, epilog, nogc, extend
+G_M35343_IG20: ; bbWeight=1, epilog, nogc, extend
ldp x27, x28, [sp, #0x50]
ldp x25, x26, [sp, #0x40]
ldp x23, x24, [sp, #0x30]
@@ -329,17 +328,17 @@ G_M35343_IG19: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x60
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M35343_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M35343_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M35343_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35343_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROWDIVZERO
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 812, prolog size 36, PerfScore 253.22, instruction count 203, allocated bytes for code 812 (MethodHash=607475f0) for method System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory+ServiceDescriptorCacheItem]:Resize(int,ubyte):this (FullOpts)
+; Total bytes of code 796, prolog size 36, PerfScore 242.98, instruction count 199, allocated bytes for code 796 (MethodHash=607475f0) for method System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory+ServiceDescriptorCacheItem]:Resize(int,ubyte):this (FullOpts)
; ============================================================
Unwind Info:
@@ -350,7 +349,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 203 (0x000cb) Actual length = 812 (0x00032c)
+ Function Length : 199 (0x000c7) Actual length = 796 (0x00031c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-1.34%) : 8820.dasm - System.Security.Cryptography.X509Certificates.SecTrustChainPal:GetCertsArray(System.Collections.Generic.List`1[System.Runtime.InteropServices.SafeHandle]):Microsoft.Win32.SafeHandles.SafeCreateHandle:this (FullOpts)
@@ -8,27 +8,28 @@
; 0 inlinees with PGO data; 3 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T11] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Security.Cryptography.X509Certificates.SecTrustChainPal>
-; V01 arg1 [V01,T04] ( 11, 19 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Runtime.InteropServices.SafeHandle]>
-; V02 loc0 [V02,T00] ( 32, 52.04) int -> [fp+0x2C] do-not-enreg[Z] EH-live
-; V03 loc1 [V03,T10] ( 6, 8 ) int -> x20
-; V04 loc2 [V04,T09] ( 7, 8.04) ref -> x21 class-hnd exact single-def <long[]>
-; V05 loc3 [V05,T12] ( 4, 3 ) ref -> x21 class-hnd exact single-def <Microsoft.Win32.SafeHandles.SafeCreateHandle>
-; V06 loc4 [V06,T06] ( 6, 12 ) ref -> x24 class-hnd <System.Runtime.InteropServices.SafeHandle>
+; V00 this [V00,T12] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Security.Cryptography.X509Certificates.SecTrustChainPal>
+; V01 arg1 [V01,T05] ( 11, 19 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Runtime.InteropServices.SafeHandle]>
+; V02 loc0 [V02,T00] ( 27, 29.04) int -> [fp+0x2C] do-not-enreg[Z] EH-live
+; V03 loc1 [V03,T11] ( 6, 8 ) int -> x20
+; V04 loc2 [V04,T10] ( 7, 8.04) ref -> x21 class-hnd exact single-def <long[]>
+; V05 loc3 [V05,T13] ( 4, 3 ) ref -> x21 class-hnd exact single-def <Microsoft.Win32.SafeHandles.SafeCreateHandle>
+; V06 loc4 [V06,T07] ( 6, 12 ) ref -> x24 class-hnd <System.Runtime.InteropServices.SafeHandle>
; V07 loc5 [V07 ] ( 4, 8 ) ubyte -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op
-; V08 loc6 [V08,T15] ( 2, 2 ) ref -> x21 class-hnd exact single-def <Microsoft.Win32.SafeHandles.SafeCreateHandle>
+; V08 loc6 [V08,T16] ( 2, 2 ) ref -> x21 class-hnd exact single-def <Microsoft.Win32.SafeHandles.SafeCreateHandle>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T05] ( 4, 16 ) long -> x25 "Strict ordering of exceptions for Array store"
-; V11 tmp2 [V11,T08] ( 7, 10 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V12 tmp3 [V12,T13] ( 4, 3 ) int -> x20 "Inline stloc first use temp"
-; V13 tmp4 [V13,T14] ( 3, 2.50) ref -> x0 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V14 tmp5 [V14,T01] ( 6, 24 ) ref -> x0 class-hnd "Inlining Arg" <System.__Canon>
-; V15 tmp6 [V15,T02] ( 6, 24 ) ref -> x23 "arr expr"
-; V16 tmp7 [V16,T18] ( 3, 0 ) ref -> x0 "arr expr"
-; V17 tmp8 [V17,T03] ( 3, 24 ) ref -> x0 "arr expr"
-; V18 PSPSym [V18,T16] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
-; V19 cse0 [V19,T07] ( 3, 11.88) long -> x23 "CSE - aggressive"
-; V20 cse1 [V20,T17] ( 3, 0.12) long -> x23 "CSE - conservative"
+; V10 tmp1 [V10,T06] ( 4, 16 ) long -> x25 "Strict ordering of exceptions for Array store"
+; V11 tmp2 [V11,T09] ( 7, 10 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V12 tmp3 [V12,T14] ( 4, 3 ) int -> x20 "Inline stloc first use temp"
+; V13 tmp4 [V13,T15] ( 3, 2.50) ref -> x0 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V14 tmp5 [V14,T02] ( 6, 24 ) ref -> x0 class-hnd "Inlining Arg" <System.__Canon>
+; V15 tmp6 [V15,T03] ( 6, 24 ) ref -> x23 "arr expr"
+; V16 tmp7 [V16,T19] ( 3, 0 ) ref -> x0 "arr expr"
+; V17 tmp8 [V17,T04] ( 3, 24 ) ref -> x0 "arr expr"
+; V18 PSPSym [V18,T17] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
+; V19 tmp10 [V19,T01] ( 7, 25 ) long -> x19 "Widened primary induction variable"
+; V20 cse0 [V20,T08] ( 3, 11.88) long -> x23 "CSE - aggressive"
+; V21 cse1 [V21,T18] ( 3, 0.12) long -> x23 "CSE - conservative"
;
; Lcl frame size = 40
@@ -46,7 +47,7 @@ G_M20834_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x19, x0
; gcrRegs +[x19]
;; size=40 bbWeight=1 PerfScore 8.50
-G_M20834_IG02: ; bbWeight=1, gcVars=0000000000000010 {V01}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref
+G_M20834_IG02: ; bbWeight=1, gcVars=0000000000000020 {V01}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x1]
str wzr, [fp, #0x2C] // [V02 loc0]
;; size=4 bbWeight=1 PerfScore 1.00
@@ -241,23 +242,22 @@ G_M20834_IG12: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {
str w0, [fp, #0x2C] // [V02 loc0]
ldr w0, [fp, #0x2C] // [V02 loc0]
tbnz w0, #31, G_M20834_IG14
- ;; size=20 bbWeight=1 PerfScore 6.50
+ ldr w19, [fp, #0x2C] // [V02 loc0]
+ ;; size=24 bbWeight=1 PerfScore 8.50
G_M20834_IG13: ; bbWeight=4, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr w0, [fp, #0x2C] // [V02 loc0]
- ldr w1, [x22, #0x10]
- cmp w0, w1
+ ldr w0, [x22, #0x10]
+ cmp w19, w0
bhs G_M20834_IG17
ldr x0, [x22, #0x08]
; gcrRegs +[x0]
- ldr w1, [fp, #0x2C] // [V02 loc0]
- ldr w2, [x0, #0x08]
- cmp w1, w2
+ ldr w1, [x0, #0x08]
+ cmp w19, w1
bhs G_M20834_IG16
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
- ldr w1, [fp, #0x2C] // [V02 loc0]
- ldr x0, [x0, w1, UXTW #3]
+ lsl x1, x19, #3
+ ldr x0, [x0, x1]
; gcrRegs +[x0]
; byrRegs -[x0]
ldrsb wzr, [x0]
@@ -269,12 +269,10 @@ G_M20834_IG13: ; bbWeight=4, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- ldr w0, [fp, #0x2C] // [V02 loc0]
- sub w0, w0, #1
- str w0, [fp, #0x2C] // [V02 loc0]
- ldr w0, [fp, #0x2C] // [V02 loc0]
- tbz w0, #31, G_M20834_IG13
- ;; size=96 bbWeight=4 PerfScore 148.00
+ sub w0, w19, #1
+ mov w19, w0
+ tbz w19, #31, G_M20834_IG13
+ ;; size=80 bbWeight=4 PerfScore 110.00
G_M20834_IG14: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x22]
; GC ptr vars -{V01}
@@ -303,8 +301,8 @@ G_M20834_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M20834_IG18: ; bbWeight=0, gcVars=0000000000000010 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
- ; GC ptr vars +{V01 V04}
+G_M20834_IG18: ; bbWeight=0, gcVars=0000000000000020 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ; GC ptr vars +{V01 V05}
stp fp, lr, [sp, #-0x50]!
stp x19, x20, [sp, #0x18]
stp x21, x22, [sp, #0x28]
@@ -313,7 +311,7 @@ G_M20834_IG18: ; bbWeight=0, gcVars=0000000000000010 {V01}, gcrefRegs=000
add x3, fp, #112
str x3, [sp, #0x10]
;; size=28 bbWeight=0 PerfScore 0.00
-G_M20834_IG19: ; bbWeight=0, gcVars=0000000000000010 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M20834_IG19: ; bbWeight=0, gcVars=0000000000000020 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr w0, [fp, #0x2C] // [V02 loc0]
sub w0, w0, #1
str w0, [fp, #0x2C] // [V02 loc0]
@@ -357,7 +355,7 @@ G_M20834_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=100 bbWeight=0 PerfScore 0.00
G_M20834_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet epilog, nogc
; gcrRegs -[x22]
- ; GC ptr vars -{V01 V04}
+ ; GC ptr vars -{V01 V05}
ldr x25, [sp, #0x48]
ldp x23, x24, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
@@ -379,7 +377,7 @@ G_M20834_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 896, prolog size 40, PerfScore 404.05, instruction count 224, allocated bytes for code 896 (MethodHash=6b3eae9d) for method System.Security.Cryptography.X509Certificates.SecTrustChainPal:GetCertsArray(System.Collections.Generic.List`1[System.Runtime.InteropServices.SafeHandle]):Microsoft.Win32.SafeHandles.SafeCreateHandle:this (FullOpts)
+; Total bytes of code 884, prolog size 40, PerfScore 368.05, instruction count 221, allocated bytes for code 884 (MethodHash=6b3eae9d) for method System.Security.Cryptography.X509Certificates.SecTrustChainPal:GetCertsArray(System.Collections.Generic.List`1[System.Runtime.InteropServices.SafeHandle]):Microsoft.Win32.SafeHandles.SafeCreateHandle:this (FullOpts)
; ============================================================
Unwind Info:
@@ -390,7 +388,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 174 (0x000ae) Actual length = 696 (0x0002b8)
+ Function Length : 171 (0x000ab) Actual length = 684 (0x0002ac)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+28 (+41.18%) : 12009.dasm - System.Collections.IterateFor`1[System.Canon]:ImmutableArray():System.Canon:this (FullOpts)
@@ -8,73 +8,81 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 3, 3 ) ref -> [fp+0x18] this class-hnd single-def <System.Collections.IterateFor`1[System.__Canon]>
-; V01 loc0 [V01,T02] ( 3, 6 ) ref -> x1 ld-addr-op class-hnd <System.__Canon>
+; V00 this [V00,T02] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Collections.IterateFor`1[System.__Canon]>
+; V01 loc0 [V01,T03] ( 3, 6 ) ref -> x0 ld-addr-op class-hnd <System.__Canon>
;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+;* V03 loc2 [V03,T09] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 tmp3 [V07,T08] ( 3, 3 ) ref -> x2 single-def "field V02.array (fldOffset=0x0)" P-INDEP
-;* V08 cse0 [V08,T09] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
-; V09 cse1 [V09,T03] ( 3, 6 ) int -> x4 "CSE - aggressive"
-; V10 cse2 [V10,T05] ( 2, 5 ) byref -> x2 hoist "CSE - aggressive"
-;* V11 rat0 [V11,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V12 rat1 [V12,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V13 rat2 [V13,T04] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T08] ( 3, 3 ) ref -> x1 single-def "field V02.array (fldOffset=0x0)" P-INDEP
+; V08 tmp4 [V08,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
+;* V09 cse0 [V09,T10] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V10 cse1 [V10,T01] ( 4, 10 ) int -> x2 "CSE - aggressive"
+; V11 cse2 [V11,T05] ( 2, 5 ) byref -> x1 hoist "CSE - aggressive"
+;* V12 rat0 [V12,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V13 rat1 [V13,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V14 rat2 [V14,T04] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M3722_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M3722_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ mov x19, x0
+ ; gcrRegs +[x19]
+ ;; size=16 bbWeight=1 PerfScore 3.00
+G_M3722_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ mov x0, xzr
; gcrRegs +[x0]
- mov x1, xzr
+ ldr x1, [x19, #0x38]
; gcrRegs +[x1]
- str x0, [fp, #0x18] // [V00 this]
- ; GC ptr vars +{V00}
- ldr x2, [x0, #0x38]
- ; gcrRegs +[x2]
- mov w3, wzr
- ldr w4, [x2, #0x08]
- cmp w4, #0
+ ldr w2, [x1, #0x08]
+ cmp w2, #0
ble G_M3722_IG04
- add x2, x2, #16
- ; gcrRegs -[x2]
- ; byrRegs +[x2]
- ;; size=32 bbWeight=1 PerfScore 10.00
-G_M3722_IG03: ; bbWeight=4, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, gcvars, byref, isz
- ; gcrRegs -[x0-x1]
- ldr x1, [x2, w3, UXTW #3]
- ; gcrRegs +[x1]
- add w3, w3, #1
- cmp w4, w3
- bgt G_M3722_IG03
- ;; size=16 bbWeight=4 PerfScore 20.00
-G_M3722_IG04: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
- mov x0, x1
+ mov x3, xzr
+ add x1, x1, #16
+ ; gcrRegs -[x1]
+ ; byrRegs +[x1]
+ ;; size=28 bbWeight=1 PerfScore 9.00
+G_M3722_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref, isz
+ ; gcrRegs -[x0]
+ cmp w3, w2
+ bhs G_M3722_IG05
+ lsl x0, x3, #3
+ ldr x0, [x1, x0]
; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M3722_IG05: ; bbWeight=1, epilog, nogc, extend
+ add w3, w3, #1
+ mov w3, w3
+ cmp w2, w3
+ bgt G_M3722_IG03
+ ;; size=32 bbWeight=4 PerfScore 32.00
+G_M3722_IG04: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; byrRegs -[x1]
+ ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
+G_M3722_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 68, prolog size 8, PerfScore 34.00, instruction count 17, allocated bytes for code 68 (MethodHash=877ef175) for method System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
+; Total bytes of code 96, prolog size 16, PerfScore 48.00, instruction count 24, allocated bytes for code 96 (MethodHash=877ef175) for method System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -82,7 +90,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
+ E4 end
+ E4 end
+24 (+46.15%) : 1055.dasm - System.Linq.Enumerable:Sumdouble,double:double (FullOpts)
@@ -9,9 +9,9 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[double]>
-; V01 loc0 [V01,T05] ( 4, 10 ) double -> d0
+; V01 loc0 [V01,T06] ( 4, 10 ) double -> d0
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[double]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x2
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) double -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -20,7 +20,8 @@
; V09 tmp4 [V09,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V10 tmp5 [V10,T04] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V11 tmp6 [V11,T02] ( 2, 5 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp7 [V12,T01] ( 3, 6 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V12 tmp7 [V12,T01] ( 4, 10 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V13 tmp8 [V13,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -31,24 +32,33 @@ G_M25021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M25021_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
movi v0.16b, #0
- mov w2, wzr
cmp w1, #0
ble G_M25021_IG04
+ mov x2, xzr
;; size=16 bbWeight=1 PerfScore 2.50
G_M25021_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr d16, [x0, w2, UXTW #3]
+ cmp w2, w1
+ bhs G_M25021_IG05
+ lsl x3, x2, #3
+ ldr d16, [x0, x3]
fadd d0, d16, d0
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
blt G_M25021_IG03
- ;; size=20 bbWeight=4 PerfScore 32.00
+ ;; size=36 bbWeight=4 PerfScore 44.00
G_M25021_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M25021_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 38.00, instruction count 13, allocated bytes for code 52 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 50.00, instruction count 19, allocated bytes for code 76 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
; ============================================================
Unwind Info:
@@ -59,7 +69,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+46.15%) : 16143.dasm - Struct.SpanWrapper:SumSpan(System.ReadOnlySpan`1[int]):int:this (FullOpts)
@@ -11,13 +11,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[int]>
; V02 loc0 [V02,T01] ( 4, 10 ) int -> x0
;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
-; V04 loc2 [V04,T00] ( 5, 17 ) int -> x3
+;* V04 loc2 [V04,T06] ( 0, 0 ) int -> zero-ref
;* V05 loc3 [V05 ] ( 0, 0 ) int -> zero-ref
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T04] ( 2, 2 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V08 tmp2 [V08,T05] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V09 tmp3 [V09,T03] ( 2, 5 ) byref -> x1 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp4 [V10,T02] ( 3, 6 ) int -> x2 single-def "field V03._length (fldOffset=0x8)" P-INDEP
+; V10 tmp4 [V10,T02] ( 4, 10 ) int -> x2 single-def "field V03._length (fldOffset=0x8)" P-INDEP
+; V11 tmp5 [V11,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -28,24 +29,33 @@ G_M10672_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M10672_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
mov w0, wzr
- mov w3, wzr
cmp w2, #0
ble G_M10672_IG04
+ mov x3, xzr
;; size=16 bbWeight=1 PerfScore 2.50
G_M10672_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldr w4, [x1, w3, UXTW #2]
+ cmp w3, w2
+ bhs G_M10672_IG05
+ lsl x4, x3, #2
+ ldr w4, [x1, x4]
add w0, w4, w0
add w3, w3, #1
+ mov w3, w3
cmp w3, w2
blt G_M10672_IG03
- ;; size=20 bbWeight=4 PerfScore 22.00
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M10672_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M10672_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 28.00, instruction count 13, allocated bytes for code 52 (MethodHash=42a0d64f) for method Struct.SpanWrapper:SumSpan(System.ReadOnlySpan`1[int]):int:this (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 40.00, instruction count 19, allocated bytes for code 76 (MethodHash=42a0d64f) for method Struct.SpanWrapper:SumSpan(System.ReadOnlySpan`1[int]):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -56,7 +66,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run_pgo.osx.arm64.checked.mch
-48 (-2.55%) : 80380.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
@@ -9,91 +9,104 @@
; 6 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T58] ( 16, 1017.89) ref -> x21 class-hnd single-def <int[][]>
-; V01 arg1 [V01,T31] ( 10, 909276.47) int -> x19 single-def
-; V02 arg2 [V02,T56] ( 11, 1208.99) int -> x20 single-def
-; V03 loc0 [V03,T77] ( 2, 2 ) long -> x24 single-def
-; V04 loc1 [V04,T65] ( 10, 815.03) int -> x0
+; V00 arg0 [V00,T66] ( 16, 1017.89) ref -> x21 class-hnd single-def <int[][]>
+; V01 arg1 [V01,T35] ( 10, 909276.47) int -> x19 single-def
+; V02 arg2 [V02,T64] ( 11, 1208.99) int -> x20 single-def
+; V03 loc0 [V03,T88] ( 2, 2 ) long -> x24 single-def
+;* V04 loc1 [V04,T94] ( 0, 0 ) int -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T42] ( 16, 9001.88) int -> x3 "Inline stloc first use temp"
-; V07 tmp2 [V07,T44] ( 3, 5994.00) ref -> x7 class-hnd "impAppendStmt" <int[]>
+;* V06 tmp1 [V06,T89] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V07 tmp2 [V07,T50] ( 3, 5994.00) ref -> x7 class-hnd "impAppendStmt" <int[]>
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "Strict ordering of exceptions for Array store"
-; V09 tmp4 [V09,T24] ( 14, 5444645.77) int -> x0 "Inline stloc first use temp"
-; V10 tmp5 [V10,T25] ( 6, 5443646.77) ref -> x2 class-hnd "Strict ordering of exceptions for Array store" <int[]>
-; V11 tmp6 [V11,T29] ( 4, 3629097.84) int -> x4 "Strict ordering of exceptions for Array store"
-; V12 tmp7 [V12,T78] ( 2, 2 ) int -> x5 single-def "Inline stloc first use temp"
-; V13 tmp8 [V13,T74] ( 2, 4 ) int -> x3 "Strict ordering of exceptions for Array store"
-; V14 tmp9 [V14,T50] ( 3, 2997.00) int -> x10 "Inline stloc first use temp"
-; V15 tmp10 [V15,T49] ( 2, 3996.00) int -> x9 "Strict ordering of exceptions for Array store"
+;* V09 tmp4 [V09,T73] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V10 tmp5 [V10,T25] ( 6, 5443646.77) ref -> x3 class-hnd "Strict ordering of exceptions for Array store" <int[]>
+; V11 tmp6 [V11,T31] ( 4, 3629097.84) int -> x4 "Strict ordering of exceptions for Array store"
+; V12 tmp7 [V12,T90] ( 2, 2 ) int -> x5 single-def "Inline stloc first use temp"
+; V13 tmp8 [V13,T85] ( 2, 4 ) int -> x3 "Strict ordering of exceptions for Array store"
+; V14 tmp9 [V14,T58] ( 3, 2997.00) int -> x10 "Inline stloc first use temp"
+; V15 tmp10 [V15,T56] ( 2, 3996.00) int -> x9 "Strict ordering of exceptions for Array store"
; V16 tmp11 [V16,T02] ( 16,356324423.26) int -> x2 "Inlining Arg"
-; V17 tmp12 [V17,T07] ( 45,157581041.57) int -> x3 "Inline stloc first use temp"
-; V18 tmp13 [V18,T05] ( 56,214704010.49) ref -> x1 class-hnd "Inlining Arg" <int[]>
-; V19 tmp14 [V19,T28] ( 6, 4077052.00) int -> x6 "Inline stloc first use temp"
-; V20 tmp15 [V20,T18] ( 6, 8154104.00) int -> x9 "Strict ordering of exceptions for Array store"
+; V17 tmp12 [V17,T08] ( 20,138885697.94) int -> x3 "Inline stloc first use temp"
+; V18 tmp13 [V18,T05] ( 25,202211453.16) ref -> x1 class-hnd "Inlining Arg" <int[]>
+; V19 tmp14 [V19,T30] ( 6, 4077052.00) int -> x6 "Inline stloc first use temp"
+; V20 tmp15 [V20,T19] ( 6, 8154104.00) int -> x9 "Strict ordering of exceptions for Array store"
; V21 tmp16 [V21,T00] ( 20,693156407.86) int -> x5 "Inlining Arg"
-; V22 tmp17 [V22,T01] ( 24,403519710.68) int -> x6 "Inline stloc first use temp"
+; V22 tmp17 [V22,T01] ( 22,402784153.19) int -> x6 "Inline stloc first use temp"
; V23 tmp18 [V23,T13] ( 4, 72435011.79) int -> x9 "Inline stloc first use temp"
-; V24 tmp19 [V24,T08] ( 4,144870023.58) int -> x8 "Strict ordering of exceptions for Array store"
+; V24 tmp19 [V24,T07] ( 4,144870023.58) int -> x8 "Strict ordering of exceptions for Array store"
; V25 tmp20 [V25,T14] ( 25, 36619139.81) int -> x10 "Inlining Arg"
; V26 tmp21 [V26,T15] ( 33, 23691212.20) int -> x11 "Inline stloc first use temp"
-; V27 tmp22 [V27,T27] ( 6, 4252761.86) int -> x5 "Inline stloc first use temp"
-; V28 tmp23 [V28,T17] ( 6, 8505523.72) int -> x2 "Strict ordering of exceptions for Array store"
+; V27 tmp22 [V27,T29] ( 6, 4252761.86) int -> x5 "Inline stloc first use temp"
+; V28 tmp23 [V28,T18] ( 6, 8505523.72) int -> registers "Strict ordering of exceptions for Array store"
;* V29 tmp24 [V29 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V30 tmp25 [V30,T69] ( 3, 6 ) ref -> x1 single-def "arr expr"
-; V31 tmp26 [V31,T71] ( 2, 4 ) ref -> x3 single-def "arr expr"
-; V32 tmp27 [V32,T68] ( 4, 8 ) int -> x5 "fgMakeTemp is creating a new local variable"
-; V33 tmp28 [V33,T72] ( 2, 4 ) ref -> x3 single-def "arr expr"
-; V34 tmp29 [V34,T73] ( 2, 4 ) ref -> x5 single-def "arr expr"
-;* V35 tmp30 [V35,T79] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
-;* V36 tmp31 [V36,T80] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
-;* V37 tmp32 [V37,T81] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
-; V38 tmp33 [V38,T43] ( 4, 7992.00) int -> x10 "fgMakeTemp is creating a new local variable"
-; V39 tmp34 [V39,T47] ( 2, 3996.00) ref -> x9 "arr expr"
-; V40 tmp35 [V40,T48] ( 2, 3996.00) ref -> x10 "arr expr"
-;* V41 tmp36 [V41,T52] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V42 tmp37 [V42,T53] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V43 tmp38 [V43,T54] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V30 tmp25 [V30,T80] ( 3, 6 ) ref -> x1 single-def "arr expr"
+; V31 tmp26 [V31,T82] ( 2, 4 ) ref -> x3 single-def "arr expr"
+; V32 tmp27 [V32,T79] ( 4, 8 ) int -> x5 "fgMakeTemp is creating a new local variable"
+; V33 tmp28 [V33,T83] ( 2, 4 ) ref -> x3 single-def "arr expr"
+; V34 tmp29 [V34,T84] ( 2, 4 ) ref -> x5 single-def "arr expr"
+;* V35 tmp30 [V35,T91] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+;* V36 tmp31 [V36,T92] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+;* V37 tmp32 [V37,T93] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+; V38 tmp33 [V38,T49] ( 4, 7992.00) int -> x10 "fgMakeTemp is creating a new local variable"
+; V39 tmp34 [V39,T54] ( 2, 3996.00) ref -> x9 "arr expr"
+; V40 tmp35 [V40,T55] ( 2, 3996.00) ref -> x10 "arr expr"
+;* V41 tmp36 [V41,T60] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V42 tmp37 [V42,T61] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V43 tmp38 [V43,T62] ( 0, 0 ) ref -> zero-ref "arr expr"
; V44 tmp39 [V44,T26] ( 6, 5443646.77) ref -> x4 "arr expr"
-; V45 cse0 [V45,T09] ( 3,130924514.22) int -> x9 "CSE - aggressive"
-; V46 cse1 [V46,T10] ( 3,130924514.22) int -> x8 "CSE - aggressive"
-; V47 cse2 [V47,T19] ( 3, 7609895.53) int -> x5 "CSE - aggressive"
-; V48 cse3 [V48,T20] ( 3, 7609895.53) int -> x2 "CSE - aggressive"
-; V49 cse4 [V49,T35] ( 3, 76867.63) int -> x5 "CSE - moderate"
-; V50 cse5 [V50,T36] ( 3, 76867.63) int -> x2 "CSE - moderate"
-; V51 cse6 [V51,T41] ( 2, 9082.72) ref -> x1 hoist "CSE - moderate"
-; V52 cse7 [V52,T32] ( 6, 909272.36) ref -> x5 hoist multi-def "CSE - moderate"
-; V53 cse8 [V53,T51] ( 3, 2997.00) int -> x9 "CSE - moderate"
-; V54 cse9 [V54,T75] ( 3, 3 ) int -> x3 "CSE - moderate"
-; V55 cse10 [V55,T33] ( 2, 899189.64) ref -> x1 hoist "CSE - moderate"
-; V56 cse11 [V56,T60] ( 4, 1002.00) byref -> x2 "CSE - moderate"
-; V57 cse12 [V57,T61] ( 4, 1002.00) byref -> x1 "CSE - moderate"
-; V58 cse13 [V58,T46] ( 7, 2003.00) ref -> x0 "CSE - moderate"
-; V59 cse14 [V59,T11] ( 3,130924514.22) long -> x7 "CSE - aggressive"
-; V60 cse15 [V60,T12] ( 3,130924514.22) long -> x5 "CSE - aggressive"
-; V61 cse16 [V61,T21] ( 3, 7609895.53) long -> x9 "CSE - aggressive"
-; V62 cse17 [V62,T22] ( 3, 7609895.53) long -> x10 "CSE - aggressive"
-; V63 cse18 [V63,T23] ( 3, 5993878.00) long -> x10 "CSE - aggressive"
-; V64 cse19 [V64,T55] ( 2, 1975.84) long -> x5 hoist "CSE - moderate"
-; V65 cse20 [V65,T30] ( 3, 2694605.15) long -> x6 "CSE - moderate"
-; V66 cse21 [V66,T37] ( 3, 76867.63) long -> x7 "CSE - moderate"
-; V67 cse22 [V67,T38] ( 3, 76867.63) long -> x10 "CSE - moderate"
-; V68 cse23 [V68,T39] ( 3, 60544.22) long -> x8 "CSE - moderate"
-; V69 cse24 [V69,T67] ( 2, 19.96) long -> x5 hoist "CSE - moderate"
-; V70 cse25 [V70,T40] ( 3, 27218.23) long -> x6 "CSE - moderate"
-; V71 cse26 [V71,T62] ( 3, 1001.00) int -> x4 "CSE - moderate"
-; V72 cse27 [V72,T63] ( 3, 1001.00) int -> x6 "CSE - moderate"
-; V73 cse28 [V73,T64] ( 3, 1001.00) int -> x8 "CSE - moderate"
-; V74 cse29 [V74,T04] ( 25,283029382.79) byref -> x4 hoist multi-def "CSE - aggressive"
-; V75 cse30 [V75,T03] ( 22,301092186.80) int -> x7 multi-def "CSE - aggressive"
-; V76 cse31 [V76,T06] ( 4,169561353.24) int -> x9 "CSE - aggressive"
-; V77 cse32 [V77,T16] ( 4, 9855634.69) int -> x5 "CSE - aggressive"
-; V78 cse33 [V78,T59] ( 11, 1015.91) int -> x22 hoist multi-def "CSE - moderate"
-; V79 cse34 [V79,T57] ( 8, 1202.92) byref -> x23 hoist multi-def "CSE - moderate"
-; V80 cse35 [V80,T34] ( 4, 99551.87) int -> x2 "CSE - moderate"
-; V81 cse36 [V81,T76] ( 3, 3 ) int -> x2 "CSE - moderate"
-; V82 cse37 [V82,T66] ( 4, 204.01) int -> x25 hoist multi-def "CSE - moderate"
-; V83 rat0 [V83,T70] ( 3, 6 ) int -> x7 "ReplaceWithLclVar is creating a new local variable"
-; V84 rat1 [V84,T45] ( 3, 5994.00) int -> x11 "ReplaceWithLclVar is creating a new local variable"
+; V45 tmp40 [V45,T53] ( 6, 4996.00) long -> x3 "Widened primary induction variable"
+; V46 tmp41 [V46,T76] ( 6, 49.94) long -> x0 "Widened primary induction variable"
+; V47 tmp42 [V47,T46] ( 7, 54446.45) long -> x1 "Widened primary induction variable"
+; V48 tmp43 [V48,T57] ( 5, 3955.95) long -> x0 "Widened primary induction variable"
+; V49 tmp44 [V49,T27] ( 7, 5390198.22) long -> x1 "Widened primary induction variable"
+; V50 tmp45 [V50,T78] ( 6, 10.16) long -> x0 "Widened primary induction variable"
+; V51 tmp46 [V51,T38] ( 12, 247299.92) long -> x2 "Widened primary induction variable"
+; V52 tmp47 [V52,T74] ( 5, 804.88) long -> x0 "Widened primary induction variable"
+; V53 tmp48 [V53,T39] ( 10, 204464.11) long -> x3 "Widened primary induction variable"
+; V54 tmp49 [V54,T16] ( 9, 18243989.57) long -> x3 "Widened primary induction variable"
+; V55 cse0 [V55,T48] ( 2, 9082.72) ref -> x2 hoist "CSE - moderate"
+; V56 cse1 [V56,T09] ( 3,130924514.22) int -> x9 "CSE - aggressive"
+; V57 cse2 [V57,T10] ( 3,130924514.22) int -> x8 "CSE - aggressive"
+; V58 cse3 [V58,T20] ( 3, 7609895.53) int -> x5 "CSE - aggressive"
+; V59 cse4 [V59,T21] ( 3, 7609895.53) int -> x2 "CSE - aggressive"
+; V60 cse5 [V60,T41] ( 3, 76867.63) int -> x5 "CSE - moderate"
+; V61 cse6 [V61,T42] ( 3, 76867.63) int -> x2 "CSE - moderate"
+; V62 cse7 [V62,T36] ( 6, 909272.36) ref -> x5 hoist multi-def "CSE - moderate"
+; V63 cse8 [V63,T59] ( 3, 2997.00) int -> x9 "CSE - moderate"
+; V64 cse9 [V64,T86] ( 3, 3 ) int -> x3 "CSE - moderate"
+; V65 cse10 [V65,T37] ( 2, 899189.64) ref -> x2 hoist "CSE - moderate"
+; V66 cse11 [V66,T68] ( 4, 1002.00) byref -> x2 "CSE - moderate"
+; V67 cse12 [V67,T69] ( 4, 1002.00) byref -> x1 "CSE - moderate"
+; V68 cse13 [V68,T52] ( 7, 2003.00) ref -> x0 "CSE - moderate"
+; V69 cse14 [V69,T24] ( 3, 5993878.00) long -> x10 "CSE - aggressive"
+; V70 cse15 [V70,T63] ( 2, 1975.84) long -> x5 hoist "CSE - moderate"
+; V71 cse16 [V71,T33] ( 3, 2694605.15) long -> x6 "CSE - moderate"
+; V72 cse17 [V72,T45] ( 3, 60544.22) long -> x8 "CSE - moderate"
+; V73 cse18 [V73,T77] ( 2, 19.96) long -> x5 hoist "CSE - moderate"
+; V74 cse19 [V74,T47] ( 3, 27218.23) long -> x6 "CSE - moderate"
+; V75 cse20 [V75,T11] ( 3,130924514.22) long -> x7 "CSE - aggressive"
+; V76 cse21 [V76,T12] ( 3,130924514.22) long -> x5 "CSE - aggressive"
+; V77 cse22 [V77,T22] ( 3, 7609895.53) long -> x9 "CSE - aggressive"
+; V78 cse23 [V78,T23] ( 3, 7609895.53) long -> x10 "CSE - aggressive"
+; V79 cse24 [V79,T43] ( 3, 76867.63) long -> x7 "CSE - moderate"
+; V80 cse25 [V80,T44] ( 3, 76867.63) long -> x10 "CSE - moderate"
+; V81 cse26 [V81,T70] ( 3, 1001.00) int -> x4 "CSE - moderate"
+; V82 cse27 [V82,T71] ( 3, 1001.00) int -> x6 "CSE - moderate"
+; V83 cse28 [V83,T72] ( 3, 1001.00) int -> x8 "CSE - moderate"
+; V84 cse29 [V84,T04] ( 25,283029382.79) byref -> x4 hoist multi-def "CSE - aggressive"
+; V85 cse30 [V85,T03] ( 22,301092186.80) int -> x7 multi-def "CSE - aggressive"
+; V86 cse31 [V86,T06] ( 4,169561353.24) int -> x9 "CSE - aggressive"
+; V87 cse32 [V87,T17] ( 4, 9855634.69) int -> x5 "CSE - aggressive"
+; V88 cse33 [V88,T32] ( 20, 3625760.37) byref -> x4 hoist multi-def "CSE - moderate"
+; V89 cse34 [V89,T28] ( 25, 4712527.25) int -> x7 multi-def "CSE - aggressive"
+; V90 cse35 [V90,T67] ( 11, 1015.91) int -> x22 hoist multi-def "CSE - moderate"
+; V91 cse36 [V91,T65] ( 8, 1202.92) byref -> x23 hoist multi-def "CSE - moderate"
+; V92 cse37 [V92,T34] ( 4, 1712740.94) int -> x9 "CSE - moderate"
+; V93 cse38 [V93,T40] ( 4, 99551.87) int -> x2 "CSE - moderate"
+; V94 cse39 [V94,T87] ( 3, 3 ) int -> x2 "CSE - moderate"
+; V95 cse40 [V95,T75] ( 4, 204.01) int -> x25 hoist multi-def "CSE - moderate"
+; V96 rat0 [V96,T81] ( 3, 6 ) int -> x7 "ReplaceWithLclVar is creating a new local variable"
+; V97 rat1 [V97,T51] ( 3, 5994.00) int -> x11 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 8
@@ -119,7 +132,7 @@ G_M42768_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
; gcrRegs +[x1]
ldr w2, [x1, #0x08]
cmp w2, #0
- bls G_M42768_IG79
+ bls G_M42768_IG81
add x1, x1, #16
; gcrRegs -[x1]
; byrRegs +[x1]
@@ -128,7 +141,7 @@ G_M42768_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
mov x3, x0
; gcrRegs +[x3]
cmp w2, #1
- bls G_M42768_IG79
+ bls G_M42768_IG81
add x2, x3, #20
; byrRegs +[x2]
mov w3, #117
@@ -160,17 +173,17 @@ G_M42768_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
msub w5, w7, w8, w5
str w3, [x2]
str w5, [x1]
- mov w3, wzr
cmp w19, #0
ble G_M42768_IG05
- ;; size=168 bbWeight=1 PerfScore 42.00
+ ;; size=164 bbWeight=1 PerfScore 41.50
G_M42768_IG03: ; bbWeight=1.00, gcrefRegs=200001 {x0 x21}, byrefRegs=0006 {x1 x2}, byref, isz
+ mov x3, xzr
ldr w22, [x21, #0x08]
cmp w22, #0
- bls G_M42768_IG79
+ bls G_M42768_IG81
ldr x5, [x21, #0x10]
; gcrRegs +[x5]
- ;; size=16 bbWeight=1.00 PerfScore 7.49
+ ;; size=20 bbWeight=1.00 PerfScore 7.99
G_M42768_IG04: ; bbWeight=999.00, gcrefRegs=200021 {x0 x5 x21}, byrefRegs=0006 {x1 x2}, byref, isz
mov x7, x5
; gcrRegs +[x7]
@@ -196,22 +209,23 @@ G_M42768_IG04: ; bbWeight=999.00, gcrefRegs=200021 {x0 x5 x21}, byrefRegs
str w10, [x1]
ldr w9, [x7, #0x08]
cmp w3, w9
- bhs G_M42768_IG79
+ bhs G_M42768_IG81
add x7, x7, #16
; gcrRegs -[x7]
; byrRegs +[x7]
- str w10, [x7, w3, UXTW #2]
+ lsl x9, x3, #2
+ str w10, [x7, x9]
add w3, w3, #1
+ mov w3, w3
cmp w3, w19
blt G_M42768_IG04
- ;; size=100 bbWeight=999.00 PerfScore 29970.00
+ ;; size=108 bbWeight=999.00 PerfScore 31468.50
G_M42768_IG05: ; bbWeight=1.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x5]
; byrRegs -[x1-x2 x7]
- mov w3, #1
cmp w20, #1
ble G_M42768_IG18
- ;; size=12 bbWeight=1.00 PerfScore 2.00
+ ;; size=8 bbWeight=1.00 PerfScore 1.50
G_M42768_IG06: ; bbWeight=1.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
cbz x21, G_M42768_IG13
tbnz w20, #31, G_M42768_IG13
...
-4 (-2.04%) : 63111.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.Canon]:AllocateSlow():System.Canon:this (Tier1)
@@ -9,20 +9,22 @@
; 1 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 4, 3.03) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]>
-; V01 loc0 [V01,T02] ( 4, 8.18) ref -> x20 class-hnd exact single-def <<unknown class>>
-; V02 loc1 [V02,T00] ( 6, 22.87) int -> x21
+; V00 this [V00,T05] ( 4, 3.03) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]>
+; V01 loc0 [V01,T03] ( 4, 8.18) ref -> x20 class-hnd exact single-def <<unknown class>>
+;* V02 loc1 [V02,T10] ( 0, 0 ) int -> zero-ref
; V03 loc2 [V03,T01] ( 5, 13.33) ref -> x23 class-hnd <System.__Canon>
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T05] ( 3, 5.84) byref -> x0 "impAppendStmt"
+; V06 tmp1 [V06,T06] ( 3, 5.84) byref -> x0 "impAppendStmt"
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
-; V09 cse0 [V09,T03] ( 3, 7.23) int -> x22 "CSE - aggressive"
-;* V10 rat0 [V10,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V11 rat1 [V11,T08] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V12 rat2 [V12,T06] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V13 rat3 [V13,T09] ( 3, 0.16) ref -> x1 "delegate invoke call"
+; V09 tmp4 [V09,T00] ( 5, 21.87) long -> x22 "Widened primary induction variable"
+; V10 cse0 [V10,T02] ( 3, 11.38) long -> x0 "CSE - aggressive"
+; V11 cse1 [V11,T04] ( 3, 7.23) int -> x21 "CSE - aggressive"
+;* V12 rat0 [V12,T08] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V13 rat1 [V13,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V14 rat2 [V14,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V15 rat3 [V15,T11] ( 3, 0.16) ref -> x1 "delegate invoke call"
;
; Lcl frame size = 8
@@ -38,35 +40,36 @@ G_M15517_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M15517_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x10]
; gcrRegs +[x20]
- mov w21, wzr
- ldr w22, [x20, #0x08]
- cmp w22, #0
- ble G_M15517_IG08
- ;; size=20 bbWeight=1 PerfScore 8.00
-G_M15517_IG03: ; bbWeight=5.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ubfiz x0, x21, #3, #32
+ ldr w21, [x20, #0x08]
+ cmp w21, #0
+ ble G_M15517_IG09
+ ;; size=16 bbWeight=1 PerfScore 7.50
+G_M15517_IG03: ; bbWeight=0.97, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ mov x22, xzr
+ ;; size=4 bbWeight=0.97 PerfScore 0.49
+G_M15517_IG04: ; bbWeight=5.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ lsl x0, x22, #3
add x0, x0, #16
ldr x23, [x20, x0]
; gcrRegs +[x23]
- cbnz x23, G_M15517_IG06
+ cbnz x23, G_M15517_IG07
;; size=16 bbWeight=5.20 PerfScore 28.62
-G_M15517_IG04: ; bbWeight=5.23, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M15517_IG05: ; bbWeight=5.23, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x23]
- add w21, w21, #1
- cmp w22, w21
- bgt G_M15517_IG03
- ;; size=12 bbWeight=5.23 PerfScore 10.46
-G_M15517_IG05: ; bbWeight=0.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ add w0, w22, #1
+ mov w22, w0
+ cmp w21, w22
+ bgt G_M15517_IG04
+ ;; size=16 bbWeight=5.23 PerfScore 13.07
+G_M15517_IG06: ; bbWeight=0.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20]
- b G_M15517_IG08
+ b G_M15517_IG09
;; size=4 bbWeight=0.03 PerfScore 0.03
-G_M15517_IG06: ; bbWeight=0.97, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
+G_M15517_IG07: ; bbWeight=0.97, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x20 x23]
- ubfiz x0, x21, #3, #32
- add x0, x0, #16
add x0, x20, x0
; byrRegs +[x0]
- cbz x0, G_M15517_IG10
+ cbz x0, G_M15517_IG11
mov x2, x23
; gcrRegs +[x2]
mov x1, xzr
@@ -75,17 +78,17 @@ G_M15517_IG06: ; bbWeight=0.97, gcrefRegs=980000 {x19 x20 x23}, byrefRegs
; byrRegs -[x0]
; gcr arg pop 0
cmp x0, x23
- bne G_M15517_IG04
+ bne G_M15517_IG05
mov x0, x23
- ;; size=40 bbWeight=0.97 PerfScore 6.82
-G_M15517_IG07: ; bbWeight=0.97, epilog, nogc, extend
+ ;; size=32 bbWeight=0.97 PerfScore 5.36
+G_M15517_IG08: ; bbWeight=0.97, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
ret lr
;; size=20 bbWeight=0.97 PerfScore 5.84
-G_M15517_IG08: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M15517_IG09: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x20 x23]
ldr x1, [x19, #0x18]
; gcrRegs +[x1]
@@ -96,14 +99,14 @@ G_M15517_IG08: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=800
blr x1
; gcr arg pop 0
;; size=16 bbWeight=0.03 PerfScore 0.26
-G_M15517_IG09: ; bbWeight=0.03, epilog, nogc, extend
+G_M15517_IG10: ; bbWeight=0.03, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
ret lr
;; size=20 bbWeight=0.03 PerfScore 0.16
-G_M15517_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M15517_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowNullReferenceException()
movk x0, #0xD1FFAB1E LSL #16
@@ -114,7 +117,7 @@ G_M15517_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 196, prolog size 24, PerfScore 65.18, instruction count 49, allocated bytes for code 196 (MethodHash=a298c362) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:AllocateSlow():System.__Canon:this (Tier1)
+; Total bytes of code 192, prolog size 24, PerfScore 66.32, instruction count 48, allocated bytes for code 192 (MethodHash=a298c362) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:AllocateSlow():System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
@@ -125,7 +128,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-36 (-1.77%) : 61262.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1-OSR)
@@ -10,165 +10,171 @@
; Final local variable assignments
;
; V00 this [V00,T06] ( 14, 2.36) ref -> x19 this class-hnd single-def <Benchstone.BenchI.Puzzle>
-; V01 loc0 [V01,T03] ( 33,101.44) int -> registers
-; V02 loc1 [V02,T12] ( 24, 0.17) int -> x4
-;* V03 loc2 [V03,T14] ( 0, 0 ) int -> zero-ref
-; V04 loc3 [V04,T02] ( 7,499.40) int -> x0
+; V01 loc0 [V01,T07] ( 29, 1.80) int -> registers
+; V02 loc1 [V02,T14] ( 24, 0.17) int -> x4
+;* V03 loc2 [V03,T15] ( 0, 0 ) int -> zero-ref
+; V04 loc3 [V04,T08] ( 3, 0.60) int -> x2
;* V05 loc4 [V05 ] ( 0, 0 ) int -> zero-ref
-; V06 loc5 [V06,T114] ( 3, 0.02) ubyte -> x0
+; V06 loc5 [V06,T116] ( 3, 0.02) ubyte -> x0
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) ref -> zero-ref "arr expr"
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref "arr expr"
;* V10 tmp3 [V10 ] ( 0, 0 ) int -> zero-ref "index expr"
; V11 tmp4 [V11,T00] ( 3,598.79) ref -> x4 "arr expr"
; V12 tmp5 [V12,T01] ( 3,598.79) ref -> x4 "arr expr"
-; V13 tmp6 [V13,T15] ( 3, 0.27) ref -> x0 "arr expr"
-; V14 tmp7 [V14,T10] ( 6, 0.54) int -> x3 "index expr"
-; V15 tmp8 [V15,T16] ( 3, 0.27) ref -> x0 "arr expr"
-; V16 tmp9 [V16,T55] ( 3, 0.07) ref -> x2 single-def "arr expr"
-; V17 tmp10 [V17,T56] ( 3, 0.07) ref -> x4 single-def "arr expr"
-; V18 tmp11 [V18,T19] ( 3, 0.13) ref -> x6 "arr expr"
-; V19 tmp12 [V19,T08] ( 12, 0.54) int -> x7 "index expr"
-; V20 tmp13 [V20,T20] ( 3, 0.13) ref -> x6 "arr expr"
-; V21 tmp14 [V21,T84] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V22 tmp15 [V22,T85] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V23 tmp16 [V23,T70] ( 3, 0.03) ref -> x6 "arr expr"
-; V24 tmp17 [V24,T54] ( 6, 0.07) int -> x7 "index expr"
-; V25 tmp18 [V25,T71] ( 3, 0.03) ref -> x6 "arr expr"
-; V26 tmp19 [V26,T86] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V27 tmp20 [V27,T87] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V28 tmp21 [V28,T48] ( 3, 0.07) ref -> x7 "arr expr"
-; V29 tmp22 [V29,T31] ( 6, 0.13) int -> x8 "index expr"
-; V30 tmp23 [V30,T49] ( 3, 0.07) ref -> x6 "arr expr"
-; V31 tmp24 [V31,T88] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V32 tmp25 [V32,T89] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V33 tmp26 [V33,T17] ( 3, 0.27) ref -> x6 "arr expr"
-; V34 tmp27 [V34,T11] ( 6, 0.54) int -> x7 "index expr"
-; V35 tmp28 [V35,T18] ( 3, 0.27) ref -> x6 "arr expr"
-; V36 tmp29 [V36,T90] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V37 tmp30 [V37,T91] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V38 tmp31 [V38,T109] ( 3, 0.02) ref -> x6 "arr expr"
-; V39 tmp32 [V39,T53] ( 12, 0.07) int -> x7 "index expr"
-; V40 tmp33 [V40,T110] ( 3, 0.02) ref -> x6 "arr expr"
-; V41 tmp34 [V41,T92] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V42 tmp35 [V42,T93] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V43 tmp36 [V43,T38] ( 3, 0.07) ref -> x4 "arr expr"
-;* V44 tmp37 [V44,T61] ( 0, 0 ) int -> zero-ref "index expr"
-; V45 tmp38 [V45,T39] ( 3, 0.07) ref -> x4 "arr expr"
-; V46 tmp39 [V46,T94] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V47 tmp40 [V47,T95] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V48 tmp41 [V48,T40] ( 3, 0.07) ref -> x4 "arr expr"
-;* V49 tmp42 [V49,T62] ( 0, 0 ) int -> zero-ref "index expr"
-; V50 tmp43 [V50,T41] ( 3, 0.07) ref -> x4 "arr expr"
-; V51 tmp44 [V51,T96] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V52 tmp45 [V52,T97] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V53 tmp46 [V53,T42] ( 3, 0.07) ref -> x4 "arr expr"
-;* V54 tmp47 [V54,T63] ( 0, 0 ) int -> zero-ref "index expr"
-; V55 tmp48 [V55,T43] ( 3, 0.07) ref -> x4 "arr expr"
-; V56 tmp49 [V56,T98] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V57 tmp50 [V57,T99] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V58 tmp51 [V58,T25] ( 3, 0.07) ref -> x4 "arr expr"
-;* V59 tmp52 [V59,T50] ( 0, 0 ) int -> zero-ref "index expr"
-; V60 tmp53 [V60,T26] ( 3, 0.07) ref -> x4 "arr expr"
-; V61 tmp54 [V61,T100] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V62 tmp55 [V62,T101] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V63 tmp56 [V63,T27] ( 3, 0.07) ref -> x4 "arr expr"
-;* V64 tmp57 [V64,T51] ( 0, 0 ) int -> zero-ref "index expr"
-; V65 tmp58 [V65,T28] ( 3, 0.07) ref -> x4 "arr expr"
-; V66 tmp59 [V66,T102] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V67 tmp60 [V67,T103] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V68 tmp61 [V68,T29] ( 3, 0.07) ref -> x4 "arr expr"
-;* V69 tmp62 [V69,T52] ( 0, 0 ) int -> zero-ref "index expr"
-; V70 tmp63 [V70,T30] ( 3, 0.07) ref -> x4 "arr expr"
-; V71 tmp64 [V71,T104] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V72 tmp65 [V72,T105] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V73 tmp66 [V73,T07] ( 12, 0.54) ref -> x8 "arr expr"
-; V74 tmp67 [V74,T09] ( 12, 0.54) int -> x9 "index expr"
-; V75 tmp68 [V75,T13] ( 9, 0.40) ref -> x6 "arr expr"
-; V76 tmp69 [V76,T106] ( 2, 0.04) ref -> x0 single-def "arr expr"
-; V77 tmp70 [V77,T107] ( 2, 0.04) ref -> x2 single-def "arr expr"
-; V78 tmp71 [V78,T57] ( 3, 0.07) ref -> x0 single-def "arr expr"
-; V79 tmp72 [V79,T58] ( 3, 0.07) ref -> x0 single-def "arr expr"
-; V80 tmp73 [V80,T59] ( 3, 0.07) ref -> x0 single-def "arr expr"
-; V81 tmp74 [V81,T60] ( 3, 0.07) ref -> x0 single-def "arr expr"
-; V82 tmp75 [V82,T108] ( 2, 0.04) int -> x1 "argument with side effect"
-; V83 cse0 [V83,T44] ( 2, 0.04) ref -> x6 "CSE - conservative"
-; V84 cse1 [V84,T119] ( 2, 0.01) ref -> x6 "CSE - conservative"
-; V85 cse2 [V85,T32] ( 2, 0.09) ref -> x0 "CSE - conservative"
-; V86 cse3 [V86,T116] ( 2, 0.01) ref -> x6 "CSE - conservative"
-; V87 cse4 [V87,T111] ( 2, 0.02) ref -> x6 "CSE - conservative"
-; V88 cse5 [V88,T33] ( 2, 0.09) ref -> x6 "CSE - conservative"
-; V89 cse6 [V89,T64] ( 2, 0.02) ref -> x4 "CSE - conservative"
-; V90 cse7 [V90,T65] ( 2, 0.02) ref -> x4 "CSE - conservative"
-; V91 cse8 [V91,T66] ( 2, 0.02) ref -> x4 "CSE - conservative"
-; V92 cse9 [V92,T72] ( 2, 0.02) ref -> x4 "CSE - conservative"
-; V93 cse10 [V93,T73] ( 2, 0.02) ref -> x4 "CSE - conservative"
-; V94 cse11 [V94,T74] ( 2, 0.02) ref -> x4 "CSE - conservative"
-; V95 cse12 [V95,T122] ( 2, 0.01) int -> x7 "CSE - conservative"
-; V96 cse13 [V96,T123] ( 2, 0.01) int -> x7 "CSE - conservative"
-; V97 cse14 [V97,T115] ( 2, 0.02) int -> x8 "CSE - conservative"
-; V98 cse15 [V98,T124] ( 2, 0.01) int -> x7 "CSE - conservative"
-; V99 cse16 [V99,T125] ( 2, 0.01) int -> x7 "CSE - conservative"
-; V100 cse17 [V100,T126] ( 2, 0.01) int -> x7 "CSE - conservative"
-; V101 cse18 [V101,T127] ( 2, 0.01) int -> x7 "CSE - conservative"
-; V102 cse19 [V102,T45] ( 5, 0.11) ref -> x7 "CSE - conservative"
-; V103 cse20 [V103,T23] ( 14, 0.16) int -> x3 "CSE - conservative"
-; V104 cse21 [V104,T24] ( 14, 0.16) int -> x5 "CSE - conservative"
-; V105 cse22 [V105,T47] ( 5, 0.11) int -> x8 "CSE - conservative"
-; V106 cse23 [V106,T46] ( 5, 0.11) byref -> x6 "CSE - conservative"
-; V107 cse24 [V107,T121] ( 5, 0.01) int -> x8 "CSE - conservative"
-; V108 cse25 [V108,T120] ( 5, 0.01) byref -> x6 "CSE - conservative"
-; V109 cse26 [V109,T36] ( 3, 0.13) int -> x4 "CSE - conservative"
-; V110 cse27 [V110,T34] ( 3, 0.13) byref -> x0 "CSE - conservative"
-; V111 cse28 [V111,T118] ( 3, 0.02) int -> x8 "CSE - conservative"
-; V112 cse29 [V112,T117] ( 3, 0.02) byref -> x6 "CSE - conservative"
-; V113 cse30 [V113,T113] ( 3, 0.03) int -> x9 "CSE - conservative"
-; V114 cse31 [V114,T112] ( 3, 0.03) byref -> x7 "CSE - conservative"
-; V115 cse32 [V115,T37] ( 3, 0.13) int -> x8 "CSE - conservative"
-; V116 cse33 [V116,T35] ( 3, 0.13) byref -> x6 "CSE - conservative"
-; V117 cse34 [V117,T78] ( 4, 0.04) int -> x6 "CSE - conservative"
-; V118 cse35 [V118,T67] ( 5, 0.06) byref -> x4 "CSE - conservative"
-; V119 cse36 [V119,T79] ( 4, 0.04) int -> x6 "CSE - conservative"
-; V120 cse37 [V120,T68] ( 5, 0.06) byref -> x4 "CSE - conservative"
-; V121 cse38 [V121,T80] ( 4, 0.04) int -> x6 "CSE - conservative"
-; V122 cse39 [V122,T69] ( 5, 0.06) byref -> x4 "CSE - conservative"
-; V123 cse40 [V123,T81] ( 4, 0.04) int -> x6 "CSE - conservative"
-; V124 cse41 [V124,T75] ( 4, 0.04) byref -> x4 "CSE - conservative"
-; V125 cse42 [V125,T82] ( 4, 0.04) int -> x6 "CSE - conservative"
-; V126 cse43 [V126,T76] ( 4, 0.04) byref -> x4 "CSE - conservative"
-; V127 cse44 [V127,T83] ( 4, 0.04) int -> x6 "CSE - conservative"
-; V128 cse45 [V128,T77] ( 4, 0.04) byref -> x4 "CSE - conservative"
-; V129 cse46 [V129,T04] ( 19,100.33) ref -> x1 hoist multi-def "CSE - aggressive"
-; V130 cse47 [V130,T05] ( 2,100.00) long -> x3 hoist "CSE - aggressive"
-; V131 cse48 [V131,T21] ( 14, 0.16) ref -> x0 "CSE - conservative"
-; V132 cse49 [V132,T22] ( 14, 0.16) ref -> x2 "CSE - conservative"
+; V13 tmp6 [V13,T16] ( 3, 0.27) ref -> x2 "arr expr"
+; V14 tmp7 [V14,T12] ( 6, 0.54) int -> x3 "index expr"
+; V15 tmp8 [V15,T17] ( 3, 0.27) ref -> x2 "arr expr"
+; V16 tmp9 [V16,T57] ( 3, 0.07) ref -> x0 single-def "arr expr"
+; V17 tmp10 [V17,T58] ( 3, 0.07) ref -> x4 single-def "arr expr"
+; V18 tmp11 [V18,T20] ( 3, 0.13) ref -> x6 "arr expr"
+; V19 tmp12 [V19,T10] ( 12, 0.54) int -> x7 "index expr"
+; V20 tmp13 [V20,T21] ( 3, 0.13) ref -> x6 "arr expr"
+; V21 tmp14 [V21,T86] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V22 tmp15 [V22,T87] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V23 tmp16 [V23,T72] ( 3, 0.03) ref -> x6 "arr expr"
+; V24 tmp17 [V24,T56] ( 6, 0.07) int -> x7 "index expr"
+; V25 tmp18 [V25,T73] ( 3, 0.03) ref -> x6 "arr expr"
+; V26 tmp19 [V26,T88] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V27 tmp20 [V27,T89] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V28 tmp21 [V28,T50] ( 3, 0.07) ref -> x7 "arr expr"
+; V29 tmp22 [V29,T33] ( 6, 0.13) int -> x8 "index expr"
+; V30 tmp23 [V30,T51] ( 3, 0.07) ref -> x6 "arr expr"
+; V31 tmp24 [V31,T90] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V32 tmp25 [V32,T91] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V33 tmp26 [V33,T18] ( 3, 0.27) ref -> x6 "arr expr"
+; V34 tmp27 [V34,T13] ( 6, 0.54) int -> x7 "index expr"
+; V35 tmp28 [V35,T19] ( 3, 0.27) ref -> x6 "arr expr"
+; V36 tmp29 [V36,T92] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V37 tmp30 [V37,T93] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V38 tmp31 [V38,T111] ( 3, 0.02) ref -> x6 "arr expr"
+; V39 tmp32 [V39,T55] ( 12, 0.07) int -> x7 "index expr"
+; V40 tmp33 [V40,T112] ( 3, 0.02) ref -> x6 "arr expr"
+; V41 tmp34 [V41,T94] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V42 tmp35 [V42,T95] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V43 tmp36 [V43,T40] ( 3, 0.07) ref -> x4 "arr expr"
+;* V44 tmp37 [V44,T63] ( 0, 0 ) int -> zero-ref "index expr"
+; V45 tmp38 [V45,T41] ( 3, 0.07) ref -> x4 "arr expr"
+; V46 tmp39 [V46,T96] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V47 tmp40 [V47,T97] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V48 tmp41 [V48,T42] ( 3, 0.07) ref -> x4 "arr expr"
+;* V49 tmp42 [V49,T64] ( 0, 0 ) int -> zero-ref "index expr"
+; V50 tmp43 [V50,T43] ( 3, 0.07) ref -> x4 "arr expr"
+; V51 tmp44 [V51,T98] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V52 tmp45 [V52,T99] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V53 tmp46 [V53,T44] ( 3, 0.07) ref -> x4 "arr expr"
+;* V54 tmp47 [V54,T65] ( 0, 0 ) int -> zero-ref "index expr"
+; V55 tmp48 [V55,T45] ( 3, 0.07) ref -> x4 "arr expr"
+; V56 tmp49 [V56,T100] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V57 tmp50 [V57,T101] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V58 tmp51 [V58,T27] ( 3, 0.07) ref -> x4 "arr expr"
+;* V59 tmp52 [V59,T52] ( 0, 0 ) int -> zero-ref "index expr"
+; V60 tmp53 [V60,T28] ( 3, 0.07) ref -> x4 "arr expr"
+; V61 tmp54 [V61,T102] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V62 tmp55 [V62,T103] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V63 tmp56 [V63,T29] ( 3, 0.07) ref -> x4 "arr expr"
+;* V64 tmp57 [V64,T53] ( 0, 0 ) int -> zero-ref "index expr"
+; V65 tmp58 [V65,T30] ( 3, 0.07) ref -> x4 "arr expr"
+; V66 tmp59 [V66,T104] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V67 tmp60 [V67,T105] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V68 tmp61 [V68,T31] ( 3, 0.07) ref -> x4 "arr expr"
+;* V69 tmp62 [V69,T54] ( 0, 0 ) int -> zero-ref "index expr"
+; V70 tmp63 [V70,T32] ( 3, 0.07) ref -> x4 "arr expr"
+; V71 tmp64 [V71,T106] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V72 tmp65 [V72,T107] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V73 tmp66 [V73,T09] ( 12, 0.54) ref -> x7 "arr expr"
+; V74 tmp67 [V74,T11] ( 12, 0.54) int -> x8 "index expr"
+; V75 tmp68 [V75,T22] ( 3, 0.13) ref -> x6 "arr expr"
+; V76 tmp69 [V76,T108] ( 2, 0.04) ref -> x2 single-def "arr expr"
+; V77 tmp70 [V77,T109] ( 2, 0.04) ref -> x0 single-def "arr expr"
+; V78 tmp71 [V78,T59] ( 3, 0.07) ref -> x0 single-def "arr expr"
+; V79 tmp72 [V79,T60] ( 3, 0.07) ref -> x0 single-def "arr expr"
+; V80 tmp73 [V80,T61] ( 3, 0.07) ref -> x0 single-def "arr expr"
+; V81 tmp74 [V81,T62] ( 3, 0.07) ref -> x0 single-def "arr expr"
+; V82 tmp75 [V82,T110] ( 2, 0.04) int -> x1 "argument with side effect"
+; V83 tmp76 [V83,T03] ( 6,101.64) long -> x0 "Widened primary induction variable"
+; V84 tmp77 [V84,T02] ( 6,499.20) long -> x2 "Widened primary induction variable"
+; V85 cse0 [V85,T46] ( 2, 0.04) ref -> x6 "CSE - conservative"
+; V86 cse1 [V86,T121] ( 2, 0.01) ref -> x6 "CSE - conservative"
+; V87 cse2 [V87,T47] ( 5, 0.11) ref -> x6 "CSE - conservative"
+; V88 cse3 [V88,T34] ( 2, 0.09) ref -> x2 "CSE - conservative"
+; V89 cse4 [V89,T118] ( 2, 0.01) ref -> x6 "CSE - conservative"
+; V90 cse5 [V90,T113] ( 2, 0.02) ref -> x6 "CSE - conservative"
+; V91 cse6 [V91,T35] ( 2, 0.09) ref -> x6 "CSE - conservative"
+; V92 cse7 [V92,T66] ( 2, 0.02) ref -> x4 "CSE - conservative"
+; V93 cse8 [V93,T67] ( 2, 0.02) ref -> x4 "CSE - conservative"
+; V94 cse9 [V94,T68] ( 2, 0.02) ref -> x4 "CSE - conservative"
+; V95 cse10 [V95,T74] ( 2, 0.02) ref -> x4 "CSE - conservative"
+; V96 cse11 [V96,T75] ( 2, 0.02) ref -> x4 "CSE - conservative"
+; V97 cse12 [V97,T76] ( 2, 0.02) ref -> x4 "CSE - conservative"
+; V98 cse13 [V98,T124] ( 2, 0.01) int -> x7 "CSE - conservative"
+; V99 cse14 [V99,T125] ( 2, 0.01) int -> x7 "CSE - conservative"
+; V100 cse15 [V100,T117] ( 2, 0.02) int -> x8 "CSE - conservative"
+; V101 cse16 [V101,T126] ( 2, 0.01) int -> x7 "CSE - conservative"
+; V102 cse17 [V102,T127] ( 2, 0.01) int -> x7 "CSE - conservative"
+; V103 cse18 [V103,T128] ( 2, 0.01) int -> x7 "CSE - conservative"
+; V104 cse19 [V104,T129] ( 2, 0.01) int -> x7 "CSE - conservative"
+; V105 cse20 [V105,T05] ( 2,100.00) long -> x3 hoist "CSE - aggressive"
+; V106 cse21 [V106,T25] ( 14, 0.16) int -> x3 "CSE - conservative"
+; V107 cse22 [V107,T26] ( 14, 0.16) int -> x5 "CSE - conservative"
+; V108 cse23 [V108,T49] ( 5, 0.11) int -> x8 "CSE - conservative"
+; V109 cse24 [V109,T48] ( 5, 0.11) byref -> x6 "CSE - conservative"
+; V110 cse25 [V110,T123] ( 5, 0.01) int -> x8 "CSE - conservative"
+; V111 cse26 [V111,T122] ( 5, 0.01) byref -> x6 "CSE - conservative"
+; V112 cse27 [V112,T38] ( 3, 0.13) int -> x4 "CSE - conservative"
+; V113 cse28 [V113,T36] ( 3, 0.13) byref -> x2 "CSE - conservative"
+; V114 cse29 [V114,T120] ( 3, 0.02) int -> x8 "CSE - conservative"
+; V115 cse30 [V115,T119] ( 3, 0.02) byref -> x6 "CSE - conservative"
+; V116 cse31 [V116,T115] ( 3, 0.03) int -> x9 "CSE - conservative"
+; V117 cse32 [V117,T114] ( 3, 0.03) byref -> x7 "CSE - conservative"
+; V118 cse33 [V118,T39] ( 3, 0.13) int -> x8 "CSE - conservative"
+; V119 cse34 [V119,T37] ( 3, 0.13) byref -> x6 "CSE - conservative"
+; V120 cse35 [V120,T80] ( 4, 0.04) int -> x6 "CSE - conservative"
+; V121 cse36 [V121,T69] ( 5, 0.06) byref -> x4 "CSE - conservative"
...
+28 (+33.33%) : 63160.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.Canon]:FreeSlow(System.Canon):this (Tier1)
@@ -8,17 +8,17 @@
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 14877
; Final local variable assignments
;
-; V00 this [V00,T04] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]>
-; V01 arg1 [V01,T05] ( 3, 2.99) ref -> x1 class-hnd single-def <System.__Canon>
+; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]>
+; V01 arg1 [V01,T04] ( 3, 2.99) ref -> x1 class-hnd single-def <System.__Canon>
; V02 loc0 [V02,T02] ( 4, 6.77) ref -> x14 class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 5, 16.14) int -> x15
+; V03 loc1 [V03,T05] ( 3, 2.97) int -> x12
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T01] ( 3, 8.55) long -> xip0 "CSE - aggressive"
-; V06 cse1 [V06,T03] ( 3, 5.79) int -> x12 "CSE - aggressive"
+; V05 tmp1 [V05,T00] ( 6, 17.12) long -> x12 "Widened primary induction variable"
+; V06 cse0 [V06,T01] ( 4, 6.78) int -> x15 "CSE - aggressive"
;
; Lcl frame size = 0
-G_M50542_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M50542_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
@@ -26,33 +26,40 @@ G_M50542_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
; gcrRegs +[x0-x1]
ldr x14, [x0, #0x10]
; gcrRegs +[x14]
- mov w15, wzr
- ldr w12, [x14, #0x08]
- cmp w12, #0
- ble G_M50542_IG05
- ;; size=20 bbWeight=1 PerfScore 8.00
-G_M50542_IG03: ; bbWeight=3.78, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz
+ ldr w15, [x14, #0x08]
+ cmp w15, #0
+ ble G_M50542_IG06
+ ;; size=16 bbWeight=1 PerfScore 7.50
+G_M50542_IG03: ; bbWeight=0.99, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- ubfiz xip0, x15, #3, #32
+ mov x12, xzr
+ ;; size=4 bbWeight=0.99 PerfScore 0.50
+G_M50542_IG04: ; bbWeight=3.78, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz
+ lsl xip0, x12, #3
add xip0, xip0, #16
- ldr x0, [x14, xip0]
- ; gcrRegs +[x0]
- cbz x0, G_M50542_IG06
+ ldr xip0, [x14, xip0]
+ ; gcrRegs +[xip0]
+ cbz xip0, G_M50542_IG07
;; size=16 bbWeight=3.78 PerfScore 20.78
-G_M50542_IG04: ; bbWeight=3.79, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- add w15, w15, #1
- cmp w12, w15
- bgt G_M50542_IG03
- ;; size=12 bbWeight=3.79 PerfScore 7.58
-G_M50542_IG05: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M50542_IG05: ; bbWeight=3.79, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[xip0]
+ add w12, w12, #1
+ mov w12, w12
+ cmp w15, w12
+ bgt G_M50542_IG04
+ ;; size=16 bbWeight=3.79 PerfScore 9.47
+G_M50542_IG06: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x1 x14]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.01 PerfScore 0.02
-G_M50542_IG06: ; bbWeight=0.99, gcVars=0000000000000000 {}, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, gcvars, byref
+G_M50542_IG07: ; bbWeight=0.99, gcVars=0000000000000000 {}, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1 x14]
- add x14, x14, xip0
+ cmp w12, w15
+ bhs G_M50542_IG09
+ ubfiz x15, x12, #3, #32
+ add x15, x15, #16
+ add x14, x14, x15
; gcrRegs -[x14]
; byrRegs +[x14]
mov x15, x1
@@ -60,13 +67,18 @@ G_M50542_IG06: ; bbWeight=0.99, gcVars=0000000000000000 {}, gcrefRegs=400
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x1 x15]
; byrRegs -[x14]
- ;; size=12 bbWeight=0.99 PerfScore 1.98
-G_M50542_IG07: ; bbWeight=0.99, epilog, nogc, extend
+ ;; size=28 bbWeight=0.99 PerfScore 4.95
+G_M50542_IG08: ; bbWeight=0.99, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.99 PerfScore 1.98
+G_M50542_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 84, prolog size 8, PerfScore 41.83, instruction count 21, allocated bytes for code 84 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
+; Total bytes of code 112, prolog size 8, PerfScore 46.69, instruction count 28, allocated bytes for code 112 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
; ============================================================
Unwind Info:
@@ -77,7 +89,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+28 (+35.00%) : 75429.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
@@ -9,11 +9,12 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 5, 3 ) ref -> x0 class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
+; V00 arg0 [V00,T00] ( 6, 3 ) ref -> x0 class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
; V01 loc0 [V01,T01] ( 4, 1 ) int -> x1
-; V02 loc1 [V02,T02] ( 5, 0 ) int -> x2
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
+; V05 tmp2 [V05,T02] ( 6, 0 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -34,20 +35,25 @@ G_M16110_IG03: ; bbWeight=1, epilog, nogc, extend
;; size=8 bbWeight=1 PerfScore 2.00
G_M16110_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
- mov w2, wzr
+ mov x2, xzr
b G_M16110_IG06
;; size=8 bbWeight=0 PerfScore 0.00
-G_M16110_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M16110_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr w3, [x0, #0x08]
+ cmp w2, w3
+ bhs G_M16110_IG08
add x3, x0, #16
; byrRegs +[x3]
- ldr x3, [x3, w2, UXTW #3]
+ lsl x4, x2, #3
+ ldr x3, [x3, x4]
; gcrRegs +[x3]
; byrRegs -[x3]
ldr w3, [x3, #0x3C]
; gcrRegs -[x3]
add w1, w3, w1
add w2, w2, #1
- ;; size=20 bbWeight=0 PerfScore 0.00
+ mov w2, w2
+ ;; size=40 bbWeight=0 PerfScore 0.00
G_M16110_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr w3, [x0, #0x08]
cmp w3, w2
@@ -59,8 +65,13 @@ G_M16110_IG07: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0 PerfScore 0.00
+G_M16110_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 80, prolog size 8, PerfScore 5.50, instruction count 20, allocated bytes for code 80 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
+; Total bytes of code 108, prolog size 8, PerfScore 5.50, instruction count 27, allocated bytes for code 108 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
; ============================================================
Unwind Info:
@@ -71,7 +82,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+28 (+35.00%) : 18110.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
@@ -9,11 +9,12 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 5, 3 ) ref -> x0 class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
+; V00 arg0 [V00,T00] ( 6, 3 ) ref -> x0 class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
; V01 loc0 [V01,T01] ( 4, 1 ) int -> x1
-; V02 loc1 [V02,T02] ( 5, 0 ) int -> x2
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
+; V05 tmp2 [V05,T02] ( 6, 0 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -34,20 +35,25 @@ G_M16110_IG03: ; bbWeight=1, epilog, nogc, extend
;; size=8 bbWeight=1 PerfScore 2.00
G_M16110_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
- mov w2, wzr
+ mov x2, xzr
b G_M16110_IG06
;; size=8 bbWeight=0 PerfScore 0.00
-G_M16110_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M16110_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr w3, [x0, #0x08]
+ cmp w2, w3
+ bhs G_M16110_IG08
add x3, x0, #16
; byrRegs +[x3]
- ldr x3, [x3, w2, UXTW #3]
+ lsl x4, x2, #3
+ ldr x3, [x3, x4]
; gcrRegs +[x3]
; byrRegs -[x3]
ldr w3, [x3, #0x3C]
; gcrRegs -[x3]
add w1, w3, w1
add w2, w2, #1
- ;; size=20 bbWeight=0 PerfScore 0.00
+ mov w2, w2
+ ;; size=40 bbWeight=0 PerfScore 0.00
G_M16110_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr w3, [x0, #0x08]
cmp w3, w2
@@ -59,8 +65,13 @@ G_M16110_IG07: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0 PerfScore 0.00
+G_M16110_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 80, prolog size 8, PerfScore 5.50, instruction count 20, allocated bytes for code 80 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
+; Total bytes of code 108, prolog size 8, PerfScore 5.50, instruction count 27, allocated bytes for code 108 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
; ============================================================
Unwind Info:
@@ -71,7 +82,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run_tiered.osx.arm64.checked.mch
-12 (-1.34%) : 11143.dasm - System.Security.Cryptography.X509Certificates.SecTrustChainPal:GetCertsArray(System.Collections.Generic.List`1[System.Runtime.InteropServices.SafeHandle]):Microsoft.Win32.SafeHandles.SafeCreateHandle:this (Tier0-FullOpts)
@@ -8,27 +8,28 @@
; 0 inlinees with PGO data; 3 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T11] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Security.Cryptography.X509Certificates.SecTrustChainPal>
-; V01 arg1 [V01,T04] ( 11, 19 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Runtime.InteropServices.SafeHandle]>
-; V02 loc0 [V02,T00] ( 32, 52.04) int -> [fp+0x2C] do-not-enreg[Z] EH-live
-; V03 loc1 [V03,T10] ( 6, 8 ) int -> x20
-; V04 loc2 [V04,T09] ( 7, 8.04) ref -> x21 class-hnd exact single-def <long[]>
-; V05 loc3 [V05,T12] ( 4, 3 ) ref -> x21 class-hnd exact single-def <Microsoft.Win32.SafeHandles.SafeCreateHandle>
-; V06 loc4 [V06,T06] ( 6, 12 ) ref -> x24 class-hnd <System.Runtime.InteropServices.SafeHandle>
+; V00 this [V00,T12] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Security.Cryptography.X509Certificates.SecTrustChainPal>
+; V01 arg1 [V01,T05] ( 11, 19 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Runtime.InteropServices.SafeHandle]>
+; V02 loc0 [V02,T00] ( 27, 29.04) int -> [fp+0x2C] do-not-enreg[Z] EH-live
+; V03 loc1 [V03,T11] ( 6, 8 ) int -> x20
+; V04 loc2 [V04,T10] ( 7, 8.04) ref -> x21 class-hnd exact single-def <long[]>
+; V05 loc3 [V05,T13] ( 4, 3 ) ref -> x21 class-hnd exact single-def <Microsoft.Win32.SafeHandles.SafeCreateHandle>
+; V06 loc4 [V06,T07] ( 6, 12 ) ref -> x24 class-hnd <System.Runtime.InteropServices.SafeHandle>
; V07 loc5 [V07 ] ( 4, 8 ) ubyte -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op
-; V08 loc6 [V08,T15] ( 2, 2 ) ref -> x21 class-hnd exact single-def <Microsoft.Win32.SafeHandles.SafeCreateHandle>
+; V08 loc6 [V08,T16] ( 2, 2 ) ref -> x21 class-hnd exact single-def <Microsoft.Win32.SafeHandles.SafeCreateHandle>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T05] ( 4, 16 ) long -> x25 "Strict ordering of exceptions for Array store"
-; V11 tmp2 [V11,T08] ( 7, 10 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V12 tmp3 [V12,T13] ( 4, 3 ) int -> x20 "Inline stloc first use temp"
-; V13 tmp4 [V13,T14] ( 3, 2.50) ref -> x0 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V14 tmp5 [V14,T01] ( 6, 24 ) ref -> x0 class-hnd "Inlining Arg" <System.__Canon>
-; V15 tmp6 [V15,T02] ( 6, 24 ) ref -> x23 "arr expr"
-; V16 tmp7 [V16,T18] ( 3, 0 ) ref -> x0 "arr expr"
-; V17 tmp8 [V17,T03] ( 3, 24 ) ref -> x0 "arr expr"
-; V18 PSPSym [V18,T16] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
-; V19 cse0 [V19,T07] ( 3, 11.88) long -> x23 "CSE - aggressive"
-; V20 cse1 [V20,T17] ( 3, 0.12) long -> x23 "CSE - conservative"
+; V10 tmp1 [V10,T06] ( 4, 16 ) long -> x25 "Strict ordering of exceptions for Array store"
+; V11 tmp2 [V11,T09] ( 7, 10 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V12 tmp3 [V12,T14] ( 4, 3 ) int -> x20 "Inline stloc first use temp"
+; V13 tmp4 [V13,T15] ( 3, 2.50) ref -> x0 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V14 tmp5 [V14,T02] ( 6, 24 ) ref -> x0 class-hnd "Inlining Arg" <System.__Canon>
+; V15 tmp6 [V15,T03] ( 6, 24 ) ref -> x23 "arr expr"
+; V16 tmp7 [V16,T19] ( 3, 0 ) ref -> x0 "arr expr"
+; V17 tmp8 [V17,T04] ( 3, 24 ) ref -> x0 "arr expr"
+; V18 PSPSym [V18,T17] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
+; V19 tmp10 [V19,T01] ( 7, 25 ) long -> x19 "Widened primary induction variable"
+; V20 cse0 [V20,T08] ( 3, 11.88) long -> x23 "CSE - aggressive"
+; V21 cse1 [V21,T18] ( 3, 0.12) long -> x23 "CSE - conservative"
;
; Lcl frame size = 40
@@ -46,7 +47,7 @@ G_M20834_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x19, x0
; gcrRegs +[x19]
;; size=40 bbWeight=1 PerfScore 8.50
-G_M20834_IG02: ; bbWeight=1, gcVars=0000000000000010 {V01}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref
+G_M20834_IG02: ; bbWeight=1, gcVars=0000000000000020 {V01}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x1]
str wzr, [fp, #0x2C] // [V02 loc0]
;; size=4 bbWeight=1 PerfScore 1.00
@@ -241,23 +242,22 @@ G_M20834_IG12: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {
str w0, [fp, #0x2C] // [V02 loc0]
ldr w0, [fp, #0x2C] // [V02 loc0]
tbnz w0, #31, G_M20834_IG14
- ;; size=20 bbWeight=1 PerfScore 6.50
+ ldr w19, [fp, #0x2C] // [V02 loc0]
+ ;; size=24 bbWeight=1 PerfScore 8.50
G_M20834_IG13: ; bbWeight=4, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr w0, [fp, #0x2C] // [V02 loc0]
- ldr w1, [x22, #0x10]
- cmp w0, w1
+ ldr w0, [x22, #0x10]
+ cmp w19, w0
bhs G_M20834_IG17
ldr x0, [x22, #0x08]
; gcrRegs +[x0]
- ldr w1, [fp, #0x2C] // [V02 loc0]
- ldr w2, [x0, #0x08]
- cmp w1, w2
+ ldr w1, [x0, #0x08]
+ cmp w19, w1
bhs G_M20834_IG16
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
- ldr w1, [fp, #0x2C] // [V02 loc0]
- ldr x0, [x0, w1, UXTW #3]
+ lsl x1, x19, #3
+ ldr x0, [x0, x1]
; gcrRegs +[x0]
; byrRegs -[x0]
ldrsb wzr, [x0]
@@ -269,12 +269,10 @@ G_M20834_IG13: ; bbWeight=4, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- ldr w0, [fp, #0x2C] // [V02 loc0]
- sub w0, w0, #1
- str w0, [fp, #0x2C] // [V02 loc0]
- ldr w0, [fp, #0x2C] // [V02 loc0]
- tbz w0, #31, G_M20834_IG13
- ;; size=96 bbWeight=4 PerfScore 148.00
+ sub w0, w19, #1
+ mov w19, w0
+ tbz w19, #31, G_M20834_IG13
+ ;; size=80 bbWeight=4 PerfScore 110.00
G_M20834_IG14: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x22]
; GC ptr vars -{V01}
@@ -303,8 +301,8 @@ G_M20834_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M20834_IG18: ; bbWeight=0, gcVars=0000000000000010 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
- ; GC ptr vars +{V01 V04}
+G_M20834_IG18: ; bbWeight=0, gcVars=0000000000000020 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ; GC ptr vars +{V01 V05}
stp fp, lr, [sp, #-0x50]!
stp x19, x20, [sp, #0x18]
stp x21, x22, [sp, #0x28]
@@ -313,7 +311,7 @@ G_M20834_IG18: ; bbWeight=0, gcVars=0000000000000010 {V01}, gcrefRegs=000
add x3, fp, #112
str x3, [sp, #0x10]
;; size=28 bbWeight=0 PerfScore 0.00
-G_M20834_IG19: ; bbWeight=0, gcVars=0000000000000010 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M20834_IG19: ; bbWeight=0, gcVars=0000000000000020 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr w0, [fp, #0x2C] // [V02 loc0]
sub w0, w0, #1
str w0, [fp, #0x2C] // [V02 loc0]
@@ -357,7 +355,7 @@ G_M20834_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=100 bbWeight=0 PerfScore 0.00
G_M20834_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet epilog, nogc
; gcrRegs -[x22]
- ; GC ptr vars -{V01 V04}
+ ; GC ptr vars -{V01 V05}
ldr x25, [sp, #0x48]
ldp x23, x24, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
@@ -379,7 +377,7 @@ G_M20834_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 896, prolog size 40, PerfScore 404.05, instruction count 224, allocated bytes for code 896 (MethodHash=6b3eae9d) for method System.Security.Cryptography.X509Certificates.SecTrustChainPal:GetCertsArray(System.Collections.Generic.List`1[System.Runtime.InteropServices.SafeHandle]):Microsoft.Win32.SafeHandles.SafeCreateHandle:this (Tier0-FullOpts)
+; Total bytes of code 884, prolog size 40, PerfScore 368.05, instruction count 221, allocated bytes for code 884 (MethodHash=6b3eae9d) for method System.Security.Cryptography.X509Certificates.SecTrustChainPal:GetCertsArray(System.Collections.Generic.List`1[System.Runtime.InteropServices.SafeHandle]):Microsoft.Win32.SafeHandles.SafeCreateHandle:this (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -390,7 +388,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 174 (0x000ae) Actual length = 696 (0x0002b8)
+ Function Length : 171 (0x000ab) Actual length = 684 (0x0002ac)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-0.89%) : 1516.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan1[ushort],System.Span1[System.Range],System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[System.String],ubyte,int):int (Tier0-FullOpts)
@@ -22,7 +22,7 @@
; V11 loc5 [V11 ] ( 11, 10 ) struct (32) [fp-0x98] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Generic.ValueListBuilder`1[int]>
; V12 loc6 [V12,T16] ( 5, 5.50) int -> x28
; V13 loc7 [V13,T03] ( 11, 15 ) int -> x27
-; V14 loc8 [V14,T02] ( 8, 16.50) int -> x23
+;* V14 loc8 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 loc9 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[System.Range]>
;* V16 loc10 [V16 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
; V17 loc11 [V17,T12] ( 3, 6 ) int -> [fp-0x9C] spill-single-def
@@ -48,7 +48,7 @@
;* V37 tmp19 [V37 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Index>
; V38 tmp20 [V38,T30] ( 2, 2 ) long -> x0 "Inlining Arg"
; V39 tmp21 [V39,T31] ( 2, 2 ) long -> x0 "Inlining Arg"
-; V40 tmp22 [V40,T18] ( 4, 4 ) int -> [fp-0xBC] spill-single-def "Inlining Arg"
+; V40 tmp22 [V40,T18] ( 4, 4 ) int -> x23 "Inlining Arg"
;* V41 tmp23 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Range]>
;* V42 tmp24 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V43 tmp25 [V43 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -73,7 +73,7 @@
; V62 tmp44 [V62,T26] ( 2, 1.50) byref -> x4 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
; V63 tmp45 [V63,T20] ( 3, 2 ) int -> x3 single-def "field V03._length (fldOffset=0x8)" P-INDEP
;* V64 tmp46 [V64,T51] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
-; V65 tmp47 [V65,T10] ( 3, 6.50) int -> [fp-0xC0] spill-single-def "field V15._length (fldOffset=0x8)" P-INDEP
+; V65 tmp47 [V65,T10] ( 3, 6.50) int -> x23 "field V15._length (fldOffset=0x8)" P-INDEP
;* V66 tmp48 [V66 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
;* V67 tmp49 [V67 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
; V68 tmp50 [V68,T39] ( 2, 1 ) byref -> x0 single-def "field V19._reference (fldOffset=0x0)" P-INDEP
@@ -101,7 +101,7 @@
; V90 tmp72 [V90,T46] ( 2, 1 ) int -> x26 "field V36._value (fldOffset=0x0)" P-INDEP
; V91 tmp73 [V91,T47] ( 2, 1 ) int -> x23 "field V37._value (fldOffset=0x0)" P-INDEP
;* V92 tmp74 [V92,T52] ( 0, 0 ) byref -> zero-ref single-def "field V41._reference (fldOffset=0x0)" P-INDEP
-; V93 tmp75 [V93,T48] ( 2, 1 ) int -> x4 "field V41._length (fldOffset=0x8)" P-INDEP
+; V93 tmp75 [V93,T48] ( 2, 1 ) int -> x23 "field V41._length (fldOffset=0x8)" P-INDEP
; V94 tmp76 [V94,T23] ( 2, 4 ) int -> x1 "field V49._value (fldOffset=0x0)" P-INDEP
; V95 tmp77 [V95,T24] ( 2, 4 ) int -> x2 "field V50._value (fldOffset=0x0)" P-INDEP
; V96 tmp78 [V96,T49] ( 2, 1 ) int -> x1 "field V53._value (fldOffset=0x0)" P-INDEP
@@ -109,8 +109,9 @@
; V98 tmp80 [V98,T28] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
; V99 tmp81 [V99,T29] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
; V100 GsCookie [V100 ] ( 1, 1 ) long -> [fp-0xC8] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V101 cse0 [V101,T13] ( 3, 6 ) long -> x1 "CSE - aggressive"
-; V102 cse1 [V102,T09] ( 6, 7.50) ref -> x1 multi-def "CSE - aggressive"
+; V101 tmp83 [V101,T02] ( 8, 16.50) long -> [fp-0xC0] "Widened primary induction variable"
+; V102 cse0 [V102,T13] ( 3, 6 ) long -> x1 "CSE - aggressive"
+; V103 cse1 [V103,T09] ( 6, 7.50) ref -> x1 multi-def "CSE - aggressive"
;
; Lcl frame size = 128
@@ -313,46 +314,42 @@ G_M27501_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300004 {x2 x
sxtw w28, w23
;; size=40 bbWeight=0.50 PerfScore 4.00
G_M27501_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
- mov w23, wzr
- sub w2, w22, #1
- str w2, [fp, #-0xBC] // [V40 tmp22]
- cmp w2, w22
+ sub w23, w22, #1
+ cmp w23, w22
bhi G_M27501_IG28
- tbz w2, #31, G_M27501_IG14
+ tbz w23, #31, G_M27501_IG14
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
mov x0, x1
; gcrRegs +[x0]
- movz x3, #0xD1FFAB1E // code for <unknown method>
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- ldr x3, [x3]
- blr x3
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=60 bbWeight=0.50 PerfScore 6.00
+ ;; size=52 bbWeight=0.50 PerfScore 5.25
G_M27501_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref
- ldr w2, [fp, #-0xBC] // [V40 tmp22]
- sxtw w4, w2
- str w4, [fp, #-0xC0] // [V65 tmp47]
+ mov x4, xzr
b G_M27501_IG20
- ;; size=16 bbWeight=0.50 PerfScore 2.25
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
G_M27501_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
ldr w0, [fp, #-0x60] // [V10 loc4+0x18]
- cmp w23, w0
+ cmp w4, w0
bhs G_M27501_IG27
ldr x0, [fp, #-0x68] // [V10 loc4+0x10]
; byrRegs +[x0]
- ubfiz x1, x23, #2, #32
+ lsl x1, x4, #2
ldr w0, [x0, x1]
; byrRegs -[x0]
sxtw w5, w0
ldr w0, [fp, #-0x90] // [V11 loc5+0x08]
- cmp w23, w0
+ cmp w4, w0
bge G_M27501_IG16
ldr w0, [fp, #-0x80] // [V11 loc5+0x18]
- cmp w23, w0
+ cmp w4, w0
bhs G_M27501_IG27
ldr x0, [fp, #-0x88] // [V11 loc5+0x10]
; byrRegs +[x0]
@@ -360,7 +357,9 @@ G_M27501_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21
;; size=60 bbWeight=2 PerfScore 44.00
G_M27501_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
; byrRegs -[x0]
- add w23, w23, #1
+ add w4, w4, #1
+ mov w4, w4
+ str x4, [fp, #-0xC0] // [V101 tmp83]
sxtw w6, w5
str w6, [fp, #-0x9C] // [V17 loc11]
cbz w25, G_M27501_IG17
@@ -382,7 +381,7 @@ G_M27501_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21
sxtw w2, w5
mov w5, w2
ldr w6, [fp, #-0x9C] // [V17 loc11]
- ;; size=76 bbWeight=2 PerfScore 37.00
+ ;; size=84 bbWeight=2 PerfScore 40.00
G_M27501_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
str w5, [fp, #-0x54] // [V09 loc3]
cmp w26, w5
@@ -407,8 +406,7 @@ G_M27501_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21
cset x0, ne
orr w0, w0, w24
cbz w0, G_M27501_IG19
- ldr w4, [fp, #-0xC0] // [V65 tmp47]
- cmp w27, w4
+ cmp w27, w23
bhs G_M27501_IG21
ubfiz x0, x27, #3, #32
add x0, x20, x0
@@ -419,17 +417,17 @@ G_M27501_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21
sxtw w2, w5
stp w1, w2, [x0]
add w27, w27, #1
- ;; size=64 bbWeight=2 PerfScore 28.00
+ ;; size=60 bbWeight=2 PerfScore 24.00
G_M27501_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref
; byrRegs -[x0]
add w26, w6, w28
- ldr w4, [fp, #-0xC0] // [V65 tmp47]
+ ldr x4, [fp, #-0xC0] // [V101 tmp83]
;; size=8 bbWeight=2 PerfScore 5.00
G_M27501_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
ldr w0, [fp, #-0x70] // [V10 loc4+0x08]
- cmp w23, w0
+ cmp w4, w0
bge G_M27501_IG21
- cmp w27, w4
+ cmp w27, w23
blt G_M27501_IG15
cbz w24, G_M27501_IG15
;; size=24 bbWeight=4 PerfScore 24.00
@@ -572,7 +570,7 @@ G_M27501_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1352, prolog size 100, PerfScore 283.25, instruction count 338, allocated bytes for code 1352 (MethodHash=c0dd9492) for method System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (Tier0-FullOpts)
+; Total bytes of code 1340, prolog size 100, PerfScore 280.00, instruction count 335, allocated bytes for code 1340 (MethodHash=c0dd9492) for method System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -583,7 +581,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 338 (0x00152) Actual length = 1352 (0x000548)
+ Function Length : 335 (0x0014f) Actual length = 1340 (0x00053c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-32 (-0.84%) : 17666.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier0-FullOpts)
@@ -8,101 +8,101 @@
; 0 inlinees with PGO data; 28 single block inlinees; 22 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 31, 39 ) ref -> x19 this class-hnd single-def <System.Reflection.MethodBaseInvoker>
+; V00 this [V00,T02] ( 31, 39 ) ref -> x19 this class-hnd single-def <System.Reflection.MethodBaseInvoker>
; V01 arg1 [V01,T48] ( 4, 3 ) ref -> x23 class-hnd single-def <System.Object>
; V02 arg2 [V02,T35] ( 6, 6 ) int -> [fp-0x5C] EH-live single-def
; V03 arg3 [V03,T36] ( 4, 6 ) ref -> x21 class-hnd single-def <System.Reflection.Binder>
; V04 arg4 [V04,T10] ( 14, 14 ) ref -> x20 class-hnd single-def <System.Object[]>
; V05 arg5 [V05,T37] ( 4, 6 ) ref -> x22 class-hnd single-def <System.Globalization.CultureInfo>
;* V06 loc0 [V06 ] ( 0, 0 ) struct (16) zero-ref multireg-arg <System.Span`1[System.Object]>
-; V07 loc1 [V07,T80] ( 3, 2 ) ref -> x28 class-hnd <System.Object>
+; V07 loc1 [V07,T78] ( 3, 2 ) ref -> x28 class-hnd <System.Object>
; V08 loc2 [V08 ] ( 15, 7 ) struct (32) [fp-0x80] do-not-enreg[XSF] addr-exposed ld-addr-op <System.Runtime.GCFrameRegistration>
;* V09 loc3 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ubyte]>
-; V10 loc4 [V10,T71] ( 6, 3 ) long -> x24
-; V11 loc5 [V11,T115] ( 2, 0 ) ref -> [fp-0x100] must-init class-hnd EH-live single-def <<unknown class>>
+; V10 loc4 [V10,T69] ( 6, 3 ) long -> x24
+; V11 loc5 [V11,T117] ( 2, 0 ) ref -> [fp-0xF0] must-init class-hnd EH-live single-def <<unknown class>>
; V12 loc6 [V12,T41] ( 9, 7.50) long -> x24
-; V13 loc7 [V13,T70] ( 4, 3.50) long -> x28
+; V13 loc7 [V13,T68] ( 4, 3.50) long -> x28
; V14 loc8 [V14 ] ( 8, 3.50) struct (32) [fp-0xA0] do-not-enreg[XSF] addr-exposed ld-addr-op <System.Runtime.GCFrameRegistration>
-; V15 loc9 [V15,T15] ( 7, 14.50) int -> x0
-; V16 loc10 [V16,T116] ( 2, 0 ) ref -> [fp-0x108] must-init class-hnd EH-live single-def <<unknown class>>
+;* V15 loc9 [V15 ] ( 0, 0 ) int -> zero-ref
+; V16 loc10 [V16,T118] ( 2, 0 ) ref -> [fp-0xF8] must-init class-hnd EH-live single-def <<unknown class>>
;# V17 OutArgs [V17 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V18 tmp1 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
;* V19 tmp2 [V19 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[System.Object]>
-; V20 tmp3 [V20,T63] ( 2, 4 ) long -> x2
+; V20 tmp3 [V20,T61] ( 2, 4 ) long -> x2
;* V21 tmp4 [V21 ] ( 0, 0 ) long -> zero-ref
;* V22 tmp5 [V22 ] ( 0, 0 ) struct ( 8) zero-ref <System.ByReference>
-; V23 tmp6 [V23,T117] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
-; V24 tmp7 [V24,T109] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
+; V23 tmp6 [V23,T119] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
+; V24 tmp7 [V24,T111] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
;* V25 tmp8 [V25 ] ( 0, 0 ) ref -> zero-ref single-def
-; V26 tmp9 [V26,T113] ( 3, 0 ) int -> x0
+; V26 tmp9 [V26,T115] ( 3, 0 ) int -> x0
;* V27 tmp10 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
-; V28 tmp11 [V28,T110] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V28 tmp11 [V28,T112] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V29 tmp12 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
;* V30 tmp13 [V30 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[System.Object]>
-; V31 tmp14 [V31,T118] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
-; V32 tmp15 [V32,T111] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
+; V31 tmp14 [V31,T120] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
+; V32 tmp15 [V32,T113] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
;* V33 tmp16 [V33 ] ( 0, 0 ) ref -> zero-ref single-def
-; V34 tmp17 [V34,T114] ( 3, 0 ) int -> x0
+; V34 tmp17 [V34,T116] ( 3, 0 ) int -> x0
;* V35 tmp18 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
-; V36 tmp19 [V36,T112] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V36 tmp19 [V36,T114] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V37 tmp20 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V38 tmp21 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V39 tmp22 [V39,T42] ( 6, 6 ) byref -> x24 single-def "Inlining Arg"
-; V40 tmp23 [V40,T81] ( 2, 2 ) byref -> x25 single-def "Inlining Arg"
-; V41 tmp24 [V41,T82] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
+; V40 tmp23 [V40,T79] ( 2, 2 ) byref -> x25 single-def "Inlining Arg"
+; V41 tmp24 [V41,T80] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
; V42 tmp25 [V42,T46] ( 5, 5 ) long -> [fp-0xA8] spill-single-def "Inlining Arg"
;* V43 tmp26 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V44 tmp27 [V44,T75] ( 3, 3 ) int -> x25 "Inlining Arg"
+; V44 tmp27 [V44,T73] ( 3, 3 ) int -> x25 "Inlining Arg"
;* V45 tmp28 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V46 tmp29 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V47 tmp30 [V47,T85] ( 2, 2 ) int -> x0 "Inlining Arg"
-; V48 tmp31 [V48,T76] ( 3, 3 ) int -> x27 "Inlining Arg"
-; V49 tmp32 [V49,T86] ( 2, 2 ) long -> x24 "Inlining Arg"
+; V47 tmp30 [V47,T83] ( 2, 2 ) int -> x0 "Inlining Arg"
+; V48 tmp31 [V48,T74] ( 3, 3 ) int -> x27 "Inlining Arg"
+; V49 tmp32 [V49,T84] ( 2, 2 ) long -> x24 "Inlining Arg"
;* V50 tmp33 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Object]>
-; V51 tmp34 [V51,T03] ( 12, 34.50) int -> [fp-0xAC] "Inline stloc first use temp"
+;* V51 tmp34 [V51,T103] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V52 tmp35 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[System.Object]>
-; V53 tmp36 [V53 ] ( 11, 28.50) ref -> [fp-0xB8] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
-; V54 tmp37 [V54,T16] ( 6, 14 ) ref -> [fp-0x110] class-hnd exact spill-single-def "Inline stloc first use temp" <System.RuntimeType>
+; V53 tmp36 [V53 ] ( 11, 28.50) ref -> [fp-0xB0] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
+; V54 tmp37 [V54,T14] ( 6, 14 ) ref -> [fp-0x100] class-hnd exact spill-single-def "Inline stloc first use temp" <System.RuntimeType>
;* V55 tmp38 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Object]>
;* V56 tmp39 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V57 tmp40 [V57 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
;* V58 tmp41 [V58 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
;* V59 tmp42 [V59 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
;* V60 tmp43 [V60 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-;* V61 tmp44 [V61,T64] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V62 tmp45 [V62,T30] ( 4, 8 ) ref -> [fp-0x118] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.RuntimeType>
-;* V63 tmp46 [V63,T65] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V61 tmp44 [V61,T62] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V62 tmp45 [V62,T28] ( 4, 8 ) ref -> [fp-0x108] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.RuntimeType>
+;* V63 tmp46 [V63,T63] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V64 tmp47 [V64 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V65 tmp48 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
-; V66 tmp49 [V66,T01] ( 14, 36.50) int -> x21 "Inline stloc first use temp"
+;* V66 tmp49 [V66,T104] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V67 tmp50 [V67 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V68 tmp51 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Object]>
;* V69 tmp52 [V69 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V70 tmp53 [V70 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V71 tmp54 [V71,T43] ( 6, 6 ) byref -> x28 single-def "Inlining Arg"
-; V72 tmp55 [V72,T83] ( 2, 2 ) byref -> x24 single-def "Inlining Arg"
-; V73 tmp56 [V73,T84] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
-; V74 tmp57 [V74,T47] ( 5, 5 ) long -> [fp-0xC0] spill-single-def "Inlining Arg"
+; V72 tmp55 [V72,T81] ( 2, 2 ) byref -> x24 single-def "Inlining Arg"
+; V73 tmp56 [V73,T82] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
+; V74 tmp57 [V74,T47] ( 5, 5 ) long -> [fp-0xB8] spill-single-def "Inlining Arg"
;* V75 tmp58 [V75 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V76 tmp59 [V76,T77] ( 3, 3 ) int -> x25 "Inlining Arg"
-; V77 tmp60 [V77,T87] ( 2, 2 ) int -> x0 "Inlining Arg"
-; V78 tmp61 [V78,T88] ( 2, 2 ) int -> x0 "Inlining Arg"
-; V79 tmp62 [V79,T78] ( 3, 3 ) int -> x27 "Inlining Arg"
-; V80 tmp63 [V80,T89] ( 2, 2 ) long -> x0 "Inlining Arg"
+; V76 tmp59 [V76,T75] ( 3, 3 ) int -> x25 "Inlining Arg"
+; V77 tmp60 [V77,T85] ( 2, 2 ) int -> x0 "Inlining Arg"
+; V78 tmp61 [V78,T86] ( 2, 2 ) int -> x0 "Inlining Arg"
+; V79 tmp62 [V79,T76] ( 3, 3 ) int -> x27 "Inlining Arg"
+; V80 tmp63 [V80,T87] ( 2, 2 ) long -> x0 "Inlining Arg"
;* V81 tmp64 [V81 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Object]>
-; V82 tmp65 [V82,T04] ( 12, 34.50) int -> [fp-0xC4] "Inline stloc first use temp"
+;* V82 tmp65 [V82,T105] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V83 tmp66 [V83 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[System.Object]>
-; V84 tmp67 [V84 ] ( 11, 28.50) ref -> [fp-0xD0] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
-; V85 tmp68 [V85,T17] ( 6, 14 ) ref -> [fp-0x120] class-hnd exact spill-single-def "Inline stloc first use temp" <System.RuntimeType>
+; V84 tmp67 [V84 ] ( 11, 28.50) ref -> [fp-0xC0] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
+; V85 tmp68 [V85,T15] ( 6, 14 ) ref -> [fp-0x110] class-hnd exact spill-single-def "Inline stloc first use temp" <System.RuntimeType>
;* V86 tmp69 [V86 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Object]>
;* V87 tmp70 [V87 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V88 tmp71 [V88 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
;* V89 tmp72 [V89 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
;* V90 tmp73 [V90 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
;* V91 tmp74 [V91 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-;* V92 tmp75 [V92,T66] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V93 tmp76 [V93,T31] ( 4, 8 ) ref -> [fp-0x128] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.RuntimeType>
-;* V94 tmp77 [V94,T67] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V92 tmp75 [V92,T64] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V93 tmp76 [V93,T29] ( 4, 8 ) ref -> [fp-0x118] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.RuntimeType>
+;* V94 tmp77 [V94,T65] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V95 tmp78 [V95 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V96 tmp79 [V96 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
;* V97 tmp80 [V97 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -112,95 +112,98 @@
;* V101 tmp84 [V101 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
;* V102 tmp85 [V102 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V103 tmp86 [V103 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ByReference>
-; V104 tmp87 [V104,T02] ( 14, 36.50) int -> x25 "Inline stloc first use temp"
+;* V104 tmp87 [V104,T106] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V105 tmp88 [V105 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V106 tmp89 [V106 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Object]>
;* V107 tmp90 [V107 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V108 tmp91 [V108 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V109 tmp92 [V109,T28] ( 7, 10.50) byref -> x26 "field V06._reference (fldOffset=0x0)" P-INDEP
-; V110 tmp93 [V110,T29] ( 7, 10.50) int -> x25 "field V06._length (fldOffset=0x8)" P-INDEP
-; V111 tmp94 [V111,T13] ( 10, 14 ) byref -> [fp-0x130] "field V09._reference (fldOffset=0x0)" P-INDEP
-; V112 tmp95 [V112,T14] ( 10, 14 ) int -> x27 "field V09._length (fldOffset=0x8)" P-INDEP
-; V113 tmp96 [V113,T96] ( 2, 1 ) byref -> x26 single-def "field V18._reference (fldOffset=0x0)" P-INDEP
-; V114 tmp97 [V114,T98] ( 2, 1 ) int -> x25 "field V18._length (fldOffset=0x8)" P-INDEP
+; V109 tmp92 [V109,T26] ( 7, 10.50) byref -> x26 "field V06._reference (fldOffset=0x0)" P-INDEP
+; V110 tmp93 [V110,T27] ( 7, 10.50) int -> x25 "field V06._length (fldOffset=0x8)" P-INDEP
+; V111 tmp94 [V111,T11] ( 10, 14 ) byref -> [fp-0x120] "field V09._reference (fldOffset=0x0)" P-INDEP
+; V112 tmp95 [V112,T12] ( 10, 14 ) int -> x27 "field V09._length (fldOffset=0x8)" P-INDEP
+; V113 tmp96 [V113,T94] ( 2, 1 ) byref -> x26 single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+; V114 tmp97 [V114,T96] ( 2, 1 ) int -> x25 "field V18._length (fldOffset=0x8)" P-INDEP
;* V115 tmp98 [V115 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP
;* V116 tmp99 [V116 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
; V117 tmp100 [V117,T44] ( 3, 6 ) byref -> x3 "field V22.Value (fldOffset=0x0)" P-INDEP
-; V118 tmp101 [V118,T97] ( 2, 1 ) byref -> x26 single-def "field V29._reference (fldOffset=0x0)" P-INDEP
-; V119 tmp102 [V119,T99] ( 2, 1 ) int -> x25 "field V29._length (fldOffset=0x8)" P-INDEP
+; V118 tmp101 [V118,T95] ( 2, 1 ) byref -> x26 single-def "field V29._reference (fldOffset=0x0)" P-INDEP
+; V119 tmp102 [V119,T97] ( 2, 1 ) int -> x25 "field V29._length (fldOffset=0x8)" P-INDEP
;* V120 tmp103 [V120 ] ( 0, 0 ) byref -> zero-ref "field V30._reference (fldOffset=0x0)" P-INDEP
;* V121 tmp104 [V121 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
-; V122 tmp105 [V122,T90] ( 3, 1.50) byref -> x28 "field V50._reference (fldOffset=0x0)" P-INDEP
-; V123 tmp106 [V123,T92] ( 3, 1.50) int -> x1 "field V50._length (fldOffset=0x8)" P-INDEP
-; V124 tmp107 [V124,T53] ( 2, 4.50) byref -> x28 single-def "field V52._reference (fldOffset=0x0)" P-INDEP
-; V125 tmp108 [V125,T49] ( 3, 5 ) int -> [fp-0xD4] spill-single-def "field V52._length (fldOffset=0x8)" P-INDEP
-;* V126 tmp109 [V126,T101] ( 0, 0 ) byref -> zero-ref single-def "field V55._reference (fldOffset=0x0)" P-INDEP
-;* V127 tmp110 [V127,T105] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP
-;* V128 tmp111 [V128,T102] ( 0, 0 ) byref -> zero-ref single-def "field V56._reference (fldOffset=0x0)" P-INDEP
-;* V129 tmp112 [V129,T106] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x8)" P-INDEP
+; V122 tmp105 [V122,T88] ( 3, 1.50) byref -> x28 "field V50._reference (fldOffset=0x0)" P-INDEP
+; V123 tmp106 [V123,T90] ( 3, 1.50) int -> x1 "field V50._length (fldOffset=0x8)" P-INDEP
+; V124 tmp107 [V124,T51] ( 2, 4.50) byref -> x28 single-def "field V52._reference (fldOffset=0x0)" P-INDEP
+; V125 tmp108 [V125,T31] ( 4, 9 ) int -> [fp-0xC4] spill-single-def "field V52._length (fldOffset=0x8)" P-INDEP
+;* V126 tmp109 [V126,T99] ( 0, 0 ) byref -> zero-ref single-def "field V55._reference (fldOffset=0x0)" P-INDEP
+;* V127 tmp110 [V127,T107] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP
+;* V128 tmp111 [V128,T100] ( 0, 0 ) byref -> zero-ref single-def "field V56._reference (fldOffset=0x0)" P-INDEP
+;* V129 tmp112 [V129,T108] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x8)" P-INDEP
;* V130 tmp113 [V130 ] ( 0, 0 ) byref -> zero-ref "field V59._reference (fldOffset=0x0)" P-DEP
;* V131 tmp114 [V131 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x8)" P-DEP
-; V132 tmp115 [V132,T59] ( 2, 4 ) byref -> x0 "field V60._reference (fldOffset=0x0)" P-INDEP
-; V133 tmp116 [V133,T68] ( 2, 4 ) int -> x1 "field V60._length (fldOffset=0x8)" P-INDEP
-; V134 tmp117 [V134,T54] ( 2, 4.50) byref -> x24 single-def "field V67._reference (fldOffset=0x0)" P-INDEP
-; V135 tmp118 [V135,T57] ( 2, 4.50) int -> x27 "field V67._length (fldOffset=0x8)" P-INDEP
+; V132 tmp115 [V132,T57] ( 2, 4 ) byref -> x0 "field V60._reference (fldOffset=0x0)" P-INDEP
+; V133 tmp116 [V133,T66] ( 2, 4 ) int -> x1 "field V60._length (fldOffset=0x8)" P-INDEP
+; V134 tmp117 [V134,T52] ( 2, 4.50) byref -> x24 single-def "field V67._reference (fldOffset=0x0)" P-INDEP
+; V135 tmp118 [V135,T55] ( 2, 4.50) int -> x27 "field V67._length (fldOffset=0x8)" P-INDEP
; V136 tmp119 [V136,T33] ( 5, 8.50) byref -> x26 single-def "field V68._reference (fldOffset=0x0)" P-INDEP
-; V137 tmp120 [V137,T51] ( 3, 4.50) int -> x25 "field V68._length (fldOffset=0x8)" P-INDEP
-; V138 tmp121 [V138,T91] ( 3, 1.50) byref -> x1 "field V81._reference (fldOffset=0x0)" P-INDEP
-; V139 tmp122 [V139,T93] ( 3, 1.50) int -> x2 "field V81._length (fldOffset=0x8)" P-INDEP
-; V140 tmp123 [V140,T55] ( 2, 4.50) byref -> [fp-0x138] spill-single-def "field V83._reference (fldOffset=0x0)" P-INDEP
-; V141 tmp124 [V141,T50] ( 3, 5 ) int -> [fp-0xD8] spill-single-def "field V83._length (fldOffset=0x8)" P-INDEP
-;* V142 tmp125 [V142,T103] ( 0, 0 ) byref -> zero-ref single-def "field V86._reference (fldOffset=0x0)" P-INDEP
-;* V143 tmp126 [V143,T107] ( 0, 0 ) int -> zero-ref "field V86._length (fldOffset=0x8)" P-INDEP
-;* V144 tmp127 [V144,T104] ( 0, 0 ) byref -> zero-ref single-def "field V87._reference (fldOffset=0x0)" P-INDEP
-;* V145 tmp128 [V145,T108] ( 0, 0 ) int -> zero-ref "field V87._length (fldOffset=0x8)" P-INDEP
+; V137 tmp120 [V137,T49] ( 3, 4.50) int -> x25 "field V68._length (fldOffset=0x8)" P-INDEP
+; V138 tmp121 [V138,T89] ( 3, 1.50) byref -> x1 "field V81._reference (fldOffset=0x0)" P-INDEP
+; V139 tmp122 [V139,T91] ( 3, 1.50) int -> x2 "field V81._length (fldOffset=0x8)" P-INDEP
+; V140 tmp123 [V140,T53] ( 2, 4.50) byref -> [fp-0x128] spill-single-def "field V83._reference (fldOffset=0x0)" P-INDEP
+; V141 tmp124 [V141,T32] ( 4, 9 ) int -> [fp-0xC8] spill-single-def "field V83._length (fldOffset=0x8)" P-INDEP
+;* V142 tmp125 [V142,T101] ( 0, 0 ) byref -> zero-ref single-def "field V86._reference (fldOffset=0x0)" P-INDEP
+;* V143 tmp126 [V143,T109] ( 0, 0 ) int -> zero-ref "field V86._length (fldOffset=0x8)" P-INDEP
+;* V144 tmp127 [V144,T102] ( 0, 0 ) byref -> zero-ref single-def "field V87._reference (fldOffset=0x0)" P-INDEP
+;* V145 tmp128 [V145,T110] ( 0, 0 ) int -> zero-ref "field V87._length (fldOffset=0x8)" P-INDEP
;* V146 tmp129 [V146 ] ( 0, 0 ) byref -> zero-ref "field V90._reference (fldOffset=0x0)" P-DEP
;* V147 tmp130 [V147 ] ( 0, 0 ) int -> zero-ref "field V90._length (fldOffset=0x8)" P-DEP
-; V148 tmp131 [V148,T60] ( 2, 4 ) byref -> x0 "field V91._reference (fldOffset=0x0)" P-INDEP
-; V149 tmp132 [V149,T69] ( 2, 4 ) int -> x1 "field V91._length (fldOffset=0x8)" P-INDEP
-; V150 tmp133 [V150,T61] ( 2, 4 ) byref -> x3 "field V98.Value (fldOffset=0x0)" P-INDEP
-; V151 tmp134 [V151,T62] ( 2, 4 ) byref -> x3 "field V103.Value (fldOffset=0x0)" P-INDEP
-; V152 tmp135 [V152,T56] ( 2, 4.50) byref -> x23 single-def "field V105._reference (fldOffset=0x0)" P-INDEP
-; V153 tmp136 [V153,T58] ( 2, 4.50) int -> x24 "field V105._length (fldOffset=0x8)" P-INDEP
+; V148 tmp131 [V148,T58] ( 2, 4 ) byref -> x0 "field V91._reference (fldOffset=0x0)" P-INDEP
+; V149 tmp132 [V149,T67] ( 2, 4 ) int -> x1 "field V91._length (fldOffset=0x8)" P-INDEP
+; V150 tmp133 [V150,T59] ( 2, 4 ) byref -> x3 "field V98.Value (fldOffset=0x0)" P-INDEP
+; V151 tmp134 [V151,T60] ( 2, 4 ) byref -> x3 "field V103.Value (fldOffset=0x0)" P-INDEP
+; V152 tmp135 [V152,T54] ( 2, 4.50) byref -> x23 single-def "field V105._reference (fldOffset=0x0)" P-INDEP
+; V153 tmp136 [V153,T56] ( 2, 4.50) int -> x24 "field V105._length (fldOffset=0x8)" P-INDEP
; V154 tmp137 [V154,T34] ( 5, 8.50) byref -> x21 single-def "field V106._reference (fldOffset=0x0)" P-INDEP
-; V155 tmp138 [V155,T52] ( 3, 4.50) int -> x22 "field V106._length (fldOffset=0x8)" P-INDEP
+; V155 tmp138 [V155,T50] ( 3, 4.50) int -> x22 "field V106._length (fldOffset=0x8)" P-INDEP
; V156 tmp139 [V156,T06] ( 3, 24 ) ref -> x0 "arr expr"
-; V157 tmp140 [V157,T21] ( 3, 12 ) ref -> x0 "argument with side effect"
-; V158 tmp141 [V158,T22] ( 3, 12 ) ref -> x0 "arr expr"
-; V159 tmp142 [V159,T23] ( 3, 12 ) ref -> x3 "arr expr"
+; V157 tmp140 [V157,T19] ( 3, 12 ) ref -> x0 "argument with side effect"
+; V158 tmp141 [V158,T20] ( 3, 12 ) ref -> x0 "arr expr"
+; V159 tmp142 [V159,T21] ( 3, 12 ) ref -> x3 "arr expr"
; V160 tmp143 [V160,T45] ( 3, 6 ) ref -> x3 "Field obj"
-; V161 tmp144 [V161,T24] ( 3, 12 ) ref -> x0 "arr expr"
+; V161 tmp144 [V161,T22] ( 3, 12 ) ref -> x0 "arr expr"
; V162 tmp145 [V162,T39] ( 2, 8 ) ref -> x2 "argument with side effect"
; V163 tmp146 [V163,T07] ( 3, 24 ) ref -> x0 "arr expr"
...
+24 (+20.69%) : 6072.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
@@ -9,17 +9,18 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V02 loc1 [V02,T00] ( 5, 17 ) int -> x21
+;* V02 loc1 [V02,T05] ( 0, 0 ) int -> zero-ref
;* V03 loc2 [V03 ] ( 0, 0 ) ushort -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V06 tmp2 [V06,T04] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V07 tmp3 [V07,T02] ( 2, 5 ) byref -> x19 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp4 [V08,T01] ( 3, 6 ) int -> x20 "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp4 [V08,T01] ( 4, 10 ) int -> x20 "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 tmp5 [V09,T00] ( 6, 21 ) long -> x21 "Widened primary induction variable"
;
; Lcl frame size = 8
-G_M29423_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M29423_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x18]
str x21, [sp, #0x28]
@@ -30,23 +31,27 @@ G_M29423_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
mov x19, x0
; byrRegs +[x19]
sxtw w20, w1
- mov w21, wzr
cmp w20, #0
ble G_M29423_IG04
+ mov x21, xzr
;; size=20 bbWeight=1 PerfScore 3.00
G_M29423_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs -[x0]
- ldrh w0, [x19, w21, UXTW #2]
+ cmp w21, w20
+ bhs G_M29423_IG08
+ lsl x0, x21, #1
+ ldrh w0, [x19, x0]
movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(int):ubyte
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
ldr x1, [x1]
blr x1
cbnz w0, G_M29423_IG06
- add w21, w21, #1
+ add w0, w21, #1
+ mov w21, w0
cmp w21, w20
blt G_M29423_IG03
- ;; size=40 bbWeight=4 PerfScore 46.00
+ ;; size=56 bbWeight=4 PerfScore 58.00
G_M29423_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19]
mov w0, wzr
@@ -66,8 +71,12 @@ G_M29423_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M29423_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 116, prolog size 16, PerfScore 58.00, instruction count 29, allocated bytes for code 116 (MethodHash=018f8d10) for method System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
+; Total bytes of code 140, prolog size 16, PerfScore 70.00, instruction count 35, allocated bytes for code 140 (MethodHash=018f8d10) for method System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -78,7 +87,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+20.83%) : 38939.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
@@ -9,14 +9,15 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
; V01 arg1 [V01,T06] ( 3, 3 ) byref -> x2 single-def
-; V02 loc0 [V02,T02] ( 4, 10 ) int -> x3
-; V03 loc1 [V03,T03] ( 4, 10 ) ubyte -> x4
-; V04 loc2 [V04,T00] ( 5, 17 ) int -> x5
-; V05 loc3 [V05,T01] ( 3, 12 ) ubyte -> x7
+; V02 loc0 [V02,T03] ( 4, 10 ) int -> x3
+; V03 loc1 [V03,T04] ( 4, 10 ) ubyte -> x4
+;* V04 loc2 [V04,T08] ( 0, 0 ) int -> zero-ref
+; V05 loc3 [V05,T02] ( 3, 12 ) ubyte -> x7
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T05] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp2 [V08,T04] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T07] ( 2, 5 ) int -> x6 hoist "CSE - aggressive"
+; V08 tmp2 [V08,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V09 tmp3 [V09,T00] ( 6, 21 ) long -> x5 "Widened primary induction variable"
+; V10 cse0 [V10,T07] ( 2, 5 ) int -> x6 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -29,22 +30,25 @@ G_M60849_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, b
movz w3, #0xD1FFAB1E
movk w3, #0xD1FFAB1E LSL #16
mov w4, wzr
- mov w5, wzr
cmp w1, #0
ble G_M60849_IG04
+ mov x5, xzr
movz w6, #0xD1FFAB1E
movk w6, #0xD1FFAB1E LSL #16
;; size=32 bbWeight=1 PerfScore 4.50
G_M60849_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- ldrb w7, [x0, w5, UXTW #2]
+ cmp w5, w1
+ bhs G_M60849_IG06
+ ldrb w7, [x0, x5]
orr w4, w4, w7
uxtb w4, w4
eor w3, w3, w7
mul w3, w3, w6
add w5, w5, #1
+ mov w5, w5
cmp w5, w1
blt G_M60849_IG03
- ;; size=32 bbWeight=4 PerfScore 34.00
+ ;; size=44 bbWeight=4 PerfScore 42.00
G_M60849_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, byref
; byrRegs -[x0]
tst w4, #128
@@ -56,8 +60,14 @@ G_M60849_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M60849_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; byrRegs -[x2]
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 96, prolog size 8, PerfScore 44.50, instruction count 24, allocated bytes for code 96 (MethodHash=f528124e) for method Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
+; Total bytes of code 116, prolog size 8, PerfScore 52.50, instruction count 29, allocated bytes for code 116 (MethodHash=f528124e) for method Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
; ============================================================
Unwind Info:
@@ -68,7 +78,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 24 (0x00018) Actual length = 96 (0x000060)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+21.74%) : 38994.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.Canon]:FreeSlow(System.Canon):this (Tier1)
@@ -10,13 +10,14 @@
; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]>
; V01 arg1 [V01,T04] ( 3, 2.50) ref -> x1 class-hnd single-def <System.__Canon>
; V02 loc0 [V02,T01] ( 4, 6.50) ref -> x14 class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 6, 17.50) int -> x15
+; V03 loc1 [V03,T05] ( 3, 1.50) int -> x12
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T02] ( 3, 6 ) int -> x12 "CSE - aggressive"
+; V05 tmp1 [V05,T00] ( 6, 17.50) long -> x12 "Widened primary induction variable"
+; V06 cse0 [V06,T02] ( 4, 6.50) int -> x15 "CSE - aggressive"
;
; Lcl frame size = 0
-G_M50542_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M50542_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
@@ -24,30 +25,33 @@ G_M50542_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
; gcrRegs +[x0-x1]
ldr x14, [x0, #0x10]
; gcrRegs +[x14]
- mov w15, wzr
- ldr w12, [x14, #0x08]
- cmp w12, #0
+ ldr w15, [x14, #0x08]
+ cmp w15, #0
ble G_M50542_IG04
+ mov x12, xzr
;; size=20 bbWeight=1 PerfScore 8.00
G_M50542_IG03: ; bbWeight=4, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ubfiz xip0, x15, #3, #32
+ lsl xip0, x12, #3
add xip0, xip0, #16
ldr xip0, [x14, xip0]
; gcrRegs +[xip0]
cbz xip0, G_M50542_IG05
- add w15, w15, #1
- cmp w12, w15
+ add w12, w12, #1
+ mov w12, w12
+ cmp w15, w12
bgt G_M50542_IG03
- ;; size=28 bbWeight=4 PerfScore 30.00
+ ;; size=32 bbWeight=4 PerfScore 32.00
G_M50542_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x1 x14 xip0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50542_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, gcvars, byref
+G_M50542_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1 x14]
- ubfiz x15, x15, #3, #32
+ cmp w12, w15
+ bhs G_M50542_IG07
+ ubfiz x15, x12, #3, #32
add x15, x15, #16
add x14, x14, x15
; gcrRegs -[x14]
@@ -57,13 +61,18 @@ G_M50542_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x1 x15]
; byrRegs -[x14]
- ;; size=20 bbWeight=0.50 PerfScore 1.75
+ ;; size=28 bbWeight=0.50 PerfScore 2.50
G_M50542_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M50542_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 92, prolog size 8, PerfScore 43.25, instruction count 23, allocated bytes for code 92 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
+; Total bytes of code 112, prolog size 8, PerfScore 46.00, instruction count 28, allocated bytes for code 112 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
; ============================================================
Unwind Info:
@@ -74,7 +83,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
coreclr_tests.run.osx.arm64.checked.mch
-16 (-4.76%) : 375093.dasm - ILCompiler.LazyGenericsSupport+Graph1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph1+Vertex[System.__Canon],ubyte):this (Tier1)
@@ -13,7 +13,7 @@
; V01 arg1 [V01,T05] ( 4, 17.26) ref -> x1 class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
; V02 arg2 [V02,T10] ( 4, 3 ) ubyte -> x2 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
-; V04 loc1 [V04,T00] ( 11, 86.58) int -> x14
+; V04 loc1 [V04,T18] ( 3, 0.00) int -> x14
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "location for address-of(RValue)" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
@@ -21,7 +21,7 @@
; V09 tmp3 [V09,T02] ( 2, 57.05) ref -> x15 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
; V11 tmp5 [V11,T22] ( 2, 0.00) ref -> x15 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
-; V12 tmp6 [V12,T18] ( 4, 0.00) ref -> x3 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
+; V12 tmp6 [V12,T19] ( 4, 0.00) ref -> x4 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
;* V13 tmp7 [V13 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
; V15 tmp9 [V15,T07] ( 6, 10.69) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
@@ -30,8 +30,8 @@
;* V18 tmp12 [V18 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
; V19 tmp13 [V19,T14] ( 3, 2.35) ref -> x1 single-def "field V03.Destination (fldOffset=0x0)" P-INDEP
; V20 tmp14 [V20,T15] ( 3, 2.35) ubyte -> x2 single-def "field V03.Flagged (fldOffset=0x8)" P-INDEP
-; V21 tmp15 [V21,T23] ( 2, 0.00) ref -> x15 "field V05.Destination (fldOffset=0x0)" P-INDEP
-;* V22 tmp16 [V22,T24] ( 0, 0 ) ubyte -> zero-ref "field V05.Flagged (fldOffset=0x8)" P-INDEP
+; V21 tmp15 [V21,T24] ( 2, 0.00) ref -> x15 "field V05.Destination (fldOffset=0x0)" P-INDEP
+;* V22 tmp16 [V22,T26] ( 0, 0 ) ubyte -> zero-ref "field V05.Flagged (fldOffset=0x8)" P-INDEP
; V23 tmp17 [V23,T03] ( 3, 42.79) ref -> x15 "field V07.Destination (fldOffset=0x0)" P-INDEP
;* V24 tmp18 [V24 ] ( 0, 0 ) ubyte -> zero-ref "field V07.Flagged (fldOffset=0x8)" P-INDEP
;* V25 tmp19 [V25 ] ( 0, 0 ) ref -> zero-ref "field V13.Destination (fldOffset=0x0)" P-INDEP
@@ -39,15 +39,17 @@
;* V27 tmp21 [V27 ] ( 0, 0 ) ref -> zero-ref single-def "field V18.Destination (fldOffset=0x0)" P-INDEP
;* V28 tmp22 [V28 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V18.Flagged (fldOffset=0x8)" P-INDEP
; V29 tmp23 [V29,T01] ( 3, 85.58) ref -> x15 "arr expr"
-; V30 tmp24 [V30,T19] ( 3, 0.00) ref -> x15 "arr expr"
-; V31 tmp25 [V31,T20] ( 3, 0.00) ref -> x12 "arr expr"
-; V32 tmp26 [V32,T21] ( 3, 0.00) byref -> x4 "BlockOp address local"
+; V30 tmp24 [V30,T20] ( 3, 0.00) ref -> x15 "arr expr"
+;* V31 tmp25 [V31,T25] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V32 tmp26 [V32,T21] ( 3, 0.00) byref -> x3 "BlockOp address local"
; V33 tmp27 [V33,T16] ( 3, 2.09) byref -> x0 single-def "BlockOp address local"
-; V34 cse0 [V34,T04] ( 5, 31.53) int -> x3 "CSE - aggressive"
-; V35 cse1 [V35,T06] ( 6, 17.26) ref -> x0 "CSE - aggressive"
-;* V36 rat0 [V36,T11] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V37 rat1 [V37,T17] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V38 rat2 [V38,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V34 tmp28 [V34,T00] ( 8, 86.51) long -> x14 "Widened primary induction variable"
+; V35 cse0 [V35,T23] ( 3, 0.00) byref -> x3 "CSE - conservative"
+; V36 cse1 [V36,T04] ( 5, 31.53) int -> x3 "CSE - aggressive"
+; V37 cse2 [V37,T06] ( 6, 17.26) ref -> x0 "CSE - aggressive"
+;* V38 rat0 [V38,T11] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V39 rat1 [V39,T17] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V40 rat2 [V40,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -60,33 +62,36 @@ G_M27820_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=16 bbWeight=1 PerfScore 3.00
G_M27820_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
- mov w14, wzr
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
ldr w3, [x0, #0x10]
cmp w3, #0
- ble G_M27820_IG04
- ;; size=20 bbWeight=1 PerfScore 8.00
-G_M27820_IG03: ; bbWeight=14.26, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
+ ble G_M27820_IG05
+ ;; size=16 bbWeight=1 PerfScore 7.50
+G_M27820_IG03: ; bbWeight=0.93, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref
+ mov x14, xzr
+ ;; size=4 bbWeight=0.93 PerfScore 0.47
+G_M27820_IG04: ; bbWeight=14.26, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
mov x15, x0
; gcrRegs +[x15]
cmp w14, w3
- bhs G_M27820_IG09
+ bhs G_M27820_IG10
ldr x15, [x15, #0x08]
ldr w12, [x15, #0x08]
cmp w14, w12
- bhs G_M27820_IG08
- ubfiz x12, x14, #4, #32
+ bhs G_M27820_IG09
+ lsl x12, x14, #4
add x12, x12, #16
ldr x15, [x15, x12]
ldrsb wzr, [x15]
cmp x15, x1
- beq G_M27820_IG07
+ beq G_M27820_IG08
add w14, w14, #1
+ mov w14, w14
cmp w14, w3
- blt G_M27820_IG03
- ;; size=64 bbWeight=14.26 PerfScore 292.39
-G_M27820_IG04: ; bbWeight=1.00, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
+ blt G_M27820_IG04
+ ;; size=68 bbWeight=14.26 PerfScore 299.52
+G_M27820_IG05: ; bbWeight=1.00, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x15]
uxtb w2, w2
ldr w14, [x0, #0x14]
@@ -96,7 +101,7 @@ G_M27820_IG04: ; bbWeight=1.00, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=00
; gcrRegs +[x4]
ldr w14, [x4, #0x08]
cmp w14, w3
- bhi G_M27820_IG06
+ bhi G_M27820_IG07
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
@@ -105,12 +110,12 @@ G_M27820_IG04: ; bbWeight=1.00, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=00
; gcrRegs -[x0-x1 x4]
; gcr arg pop 0
;; size=52 bbWeight=1.00 PerfScore 17.99
-G_M27820_IG05: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M27820_IG06: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.00 PerfScore 0.00
-G_M27820_IG06: ; bbWeight=0.35, gcVars=0000000000000000 {}, gcrefRegs=80013 {x0 x1 x4 x19}, byrefRegs=0000 {}, gcvars, byref
+G_M27820_IG07: ; bbWeight=0.35, gcVars=0000000000000000 {}, gcrefRegs=80013 {x0 x1 x4 x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0-x1 x4]
add w14, w3, #1
str w14, [x0, #0x10]
@@ -127,52 +132,46 @@ G_M27820_IG06: ; bbWeight=0.35, gcVars=0000000000000000 {}, gcrefRegs=800
; gcrRegs -[x1 x4 x15]
; byrRegs -[x14]
strb w2, [x0, #0x08]
- b G_M27820_IG05
+ b G_M27820_IG06
;; size=40 bbWeight=0.35 PerfScore 2.61
-G_M27820_IG07: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M27820_IG08: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
; byrRegs -[x0]
tst w2, #255
- beq G_M27820_IG05
+ beq G_M27820_IG06
mov x15, x0
; gcrRegs +[x15]
ldr x15, [x15, #0x08]
ldr w12, [x15, #0x08]
cmp w14, w12
- bhs G_M27820_IG08
- ubfiz x12, x14, #4, #32
- add x12, x12, #16
- ldr x15, [x15, x12]
- mov x3, x0
- ; gcrRegs +[x3]
- ldr x12, [x3, #0x08]
- ; gcrRegs +[x12]
- ldr wip0, [x12, #0x08]
- cmp w14, wip0
- bhs G_M27820_IG08
+ bhs G_M27820_IG09
ubfiz x14, x14, #4, #32
add x14, x14, #16
- add x4, x12, x14
- ; byrRegs +[x4]
- mov x14, x4
+ add x3, x15, x14
+ ; byrRegs +[x3]
+ ldr x15, [x3]
+ mov x4, x0
+ ; gcrRegs +[x4]
+ ldr xzr, [x4, #0x08]
+ mov x14, x3
; byrRegs +[x14]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[x0 x12 x15]
+ ; gcrRegs -[x0 x15]
; byrRegs -[x14]
mov w1, #1
- strb w1, [x4, #0x08]
- ldr w14, [x3, #0x14]
+ strb w1, [x3, #0x08]
+ ldr w14, [x4, #0x14]
add w14, w14, #1
- str w14, [x3, #0x14]
- b G_M27820_IG05
- ;; size=104 bbWeight=0.00 PerfScore 0.02
-G_M27820_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x3]
- ; byrRegs -[x4]
+ str w14, [x4, #0x14]
+ b G_M27820_IG06
+ ;; size=84 bbWeight=0.00 PerfScore 0.01
+G_M27820_IG09: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x4]
+ ; byrRegs -[x3]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M27820_IG09: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M27820_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -182,7 +181,7 @@ G_M27820_IG09: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 336, prolog size 16, PerfScore 324.01, instruction count 84, allocated bytes for code 336 (MethodHash=28189353) for method ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon],ubyte):this (Tier1)
+; Total bytes of code 320, prolog size 16, PerfScore 331.11, instruction count 80, allocated bytes for code 320 (MethodHash=28189353) for method ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon],ubyte):this (Tier1)
; ============================================================
Unwind Info:
@@ -193,7 +192,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 84 (0x00054) Actual length = 336 (0x000150)
+ Function Length : 80 (0x00050) Actual length = 320 (0x000140)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-16 (-4.76%) : 380680.dasm - ILCompiler.LazyGenericsSupport+Graph1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph1+Vertex[System.__Canon],ubyte):this (Tier1)
@@ -13,7 +13,7 @@
; V01 arg1 [V01,T05] ( 4, 17.10) ref -> x1 class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
; V02 arg2 [V02,T10] ( 4, 3 ) ubyte -> x2 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
-; V04 loc1 [V04,T00] ( 11, 85.59) int -> x14
+; V04 loc1 [V04,T18] ( 3, 0.00) int -> x14
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "location for address-of(RValue)" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
@@ -21,7 +21,7 @@
; V09 tmp3 [V09,T02] ( 2, 56.39) ref -> x15 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
; V11 tmp5 [V11,T22] ( 2, 0.00) ref -> x15 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
-; V12 tmp6 [V12,T18] ( 4, 0.00) ref -> x3 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
+; V12 tmp6 [V12,T19] ( 4, 0.00) ref -> x4 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
;* V13 tmp7 [V13 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
; V15 tmp9 [V15,T07] ( 6, 10.67) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
@@ -30,8 +30,8 @@
;* V18 tmp12 [V18 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
; V19 tmp13 [V19,T14] ( 3, 2.34) ref -> x1 single-def "field V03.Destination (fldOffset=0x0)" P-INDEP
; V20 tmp14 [V20,T15] ( 3, 2.34) ubyte -> x2 single-def "field V03.Flagged (fldOffset=0x8)" P-INDEP
-; V21 tmp15 [V21,T23] ( 2, 0.00) ref -> x15 "field V05.Destination (fldOffset=0x0)" P-INDEP
-;* V22 tmp16 [V22,T24] ( 0, 0 ) ubyte -> zero-ref "field V05.Flagged (fldOffset=0x8)" P-INDEP
+; V21 tmp15 [V21,T24] ( 2, 0.00) ref -> x15 "field V05.Destination (fldOffset=0x0)" P-INDEP
+;* V22 tmp16 [V22,T26] ( 0, 0 ) ubyte -> zero-ref "field V05.Flagged (fldOffset=0x8)" P-INDEP
; V23 tmp17 [V23,T03] ( 3, 42.29) ref -> x15 "field V07.Destination (fldOffset=0x0)" P-INDEP
;* V24 tmp18 [V24 ] ( 0, 0 ) ubyte -> zero-ref "field V07.Flagged (fldOffset=0x8)" P-INDEP
;* V25 tmp19 [V25 ] ( 0, 0 ) ref -> zero-ref "field V13.Destination (fldOffset=0x0)" P-INDEP
@@ -39,15 +39,17 @@
;* V27 tmp21 [V27 ] ( 0, 0 ) ref -> zero-ref single-def "field V18.Destination (fldOffset=0x0)" P-INDEP
;* V28 tmp22 [V28 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V18.Flagged (fldOffset=0x8)" P-INDEP
; V29 tmp23 [V29,T01] ( 3, 84.59) ref -> x15 "arr expr"
-; V30 tmp24 [V30,T19] ( 3, 0.00) ref -> x15 "arr expr"
-; V31 tmp25 [V31,T20] ( 3, 0.00) ref -> x12 "arr expr"
-; V32 tmp26 [V32,T21] ( 3, 0.00) byref -> x4 "BlockOp address local"
+; V30 tmp24 [V30,T20] ( 3, 0.00) ref -> x15 "arr expr"
+;* V31 tmp25 [V31,T25] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V32 tmp26 [V32,T21] ( 3, 0.00) byref -> x3 "BlockOp address local"
; V33 tmp27 [V33,T16] ( 3, 2.03) byref -> x0 single-def "BlockOp address local"
-; V34 cse0 [V34,T04] ( 5, 31.20) int -> x3 "CSE - aggressive"
-; V35 cse1 [V35,T06] ( 6, 17.10) ref -> x0 "CSE - aggressive"
-;* V36 rat0 [V36,T11] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V37 rat1 [V37,T17] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V38 rat2 [V38,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V34 tmp28 [V34,T00] ( 8, 85.52) long -> x14 "Widened primary induction variable"
+; V35 cse0 [V35,T23] ( 3, 0.00) byref -> x3 "CSE - conservative"
+; V36 cse1 [V36,T04] ( 5, 31.20) int -> x3 "CSE - aggressive"
+; V37 cse2 [V37,T06] ( 6, 17.10) ref -> x0 "CSE - aggressive"
+;* V38 rat0 [V38,T11] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V39 rat1 [V39,T17] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V40 rat2 [V40,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -60,33 +62,36 @@ G_M27820_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=16 bbWeight=1 PerfScore 3.00
G_M27820_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
- mov w14, wzr
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
ldr w3, [x0, #0x10]
cmp w3, #0
- ble G_M27820_IG04
- ;; size=20 bbWeight=1 PerfScore 8.00
-G_M27820_IG03: ; bbWeight=14.10, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
+ ble G_M27820_IG05
+ ;; size=16 bbWeight=1 PerfScore 7.50
+G_M27820_IG03: ; bbWeight=0.93, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref
+ mov x14, xzr
+ ;; size=4 bbWeight=0.93 PerfScore 0.47
+G_M27820_IG04: ; bbWeight=14.10, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
mov x15, x0
; gcrRegs +[x15]
cmp w14, w3
- bhs G_M27820_IG09
+ bhs G_M27820_IG10
ldr x15, [x15, #0x08]
ldr w12, [x15, #0x08]
cmp w14, w12
- bhs G_M27820_IG08
- ubfiz x12, x14, #4, #32
+ bhs G_M27820_IG09
+ lsl x12, x14, #4
add x12, x12, #16
ldr x15, [x15, x12]
ldrsb wzr, [x15]
cmp x15, x1
- beq G_M27820_IG07
+ beq G_M27820_IG08
add w14, w14, #1
+ mov w14, w14
cmp w14, w3
- blt G_M27820_IG03
- ;; size=64 bbWeight=14.10 PerfScore 289.01
-G_M27820_IG04: ; bbWeight=1.00, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
+ blt G_M27820_IG04
+ ;; size=68 bbWeight=14.10 PerfScore 296.06
+G_M27820_IG05: ; bbWeight=1.00, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x15]
uxtb w2, w2
ldr w14, [x0, #0x14]
@@ -96,7 +101,7 @@ G_M27820_IG04: ; bbWeight=1.00, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=00
; gcrRegs +[x4]
ldr w14, [x4, #0x08]
cmp w14, w3
- bhi G_M27820_IG06
+ bhi G_M27820_IG07
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
@@ -105,12 +110,12 @@ G_M27820_IG04: ; bbWeight=1.00, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=00
; gcrRegs -[x0-x1 x4]
; gcr arg pop 0
;; size=52 bbWeight=1.00 PerfScore 17.99
-G_M27820_IG05: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M27820_IG06: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.00 PerfScore 0.00
-G_M27820_IG06: ; bbWeight=0.34, gcVars=0000000000000000 {}, gcrefRegs=80013 {x0 x1 x4 x19}, byrefRegs=0000 {}, gcvars, byref
+G_M27820_IG07: ; bbWeight=0.34, gcVars=0000000000000000 {}, gcrefRegs=80013 {x0 x1 x4 x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0-x1 x4]
add w14, w3, #1
str w14, [x0, #0x10]
@@ -127,52 +132,46 @@ G_M27820_IG06: ; bbWeight=0.34, gcVars=0000000000000000 {}, gcrefRegs=800
; gcrRegs -[x1 x4 x15]
; byrRegs -[x14]
strb w2, [x0, #0x08]
- b G_M27820_IG05
+ b G_M27820_IG06
;; size=40 bbWeight=0.34 PerfScore 2.53
-G_M27820_IG07: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M27820_IG08: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
; byrRegs -[x0]
tst w2, #255
- beq G_M27820_IG05
+ beq G_M27820_IG06
mov x15, x0
; gcrRegs +[x15]
ldr x15, [x15, #0x08]
ldr w12, [x15, #0x08]
cmp w14, w12
- bhs G_M27820_IG08
- ubfiz x12, x14, #4, #32
- add x12, x12, #16
- ldr x15, [x15, x12]
- mov x3, x0
- ; gcrRegs +[x3]
- ldr x12, [x3, #0x08]
- ; gcrRegs +[x12]
- ldr wip0, [x12, #0x08]
- cmp w14, wip0
- bhs G_M27820_IG08
+ bhs G_M27820_IG09
ubfiz x14, x14, #4, #32
add x14, x14, #16
- add x4, x12, x14
- ; byrRegs +[x4]
- mov x14, x4
+ add x3, x15, x14
+ ; byrRegs +[x3]
+ ldr x15, [x3]
+ mov x4, x0
+ ; gcrRegs +[x4]
+ ldr xzr, [x4, #0x08]
+ mov x14, x3
; byrRegs +[x14]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[x0 x12 x15]
+ ; gcrRegs -[x0 x15]
; byrRegs -[x14]
mov w1, #1
- strb w1, [x4, #0x08]
- ldr w14, [x3, #0x14]
+ strb w1, [x3, #0x08]
+ ldr w14, [x4, #0x14]
add w14, w14, #1
- str w14, [x3, #0x14]
- b G_M27820_IG05
- ;; size=104 bbWeight=0.00 PerfScore 0.02
-G_M27820_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x3]
- ; byrRegs -[x4]
+ str w14, [x4, #0x14]
+ b G_M27820_IG06
+ ;; size=84 bbWeight=0.00 PerfScore 0.01
+G_M27820_IG09: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x4]
+ ; byrRegs -[x3]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M27820_IG09: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M27820_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -182,7 +181,7 @@ G_M27820_IG09: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 336, prolog size 16, PerfScore 320.56, instruction count 84, allocated bytes for code 336 (MethodHash=28189353) for method ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon],ubyte):this (Tier1)
+; Total bytes of code 320, prolog size 16, PerfScore 327.57, instruction count 80, allocated bytes for code 320 (MethodHash=28189353) for method ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon],ubyte):this (Tier1)
; ============================================================
Unwind Info:
@@ -193,7 +192,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 84 (0x00054) Actual length = 336 (0x000150)
+ Function Length : 80 (0x00050) Actual length = 320 (0x000140)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-3.18%) : 299392.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
@@ -12,27 +12,27 @@
; V00 this [V00,T00] ( 10, 11 ) ref -> x19 this class-hnd single-def <System.Reflection.MethodBaseInvoker>
; V01 arg1 [V01,T05] ( 4, 3 ) ref -> x20 class-hnd single-def <System.Object>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Object]>
-; V03 arg3 [V03,T07] ( 3, 2 ) int -> [fp+0x3C] EH-live single-def
-; V04 loc0 [V04 ] ( 2, 2 ) struct (32) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.MethodBase+StackAllocatedByRefs>
+; V03 arg3 [V03,T07] ( 3, 2 ) int -> [fp+0x44] EH-live single-def
+; V04 loc0 [V04 ] ( 2, 2 ) struct (32) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.MethodBase+StackAllocatedByRefs>
; V05 loc1 [V05,T11] ( 4, 3 ) long -> x23
-; V06 loc2 [V06,T02] ( 9, 9 ) int -> x4
+;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Object>
-; V08 loc4 [V08,T24] ( 2, 0 ) ref -> [fp+0x10] must-init class-hnd EH-live single-def <<unknown class>>
+; V08 loc4 [V08,T23] ( 2, 0 ) ref -> [fp+0x18] must-init class-hnd EH-live single-def <<unknown class>>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T18] ( 2, 2 ) long -> x24
+; V10 tmp1 [V10,T17] ( 2, 2 ) long -> x24
;* V11 tmp2 [V11 ] ( 0, 0 ) long -> zero-ref
;* V12 tmp3 [V12 ] ( 0, 0 ) struct ( 8) zero-ref <System.ByReference>
-; V13 tmp4 [V13,T25] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
-; V14 tmp5 [V14,T20] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
+; V13 tmp4 [V13,T24] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
+; V14 tmp5 [V14,T19] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
-; V16 tmp7 [V16,T23] ( 3, 0 ) int -> x0
+; V16 tmp7 [V16,T22] ( 3, 0 ) int -> x0
;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
-; V18 tmp9 [V18,T21] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V19 tmp10 [V19,T15] ( 3, 2 ) ref -> x0 "guarded devirt return temp"
+; V18 tmp9 [V18,T20] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V19 tmp10 [V19,T14] ( 3, 2 ) ref -> x0 "guarded devirt return temp"
; V20 tmp11 [V20,T03] ( 5, 6.68) ref -> x22 single-def "guarded devirt arg temp"
;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <System.Reflection.MethodBaseInvoker>
;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V23 tmp14 [V23,T01] ( 5, 10 ) byref -> x23 single-def "Inlining Arg"
+; V23 tmp14 [V23,T02] ( 5, 10 ) byref -> x23 single-def "Inlining Arg"
; V24 tmp15 [V24,T09] ( 2, 4 ) byref -> x24 single-def "Inlining Arg"
; V25 tmp16 [V25,T10] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
;* V26 tmp17 [V26 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -43,32 +43,31 @@
;* V31 tmp22 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ByReference>
; V32 tmp23 [V32,T06] ( 3, 2 ) byref -> x21 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
; V33 tmp24 [V33,T08] ( 3, 2 ) int -> x22 single-def "field V02._length (fldOffset=0x8)" P-INDEP
-; V34 tmp25 [V34,T16] ( 3, 2 ) byref -> x5 "field V12.Value (fldOffset=0x0)" P-INDEP
-; V35 tmp26 [V35,T17] ( 2, 2 ) byref -> x5 "field V27.Value (fldOffset=0x0)" P-INDEP
-; V36 tmp27 [V36,T26] ( 2, 0 ) byref -> x5 "field V31.Value (fldOffset=0x0)" P-INDEP
+; V34 tmp25 [V34,T15] ( 3, 2 ) byref -> x5 "field V12.Value (fldOffset=0x0)" P-INDEP
+; V35 tmp26 [V35,T16] ( 2, 2 ) byref -> x5 "field V27.Value (fldOffset=0x0)" P-INDEP
+; V36 tmp27 [V36,T25] ( 2, 0 ) byref -> x5 "field V31.Value (fldOffset=0x0)" P-INDEP
; V37 tmp28 [V37,T04] ( 3, 6 ) ref -> x2 "arr expr"
-; V38 tmp29 [V38,T22] ( 3, 0 ) ref -> x0 "Field obj"
-; V39 PSPSym [V39,T19] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
-; V40 cse0 [V40,T13] ( 3, 3 ) ref -> x1 "CSE - aggressive"
-; V41 cse1 [V41,T14] ( 3, 3 ) int -> x1 "CSE - aggressive"
-; V42 cse2 [V42,T12] ( 4, 3 ) long -> x25 "CSE - aggressive"
+; V38 tmp29 [V38,T21] ( 3, 0 ) ref -> x0 "Field obj"
+; V39 PSPSym [V39,T18] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
+; V40 tmp31 [V40,T01] ( 11, 10 ) long -> x4 "Widened primary induction variable"
+; V41 cse0 [V41,T12] ( 3, 3 ) ref -> x1 "CSE - aggressive"
+; V42 cse1 [V42,T13] ( 3, 3 ) int -> x1 "CSE - aggressive"
;
-; Lcl frame size = 56
+; Lcl frame size = 64
G_M51382_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x80]!
- stp x19, x20, [sp, #0x48]
- stp x21, x22, [sp, #0x58]
- stp x23, x24, [sp, #0x68]
- str x25, [sp, #0x78]
+ stp x19, x20, [sp, #0x50]
+ stp x21, x22, [sp, #0x60]
+ stp x23, x24, [sp, #0x70]
mov fp, sp
- add x9, fp, #16
+ add x9, fp, #24
movi v16.16b, #0
stp q16, q16, [x9]
str xzr, [x9, #0x20]
add x5, sp, #128
- str x5, [fp, #0x40] // [V39 PSPSym]
- str w4, [fp, #0x3C] // [V03 arg3]
+ str x5, [fp, #0x48] // [V39 PSPSym]
+ str w4, [fp, #0x44] // [V03 arg3]
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
@@ -76,9 +75,9 @@ G_M51382_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x21, x2
; byrRegs +[x21]
mov w22, w3
- ;; size=68 bbWeight=1 PerfScore 13.00
-G_M51382_IG02: ; bbWeight=1, gcVars=0000000001000000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
- ; GC ptr vars +{V08 V24}
+ ;; size=64 bbWeight=1 PerfScore 12.00
+G_M51382_IG02: ; bbWeight=1, gcVars=0000000000800000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
+ ; GC ptr vars +{V08 V23}
ldr w0, [x19, #0x40]
cmp w0, #4
ble G_M51382_IG03
@@ -133,10 +132,10 @@ G_M51382_IG04: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=1A0
;; size=48 bbWeight=1 PerfScore 12.50
G_M51382_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
; byrRegs -[x23]
- stp xzr, xzr, [fp, #0x18]
- stp xzr, xzr, [fp, #0x28]
- add x23, fp, #24 // [V04 loc0]
- mov w4, wzr
+ stp xzr, xzr, [fp, #0x20]
+ stp xzr, xzr, [fp, #0x30]
+ add x23, fp, #32 // [V04 loc0]
+ mov x4, xzr
b G_M51382_IG08
;; size=20 bbWeight=1 PerfScore 4.00
G_M51382_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
@@ -150,21 +149,21 @@ G_M51382_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000
add x2, x2, #16
; gcrRegs -[x2]
; byrRegs +[x2]
- mov w25, w4
- lsl x0, x25, #2
+ lsl x0, x4, #2
ldr w2, [x2, x0]
; byrRegs -[x2]
tbnz w2, #0, G_M51382_IG14
cmp w4, w22
bhs G_M51382_IG13
- lsl x2, x25, #3
+ lsl x2, x4, #3
add x5, x21, x2
; byrRegs +[x5]
- ;; size=60 bbWeight=1 PerfScore 18.00
+ ;; size=56 bbWeight=1 PerfScore 17.50
G_M51382_IG07: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200020 {x5 x21}, byref
str x5, [x24]
add w4, w4, #1
- ;; size=8 bbWeight=1 PerfScore 1.50
+ mov w4, w4
+ ;; size=12 bbWeight=1 PerfScore 2.00
G_M51382_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
; byrRegs -[x5]
ldr w2, [x19, #0x40]
@@ -209,26 +208,25 @@ G_M51382_IG11: ; bbWeight=0.34, gcrefRegs=500000 {x20 x22}, byrefRegs=000
; gcr arg pop 0
;; size=20 bbWeight=0.34 PerfScore 2.72
G_M51382_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
- ; GC ptr vars -{V08 V24}
- ldr x25, [sp, #0x78]
- ldp x23, x24, [sp, #0x68]
- ldp x21, x22, [sp, #0x58]
- ldp x19, x20, [sp, #0x48]
+ ; GC ptr vars -{V08 V23}
+ ldp x23, x24, [sp, #0x70]
+ ldp x21, x22, [sp, #0x60]
+ ldp x19, x20, [sp, #0x50]
ldp fp, lr, [sp], #0x80
ret lr
- ;; size=24 bbWeight=1 PerfScore 7.00
+ ;; size=20 bbWeight=1 PerfScore 5.00
G_M51382_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M51382_IG14: ; bbWeight=0, gcVars=0000000001000000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
+G_M51382_IG14: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
; gcrRegs +[x19-x20]
; byrRegs +[x21]
- ; GC ptr vars +{V08 V24}
+ ; GC ptr vars +{V08 V23}
cmp w4, w22
bhs G_M51382_IG13
- lsl x0, x25, #3
+ lsl x0, x4, #3
ldr x0, [x21, x0]
; gcrRegs +[x0]
ldrsb wzr, [x0]
@@ -240,15 +238,14 @@ G_M51382_IG15: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
; gcrRegs -[x19-x20]
; byrRegs -[x5 x21]
stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- stp x23, x24, [sp, #0x38]
- str x25, [sp, #0x48]
- ldr x1, [x1, #-0x40]
- str x1, [sp, #0x10]
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
+ stp x23, x24, [sp, #0x40]
+ ldr x1, [x1, #-0x38]
+ str x1, [sp, #0x18]
sub fp, x1, #128
- ;; size=32 bbWeight=0 PerfScore 0.00
-G_M51382_IG16: ; bbWeight=0, gcVars=0000000001000000 {V08}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M51382_IG16: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
mov x1, x0
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -266,32 +263,30 @@ G_M51382_IG16: ; bbWeight=0, gcVars=0000000001000000 {V08}, gcrefRegs=000
b G_M51382_IG18
;; size=36 bbWeight=0 PerfScore 0.00
G_M51382_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V08 V24}
- str x1, [fp, #0x10] // [V08 loc4]
+ ; GC ptr vars -{V08 V23}
+ str x1, [fp, #0x18] // [V08 loc4]
; GC ptr vars +{V08}
- ldr w4, [fp, #0x3C] // [V03 arg3]
+ ldr w4, [fp, #0x44] // [V03 arg3]
tst w4, #0xD1FFAB1E
cset x0, eq
;; size=16 bbWeight=0 PerfScore 0.00
-G_M51382_IG18: ; bbWeight=0, gcVars=0000000001000000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet epilog, nogc
+G_M51382_IG18: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet epilog, nogc
; gcrRegs -[x1]
- ldr x25, [sp, #0x48]
- ldp x23, x24, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
+ ldp x23, x24, [sp, #0x40]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x50
ret lr
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M51382_IG19: ; bbWeight=0, gcVars=0000000001000000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M51382_IG19: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- stp x23, x24, [sp, #0x38]
- str x25, [sp, #0x48]
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
+ stp x23, x24, [sp, #0x40]
add x3, fp, #128
- str x3, [sp, #0x10]
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M51382_IG20: ; bbWeight=0, gcVars=0000000001000000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ str x3, [sp, #0x18]
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M51382_IG20: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -300,7 +295,7 @@ G_M51382_IG20: ; bbWeight=0, gcVars=0000000001000000 {V08}, gcrefRegs=000
; gcr arg pop 0
...
+20 (+45.45%) : 493328.dasm - Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
@@ -8,10 +8,11 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 loc0 [V01,T00] ( 6, 21 ) int -> x2
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp3 [V05,T00] ( 7, 25 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -21,23 +22,31 @@ G_M31126_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M31126_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0
ble G_M31126_IG04
+ mov x2, xzr
;; size=12 bbWeight=1 PerfScore 2.00
G_M31126_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- strb w2, [x0, w2, UXTW #2]
+ cmp w2, w1
+ bhs G_M31126_IG05
+ strb w2, [x0, x2]
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
blt G_M31126_IG03
- ;; size=16 bbWeight=4 PerfScore 12.00
+ ;; size=28 bbWeight=4 PerfScore 20.00
G_M31126_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M31126_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 44, prolog size 8, PerfScore 17.50, instruction count 11, allocated bytes for code 44 (MethodHash=c32d8669) for method Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 25.50, instruction count 16, allocated bytes for code 64 (MethodHash=c32d8669) for method Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
; ============================================================
Unwind Info:
@@ -48,7 +57,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+46.15%) : 530061.dasm - GitHub_5556:SpanAsParam(System.Span`1[long]):long (FullOpts)
@@ -9,10 +9,11 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[long]>
; V01 loc0 [V01,T03] ( 3, 6 ) long -> x2
-; V02 loc1 [V02,T00] ( 5, 17 ) int -> x3
+;* V02 loc1 [V02,T04] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T02] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T01] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp2 [V05,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -23,16 +24,20 @@ G_M19747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M19747_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
mov x2, xzr
- mov w3, wzr
cmp w1, #0
ble G_M19747_IG04
+ mov x3, xzr
;; size=16 bbWeight=1 PerfScore 2.50
G_M19747_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr x2, [x0, w3, UXTW #3]
+ cmp w3, w1
+ bhs G_M19747_IG06
+ lsl x2, x3, #3
+ ldr x2, [x0, x2]
add w3, w3, #1
+ mov w3, w3
cmp w3, w1
blt G_M19747_IG03
- ;; size=16 bbWeight=4 PerfScore 20.00
+ ;; size=32 bbWeight=4 PerfScore 32.00
G_M19747_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov x0, x2
@@ -41,8 +46,13 @@ G_M19747_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M19747_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 26.50, instruction count 13, allocated bytes for code 52 (MethodHash=b91bb2dc) for method GitHub_5556:SpanAsParam(System.Span`1[long]):long (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 38.50, instruction count 19, allocated bytes for code 76 (MethodHash=b91bb2dc) for method GitHub_5556:SpanAsParam(System.Span`1[long]):long (FullOpts)
; ============================================================
Unwind Info:
@@ -53,7 +63,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+46.15%) : 530062.dasm - GitHub_5556:SpanWithLocalCopy(System.Span`1[long]):long (FullOpts)
@@ -9,13 +9,14 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[long]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[long]>
-; V02 loc1 [V02,T01] ( 3, 6 ) long -> x2
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+; V02 loc1 [V02,T02] ( 3, 6 ) long -> x2
+;* V03 loc2 [V03,T06] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T04] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V06 tmp2 [V06,T05] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V07 tmp3 [V07,T03] ( 2, 5 ) byref -> x0 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp4 [V08,T02] ( 3, 6 ) int -> x1 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp4 [V08,T01] ( 4, 10 ) int -> x1 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 tmp5 [V09,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -26,16 +27,20 @@ G_M40372_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M40372_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
mov x2, xzr
- mov w3, wzr
cmp w1, #0
ble G_M40372_IG04
+ mov x3, xzr
;; size=16 bbWeight=1 PerfScore 2.50
G_M40372_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr x2, [x0, w3, UXTW #3]
+ cmp w3, w1
+ bhs G_M40372_IG06
+ lsl x2, x3, #3
+ ldr x2, [x0, x2]
add w3, w3, #1
+ mov w3, w3
cmp w3, w1
blt G_M40372_IG03
- ;; size=16 bbWeight=4 PerfScore 20.00
+ ;; size=32 bbWeight=4 PerfScore 32.00
G_M40372_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov x0, x2
@@ -44,8 +49,13 @@ G_M40372_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M40372_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 26.50, instruction count 13, allocated bytes for code 52 (MethodHash=e720624b) for method GitHub_5556:SpanWithLocalCopy(System.Span`1[long]):long (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 38.50, instruction count 19, allocated bytes for code 76 (MethodHash=e720624b) for method GitHub_5556:SpanWithLocalCopy(System.Span`1[long]):long (FullOpts)
; ============================================================
Unwind Info:
@@ -56,7 +66,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries.crossgen2.osx.arm64.checked.mch
-24 (-10.00%) : 160653.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
@@ -10,21 +10,22 @@
;
; V00 arg0 [V00,T03] ( 3, 4 ) ref -> x19 class-hnd single-def <System.Text.StringBuilder>
; V01 arg1 [V01,T13] ( 3, 3 ) double -> d0 single-def
-; V02 arg2 [V02,T05] ( 3, 3 ) ubyte -> x1 single-def
+; V02 arg2 [V02,T04] ( 3, 3 ) ubyte -> x1 single-def
; V03 loc0 [V03,T02] ( 4, 9 ) int -> x20
; V04 loc1 [V04,T08] ( 2, 3 ) ref -> x21 class-hnd single-def <<unknown class>>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
-; V06 loc3 [V06,T00] ( 7, 12 ) int -> registers
+;* V06 loc3 [V06 ] ( 0, 0 ) int -> zero-ref
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T09] ( 3, 2 ) ref -> x21
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
-; V10 tmp3 [V10,T04] ( 3, 6 ) int -> x23 "impSpillLclRefs"
-; V11 tmp4 [V11,T06] ( 2, 5 ) byref -> x22 single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp3 [V10,T07] ( 2, 4 ) int -> x3 "impSpillLclRefs"
+; V11 tmp4 [V11,T05] ( 2, 5 ) byref -> x22 single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V12 tmp5 [V12,T11] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
; V13 tmp6 [V13,T10] ( 2, 2 ) byref -> x22 single-def "field V09._reference (fldOffset=0x0)" P-INDEP
;* V14 tmp7 [V14,T12] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V15 cse0 [V15,T01] ( 3, 10 ) int -> x3 "CSE - aggressive"
-; V16 cse1 [V16,T07] ( 2, 5 ) long -> registers hoist "CSE - aggressive"
+; V15 tmp8 [V15,T00] ( 8, 13 ) long -> x23 "Widened primary induction variable"
+; V16 cse0 [V16,T01] ( 3, 10 ) int -> x3 "CSE - aggressive"
+; V17 cse1 [V17,T06] ( 2, 5 ) long -> x24 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -61,18 +62,15 @@ G_M10117_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
G_M10117_IG05: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
adrp x22, [HIGH RELOC #0xD1FFAB1E]
add x22, x22, [LOW RELOC #0xD1FFAB1E]
- mov w23, #13
- b G_M10117_IG10
+ mov x23, #13
+ b G_M10117_IG09
;; size=16 bbWeight=1 PerfScore 2.50
G_M10117_IG06: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref
; byrRegs +[x22]
- ubfiz x23, x24, #2, #32
+ lsl x24, x23, #2
b G_M10117_IG08
;; size=8 bbWeight=1 PerfScore 2.00
G_M10117_IG07: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref
- mov x0, x23
- mov w23, w24
- mov x24, x0
sub w20, w20, w3
and w3, w23, #1
add w3, w3, #1
@@ -88,34 +86,29 @@ G_M10117_IG07: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000
blr x4
; gcrRegs -[x1]
; gcr arg pop 0
- mov w0, w23
- ; gcrRegs -[x0]
- mov x23, x24
- mov w24, w0
- ;; size=68 bbWeight=2 PerfScore 28.00
+ ;; size=44 bbWeight=2 PerfScore 22.00
G_M10117_IG08: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz
- cmp w24, #13
- bhs G_M10117_IG12
- ldr w3, [x22, x23]
+ ; gcrRegs -[x0]
+ cmp w23, #13
+ bhs G_M10117_IG11
+ ldr w3, [x22, x24]
cmp w3, w20
ble G_M10117_IG07
;; size=20 bbWeight=4 PerfScore 24.00
-G_M10117_IG09: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref
- mov w23, w24
- ;; size=4 bbWeight=2 PerfScore 1.00
-G_M10117_IG10: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz
- sub w3, w23, #1
- sxtw w24, w3
- cbnz w23, G_M10117_IG06
- ;; size=12 bbWeight=1 PerfScore 2.00
-G_M10117_IG11: ; bbWeight=1, epilog, nogc, extend
+G_M10117_IG09: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz
+ sxtw w3, w23
+ sub w0, w23, #1
+ mov w23, w0
+ cbnz w3, G_M10117_IG06
+ ;; size=16 bbWeight=1 PerfScore 2.50
+G_M10117_IG10: ; bbWeight=1, epilog, nogc, extend
ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x40
ret lr
;; size=20 bbWeight=1 PerfScore 5.00
-G_M10117_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M10117_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19 x21]
; byrRegs -[x22]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -126,7 +119,7 @@ G_M10117_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 240, prolog size 24, PerfScore 80.50, instruction count 60, allocated bytes for code 240 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
+; Total bytes of code 216, prolog size 24, PerfScore 74.00, instruction count 54, allocated bytes for code 216 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
; ============================================================
Unwind Info:
@@ -137,7 +130,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-48 (-5.38%) : 207149.dasm - ILCompiler.Reflection.ReadyToRun.NativeCuckooFilter:ToString():System.String:this (FullOpts)
@@ -10,45 +10,43 @@
;
; V00 this [V00,T14] ( 5, 5 ) byref -> x19 this single-def
; V01 loc0 [V01,T03] ( 7, 27 ) ref -> x20 class-hnd exact single-def <<unknown class>>
-; V02 loc1 [V02,T11] ( 4, 13 ) int -> x24
-; V03 loc2 [V03,T13] ( 7, 10 ) ref -> [fp+0x30] class-hnd EH-live spill-single-def <<unknown class>>
-; V04 loc3 [V04,T12] ( 7, 12.20) ref -> [fp+0x28] class-hnd spill-single-def <ushort[]>
-; V05 loc4 [V05,T01] ( 10, 68.16) int -> [fp+0x44]
+; V02 loc1 [V02,T11] ( 4, 13 ) int -> x22
+; V03 loc2 [V03,T13] ( 7, 10 ) ref -> [fp+0x20] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc3 [V04,T12] ( 7, 12.20) ref -> x25 class-hnd <ushort[]>
+;* V05 loc4 [V05,T22] ( 0, 0 ) int -> zero-ref
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T15] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V08 tmp2 [V08,T16] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V09 tmp3 [V09,T04] ( 3, 24 ) ref -> x0 class-hnd exact "Single-def Box Helper" <<unknown class>>
+; V09 tmp3 [V09,T05] ( 3, 24 ) ref -> x0 class-hnd exact "Single-def Box Helper" <<unknown class>>
; V10 tmp4 [V10,T00] ( 6, 96 ) ref -> x0 class-hnd exact "Single-def Box Helper" <<unknown class>>
-; V11 tmp5 [V11,T24] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V12 tmp6 [V12,T25] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
+; V11 tmp5 [V11,T20] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V12 tmp6 [V12,T21] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
; V13 tmp7 [V13,T10] ( 2, 16 ) ref -> x1 "argument with side effect"
; V14 tmp8 [V14,T02] ( 4, 64 ) ref -> x0 "argument with side effect"
-; V15 PSPSym [V15,T26] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
-; V16 cse0 [V16,T09] ( 3, 17 ) ref -> [fp+0x20] spill-single-def hoist "CSE - aggressive"
-; V17 cse1 [V17,T21] ( 2, 5 ) ref -> x26 hoist "CSE - aggressive"
-; V18 cse2 [V18,T22] ( 2, 5 ) ref -> x28 hoist "CSE - aggressive"
-; V19 cse3 [V19,T07] ( 4, 18.02) byref -> [fp+0x18] hoist multi-def "CSE - aggressive"
-; V20 cse4 [V20,T05] ( 5, 22 ) long -> x22 "CSE - aggressive"
-; V21 cse5 [V21,T06] ( 4, 21 ) long -> x27 hoist "CSE - aggressive"
-; V22 cse6 [V22,T08] ( 4, 18.02) long -> [fp+0x38] hoist multi-def "CSE - aggressive"
-; V23 cse7 [V23,T17] ( 3, 6 ) long -> x21 "CSE - moderate"
-; V24 cse8 [V24,T23] ( 2, 5 ) long -> x25 hoist "CSE - moderate"
-; V25 cse9 [V25,T18] ( 3, 6 ) long -> x23 "CSE - moderate"
-; V26 cse10 [V26,T19] ( 3, 6 ) long -> x19 "CSE - moderate"
-; V27 rat0 [V27,T20] ( 3, 6 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V15 PSPSym [V15,T23] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
+; V16 tmp10 [V16,T24] ( 6, 0.82) long -> x27 "Widened primary induction variable"
+; V17 tmp11 [V17,T01] ( 5, 65.36) long -> x27 "Widened primary induction variable"
+; V18 cse0 [V18,T09] ( 3, 17 ) ref -> x24 hoist "CSE - aggressive"
+; V19 cse1 [V19,T18] ( 2, 5 ) ref -> x19 hoist "CSE - aggressive"
+; V20 cse2 [V20,T19] ( 2, 5 ) ref -> x23 hoist "CSE - aggressive"
+; V21 cse3 [V21,T07] ( 4, 18.02) byref -> [fp+0x18] hoist multi-def "CSE - aggressive"
+; V22 cse4 [V22,T06] ( 5, 22 ) long -> x21 "CSE - aggressive"
+; V23 cse5 [V23,T04] ( 4, 24 ) long -> x26 "CSE - aggressive"
+; V24 cse6 [V24,T08] ( 4, 18.02) long -> x28 hoist multi-def "CSE - aggressive"
+; V25 rat0 [V25,T17] ( 3, 6 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 64
+; Lcl frame size = 32
G_M49470_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0xA0]!
- stp x19, x20, [sp, #0x50]
- stp x21, x22, [sp, #0x60]
- stp x23, x24, [sp, #0x70]
- stp x25, x26, [sp, #0x80]
- stp x27, x28, [sp, #0x90]
+ stp fp, lr, [sp, #-0x80]!
+ stp x19, x20, [sp, #0x30]
+ stp x21, x22, [sp, #0x40]
+ stp x23, x24, [sp, #0x50]
+ stp x25, x26, [sp, #0x60]
+ stp x27, x28, [sp, #0x70]
mov fp, sp
- add x1, sp, #160
- str x1, [fp, #0x48] // [V15 PSPSym]
+ add x1, sp, #128
+ str x1, [fp, #0x28] // [V15 PSPSym]
mov x19, x0
; byrRegs +[x19]
;; size=40 bbWeight=1 PerfScore 8.50
@@ -67,9 +65,8 @@ G_M49470_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- adrp x21, [HIGH RELOC #0xD1FFAB1E] // function address
- add x21, x21, [LOW RELOC #0xD1FFAB1E]
- mov x11, x21
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x11]
blr x0
; gcrRegs +[x0]
@@ -89,9 +86,9 @@ G_M49470_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
ldr x0, [x0]
ldr x0, [x0]
; gcrRegs +[x0]
- adrp x22, [HIGH RELOC #0xD1FFAB1E] // function address
- add x22, x22, [LOW RELOC #0xD1FFAB1E]
- mov x11, x22
+ adrp x21, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x21, x21, [LOW RELOC #0xD1FFAB1E]
+ mov x11, x21
ldr x2, [x11]
blr x2
; gcrRegs -[x1]
@@ -99,14 +96,13 @@ G_M49470_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
mov x1, x0
; gcrRegs +[x1]
mov x0, x20
- adrp x23, [HIGH RELOC #0xD1FFAB1E] // function address
- add x23, x23, [LOW RELOC #0xD1FFAB1E]
- mov x11, x23
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- mov w24, wzr
+ mov w22, wzr
mov x0, x19
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -122,59 +118,55 @@ G_M49470_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
ldr x1, [x11]
blr x1
; gcr arg pop 0
- str x0, [fp, #0x30] // [V03 loc2]
+ str x0, [fp, #0x20] // [V03 loc2]
; GC ptr vars +{V03}
- ;; size=196 bbWeight=1 PerfScore 55.00
+ ;; size=188 bbWeight=1 PerfScore 54.00
G_M49470_IG03: ; bbWeight=1, gcVars=0000000000002000 {V03}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- adrp x19, [HIGH RELOC #0xD1FFAB1E]
- add x19, x19, [LOW RELOC #0xD1FFAB1E]
- mov x11, x19
+ adrp x11, [HIGH RELOC #0xD1FFAB1E]
+ add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
cbz w0, G_M49470_IG12
- adrp x25, [HIGH RELOC #0xD1FFAB1E]
- add x25, x25, [LOW RELOC #0xD1FFAB1E]
adrp x0, [HIGH RELOC #0xD1FFAB1E]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x26, [x0]
- ; gcrRegs +[x26]
- adrp x27, [HIGH RELOC #0xD1FFAB1E]
- add x27, x27, [LOW RELOC #0xD1FFAB1E]
+ ldr x19, [x0]
+ ; gcrRegs +[x19]
adrp x0, [HIGH RELOC #0xD1FFAB1E]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x28, [x0]
- ; gcrRegs +[x28]
+ ldr x23, [x0]
+ ; gcrRegs +[x23]
adrp x0, [HIGH RELOC #0xD1FFAB1E]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x1, [x0]
- ; gcrRegs +[x1]
- str x1, [fp, #0x20] // [V16 cse0]
- ; GC ptr vars +{V16}
- ;; size=92 bbWeight=1 PerfScore 30.50
-G_M49470_IG04: ; bbWeight=4, gcVars=0000000000002200 {V03 V16}, gcrefRegs=14100000 {x20 x26 x28}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x1]
- ldr x0, [fp, #0x30] // [V03 loc2]
+ ldr x24, [x0]
+ ; gcrRegs +[x24]
+ ;; size=68 bbWeight=1 PerfScore 27.00
+G_M49470_IG04: ; bbWeight=4, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [fp, #0x20] // [V03 loc2]
; gcrRegs +[x0]
- mov x11, x25
- ldr x2, [x11]
- blr x2
- ; gcr arg pop 0
- str x0, [fp, #0x28] // [V04 loc3]
- ; GC ptr vars +{V04}
- mov x11, x21
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
; gcr arg pop 0
- str w24, [x0, #0x08]
+ mov x25, x0
+ ; gcrRegs +[x25]
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x11, x11, [LOW RELOC #0xD1FFAB1E]
+ ldr x0, [x11]
+ ; gcrRegs -[x0]
+ blr x0
+ ; gcrRegs +[x0]
+ ; gcr arg pop 0
+ str w22, [x0, #0x08]
mov x1, x0
; gcrRegs +[x1]
- mov x0, x26
- mov x11, x22
+ mov x0, x19
+ mov x11, x21
ldr x2, [x11]
blr x2
; gcrRegs -[x1]
@@ -182,91 +174,82 @@ G_M49470_IG04: ; bbWeight=4, gcVars=0000000000002200 {V03 V16}, gcrefRegs
mov x1, x0
; gcrRegs +[x1]
mov x0, x20
- mov x11, x27
+ adrp x26, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x26, x26, [LOW RELOC #0xD1FFAB1E]
+ mov x11, x26
ldr x2, [x11]
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- str wzr, [fp, #0x44] // [V05 loc4]
- ldr x1, [fp, #0x28] // [V04 loc3]
- ; gcrRegs +[x1]
- cbz x1, G_M49470_IG10
- ;; size=88 bbWeight=4 PerfScore 112.00
-G_M49470_IG05: ; bbWeight=2, gcrefRegs=14100002 {x1 x20 x26 x28}, byrefRegs=0000 {}, byref, isz
+ cbz x25, G_M49470_IG10
+ ;; size=96 bbWeight=4 PerfScore 106.00
+G_M49470_IG05: ; bbWeight=2, gcrefRegs=3980000 {x19 x20 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr w11, [x1, #0x08]
+ ldr w11, [x25, #0x08]
cmp w11, #8
blt G_M49470_IG10
- adrp x2, [HIGH RELOC #0xD1FFAB1E]
- add x2, x2, [LOW RELOC #0xD1FFAB1E]
- add x3, x1, #16
- ; byrRegs +[x3]
- str x3, [fp, #0x18] // [V19 cse3]
- ; GC ptr vars +{V19}
- ;; size=28 bbWeight=2 PerfScore 14.00
-G_M49470_IG06: ; bbWeight=15.84, gcVars=0000000000002280 {V03 V16 V19}, gcrefRegs=14100000 {x20 x26 x28}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x1]
- ; byrRegs -[x3]
- ; GC ptr vars -{V04}
- str x2, [fp, #0x38] // [V22 cse6]
- mov x11, x2
- ldr x1, [x11]
- blr x1
+ mov x27, xzr
+ adrp x28, [HIGH RELOC #0xD1FFAB1E]
+ add x28, x28, [LOW RELOC #0xD1FFAB1E]
+ add x25, x25, #16
+ ; gcrRegs -[x25]
+ ; byrRegs +[x25]
...
-40 (-5.38%) : 193845.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo (FullOpts)
@@ -14,35 +14,35 @@
;* V03 arg3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Reflection.ParameterModifier[]>
; V04 loc0 [V04,T15] ( 4, 6 ) ref -> x21 class-hnd <System.Reflection.PropertyInfo>
; V05 loc1 [V05,T03] ( 7, 29 ) int -> x22 single-def
-; V06 loc2 [V06,T07] ( 5, 17 ) int -> x23
-; V07 loc3 [V07,T10] ( 7, 10.20) ref -> x28 class-hnd <<unknown class>>
-; V08 loc4 [V08,T00] ( 13, 72.48) int -> [fp+0x3C]
+;* V06 loc2 [V06,T18] ( 0, 0 ) int -> zero-ref
+; V07 loc3 [V07,T10] ( 7, 10.20) ref -> x27 class-hnd <<unknown class>>
+; V08 loc4 [V08,T00] ( 13, 72.48) int -> x28
;* V09 loc5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Type>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T18] ( 3, 2 ) int -> x22
+; V11 tmp1 [V11,T17] ( 3, 2 ) int -> x22
; V12 tmp2 [V12,T19] ( 3, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V13 tmp3 [V13,T21] ( 2, 0 ) ref -> x19 class-hnd "finalizable newobj spill" <<unknown class>>
; V14 tmp4 [V14,T20] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V15 tmp5 [V15,T01] ( 4, 64 ) ref -> x0 "argument with side effect"
; V16 tmp6 [V16,T13] ( 2, 8 ) ref -> x1 "argument with side effect"
-; V17 cse0 [V17,T02] ( 3, 47.52) long -> [fp+0x30] spill-single-def "CSE - aggressive"
-; V18 cse1 [V18,T08] ( 4, 12 ) long -> x27 "CSE - aggressive"
-; V19 cse2 [V19,T05] ( 4, 18.02) byref -> [fp+0x20] hoist multi-def "CSE - aggressive"
-; V20 cse3 [V20,T04] ( 4, 18.16) byref -> [fp+0x18] hoist multi-def "CSE - aggressive"
-; V21 cse4 [V21,T11] ( 4, 9 ) byref -> x25 hoist "CSE - aggressive"
-; V22 cse5 [V22,T16] ( 3, 6 ) int -> x24 "CSE - moderate"
-; V23 cse6 [V23,T06] ( 4, 18.02) long -> [fp+0x28] hoist multi-def "CSE - aggressive"
-; V24 cse7 [V24,T17] ( 2, 5 ) long -> x26 hoist "CSE - moderate"
+; V17 tmp7 [V17,T07] ( 5, 17 ) long -> x24 "Widened primary induction variable"
+; V18 cse0 [V18,T08] ( 4, 12 ) long -> x26 "CSE - aggressive"
+; V19 cse1 [V19,T02] ( 3, 47.52) long -> [fp+0x28] spill-single-def "CSE - aggressive"
+; V20 cse2 [V20,T05] ( 4, 18.02) byref -> [fp+0x18] hoist multi-def "CSE - aggressive"
+; V21 cse3 [V21,T04] ( 4, 18.16) byref -> [fp+0x10] hoist multi-def "CSE - aggressive"
+; V22 cse4 [V22,T11] ( 4, 9 ) byref -> x25 hoist "CSE - aggressive"
+; V23 cse5 [V23,T16] ( 3, 6 ) int -> x23 "CSE - moderate"
+; V24 cse6 [V24,T06] ( 4, 18.02) long -> [fp+0x20] hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 32
G_M1302_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x90]!
- stp x19, x20, [sp, #0x40]
- stp x21, x22, [sp, #0x50]
- stp x23, x24, [sp, #0x60]
- stp x25, x26, [sp, #0x70]
- stp x27, x28, [sp, #0x80]
+ stp fp, lr, [sp, #-0x80]!
+ stp x19, x20, [sp, #0x30]
+ stp x21, x22, [sp, #0x40]
+ stp x23, x24, [sp, #0x50]
+ stp x25, x26, [sp, #0x60]
+ stp x27, x28, [sp, #0x70]
mov fp, sp
mov x20, x1
; gcrRegs +[x20]
@@ -51,7 +51,7 @@ G_M1302_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=36 bbWeight=1 PerfScore 7.50
G_M1302_IG02: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbz x0, G_M1302_IG21
+ cbz x0, G_M1302_IG19
mov x21, xzr
; gcrRegs +[x21]
cbnz x19, G_M1302_IG04
@@ -64,65 +64,63 @@ G_M1302_IG04: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRe
ldr w22, [x19, #0x08]
;; size=4 bbWeight=0.50 PerfScore 1.50
G_M1302_IG05: ; bbWeight=1, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- mov w23, wzr
- ldr w24, [x0, #0x08]
- cmp w24, #0
- ble G_M1302_IG18
+ ldr w23, [x0, #0x08]
+ cmp w23, #0
+ ble G_M1302_IG16
+ mov x24, xzr
add x25, x0, #16
; byrRegs +[x25]
- adrp x26, [HIGH RELOC #0xD1FFAB1E]
- add x26, x26, [LOW RELOC #0xD1FFAB1E]
- ;; size=28 bbWeight=1 PerfScore 6.50
+ ;; size=20 bbWeight=1 PerfScore 5.50
G_M1302_IG06: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=2000000 {x25}, byref, isz
; gcrRegs -[x0]
- ubfiz x27, x23, #3, #32
- ldr x0, [x25, x27]
+ lsl x26, x24, #3
+ ldr x0, [x25, x26]
; gcrRegs +[x0]
- mov x11, x26
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr wzr, [x0]
ldr x1, [x11]
blr x1
- mov x28, x0
- ; gcrRegs +[x28]
- mov w1, wzr
+ mov x27, x0
+ ; gcrRegs +[x27]
+ mov w28, wzr
cmp w22, #0
- ble G_M1302_IG10
- ;; size=40 bbWeight=4 PerfScore 56.00
-G_M1302_IG07: ; bbWeight=2, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=2000000 {x25}, byref, isz
+ ble G_M1302_IG12
+ ;; size=44 bbWeight=4 PerfScore 58.00
+G_M1302_IG07: ; bbWeight=2, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=2000000 {x25}, byref, isz
; gcrRegs -[x0]
- cbz x28, G_M1302_IG11
- cbz x19, G_M1302_IG11
- ldr w0, [x28, #0x08]
+ cbz x27, G_M1302_IG10
+ cbz x19, G_M1302_IG10
+ ldr w0, [x27, #0x08]
cmp w0, w22
- blt G_M1302_IG11
+ blt G_M1302_IG10
ldr w0, [x19, #0x08]
cmp w0, w22
- blt G_M1302_IG11
- add x28, x28, #16
- ; gcrRegs -[x28]
- ; byrRegs +[x28]
- adrp x2, [HIGH RELOC #0xD1FFAB1E]
- add x2, x2, [LOW RELOC #0xD1FFAB1E]
- add x3, x19, #16
- ; byrRegs +[x3]
- str x3, [fp, #0x18] // [V20 cse3]
- ; GC ptr vars +{V20}
- ;; size=52 bbWeight=2 PerfScore 28.00
-G_M1302_IG08: ; bbWeight=15.84, gcVars=0000000000000010 {V20}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=12000000 {x25 x28}, gcvars, byref, isz
- ; byrRegs -[x3]
- str w1, [fp, #0x3C] // [V08 loc4]
- ubfiz x4, x1, #3, #32
- str x4, [fp, #0x30] // [V17 cse0]
- ldr x0, [x28, x4]
- ; gcrRegs +[x0]
- str x2, [fp, #0x28] // [V23 cse6]
- mov x11, x2
- ldr wzr, [x0]
- ldr x5, [x11]
- blr x5
- ldr x2, [fp, #0x18] // [V20 cse3]
+ blt G_M1302_IG10
+ add x27, x27, #16
+ ; gcrRegs -[x27]
+ ; byrRegs +[x27]
+ adrp x1, [HIGH RELOC #0xD1FFAB1E]
+ add x1, x1, [LOW RELOC #0xD1FFAB1E]
+ add x2, x19, #16
; byrRegs +[x2]
- ldr x1, [fp, #0x30] // [V17 cse0]
+ str x2, [fp, #0x10] // [V21 cse3]
+ ; GC ptr vars +{V21}
+ ;; size=52 bbWeight=2 PerfScore 28.00
+G_M1302_IG08: ; bbWeight=15.84, gcVars=0000000000000010 {V21}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=A000000 {x25 x27}, gcvars, byref, isz
+ ; byrRegs -[x2]
+ ubfiz x3, x28, #3, #32
+ str x3, [fp, #0x28] // [V19 cse1]
+ ldr x0, [x27, x3]
+ ; gcrRegs +[x0]
+ str x1, [fp, #0x20] // [V24 cse6]
+ mov x11, x1
+ ldr wzr, [x0]
+ ldr x4, [x11]
+ blr x4
+ ldr x2, [fp, #0x10] // [V21 cse3]
+ ; byrRegs +[x2]
+ ldr x1, [fp, #0x28] // [V19 cse1]
ldr x1, [x2, x1]
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -131,87 +129,76 @@ G_M1302_IG08: ; bbWeight=15.84, gcVars=0000000000000010 {V20}, gcrefRegs=
blr x3
; gcrRegs -[x0-x1]
; byrRegs -[x2]
- cbnz w0, G_M1302_IG14
- ldr w1, [fp, #0x3C] // [V08 loc4]
- add w1, w1, #1
- cmp w1, w22
- ldr x2, [fp, #0x28] // [V23 cse6]
+ cbnz w0, G_M1302_IG12
+ add w28, w28, #1
+ cmp w28, w22
+ ldr x1, [fp, #0x20] // [V24 cse6]
blt G_M1302_IG08
- ;; size=88 bbWeight=15.84 PerfScore 530.64
+ ;; size=80 bbWeight=15.84 PerfScore 483.12
G_M1302_IG09: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=2000000 {x25}, gcvars, byref
- ; byrRegs -[x28]
- ; GC ptr vars -{V20}
- str w1, [fp, #0x3C] // [V08 loc4]
- b G_M1302_IG14
- ;; size=8 bbWeight=4 PerfScore 8.00
-G_M1302_IG10: ; bbWeight=2, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=2000000 {x25}, byref
- str w1, [fp, #0x3C] // [V08 loc4]
- b G_M1302_IG14
- ;; size=8 bbWeight=2 PerfScore 4.00
-G_M1302_IG11: ; bbWeight=0.02, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=2000000 {x25}, byref
- ; gcrRegs +[x28]
- ldr wzr, [x28, #0x08]
- add x0, x28, #16
+ ; byrRegs -[x27]
+ ; GC ptr vars -{V21}
+ b G_M1302_IG12
+ ;; size=4 bbWeight=4 PerfScore 4.00
+G_M1302_IG10: ; bbWeight=0.02, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=2000000 {x25}, byref
+ ; gcrRegs +[x27]
+ ldr wzr, [x27, #0x08]
+ add x0, x27, #16
; byrRegs +[x0]
- mov x2, x0
- ; byrRegs +[x2]
+ mov x1, x0
+ ; byrRegs +[x1]
adrp x0, [HIGH RELOC #0xD1FFAB1E]
; byrRegs -[x0]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
- mov x3, x0
+ mov x2, x0
;; size=24 bbWeight=0.02 PerfScore 0.11
-G_M1302_IG12: ; bbWeight=0.16, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=2000004 {x2 x25}, byref, isz
- ldr w0, [x28, #0x08]
- cmp w1, w0
- bhs G_M1302_IG20
- str x2, [fp, #0x20] // [V19 cse2]
- ; GC ptr vars +{V19}
- str w1, [fp, #0x3C] // [V08 loc4]
- ldr x0, [x2, w1, UXTW #3]
+G_M1302_IG11: ; bbWeight=0.16, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=2000002 {x1 x25}, byref, isz
+ ldr w0, [x27, #0x08]
+ cmp w28, w0
+ bhs G_M1302_IG18
+ str x1, [fp, #0x18] // [V20 cse2]
+ ; GC ptr vars +{V20}
+ ldr x0, [x1, w28, UXTW #3]
; gcrRegs +[x0]
- str x3, [fp, #0x28] // [V23 cse6]
- mov x11, x3
+ str x2, [fp, #0x20] // [V24 cse6]
+ mov x11, x2
ldr wzr, [x0]
- ldr x4, [x11]
- blr x4
- ; byrRegs -[x2]
+ ldr x3, [x11]
+ blr x3
+ ; byrRegs -[x1]
ldr w1, [x19, #0x08]
...
+32 (+57.14%) : 224528.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
@@ -11,13 +11,14 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
; V01 loc0 [V01,T01] ( 4, 10 ) int -> x2
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+;* V03 loc2 [V03,T06] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) ubyte -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T04] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V07 tmp2 [V07,T05] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V08 tmp3 [V08,T03] ( 2, 5 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V09 tmp4 [V09,T02] ( 3, 6 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V09 tmp4 [V09,T02] ( 4, 10 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V10 tmp5 [V10,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -28,17 +29,20 @@ G_M59336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M59336_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
mov w2, wzr
- mov w3, wzr
cmp w1, #0
ble G_M59336_IG04
+ mov x3, xzr
;; size=16 bbWeight=1 PerfScore 2.50
G_M59336_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2]
+ cmp w3, w1
+ bhs G_M59336_IG06
+ ldrb w4, [x0, x3]
add w2, w4, w2
add w3, w3, #1
+ mov w3, w3
cmp w3, w1
blt G_M59336_IG03
- ;; size=20 bbWeight=4 PerfScore 22.00
+ ;; size=32 bbWeight=4 PerfScore 30.00
G_M59336_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov w0, w2
@@ -47,8 +51,16 @@ G_M59336_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M59336_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x0, x0, [LOW RELOC #0xD1FFAB1E]
+ ldr x0, [x0]
+ blr x0
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 8, PerfScore 28.50, instruction count 14, allocated bytes for code 56 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 36.50, instruction count 22, allocated bytes for code 88 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -59,7 +71,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+36 (+60.00%) : 168923.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
@@ -10,11 +10,12 @@
;
; V00 arg0 [V00,T01] ( 5, 11 ) int -> x0
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 17 ) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V06 cse0 [V06,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 10 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
+; V07 cse0 [V07,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -24,27 +25,39 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0
ble G_M1770_IG04
+ mov x3, xzr
movz w4, #0xD1FFAB1E
movk w4, #0xD1FFAB1E LSL #16
;; size=20 bbWeight=1 PerfScore 3.00
G_M1770_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2
+ bhs G_M1770_IG05
+ lsl x5, x3, #1
+ ldrh w5, [x1, x5]
eor w0, w5, w0
mul w0, w0, w4
add w3, w3, #1
+ mov w3, w3
cmp w3, w2
blt G_M1770_IG03
- ;; size=24 bbWeight=4 PerfScore 30.00
+ ;; size=40 bbWeight=4 PerfScore 42.00
G_M1770_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x0, x0, [LOW RELOC #0xD1FFAB1E]
+ ldr x0, [x0]
+ blr x0
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 36.50, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 96, prolog size 8, PerfScore 48.50, instruction count 24, allocated bytes for code 96 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -55,7 +68,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+36 (+60.00%) : 23340.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
@@ -10,11 +10,12 @@
;
; V00 arg0 [V00,T01] ( 5, 11 ) int -> x0
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 17 ) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V06 cse0 [V06,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 10 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
+; V07 cse0 [V07,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -24,27 +25,39 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0
ble G_M1770_IG04
+ mov x3, xzr
movz w4, #0xD1FFAB1E
movk w4, #0xD1FFAB1E LSL #16
;; size=20 bbWeight=1 PerfScore 3.00
G_M1770_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2
+ bhs G_M1770_IG05
+ lsl x5, x3, #1
+ ldrh w5, [x1, x5]
eor w0, w5, w0
mul w0, w0, w4
add w3, w3, #1
+ mov w3, w3
cmp w3, w2
blt G_M1770_IG03
- ;; size=24 bbWeight=4 PerfScore 30.00
+ ;; size=40 bbWeight=4 PerfScore 42.00
G_M1770_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x0, x0, [LOW RELOC #0xD1FFAB1E]
+ ldr x0, [x0]
+ blr x0
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 36.50, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 96, prolog size 8, PerfScore 48.50, instruction count 24, allocated bytes for code 96 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -55,7 +68,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries.pmi.osx.arm64.checked.mch
-28 (-12.50%) : 198135.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
@@ -8,28 +8,32 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 5, 4.50) ref -> x0 this class-hnd single-def <System.Xml.XmlSubtreeReader>
-; V01 arg1 [V01,T04] ( 3, 6 ) ref -> x1 class-hnd single-def <System.String>
-; V02 arg2 [V02,T07] ( 3, 4 ) ref -> x2 class-hnd single-def <System.String>
-; V03 loc0 [V03,T01] ( 9, 22.50) int -> x14
-; V04 loc1 [V04,T17] ( 2, 1 ) ref -> x4 class-hnd exact <<unknown class>>
+; V00 this [V00,T07] ( 5, 4.50) ref -> x0 this class-hnd single-def <System.Xml.XmlSubtreeReader>
+; V01 arg1 [V01,T06] ( 3, 6 ) ref -> x1 class-hnd single-def <System.String>
+; V02 arg2 [V02,T09] ( 3, 4 ) ref -> x2 class-hnd single-def <System.String>
+; V03 loc0 [V03,T13] ( 3, 1.50) int -> x15
+; V04 loc1 [V04,T18] ( 2, 1 ) ref -> x2 class-hnd exact <<unknown class>>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T09] ( 3, 3 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
-; V07 tmp2 [V07,T14] ( 2, 2 ) ref -> x12 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
+;* V06 tmp1 [V06,T19] ( 0, 0 ) ref -> zero-ref class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
+; V07 tmp2 [V07,T14] ( 2, 2 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V10 tmp5 [V10,T00] ( 3, 24 ) ref -> x12 "arr expr"
-;* V11 tmp6 [V11,T08] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V12 tmp7 [V12,T18] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V13 tmp8 [V13,T10] ( 3, 3 ) ref -> x12 "arr expr"
-; V14 tmp9 [V14,T12] ( 3, 3 ) int -> xip0 "index expr"
-; V15 tmp10 [V15,T11] ( 3, 3 ) ref -> x3 "arr expr"
+; V10 tmp5 [V10,T00] ( 3, 24 ) ref -> xip0 "arr expr"
+;* V11 tmp6 [V11,T10] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V12 tmp7 [V12,T20] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V13 tmp8 [V13,T21] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V14 tmp9 [V14,T11] ( 3, 3 ) int -> x15 "index expr"
+;* V15 tmp10 [V15,T22] ( 0, 0 ) ref -> zero-ref "arr expr"
; V16 tmp11 [V16,T15] ( 2, 2 ) int -> x14 "index expr"
-; V17 cse0 [V17,T02] ( 4, 10.50) ref -> x4 "CSE - aggressive"
-; V18 cse1 [V18,T13] ( 5, 2.50) int -> x1 "CSE - aggressive"
-; V19 cse2 [V19,T03] ( 5, 6.50) ref -> x3 hoist "CSE - aggressive"
-; V20 cse3 [V20,T06] ( 4, 6.50) int -> x15 "CSE - aggressive"
-; V21 cse4 [V21,T16] ( 3, 1.50) long -> x2 "CSE - moderate"
+; V17 tmp12 [V17,T01] ( 7, 21.50) long -> x15 "Widened primary induction variable"
+; V18 cse0 [V18,T03] ( 3, 10 ) ref -> xip0 "CSE - aggressive"
+; V19 cse1 [V19,T12] ( 5, 2.50) int -> x1 "CSE - aggressive"
+; V20 cse2 [V20,T04] ( 2, 5 ) ref -> x12 hoist "CSE - aggressive"
+; V21 cse3 [V21,T08] ( 4, 6.50) int -> x14 "CSE - aggressive"
+; V22 cse4 [V22,T16] ( 3, 1.50) long -> x14 "CSE - moderate"
+; V23 cse5 [V23,T17] ( 3, 1.50) long -> x5 "CSE - moderate"
+; V24 cse6 [V24,T05] ( 4, 9 ) int -> x3 "CSE - aggressive"
+; V25 cse7 [V25,T02] ( 6, 10 ) byref -> x4 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -39,95 +43,80 @@ G_M23254_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M23254_IG02: ; bbWeight=1, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x2]
- mov w14, wzr
- ldr w15, [x0, #0x58]
- cmp w15, #0
+ ldr w14, [x0, #0x58]
+ cmp w14, #0
ble G_M23254_IG06
- ldr x3, [x0, #0x20]
- ; gcrRegs +[x3]
+ mov x15, xzr
+ ldr x12, [x0, #0x20]
+ ; gcrRegs +[x12]
;; size=20 bbWeight=1 PerfScore 8.00
-G_M23254_IG03: ; bbWeight=4, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz
- mov x12, x3
- ; gcrRegs +[x12]
- ldr wip0, [x12, #0x08]
- cmp w14, wip0
+G_M23254_IG03: ; bbWeight=4, gcrefRegs=1007 {x0 x1 x2 x12}, byrefRegs=0000 {}, byref, isz
+ mov xip0, x12
+ ; gcrRegs +[xip0]
+ ldr w3, [xip0, #0x08]
+ cmp w15, w3
bhs G_M23254_IG10
- add x12, x12, #16
- ; gcrRegs -[x12]
- ; byrRegs +[x12]
- ldr x4, [x12, w14, UXTW #3]
- ; gcrRegs +[x4]
- ldr x12, [x4, #0x10]
- ; gcrRegs +[x12]
- ; byrRegs -[x12]
- cmp x12, x1
+ add x4, xip0, #16
+ ; byrRegs +[x4]
+ lsl xip0, x15, #3
+ ; gcrRegs -[xip0]
+ ldr xip0, [x4, xip0]
+ ; gcrRegs +[xip0]
+ ldr x5, [xip0, #0x10]
+ ; gcrRegs +[x5]
+ cmp x5, x1
bne G_M23254_IG05
- ;; size=36 bbWeight=4 PerfScore 52.00
-G_M23254_IG04: ; bbWeight=2, gcrefRegs=001F {x0 x1 x2 x3 x4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x12]
- ldr x12, [x4, #0x08]
- ; gcrRegs +[x12]
- cmp x12, x2
+ ;; size=40 bbWeight=4 PerfScore 56.00
+G_M23254_IG04: ; bbWeight=2, gcrefRegs=11007 {x0 x1 x2 x12 xip0}, byrefRegs=0010 {x4}, byref, isz
+ ; gcrRegs -[x5]
+ ldr xip0, [xip0, #0x08]
+ cmp xip0, x2
beq G_M23254_IG07
;; size=12 bbWeight=2 PerfScore 9.00
-G_M23254_IG05: ; bbWeight=4, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x4 x12]
- add w14, w14, #1
- cmp w14, w15
+G_M23254_IG05: ; bbWeight=4, gcrefRegs=1007 {x0 x1 x2 x12}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[xip0]
+ ; byrRegs -[x4]
+ add w15, w15, #1
+ mov w15, w15
+ cmp w15, w14
blt G_M23254_IG03
- ;; size=12 bbWeight=4 PerfScore 8.00
+ ;; size=16 bbWeight=4 PerfScore 10.00
G_M23254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x0-x3]
+ ; gcrRegs -[x0-x2 x12]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M23254_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0019 {x0 x3 x4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0 x3-x4]
- sub w1, w15, #1
- cmp w14, w1
+G_M23254_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, gcvars, byref, isz
+ ; gcrRegs +[x0]
+ ; byrRegs +[x4]
+ sub w1, w14, #1
+ cmp w15, w1
bge G_M23254_IG08
- mov x15, x3
+ ubfiz x14, x15, #3, #32
+ ldr x2, [x4, x14]
+ ; gcrRegs +[x2]
+ sxtw w15, w1
+ cmp w15, w3
+ bhs G_M23254_IG10
+ ubfiz x5, x15, #3, #32
+ ldr x15, [x4, x5]
; gcrRegs +[x15]
- mov x12, x3
- ; gcrRegs +[x12]
- sxtw wip0, w1
- ldr w2, [x12, #0x08]
- cmp wip0, w2
- bhs G_M23254_IG10
- add x12, x12, #16
- ; gcrRegs -[x12]
- ; byrRegs +[x12]
- ubfiz x2, xip0, #3, #32
- ldr x12, [x12, x2]
- ; gcrRegs +[x12]
- ; byrRegs -[x12]
- ldr wip0, [x15, #0x08]
- cmp w14, wip0
- bhs G_M23254_IG10
- add x15, x15, #16
- ; gcrRegs -[x15]
- ; byrRegs +[x15]
- add x14, x15, x14, LSL #3
+ add x14, x4, x14
; byrRegs +[x14]
- mov x15, x12
- ; gcrRegs +[x15]
- ; byrRegs -[x15]
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x12 x15]
+ bl CORINFO_HELP_CHECKED_ASSIGN_REF
+ ; gcrRegs -[x15]
; byrRegs -[x14]
sxtw w14, w1
- ldr w15, [x3, #0x08]
- cmp w14, w15
+ cmp w14, w3
bhs G_M23254_IG10
- add x14, x3, #16
+ add x14, x4, x5
; byrRegs +[x14]
- add x14, x14, x2
- mov x15, x4
+ mov x15, x2
; gcrRegs +[x15]
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x3-x4 x15]
- ; byrRegs -[x14]
- ;; size=108 bbWeight=0.50 PerfScore 13.75
+ bl CORINFO_HELP_CHECKED_ASSIGN_REF
+ ; gcrRegs -[x2 x15]
+ ; byrRegs -[x4 x14]
+ ;; size=72 bbWeight=0.50 PerfScore 8.75
G_M23254_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
str w1, [x0, #0x58]
;; size=4 bbWeight=0.50 PerfScore 0.50
@@ -142,7 +131,7 @@ G_M23254_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 224, prolog size 8, PerfScore 94.75, instruction count 56, allocated bytes for code 224 (MethodHash=dfe8a529) for method System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
+; Total bytes of code 196, prolog size 8, PerfScore 95.75, instruction count 49, allocated bytes for code 196 (MethodHash=dfe8a529) for method System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
; ============================================================
Unwind Info:
@@ -153,7 +142,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
+ Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-10.71%) : 205501.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
@@ -9,21 +9,22 @@
;
; V00 arg0 [V00,T03] ( 3, 4 ) ref -> x19 class-hnd single-def <System.Text.StringBuilder>
; V01 arg1 [V01,T13] ( 3, 3 ) double -> d0 single-def
-; V02 arg2 [V02,T05] ( 3, 3 ) ubyte -> x1 single-def
+; V02 arg2 [V02,T04] ( 3, 3 ) ubyte -> x1 single-def
; V03 loc0 [V03,T02] ( 4, 9 ) int -> x20
; V04 loc1 [V04,T08] ( 2, 3 ) ref -> x21 class-hnd single-def <System.String>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
-; V06 loc3 [V06,T00] ( 7, 12 ) int -> registers
+;* V06 loc3 [V06 ] ( 0, 0 ) int -> zero-ref
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T09] ( 2, 2 ) ref -> x21
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
-; V10 tmp3 [V10,T04] ( 3, 6 ) int -> x23 "impSpillLclRefs"
-; V11 tmp4 [V11,T06] ( 2, 5 ) byref -> x22 single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp3 [V10,T07] ( 2, 4 ) int -> x3 "impSpillLclRefs"
+; V11 tmp4 [V11,T05] ( 2, 5 ) byref -> x22 single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V12 tmp5 [V12,T11] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
; V13 tmp6 [V13,T10] ( 2, 2 ) byref -> x22 single-def "field V09._reference (fldOffset=0x0)" P-INDEP
;* V14 tmp7 [V14,T12] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V15 cse0 [V15,T01] ( 3, 10 ) int -> x3 "CSE - aggressive"
-; V16 cse1 [V16,T07] ( 2, 5 ) long -> registers hoist "CSE - aggressive"
+; V15 tmp8 [V15,T00] ( 8, 13 ) long -> x23 "Widened primary induction variable"
+; V16 cse0 [V16,T01] ( 3, 10 ) int -> x3 "CSE - aggressive"
+; V17 cse1 [V17,T06] ( 2, 5 ) long -> x24 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -50,18 +51,15 @@ G_M10117_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
movz x22, #0xD1FFAB1E
movk x22, #0xD1FFAB1E LSL #16
movk x22, #1 LSL #32
- mov w23, #13
- b G_M10117_IG07
+ mov x23, #13
+ b G_M10117_IG06
;; size=56 bbWeight=1 PerfScore 9.00
G_M10117_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref
; byrRegs +[x22]
- ubfiz x23, x24, #2, #32
+ lsl x24, x23, #2
b G_M10117_IG05
;; size=8 bbWeight=1 PerfScore 2.00
G_M10117_IG04: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref
- mov x0, x23
- mov w23, w24
- mov x24, x0
sub w20, w20, w3
and w3, w23, #1
add w3, w3, #1
@@ -78,34 +76,29 @@ G_M10117_IG04: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000
blr x4
; gcrRegs -[x1]
; gcr arg pop 0
- mov w0, w23
- ; gcrRegs -[x0]
- mov x23, x24
- mov w24, w0
- ;; size=72 bbWeight=2 PerfScore 29.00
+ ;; size=48 bbWeight=2 PerfScore 23.00
G_M10117_IG05: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz
- cmp w24, #13
- bhs G_M10117_IG09
- ldr w3, [x22, x23]
+ ; gcrRegs -[x0]
+ cmp w23, #13
+ bhs G_M10117_IG08
+ ldr w3, [x22, x24]
cmp w3, w20
ble G_M10117_IG04
;; size=20 bbWeight=4 PerfScore 24.00
-G_M10117_IG06: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref
- mov w23, w24
- ;; size=4 bbWeight=2 PerfScore 1.00
-G_M10117_IG07: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz
- sub w3, w23, #1
- sxtw w24, w3
- cbnz w23, G_M10117_IG03
- ;; size=12 bbWeight=1 PerfScore 2.00
-G_M10117_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M10117_IG06: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz
+ sxtw w3, w23
+ sub w0, w23, #1
+ mov w23, w0
+ cbnz w3, G_M10117_IG03
+ ;; size=16 bbWeight=1 PerfScore 2.50
+G_M10117_IG07: ; bbWeight=1, epilog, nogc, extend
ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x40
ret lr
;; size=20 bbWeight=1 PerfScore 5.00
-G_M10117_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M10117_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19 x21]
; byrRegs -[x22]
bl CORINFO_HELP_RNGCHKFAIL
@@ -113,7 +106,7 @@ G_M10117_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 224, prolog size 24, PerfScore 77.00, instruction count 56, allocated bytes for code 224 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
+; Total bytes of code 200, prolog size 24, PerfScore 70.50, instruction count 50, allocated bytes for code 200 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
; ============================================================
Unwind Info:
@@ -124,7 +117,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
+ Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-3.37%) : 201508.dasm - System.Xml.Schema.FacetsChecker+FacetsCompiler:Preprocess(System.String):System.String (FullOpts)
@@ -8,42 +8,43 @@
; 0 inlinees with PGO data; 3 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T10] ( 6, 6.50) ref -> x19 class-hnd single-def <System.String>
+; V00 arg0 [V00,T08] ( 6, 9.50) ref -> x19 class-hnd single-def <System.String>
; V01 loc0 [V01,T06] ( 15, 13.50) ref -> x20 class-hnd exact single-def <System.Text.StringBuilder>
-; V02 loc1 [V02,T17] ( 4, 3.50) int -> x22
-; V03 loc2 [V03,T08] ( 8, 11 ) int -> x23
+; V02 loc1 [V02,T18] ( 4, 3.50) int -> x22
+; V03 loc2 [V03,T09] ( 8, 11 ) int -> x23
; V04 loc3 [V04,T03] ( 11, 29 ) int -> x24
-; V05 loc4 [V05,T04] ( 2, 18 ) ushort -> x28
-; V06 loc5 [V06,T01] ( 8, 86 ) int -> [fp+0x1C]
+; V05 loc4 [V05,T04] ( 2, 18 ) ushort -> x27
+; V06 loc5 [V06,T13] ( 3, 6 ) int -> x27
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T11] ( 4, 8 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder>
+; V08 tmp1 [V08,T12] ( 4, 8 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder>
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.StringBuilder>
-; V10 tmp3 [V10,T20] ( 3, 2.50) int -> x0 "Inline stloc first use temp"
-; V11 tmp4 [V11,T18] ( 3, 2.50) ref -> x1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V10 tmp3 [V10,T21] ( 3, 2.50) int -> x0 "Inline stloc first use temp"
+; V11 tmp4 [V11,T19] ( 3, 2.50) ref -> x1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V12 tmp5 [V12,T05] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.StringBuilder>
-; V14 tmp7 [V14,T21] ( 3, 2.50) int -> x0 "Inline stloc first use temp"
-; V15 tmp8 [V15,T19] ( 3, 2.50) ref -> x1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V14 tmp7 [V14,T22] ( 3, 2.50) int -> x0 "Inline stloc first use temp"
+; V15 tmp8 [V15,T20] ( 3, 2.50) ref -> x1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V16 tmp9 [V16,T00] ( 3, 96 ) ref -> x0 "arr expr"
; V17 tmp10 [V17,T07] ( 3, 12 ) ref -> x2 "arr expr"
-; V18 cse0 [V18,T02] ( 4, 36 ) ref -> x3 "CSE - aggressive"
-; V19 cse1 [V19,T13] ( 3, 6 ) int -> x28 "CSE - aggressive"
-;* V20 cse2 [V20,T22] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
-; V21 cse3 [V21,T14] ( 3, 6 ) long -> [fp+0x10] spill-single-def "CSE - aggressive"
-; V22 cse4 [V22,T09] ( 5, 10 ) int -> x27 "CSE - aggressive"
-; V23 cse5 [V23,T16] ( 3, 4 ) int -> x21 "CSE - aggressive"
-; V24 cse6 [V24,T12] ( 3, 7 ) byref -> x26 hoist "CSE - aggressive"
-; V25 cse7 [V25,T15] ( 3, 6 ) int -> x25 "CSE - moderate"
+; V18 tmp11 [V18,T01] ( 7, 84 ) long -> x4 "Widened primary induction variable"
+; V19 cse0 [V19,T02] ( 4, 36 ) ref -> x3 "CSE - aggressive"
+; V20 cse1 [V20,T14] ( 3, 6 ) int -> x27 "CSE - aggressive"
+;* V21 cse2 [V21,T23] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V22 cse3 [V22,T15] ( 3, 6 ) long -> x28 "CSE - aggressive"
+; V23 cse4 [V23,T10] ( 5, 10 ) int -> x26 "CSE - aggressive"
+; V24 cse5 [V24,T17] ( 3, 4 ) int -> x21 "CSE - aggressive"
+; V25 cse6 [V25,T16] ( 3, 6 ) int -> x25 "CSE - aggressive"
+; V26 cse7 [V26,T11] ( 3, 10 ) byref -> x3 "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 0
G_M19789_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
- stp x25, x26, [sp, #0x50]
- stp x27, x28, [sp, #0x60]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
+ stp x23, x24, [sp, #0x30]
+ stp x25, x26, [sp, #0x40]
+ stp x27, x28, [sp, #0x50]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
@@ -113,97 +114,94 @@ G_M19789_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
sub w25, w22, #2
cmp w25, #0
ble G_M19789_IG16
- add x26, x19, #12
- ; byrRegs +[x26]
- ;; size=32 bbWeight=1 PerfScore 7.00
-G_M19789_IG06: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
- ldrh w3, [x26, w24, UXTW #2]
- cmp w3, #92
+ ;; size=28 bbWeight=1 PerfScore 6.50
+G_M19789_IG06: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ add x3, x19, #12
+ ; byrRegs +[x3]
+ ldrh w0, [x3, w24, UXTW #2]
+ cmp w0, #92
bne G_M19789_IG15
- ;; size=12 bbWeight=4 PerfScore 18.00
-G_M19789_IG07: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
- add w27, w24, #1
- cmp w27, w21
+ ;; size=16 bbWeight=4 PerfScore 20.00
+G_M19789_IG07: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0008 {x3}, byref, isz
+ add w26, w24, #1
+ cmp w26, w21
bhs G_M19789_IG23
- ldrh w28, [x26, w27, UXTW #2]
- cmp w28, #92
+ ldrh w27, [x3, w26, UXTW #2]
+ cmp w27, #92
bne G_M19789_IG08
- sxtw w24, w27
+ sxtw w24, w26
b G_M19789_IG15
;; size=32 bbWeight=2 PerfScore 16.00
-G_M19789_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
- mov w4, wzr
+G_M19789_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x3]
movz x3, #0xD1FFAB1E
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
ldr w3, [x3]
tbz w3, #0, G_M19789_IG24
- ;; size=24 bbWeight=2 PerfScore 12.00
-G_M19789_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
- movz x5, #0xD1FFAB1E
- movk x5, #0xD1FFAB1E LSL #16
- movk x5, #2 LSL #32
- str x5, [fp, #0x10] // [V21 cse3]
- ldr x3, [x5]
+ ;; size=20 bbWeight=2 PerfScore 11.00
+G_M19789_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ movz x28, #0xD1FFAB1E
+ movk x28, #0xD1FFAB1E LSL #16
+ movk x28, #2 LSL #32
+ ldr x3, [x28]
; gcrRegs +[x3]
ldr w0, [x3, #0x08]
cmp w0, #0
ble G_M19789_IG15
- ;; size=32 bbWeight=2 PerfScore 20.00
-G_M19789_IG10: ; bbWeight=16, gcrefRegs=180008 {x3 x19 x20}, byrefRegs=4000000 {x26}, byref, isz
+ mov x4, xzr
+ ;; size=32 bbWeight=2 PerfScore 19.00
+G_M19789_IG10: ; bbWeight=16, gcrefRegs=180008 {x3 x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x3
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w4, w1
bhs G_M19789_IG23
- ubfiz x1, x4, #4, #32
+ lsl x1, x4, #4
add x1, x1, #16
add x0, x0, x1
; gcrRegs -[x0]
; byrRegs +[x0]
ldrh w0, [x0, #0x08]
; byrRegs -[x0]
- cmp w0, w28
+ cmp w0, w27
beq G_M19789_IG12
add w4, w4, #1
+ mov w4, w4
ldr w0, [x3, #0x08]
- str w4, [fp, #0x1C] // [V06 loc5]
cmp w0, w4
- ldr w4, [fp, #0x1C] // [V06 loc5]
bgt G_M19789_IG10
- ;; size=64 bbWeight=16 PerfScore 312.00
-G_M19789_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref
+ ;; size=60 bbWeight=16 PerfScore 272.00
+G_M19789_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x3]
b G_M19789_IG15
;; size=4 bbWeight=4 PerfScore 4.00
-G_M19789_IG12: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
+G_M19789_IG12: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ mov w27, w4
cmp w23, w24
bge G_M19789_IG13
- str w4, [fp, #0x1C] // [V06 loc5]
sub w3, w24, w23
mov x0, x20
; gcrRegs +[x0]
mov x1, x19
; gcrRegs +[x1]
mov w2, w23
- movz x6, #0xD1FFAB1E // code for System.Text.StringBuilder:Append(System.String,int,int):System.Text.StringBuilder:this
- movk x6, #0xD1FFAB1E LSL #16
- movk x6, #1 LSL #32
- ldr x6, [x6]
- blr x6
+ movz x4, #0xD1FFAB1E // code for System.Text.StringBuilder:Append(System.String,int,int):System.Text.StringBuilder:this
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #1 LSL #32
+ ldr x4, [x4]
+ blr x4
; gcrRegs -[x1]
; gcr arg pop 0
- ldr w4, [fp, #0x1C] // [V06 loc5]
- ;; size=52 bbWeight=2 PerfScore 24.00
-G_M19789_IG13: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
+ ;; size=48 bbWeight=2 PerfScore 19.00
+G_M19789_IG13: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x5, [fp, #0x10] // [V21 cse3]
- ldr x2, [x5]
+ ldr x2, [x28]
; gcrRegs +[x2]
ldr w1, [x2, #0x08]
- cmp w4, w1
+ cmp w27, w1
bhs G_M19789_IG23
- ubfiz x1, x4, #4, #32
+ ubfiz x1, x27, #4, #32
add x1, x1, #16
ldr x1, [x2, x1]
; gcrRegs +[x1]
@@ -223,18 +221,17 @@ G_M19789_IG13: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=400000
; gcrRegs -[x0]
; byrRegs -[x1]
; gcr arg pop 0
- ;; size=68 bbWeight=2 PerfScore 49.00
-G_M19789_IG14: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref
- sxtw w24, w27
+ ;; size=64 bbWeight=2 PerfScore 45.00
+G_M19789_IG14: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ sxtw w24, w26
add w23, w24, #1
;; size=8 bbWeight=2 PerfScore 2.00
-G_M19789_IG15: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
+G_M19789_IG15: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w24, w24, #1
cmp w24, w25
blt G_M19789_IG06
;; size=12 bbWeight=4 PerfScore 8.00
G_M19789_IG16: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x26]
cmp w23, w22
bge G_M19789_IG18
;; size=8 bbWeight=1 PerfScore 1.50
@@ -295,12 +292,12 @@ G_M19789_IG21: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ldr x1, [x1]
;; size=20 bbWeight=1 PerfScore 5.00
G_M19789_IG22: ; bbWeight=1, epilog, nogc, extend
- ldp x27, x28, [sp, #0x60]
- ldp x25, x26, [sp, #0x50]
- ldp x23, x24, [sp, #0x40]
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x70
+ ldp x27, x28, [sp, #0x50]
+ ldp x25, x26, [sp, #0x40]
+ ldp x23, x24, [sp, #0x30]
+ ldp x21, x22, [sp, #0x20]
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x60
br x1
; gcr arg pop 0
;; size=28 bbWeight=1 PerfScore 7.00
...
+20 (+35.71%) : 310288.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
@@ -10,13 +10,14 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
; V01 loc0 [V01,T01] ( 4, 10 ) int -> x2
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+;* V03 loc2 [V03,T06] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) ubyte -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T04] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V07 tmp2 [V07,T05] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V08 tmp3 [V08,T03] ( 2, 5 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V09 tmp4 [V09,T02] ( 3, 6 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V09 tmp4 [V09,T02] ( 4, 10 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V10 tmp5 [V10,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -27,17 +28,20 @@ G_M59336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M59336_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
mov w2, wzr
- mov w3, wzr
cmp w1, #0
ble G_M59336_IG04
+ mov x3, xzr
;; size=16 bbWeight=1 PerfScore 2.50
G_M59336_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2]
+ cmp w3, w1
+ bhs G_M59336_IG06
+ ldrb w4, [x0, x3]
add w2, w4, w2
add w3, w3, #1
+ mov w3, w3
cmp w3, w1
blt G_M59336_IG03
- ;; size=20 bbWeight=4 PerfScore 22.00
+ ;; size=32 bbWeight=4 PerfScore 30.00
G_M59336_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov w0, w2
@@ -46,8 +50,13 @@ G_M59336_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M59336_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 8, PerfScore 28.50, instruction count 14, allocated bytes for code 56 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 36.50, instruction count 19, allocated bytes for code 76 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -58,7 +67,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+40.00%) : 232038.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
@@ -9,11 +9,12 @@
;
; V00 arg0 [V00,T01] ( 5, 11 ) int -> x0
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 17 ) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V06 cse0 [V06,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 10 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
+; V07 cse0 [V07,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -23,27 +24,36 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0
ble G_M1770_IG04
+ mov x3, xzr
movz w4, #0xD1FFAB1E
movk w4, #0xD1FFAB1E LSL #16
;; size=20 bbWeight=1 PerfScore 3.00
G_M1770_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2
+ bhs G_M1770_IG05
+ lsl x5, x3, #1
+ ldrh w5, [x1, x5]
eor w0, w5, w0
mul w0, w0, w4
add w3, w3, #1
+ mov w3, w3
cmp w3, w2
blt G_M1770_IG03
- ;; size=24 bbWeight=4 PerfScore 30.00
+ ;; size=40 bbWeight=4 PerfScore 42.00
G_M1770_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 36.50, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 48.50, instruction count 21, allocated bytes for code 84 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -54,7 +64,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+40.00%) : 34604.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
@@ -9,11 +9,12 @@
;
; V00 arg0 [V00,T01] ( 5, 11 ) int -> x0
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 17 ) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V06 cse0 [V06,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 10 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
+; V07 cse0 [V07,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -23,27 +24,36 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0
ble G_M1770_IG04
+ mov x3, xzr
movz w4, #0xD1FFAB1E
movk w4, #0xD1FFAB1E LSL #16
;; size=20 bbWeight=1 PerfScore 3.00
G_M1770_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2
+ bhs G_M1770_IG05
+ lsl x5, x3, #1
+ ldrh w5, [x1, x5]
eor w0, w5, w0
mul w0, w0, w4
add w3, w3, #1
+ mov w3, w3
cmp w3, w2
blt G_M1770_IG03
- ;; size=24 bbWeight=4 PerfScore 30.00
+ ;; size=40 bbWeight=4 PerfScore 42.00
G_M1770_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 36.50, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 48.50, instruction count 21, allocated bytes for code 84 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -54,7 +64,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries_tests.run.osx.arm64.Release.mch
-20 (-3.27%) : 243463.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
@@ -12,26 +12,26 @@
; V00 this [V00,T00] ( 10, 11 ) ref -> x19 this class-hnd single-def <System.Reflection.MethodBaseInvoker>
; V01 arg1 [V01,T05] ( 4, 3 ) ref -> x20 class-hnd single-def <System.Object>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Object]>
-; V03 arg3 [V03,T07] ( 3, 2 ) int -> [fp+0x3C] EH-live single-def
-; V04 loc0 [V04 ] ( 2, 2 ) struct (32) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.MethodBase+StackAllocatedByRefs>
+; V03 arg3 [V03,T07] ( 3, 2 ) int -> [fp+0x44] EH-live single-def
+; V04 loc0 [V04 ] ( 2, 2 ) struct (32) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.MethodBase+StackAllocatedByRefs>
; V05 loc1 [V05,T11] ( 4, 3 ) long -> x23
-; V06 loc2 [V06,T02] ( 9, 9 ) int -> x4
+;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Object>
-; V08 loc4 [V08,T23] ( 2, 0 ) ref -> [fp+0x10] must-init class-hnd EH-live single-def <<unknown class>>
+; V08 loc4 [V08,T22] ( 2, 0 ) ref -> [fp+0x18] must-init class-hnd EH-live single-def <<unknown class>>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T18] ( 2, 2 ) long -> x24
+; V10 tmp1 [V10,T17] ( 2, 2 ) long -> x24
;* V11 tmp2 [V11 ] ( 0, 0 ) long -> zero-ref
;* V12 tmp3 [V12 ] ( 0, 0 ) struct ( 8) zero-ref <System.ByReference>
-; V13 tmp4 [V13,T24] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
-; V14 tmp5 [V14,T20] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
+; V13 tmp4 [V13,T23] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
+; V14 tmp5 [V14,T19] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
-; V16 tmp7 [V16,T22] ( 3, 0 ) int -> x0
+; V16 tmp7 [V16,T21] ( 3, 0 ) int -> x0
;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
-; V18 tmp9 [V18,T21] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V19 tmp10 [V19,T15] ( 3, 2 ) ref -> x0 "guarded devirt return temp"
+; V18 tmp9 [V18,T20] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V19 tmp10 [V19,T14] ( 3, 2 ) ref -> x0 "guarded devirt return temp"
; V20 tmp11 [V20,T03] ( 5, 7 ) ref -> x22 single-def "guarded devirt arg temp"
;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <System.Reflection.MethodBaseInvoker>
-; V22 tmp13 [V22,T01] ( 5, 10 ) byref -> x23 single-def "Inlining Arg"
+; V22 tmp13 [V22,T02] ( 5, 10 ) byref -> x23 single-def "Inlining Arg"
; V23 tmp14 [V23,T09] ( 2, 4 ) byref -> x24 single-def "Inlining Arg"
; V24 tmp15 [V24,T10] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
;* V25 tmp16 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -42,31 +42,30 @@
;* V30 tmp21 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ByReference>
; V31 tmp22 [V31,T06] ( 3, 2 ) byref -> x21 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
; V32 tmp23 [V32,T08] ( 3, 2 ) int -> x22 single-def "field V02._length (fldOffset=0x8)" P-INDEP
-; V33 tmp24 [V33,T16] ( 3, 2 ) byref -> x5 "field V12.Value (fldOffset=0x0)" P-INDEP
-; V34 tmp25 [V34,T25] ( 2, 0 ) byref -> x5 "field V26.Value (fldOffset=0x0)" P-INDEP
-; V35 tmp26 [V35,T17] ( 2, 2 ) byref -> x5 "field V30.Value (fldOffset=0x0)" P-INDEP
+; V33 tmp24 [V33,T15] ( 3, 2 ) byref -> x5 "field V12.Value (fldOffset=0x0)" P-INDEP
+; V34 tmp25 [V34,T24] ( 2, 0 ) byref -> x5 "field V26.Value (fldOffset=0x0)" P-INDEP
+; V35 tmp26 [V35,T16] ( 2, 2 ) byref -> x5 "field V30.Value (fldOffset=0x0)" P-INDEP
; V36 tmp27 [V36,T04] ( 3, 6 ) ref -> x2 "arr expr"
-; V37 tmp28 [V37,T13] ( 3, 3 ) ref -> x2 "Field obj"
-; V38 PSPSym [V38,T19] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
-; V39 cse0 [V39,T14] ( 3, 3 ) int -> x1 "CSE - aggressive"
-; V40 cse1 [V40,T12] ( 4, 3 ) long -> x25 "CSE - aggressive"
+; V37 tmp28 [V37,T12] ( 3, 3 ) ref -> x2 "Field obj"
+; V38 PSPSym [V38,T18] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
+; V39 tmp30 [V39,T01] ( 11, 10 ) long -> x4 "Widened primary induction variable"
+; V40 cse0 [V40,T13] ( 3, 3 ) int -> x1 "CSE - aggressive"
;
-; Lcl frame size = 56
+; Lcl frame size = 64
G_M51382_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x80]!
- stp x19, x20, [sp, #0x48]
- stp x21, x22, [sp, #0x58]
- stp x23, x24, [sp, #0x68]
- str x25, [sp, #0x78]
+ stp x19, x20, [sp, #0x50]
+ stp x21, x22, [sp, #0x60]
+ stp x23, x24, [sp, #0x70]
mov fp, sp
- add x9, fp, #16
+ add x9, fp, #24
movi v16.16b, #0
stp q16, q16, [x9]
str xzr, [x9, #0x20]
add x5, sp, #128
- str x5, [fp, #0x40] // [V38 PSPSym]
- str w4, [fp, #0x3C] // [V03 arg3]
+ str x5, [fp, #0x48] // [V38 PSPSym]
+ str w4, [fp, #0x44] // [V03 arg3]
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
@@ -74,9 +73,9 @@ G_M51382_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x21, x2
; byrRegs +[x21]
mov w22, w3
- ;; size=68 bbWeight=1 PerfScore 13.00
-G_M51382_IG02: ; bbWeight=1, gcVars=0000000000800000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
- ; GC ptr vars +{V08 V23}
+ ;; size=64 bbWeight=1 PerfScore 12.00
+G_M51382_IG02: ; bbWeight=1, gcVars=0000000000400000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
+ ; GC ptr vars +{V08 V22}
ldr w0, [x19, #0x40]
cmp w0, #4
cset x0, le
@@ -123,10 +122,10 @@ G_M51382_IG03: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=1A0
;; size=48 bbWeight=1 PerfScore 12.50
G_M51382_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
; byrRegs -[x23]
- stp xzr, xzr, [fp, #0x18]
- stp xzr, xzr, [fp, #0x28]
- add x23, fp, #24 // [V04 loc0]
- mov w4, wzr
+ stp xzr, xzr, [fp, #0x20]
+ stp xzr, xzr, [fp, #0x30]
+ add x23, fp, #32 // [V04 loc0]
+ mov x4, xzr
b G_M51382_IG07
;; size=20 bbWeight=1 PerfScore 4.00
G_M51382_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
@@ -140,25 +139,25 @@ G_M51382_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000
add x2, x2, #16
; gcrRegs -[x2]
; byrRegs +[x2]
- mov w25, w4
- lsl x0, x25, #2
+ lsl x0, x4, #2
ldr w2, [x2, x0]
; byrRegs -[x2]
tbz w2, #0, G_M51382_IG13
cmp w4, w22
bhs G_M51382_IG12
- lsl x2, x25, #3
+ lsl x2, x4, #3
ldr x2, [x21, x2]
; gcrRegs +[x2]
ldrsb wzr, [x2]
add x5, x2, #8
; byrRegs +[x5]
- ;; size=68 bbWeight=1 PerfScore 24.00
+ ;; size=64 bbWeight=1 PerfScore 23.50
G_M51382_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200020 {x5 x21}, byref
; gcrRegs -[x2]
str x5, [x24]
add w4, w4, #1
- ;; size=8 bbWeight=1 PerfScore 1.50
+ mov w4, w4
+ ;; size=12 bbWeight=1 PerfScore 2.00
G_M51382_IG07: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
; byrRegs -[x5]
ldr w2, [x19, #0x40]
@@ -203,26 +202,25 @@ G_M51382_IG10: ; bbWeight=0.50, gcrefRegs=500000 {x20 x22}, byrefRegs=000
; gcr arg pop 0
;; size=20 bbWeight=0.50 PerfScore 4.00
G_M51382_IG11: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
- ; GC ptr vars -{V08 V23}
- ldr x25, [sp, #0x78]
- ldp x23, x24, [sp, #0x68]
- ldp x21, x22, [sp, #0x58]
- ldp x19, x20, [sp, #0x48]
+ ; GC ptr vars -{V08 V22}
+ ldp x23, x24, [sp, #0x70]
+ ldp x21, x22, [sp, #0x60]
+ ldp x19, x20, [sp, #0x50]
ldp fp, lr, [sp], #0x80
ret lr
- ;; size=24 bbWeight=1 PerfScore 7.00
+ ;; size=20 bbWeight=1 PerfScore 5.00
G_M51382_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M51382_IG13: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
+G_M51382_IG13: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
; gcrRegs +[x19-x20]
; byrRegs +[x21]
- ; GC ptr vars +{V08 V23}
+ ; GC ptr vars +{V08 V22}
cmp w4, w22
bhs G_M51382_IG12
- lsl x0, x25, #3
+ lsl x0, x4, #3
add x5, x21, x0
; byrRegs +[x5]
b G_M51382_IG06
@@ -231,15 +229,14 @@ G_M51382_IG14: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
; gcrRegs -[x19-x20] +[x0]
; byrRegs -[x5 x21]
stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- stp x23, x24, [sp, #0x38]
- str x25, [sp, #0x48]
- ldr x1, [x1, #-0x40]
- str x1, [sp, #0x10]
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
+ stp x23, x24, [sp, #0x40]
+ ldr x1, [x1, #-0x38]
+ str x1, [sp, #0x18]
sub fp, x1, #128
- ;; size=32 bbWeight=0 PerfScore 0.00
-G_M51382_IG15: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M51382_IG15: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
mov x1, x0
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -257,32 +254,30 @@ G_M51382_IG15: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=000
b G_M51382_IG17
;; size=36 bbWeight=0 PerfScore 0.00
G_M51382_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V08 V23}
- str x1, [fp, #0x10] // [V08 loc4]
+ ; GC ptr vars -{V08 V22}
+ str x1, [fp, #0x18] // [V08 loc4]
; GC ptr vars +{V08}
- ldr w4, [fp, #0x3C] // [V03 arg3]
+ ldr w4, [fp, #0x44] // [V03 arg3]
tst w4, #0xD1FFAB1E
cset x0, eq
;; size=16 bbWeight=0 PerfScore 0.00
-G_M51382_IG17: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet epilog, nogc
+G_M51382_IG17: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet epilog, nogc
; gcrRegs -[x1]
- ldr x25, [sp, #0x48]
- ldp x23, x24, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
+ ldp x23, x24, [sp, #0x40]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x50
ret lr
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M51382_IG18: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M51382_IG18: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- stp x23, x24, [sp, #0x38]
- str x25, [sp, #0x48]
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
+ stp x23, x24, [sp, #0x40]
add x3, fp, #128
- str x3, [sp, #0x10]
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M51382_IG19: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ str x3, [sp, #0x18]
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M51382_IG19: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -291,7 +286,7 @@ G_M51382_IG19: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=000
...
-20 (-3.23%) : 190341.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
@@ -12,28 +12,28 @@
; V00 this [V00,T00] ( 10, 11.19) ref -> x19 this class-hnd single-def <System.Reflection.MethodBaseInvoker>
; V01 arg1 [V01,T05] ( 4, 3 ) ref -> x20 class-hnd single-def <System.Object>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Object]>
-; V03 arg3 [V03,T08] ( 3, 2 ) int -> [fp+0x3C] EH-live single-def
-; V04 loc0 [V04 ] ( 2, 2.02) struct (32) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.MethodBase+StackAllocatedByRefs>
-; V05 loc1 [V05,T10] ( 4, 3.09) long -> x23
-; V06 loc2 [V06,T01] ( 9, 9.56) int -> x4
+; V03 arg3 [V03,T08] ( 3, 2 ) int -> [fp+0x44] EH-live single-def
+; V04 loc0 [V04 ] ( 2, 2.02) struct (32) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.MethodBase+StackAllocatedByRefs>
+; V05 loc1 [V05,T09] ( 4, 3.09) long -> x23
+;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Object>
-; V08 loc4 [V08,T24] ( 2, 0 ) ref -> [fp+0x10] must-init class-hnd EH-live single-def <<unknown class>>
+; V08 loc4 [V08,T23] ( 2, 0 ) ref -> [fp+0x18] must-init class-hnd EH-live single-def <<unknown class>>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T14] ( 2, 2.16) long -> x24
+; V10 tmp1 [V10,T13] ( 2, 2.16) long -> x24
;* V11 tmp2 [V11 ] ( 0, 0 ) long -> zero-ref
;* V12 tmp3 [V12 ] ( 0, 0 ) struct ( 8) zero-ref <System.ByReference>
-; V13 tmp4 [V13,T25] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
-; V14 tmp5 [V14,T21] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
+; V13 tmp4 [V13,T24] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
+; V14 tmp5 [V14,T20] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
-; V16 tmp7 [V16,T23] ( 3, 0 ) int -> x0
+; V16 tmp7 [V16,T22] ( 3, 0 ) int -> x0
;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
-; V18 tmp9 [V18,T22] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V19 tmp10 [V19,T17] ( 3, 2 ) ref -> x0 "guarded devirt return temp"
+; V18 tmp9 [V18,T21] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V19 tmp10 [V19,T16] ( 3, 2 ) ref -> x0 "guarded devirt return temp"
; V20 tmp11 [V20,T03] ( 5, 6.26) ref -> x22 single-def "guarded devirt arg temp"
;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <System.Reflection.MethodBaseInvoker>
; V22 tmp13 [V22,T04] ( 5, 6.07) byref -> x23 single-def "Inlining Arg"
-; V23 tmp14 [V23,T15] ( 2, 2.03) byref -> x24 single-def "Inlining Arg"
-; V24 tmp15 [V24,T16] ( 2, 2.03) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
+; V23 tmp14 [V23,T14] ( 2, 2.03) byref -> x24 single-def "Inlining Arg"
+; V24 tmp15 [V24,T15] ( 2, 2.03) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
;* V25 tmp16 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V26 tmp17 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ByReference>
;* V27 tmp18 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Object>
@@ -42,31 +42,30 @@
;* V30 tmp21 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ByReference>
; V31 tmp22 [V31,T06] ( 3, 2.08) byref -> x21 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
; V32 tmp23 [V32,T07] ( 3, 2.08) int -> x22 single-def "field V02._length (fldOffset=0x8)" P-INDEP
-; V33 tmp24 [V33,T13] ( 3, 2.16) byref -> x5 "field V12.Value (fldOffset=0x0)" P-INDEP
-; V34 tmp25 [V34,T20] ( 2, 0.29) byref -> x5 "field V26.Value (fldOffset=0x0)" P-INDEP
-; V35 tmp26 [V35,T18] ( 2, 1.87) byref -> x5 "field V30.Value (fldOffset=0x0)" P-INDEP
+; V33 tmp24 [V33,T12] ( 3, 2.16) byref -> x5 "field V12.Value (fldOffset=0x0)" P-INDEP
+; V34 tmp25 [V34,T19] ( 2, 0.29) byref -> x5 "field V26.Value (fldOffset=0x0)" P-INDEP
+; V35 tmp26 [V35,T17] ( 2, 1.87) byref -> x5 "field V30.Value (fldOffset=0x0)" P-INDEP
; V36 tmp27 [V36,T02] ( 3, 6.47) ref -> x2 "arr expr"
-; V37 tmp28 [V37,T12] ( 3, 2.80) ref -> x2 "Field obj"
-; V38 PSPSym [V38,T19] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
-; V39 cse0 [V39,T11] ( 3, 3.03) int -> x1 "CSE - aggressive"
-; V40 cse1 [V40,T09] ( 4, 3.23) long -> x25 "CSE - aggressive"
+; V37 tmp28 [V37,T11] ( 3, 2.80) ref -> x2 "Field obj"
+; V38 PSPSym [V38,T18] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
+; V39 tmp30 [V39,T01] ( 11, 10.63) long -> x4 "Widened primary induction variable"
+; V40 cse0 [V40,T10] ( 3, 3.03) int -> x1 "CSE - aggressive"
;
-; Lcl frame size = 56
+; Lcl frame size = 64
G_M51382_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x80]!
- stp x19, x20, [sp, #0x48]
- stp x21, x22, [sp, #0x58]
- stp x23, x24, [sp, #0x68]
- str x25, [sp, #0x78]
+ stp x19, x20, [sp, #0x50]
+ stp x21, x22, [sp, #0x60]
+ stp x23, x24, [sp, #0x70]
mov fp, sp
- add x9, fp, #16
+ add x9, fp, #24
movi v16.16b, #0
stp q16, q16, [x9]
str xzr, [x9, #0x20]
add x5, sp, #128
- str x5, [fp, #0x40] // [V38 PSPSym]
- str w4, [fp, #0x3C] // [V03 arg3]
+ str x5, [fp, #0x48] // [V38 PSPSym]
+ str w4, [fp, #0x44] // [V03 arg3]
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
@@ -74,9 +73,9 @@ G_M51382_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x21, x2
; byrRegs +[x21]
mov w22, w3
- ;; size=68 bbWeight=1 PerfScore 13.00
-G_M51382_IG02: ; bbWeight=1, gcVars=0000000001000000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
- ; GC ptr vars +{V08 V24}
+ ;; size=64 bbWeight=1 PerfScore 12.00
+G_M51382_IG02: ; bbWeight=1, gcVars=0000000000800000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
+ ; GC ptr vars +{V08 V23}
ldr w0, [x19, #0x40]
cmp w0, #4
cset x0, le
@@ -107,10 +106,10 @@ G_M51382_IG04: ; bbWeight=1.01, gcrefRegs=180000 {x19 x20}, byrefRegs=A00
;; size=8 bbWeight=1.01 PerfScore 1.51
G_M51382_IG05: ; bbWeight=1.01, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
; byrRegs -[x23]
- stp xzr, xzr, [fp, #0x18]
- stp xzr, xzr, [fp, #0x28]
- add x23, fp, #24 // [V04 loc0]
- mov w4, wzr
+ stp xzr, xzr, [fp, #0x20]
+ stp xzr, xzr, [fp, #0x30]
+ add x23, fp, #32 // [V04 loc0]
+ mov x4, xzr
b G_M51382_IG09
;; size=20 bbWeight=1.01 PerfScore 4.05
G_M51382_IG06: ; bbWeight=0.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=1A00000 {x21 x23 x24}, byref
@@ -139,7 +138,7 @@ G_M51382_IG07: ; bbWeight=0.93, gcrefRegs=180000 {x19 x20}, byrefRegs=200
; byrRegs -[x23]
cmp w4, w22
bhs G_M51382_IG17
- lsl x2, x25, #3
+ lsl x2, x4, #3
ldr x2, [x21, x2]
; gcrRegs +[x2]
ldrsb wzr, [x2]
@@ -150,7 +149,8 @@ G_M51382_IG08: ; bbWeight=1.08, gcrefRegs=180000 {x19 x20}, byrefRegs=200
; gcrRegs -[x2]
str x5, [x24]
add w4, w4, #1
- ;; size=8 bbWeight=1.08 PerfScore 1.62
+ mov w4, w4
+ ;; size=12 bbWeight=1.08 PerfScore 2.16
G_M51382_IG09: ; bbWeight=2.08, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
; byrRegs -[x5]
ldr w2, [x19, #0x40]
@@ -168,12 +168,11 @@ G_M51382_IG10: ; bbWeight=1.08, gcrefRegs=180000 {x19 x20}, byrefRegs=200
add x2, x2, #16
; gcrRegs -[x2]
; byrRegs +[x2]
- mov w25, w4
- lsl x0, x25, #2
+ lsl x0, x4, #2
ldr w2, [x2, x0]
; byrRegs -[x2]
tbnz w2, #0, G_M51382_IG07
- ;; size=44 bbWeight=1.08 PerfScore 16.17
+ ;; size=40 bbWeight=1.08 PerfScore 15.63
G_M51382_IG11: ; bbWeight=0.14, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
b G_M51382_IG16
;; size=4 bbWeight=0.14 PerfScore 0.14
@@ -215,21 +214,20 @@ G_M51382_IG14: ; bbWeight=0.13, gcrefRegs=500000 {x20 x22}, byrefRegs=000
; gcr arg pop 0
;; size=20 bbWeight=0.13 PerfScore 1.04
G_M51382_IG15: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
- ; GC ptr vars -{V08 V24}
- ldr x25, [sp, #0x78]
- ldp x23, x24, [sp, #0x68]
- ldp x21, x22, [sp, #0x58]
- ldp x19, x20, [sp, #0x48]
+ ; GC ptr vars -{V08 V23}
+ ldp x23, x24, [sp, #0x70]
+ ldp x21, x22, [sp, #0x60]
+ ldp x19, x20, [sp, #0x50]
ldp fp, lr, [sp], #0x80
ret lr
- ;; size=24 bbWeight=1 PerfScore 7.00
-G_M51382_IG16: ; bbWeight=0.14, gcVars=0000000001000000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
+ ;; size=20 bbWeight=1 PerfScore 5.00
+G_M51382_IG16: ; bbWeight=0.14, gcVars=0000000000800000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
; gcrRegs -[x0] +[x19-x20]
; byrRegs +[x21]
- ; GC ptr vars +{V08 V24}
+ ; GC ptr vars +{V08 V23}
cmp w4, w22
bhs G_M51382_IG17
- lsl x0, x25, #3
+ lsl x0, x4, #3
add x5, x21, x0
; byrRegs +[x5]
b G_M51382_IG08
@@ -237,24 +235,23 @@ G_M51382_IG16: ; bbWeight=0.14, gcVars=0000000001000000 {V08}, gcrefRegs=
G_M51382_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19-x20]
; byrRegs -[x5 x21]
- ; GC ptr vars -{V08 V24}
+ ; GC ptr vars -{V08 V23}
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-G_M51382_IG18: ; bbWeight=0, gcVars=0000000001000000 {V08}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M51382_IG18: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; gcrRegs +[x0]
- ; GC ptr vars +{V08 V24}
+ ; GC ptr vars +{V08 V23}
stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- stp x23, x24, [sp, #0x38]
- str x25, [sp, #0x48]
- ldr x1, [x1, #-0x40]
- str x1, [sp, #0x10]
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
+ stp x23, x24, [sp, #0x40]
+ ldr x1, [x1, #-0x38]
+ str x1, [sp, #0x18]
sub fp, x1, #128
- ;; size=32 bbWeight=0 PerfScore 0.00
-G_M51382_IG19: ; bbWeight=0, gcVars=0000000001000000 {V08}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M51382_IG19: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
mov x1, x0
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -272,32 +269,30 @@ G_M51382_IG19: ; bbWeight=0, gcVars=0000000001000000 {V08}, gcrefRegs=000
b G_M51382_IG21
;; size=36 bbWeight=0 PerfScore 0.00
G_M51382_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V08 V24}
- str x1, [fp, #0x10] // [V08 loc4]
+ ; GC ptr vars -{V08 V23}
+ str x1, [fp, #0x18] // [V08 loc4]
; GC ptr vars +{V08}
- ldr w4, [fp, #0x3C] // [V03 arg3]
+ ldr w4, [fp, #0x44] // [V03 arg3]
tst w4, #0xD1FFAB1E
cset x0, eq
;; size=16 bbWeight=0 PerfScore 0.00
-G_M51382_IG21: ; bbWeight=0, gcVars=0000000001000000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet epilog, nogc
+G_M51382_IG21: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet epilog, nogc
; gcrRegs -[x1]
- ldr x25, [sp, #0x48]
- ldp x23, x24, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
+ ldp x23, x24, [sp, #0x40]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x50
ret lr
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M51382_IG22: ; bbWeight=0, gcVars=0000000001000000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M51382_IG22: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- stp x23, x24, [sp, #0x38]
- str x25, [sp, #0x48]
...
-20 (-3.23%) : 246694.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
@@ -12,28 +12,28 @@
; V00 this [V00,T00] ( 10, 11.80) ref -> x19 this class-hnd single-def <System.Reflection.MethodBaseInvoker>
; V01 arg1 [V01,T05] ( 5, 3.60) ref -> x20 class-hnd single-def <System.Object>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Object]>
-; V03 arg3 [V03,T09] ( 3, 2 ) int -> [fp+0x3C] EH-live single-def
-; V04 loc0 [V04 ] ( 2, 2 ) struct (32) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.MethodBase+StackAllocatedByRefs>
-; V05 loc1 [V05,T10] ( 4, 3.40) long -> x23
-; V06 loc2 [V06,T01] ( 9, 11.80) int -> x4
+; V03 arg3 [V03,T08] ( 3, 2 ) int -> [fp+0x44] EH-live single-def
+; V04 loc0 [V04 ] ( 2, 2 ) struct (32) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.MethodBase+StackAllocatedByRefs>
+; V05 loc1 [V05,T09] ( 4, 3.40) long -> x23
+;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Object>
-; V08 loc4 [V08,T22] ( 2, 0 ) ref -> [fp+0x10] must-init class-hnd EH-live single-def <<unknown class>>
+; V08 loc4 [V08,T21] ( 2, 0 ) ref -> [fp+0x18] must-init class-hnd EH-live single-def <<unknown class>>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T15] ( 2, 2.80) long -> x24
+; V10 tmp1 [V10,T14] ( 2, 2.80) long -> x24
;* V11 tmp2 [V11 ] ( 0, 0 ) long -> zero-ref
;* V12 tmp3 [V12 ] ( 0, 0 ) struct ( 8) zero-ref <System.ByReference>
-; V13 tmp4 [V13,T23] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
-; V14 tmp5 [V14,T18] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
+; V13 tmp4 [V13,T22] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
+; V14 tmp5 [V14,T17] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
-; V16 tmp7 [V16,T21] ( 3, 0 ) int -> x0
+; V16 tmp7 [V16,T20] ( 3, 0 ) int -> x0
;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
-; V18 tmp9 [V18,T19] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V19 tmp10 [V19,T16] ( 3, 2 ) ref -> x0 "guarded devirt return temp"
+; V18 tmp9 [V18,T18] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V19 tmp10 [V19,T15] ( 3, 2 ) ref -> x0 "guarded devirt return temp"
; V20 tmp11 [V20,T04] ( 5, 6.80) ref -> x22 single-def "guarded devirt arg temp"
;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <System.Reflection.MethodBaseInvoker>
; V22 tmp13 [V22,T03] ( 6, 8 ) byref -> x23 single-def "Inlining Arg"
-; V23 tmp14 [V23,T11] ( 2, 3 ) byref -> x24 single-def "Inlining Arg"
-; V24 tmp15 [V24,T12] ( 2, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
+; V23 tmp14 [V23,T10] ( 2, 3 ) byref -> x24 single-def "Inlining Arg"
+; V24 tmp15 [V24,T11] ( 2, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
;* V25 tmp16 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V26 tmp17 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ByReference>
;* V27 tmp18 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Object>
@@ -42,30 +42,29 @@
;* V30 tmp21 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ByReference>
; V31 tmp22 [V31,T06] ( 3, 2.40) byref -> x21 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
; V32 tmp23 [V32,T07] ( 3, 2.40) int -> x22 single-def "field V02._length (fldOffset=0x8)" P-INDEP
-; V33 tmp24 [V33,T13] ( 3, 2.80) byref -> x5 "field V12.Value (fldOffset=0x0)" P-INDEP
-; V34 tmp25 [V34,T14] ( 2, 2.80) byref -> x5 "field V26.Value (fldOffset=0x0)" P-INDEP
-; V35 tmp26 [V35,T24] ( 2, 0 ) byref -> x5 "field V30.Value (fldOffset=0x0)" P-INDEP
+; V33 tmp24 [V33,T12] ( 3, 2.80) byref -> x5 "field V12.Value (fldOffset=0x0)" P-INDEP
+; V34 tmp25 [V34,T13] ( 2, 2.80) byref -> x5 "field V26.Value (fldOffset=0x0)" P-INDEP
+; V35 tmp26 [V35,T23] ( 2, 0 ) byref -> x5 "field V30.Value (fldOffset=0x0)" P-INDEP
; V36 tmp27 [V36,T02] ( 3, 8.40) ref -> x2 "arr expr"
-; V37 tmp28 [V37,T20] ( 3, 0 ) ref -> x0 "Field obj"
-; V38 PSPSym [V38,T17] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
-; V39 cse0 [V39,T08] ( 4, 4.20) long -> x25 "CSE - aggressive"
+; V37 tmp28 [V37,T19] ( 3, 0 ) ref -> x0 "Field obj"
+; V38 PSPSym [V38,T16] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
+; V39 tmp30 [V39,T01] ( 11, 13.20) long -> x4 "Widened primary induction variable"
;
-; Lcl frame size = 56
+; Lcl frame size = 64
G_M51382_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x80]!
- stp x19, x20, [sp, #0x48]
- stp x21, x22, [sp, #0x58]
- stp x23, x24, [sp, #0x68]
- str x25, [sp, #0x78]
+ stp x19, x20, [sp, #0x50]
+ stp x21, x22, [sp, #0x60]
+ stp x23, x24, [sp, #0x70]
mov fp, sp
- add x9, fp, #16
+ add x9, fp, #24
movi v16.16b, #0
stp q16, q16, [x9]
str xzr, [x9, #0x20]
add x5, sp, #128
- str x5, [fp, #0x40] // [V38 PSPSym]
- str w4, [fp, #0x3C] // [V03 arg3]
+ str x5, [fp, #0x48] // [V38 PSPSym]
+ str w4, [fp, #0x44] // [V03 arg3]
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
@@ -73,9 +72,9 @@ G_M51382_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x21, x2
; byrRegs +[x21]
mov w22, w3
- ;; size=68 bbWeight=1 PerfScore 13.00
-G_M51382_IG02: ; bbWeight=1, gcVars=0000000000400000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
- ; GC ptr vars +{V08 V22}
+ ;; size=64 bbWeight=1 PerfScore 12.00
+G_M51382_IG02: ; bbWeight=1, gcVars=0000000000200000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
+ ; GC ptr vars +{V08}
ldr w0, [x19, #0x40]
cmp w0, #4
cset x0, le
@@ -127,10 +126,10 @@ G_M51382_IG04: ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=
;; size=48 bbWeight=0.50 PerfScore 6.25
G_M51382_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
; byrRegs -[x23]
- stp xzr, xzr, [fp, #0x18]
- stp xzr, xzr, [fp, #0x28]
- add x23, fp, #24 // [V04 loc0]
- mov w4, wzr
+ stp xzr, xzr, [fp, #0x20]
+ stp xzr, xzr, [fp, #0x30]
+ add x23, fp, #32 // [V04 loc0]
+ mov x4, xzr
b G_M51382_IG08
;; size=20 bbWeight=1 PerfScore 4.00
G_M51382_IG06: ; bbWeight=1.40, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
@@ -144,21 +143,21 @@ G_M51382_IG06: ; bbWeight=1.40, gcrefRegs=180000 {x19 x20}, byrefRegs=200
add x2, x2, #16
; gcrRegs -[x2]
; byrRegs +[x2]
- mov w25, w4
- lsl x3, x25, #2
+ lsl x3, x4, #2
ldr w2, [x2, x3]
; byrRegs -[x2]
tbnz w2, #0, G_M51382_IG14
cmp w4, w22
bhs G_M51382_IG13
- lsl x2, x25, #3
+ lsl x2, x4, #3
add x5, x21, x2
; byrRegs +[x5]
- ;; size=60 bbWeight=1.40 PerfScore 25.20
+ ;; size=56 bbWeight=1.40 PerfScore 24.50
G_M51382_IG07: ; bbWeight=1.40, gcrefRegs=180000 {x19 x20}, byrefRegs=200020 {x5 x21}, byref
str x5, [x24]
add w4, w4, #1
- ;; size=8 bbWeight=1.40 PerfScore 2.10
+ mov w4, w4
+ ;; size=12 bbWeight=1.40 PerfScore 2.80
G_M51382_IG08: ; bbWeight=2.40, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
; byrRegs -[x5]
ldr w2, [x19, #0x40]
@@ -204,26 +203,25 @@ G_M51382_IG11: ; bbWeight=0.40, gcrefRegs=500000 {x20 x22}, byrefRegs=000
; gcr arg pop 0
;; size=20 bbWeight=0.40 PerfScore 3.20
G_M51382_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
- ; GC ptr vars -{V08 V22}
- ldr x25, [sp, #0x78]
- ldp x23, x24, [sp, #0x68]
- ldp x21, x22, [sp, #0x58]
- ldp x19, x20, [sp, #0x48]
+ ; GC ptr vars -{V08}
+ ldp x23, x24, [sp, #0x70]
+ ldp x21, x22, [sp, #0x60]
+ ldp x19, x20, [sp, #0x50]
ldp fp, lr, [sp], #0x80
ret lr
- ;; size=24 bbWeight=1 PerfScore 7.00
+ ;; size=20 bbWeight=1 PerfScore 5.00
G_M51382_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M51382_IG14: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
+G_M51382_IG14: ; bbWeight=0, gcVars=0000000000200000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
; gcrRegs +[x19-x20]
; byrRegs +[x21]
- ; GC ptr vars +{V08 V22}
+ ; GC ptr vars +{V08}
cmp w4, w22
bhs G_M51382_IG13
- lsl x0, x25, #3
+ lsl x0, x4, #3
ldr x0, [x21, x0]
; gcrRegs +[x0]
ldrsb wzr, [x0]
@@ -235,15 +233,14 @@ G_M51382_IG15: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
; gcrRegs -[x19-x20]
; byrRegs -[x5 x21]
stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- stp x23, x24, [sp, #0x38]
- str x25, [sp, #0x48]
- ldr x1, [x1, #-0x40]
- str x1, [sp, #0x10]
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
+ stp x23, x24, [sp, #0x40]
+ ldr x1, [x1, #-0x38]
+ str x1, [sp, #0x18]
sub fp, x1, #128
- ;; size=32 bbWeight=0 PerfScore 0.00
-G_M51382_IG16: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M51382_IG16: ; bbWeight=0, gcVars=0000000000200000 {V08}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
mov x1, x0
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -261,32 +258,30 @@ G_M51382_IG16: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=000
b G_M51382_IG18
;; size=36 bbWeight=0 PerfScore 0.00
G_M51382_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V08 V22}
- str x1, [fp, #0x10] // [V08 loc4]
+ ; GC ptr vars -{V08}
+ str x1, [fp, #0x18] // [V08 loc4]
; GC ptr vars +{V08}
- ldr w4, [fp, #0x3C] // [V03 arg3]
+ ldr w4, [fp, #0x44] // [V03 arg3]
tst w4, #0xD1FFAB1E
cset x0, eq
;; size=16 bbWeight=0 PerfScore 0.00
-G_M51382_IG18: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet epilog, nogc
+G_M51382_IG18: ; bbWeight=0, gcVars=0000000000200000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet epilog, nogc
; gcrRegs -[x1]
- ldr x25, [sp, #0x48]
- ldp x23, x24, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
+ ldp x23, x24, [sp, #0x40]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x50
ret lr
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M51382_IG19: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M51382_IG19: ; bbWeight=0, gcVars=0000000000200000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- stp x23, x24, [sp, #0x38]
- str x25, [sp, #0x48]
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
+ stp x23, x24, [sp, #0x40]
add x3, fp, #128
- str x3, [sp, #0x10]
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M51382_IG20: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ str x3, [sp, #0x18]
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M51382_IG20: ; bbWeight=0, gcVars=0000000000200000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #2 LSL #32
@@ -295,7 +290,7 @@ G_M51382_IG20: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=000
; gcr arg pop 0
mov x19, x0
...
+24 (+40.00%) : 51389.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
@@ -10,11 +10,12 @@
;
; V00 arg0 [V00,T01] ( 5, 26.53) int -> x0
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 48.05) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 12.76) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 13.76) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V06 cse0 [V06,T04] ( 2, 12.69) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 25.53) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T00] ( 6, 59.74) long -> x3 "Widened primary induction variable"
+; V07 cse0 [V07,T04] ( 2, 12.69) int -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -24,29 +25,38 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0
ble G_M1770_IG05
- ;; size=12 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG03: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
+ mov x3, xzr
movz w4, #0xD1FFAB1E
movk w4, #0xD1FFAB1E LSL #16
- ;; size=8 bbWeight=0.92 PerfScore 0.92
+ ;; size=12 bbWeight=0.92 PerfScore 1.38
G_M1770_IG04: ; bbWeight=11.76, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2
+ bhs G_M1770_IG06
+ lsl x5, x3, #1
+ ldrh w5, [x1, x5]
eor w0, w5, w0
mul w0, w0, w4
add w3, w3, #1
+ mov w3, w3
cmp w3, w2
blt G_M1770_IG04
- ;; size=24 bbWeight=11.76 PerfScore 88.23
+ ;; size=40 bbWeight=11.76 PerfScore 123.52
G_M1770_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 94.65, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
+; Total bytes of code 84, prolog size 8, PerfScore 129.90, instruction count 21, allocated bytes for code 84 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
; ============================================================
Unwind Info:
@@ -57,7 +67,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+40.00%) : 599219.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
@@ -10,11 +10,12 @@
;
; V00 arg0 [V00,T01] ( 5, 32.07) int -> x0
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 59.15) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 15.54) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 16.54) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V06 cse0 [V06,T04] ( 2, 15.47) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 31.07) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T00] ( 6, 73.62) long -> x3 "Widened primary induction variable"
+; V07 cse0 [V07,T04] ( 2, 15.47) int -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -24,29 +25,38 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0
ble G_M1770_IG05
- ;; size=12 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG03: ; bbWeight=0.94, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
+ mov x3, xzr
movz w4, #0xD1FFAB1E
movk w4, #0xD1FFAB1E LSL #16
- ;; size=8 bbWeight=0.94 PerfScore 0.94
+ ;; size=12 bbWeight=0.94 PerfScore 1.40
G_M1770_IG04: ; bbWeight=14.54, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2
+ bhs G_M1770_IG06
+ lsl x5, x3, #1
+ ldrh w5, [x1, x5]
eor w0, w5, w0
mul w0, w0, w4
add w3, w3, #1
+ mov w3, w3
cmp w3, w2
blt G_M1770_IG04
- ;; size=24 bbWeight=14.54 PerfScore 109.03
+ ;; size=40 bbWeight=14.54 PerfScore 152.64
G_M1770_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 115.46, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
+; Total bytes of code 84, prolog size 8, PerfScore 159.04, instruction count 21, allocated bytes for code 84 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
; ============================================================
Unwind Info:
@@ -57,7 +67,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+40.00%) : 88112.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
@@ -10,11 +10,12 @@
;
; V00 arg0 [V00,T01] ( 5, 23.78) int -> x0
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 42.55) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 11.39) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 12.39) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V06 cse0 [V06,T04] ( 2, 11.30) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 22.78) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T00] ( 6, 52.85) long -> x3 "Widened primary induction variable"
+; V07 cse0 [V07,T04] ( 2, 11.30) int -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -24,29 +25,38 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0
ble G_M1770_IG05
- ;; size=12 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG03: ; bbWeight=0.91, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
+ mov x3, xzr
movz w4, #0xD1FFAB1E
movk w4, #0xD1FFAB1E LSL #16
- ;; size=8 bbWeight=0.91 PerfScore 0.91
+ ;; size=12 bbWeight=0.91 PerfScore 1.37
G_M1770_IG04: ; bbWeight=10.39, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2
+ bhs G_M1770_IG06
+ lsl x5, x3, #1
+ ldrh w5, [x1, x5]
eor w0, w5, w0
mul w0, w0, w4
add w3, w3, #1
+ mov w3, w3
cmp w3, w2
blt G_M1770_IG04
- ;; size=24 bbWeight=10.39 PerfScore 77.91
+ ;; size=40 bbWeight=10.39 PerfScore 109.07
G_M1770_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 84.32, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
+; Total bytes of code 84, prolog size 8, PerfScore 115.44, instruction count 21, allocated bytes for code 84 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
; ============================================================
Unwind Info:
@@ -57,7 +67,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
-28 (-12.50%) : 173935.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
@@ -8,28 +8,32 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 5, 4.50) ref -> x0 this class-hnd single-def <System.Xml.XmlSubtreeReader>
-; V01 arg1 [V01,T04] ( 3, 6 ) ref -> x1 class-hnd single-def <System.String>
-; V02 arg2 [V02,T07] ( 3, 4 ) ref -> x2 class-hnd single-def <System.String>
-; V03 loc0 [V03,T01] ( 9, 22.50) int -> x14
-; V04 loc1 [V04,T17] ( 2, 1 ) ref -> x4 class-hnd exact <<unknown class>>
+; V00 this [V00,T07] ( 5, 4.50) ref -> x0 this class-hnd single-def <System.Xml.XmlSubtreeReader>
+; V01 arg1 [V01,T06] ( 3, 6 ) ref -> x1 class-hnd single-def <System.String>
+; V02 arg2 [V02,T09] ( 3, 4 ) ref -> x2 class-hnd single-def <System.String>
+; V03 loc0 [V03,T13] ( 3, 1.50) int -> x15
+; V04 loc1 [V04,T18] ( 2, 1 ) ref -> x2 class-hnd exact <<unknown class>>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T09] ( 3, 3 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
-; V07 tmp2 [V07,T14] ( 2, 2 ) ref -> x12 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
+;* V06 tmp1 [V06,T19] ( 0, 0 ) ref -> zero-ref class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
+; V07 tmp2 [V07,T14] ( 2, 2 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V10 tmp5 [V10,T00] ( 3, 24 ) ref -> x12 "arr expr"
-;* V11 tmp6 [V11,T08] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V12 tmp7 [V12,T18] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V13 tmp8 [V13,T10] ( 3, 3 ) ref -> x12 "arr expr"
-; V14 tmp9 [V14,T12] ( 3, 3 ) int -> xip0 "index expr"
-; V15 tmp10 [V15,T11] ( 3, 3 ) ref -> x3 "arr expr"
+; V10 tmp5 [V10,T00] ( 3, 24 ) ref -> xip0 "arr expr"
+;* V11 tmp6 [V11,T10] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V12 tmp7 [V12,T20] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V13 tmp8 [V13,T21] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V14 tmp9 [V14,T11] ( 3, 3 ) int -> x15 "index expr"
+;* V15 tmp10 [V15,T22] ( 0, 0 ) ref -> zero-ref "arr expr"
; V16 tmp11 [V16,T15] ( 2, 2 ) int -> x14 "index expr"
-; V17 cse0 [V17,T02] ( 4, 10.50) ref -> x4 "CSE - aggressive"
-; V18 cse1 [V18,T13] ( 5, 2.50) int -> x1 "CSE - aggressive"
-; V19 cse2 [V19,T03] ( 5, 6.50) ref -> x3 hoist "CSE - aggressive"
-; V20 cse3 [V20,T06] ( 4, 6.50) int -> x15 "CSE - aggressive"
-; V21 cse4 [V21,T16] ( 3, 1.50) long -> x2 "CSE - moderate"
+; V17 tmp12 [V17,T01] ( 7, 21.50) long -> x15 "Widened primary induction variable"
+; V18 cse0 [V18,T03] ( 3, 10 ) ref -> xip0 "CSE - aggressive"
+; V19 cse1 [V19,T12] ( 5, 2.50) int -> x1 "CSE - aggressive"
+; V20 cse2 [V20,T04] ( 2, 5 ) ref -> x12 hoist "CSE - aggressive"
+; V21 cse3 [V21,T08] ( 4, 6.50) int -> x14 "CSE - aggressive"
+; V22 cse4 [V22,T16] ( 3, 1.50) long -> x14 "CSE - moderate"
+; V23 cse5 [V23,T17] ( 3, 1.50) long -> x5 "CSE - moderate"
+; V24 cse6 [V24,T05] ( 4, 9 ) int -> x3 "CSE - aggressive"
+; V25 cse7 [V25,T02] ( 6, 10 ) byref -> x4 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -39,95 +43,80 @@ G_M23254_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M23254_IG02: ; bbWeight=1, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x2]
- mov w14, wzr
- ldr w15, [x0, #0x58]
- cmp w15, #0
+ ldr w14, [x0, #0x58]
+ cmp w14, #0
ble G_M23254_IG06
- ldr x3, [x0, #0x20]
- ; gcrRegs +[x3]
+ mov x15, xzr
+ ldr x12, [x0, #0x20]
+ ; gcrRegs +[x12]
;; size=20 bbWeight=1 PerfScore 8.00
-G_M23254_IG03: ; bbWeight=4, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz
- mov x12, x3
- ; gcrRegs +[x12]
- ldr wip0, [x12, #0x08]
- cmp w14, wip0
+G_M23254_IG03: ; bbWeight=4, gcrefRegs=1007 {x0 x1 x2 x12}, byrefRegs=0000 {}, byref, isz
+ mov xip0, x12
+ ; gcrRegs +[xip0]
+ ldr w3, [xip0, #0x08]
+ cmp w15, w3
bhs G_M23254_IG10
- add x12, x12, #16
- ; gcrRegs -[x12]
- ; byrRegs +[x12]
- ldr x4, [x12, w14, UXTW #3]
- ; gcrRegs +[x4]
- ldr x12, [x4, #0x10]
- ; gcrRegs +[x12]
- ; byrRegs -[x12]
- cmp x12, x1
+ add x4, xip0, #16
+ ; byrRegs +[x4]
+ lsl xip0, x15, #3
+ ; gcrRegs -[xip0]
+ ldr xip0, [x4, xip0]
+ ; gcrRegs +[xip0]
+ ldr x5, [xip0, #0x10]
+ ; gcrRegs +[x5]
+ cmp x5, x1
bne G_M23254_IG05
- ;; size=36 bbWeight=4 PerfScore 52.00
-G_M23254_IG04: ; bbWeight=2, gcrefRegs=001F {x0 x1 x2 x3 x4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x12]
- ldr x12, [x4, #0x08]
- ; gcrRegs +[x12]
- cmp x12, x2
+ ;; size=40 bbWeight=4 PerfScore 56.00
+G_M23254_IG04: ; bbWeight=2, gcrefRegs=11007 {x0 x1 x2 x12 xip0}, byrefRegs=0010 {x4}, byref, isz
+ ; gcrRegs -[x5]
+ ldr xip0, [xip0, #0x08]
+ cmp xip0, x2
beq G_M23254_IG07
;; size=12 bbWeight=2 PerfScore 9.00
-G_M23254_IG05: ; bbWeight=4, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x4 x12]
- add w14, w14, #1
- cmp w14, w15
+G_M23254_IG05: ; bbWeight=4, gcrefRegs=1007 {x0 x1 x2 x12}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[xip0]
+ ; byrRegs -[x4]
+ add w15, w15, #1
+ mov w15, w15
+ cmp w15, w14
blt G_M23254_IG03
- ;; size=12 bbWeight=4 PerfScore 8.00
+ ;; size=16 bbWeight=4 PerfScore 10.00
G_M23254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x0-x3]
+ ; gcrRegs -[x0-x2 x12]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M23254_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0019 {x0 x3 x4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0 x3-x4]
- sub w1, w15, #1
- cmp w14, w1
+G_M23254_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, gcvars, byref, isz
+ ; gcrRegs +[x0]
+ ; byrRegs +[x4]
+ sub w1, w14, #1
+ cmp w15, w1
bge G_M23254_IG08
- mov x15, x3
+ ubfiz x14, x15, #3, #32
+ ldr x2, [x4, x14]
+ ; gcrRegs +[x2]
+ sxtw w15, w1
+ cmp w15, w3
+ bhs G_M23254_IG10
+ ubfiz x5, x15, #3, #32
+ ldr x15, [x4, x5]
; gcrRegs +[x15]
- mov x12, x3
- ; gcrRegs +[x12]
- sxtw wip0, w1
- ldr w2, [x12, #0x08]
- cmp wip0, w2
- bhs G_M23254_IG10
- add x12, x12, #16
- ; gcrRegs -[x12]
- ; byrRegs +[x12]
- ubfiz x2, xip0, #3, #32
- ldr x12, [x12, x2]
- ; gcrRegs +[x12]
- ; byrRegs -[x12]
- ldr wip0, [x15, #0x08]
- cmp w14, wip0
- bhs G_M23254_IG10
- add x15, x15, #16
- ; gcrRegs -[x15]
- ; byrRegs +[x15]
- add x14, x15, x14, LSL #3
+ add x14, x4, x14
; byrRegs +[x14]
- mov x15, x12
- ; gcrRegs +[x15]
- ; byrRegs -[x15]
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x12 x15]
+ bl CORINFO_HELP_CHECKED_ASSIGN_REF
+ ; gcrRegs -[x15]
; byrRegs -[x14]
sxtw w14, w1
- ldr w15, [x3, #0x08]
- cmp w14, w15
+ cmp w14, w3
bhs G_M23254_IG10
- add x14, x3, #16
+ add x14, x4, x5
; byrRegs +[x14]
- add x14, x14, x2
- mov x15, x4
+ mov x15, x2
; gcrRegs +[x15]
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x3-x4 x15]
- ; byrRegs -[x14]
- ;; size=108 bbWeight=0.50 PerfScore 13.75
+ bl CORINFO_HELP_CHECKED_ASSIGN_REF
+ ; gcrRegs -[x2 x15]
+ ; byrRegs -[x4 x14]
+ ;; size=72 bbWeight=0.50 PerfScore 8.75
G_M23254_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
str w1, [x0, #0x58]
;; size=4 bbWeight=0.50 PerfScore 0.50
@@ -142,7 +131,7 @@ G_M23254_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 224, prolog size 8, PerfScore 94.75, instruction count 56, allocated bytes for code 224 (MethodHash=dfe8a529) for method System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
+; Total bytes of code 196, prolog size 8, PerfScore 95.75, instruction count 49, allocated bytes for code 196 (MethodHash=dfe8a529) for method System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
; ============================================================
Unwind Info:
@@ -153,7 +142,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
+ Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-3.82%) : 155487.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1+<>cDisplayClass200[byte]:<ShiftRotateDestinationAllLengths>b0(int):this (FullOpts)
@@ -10,11 +10,11 @@
;
; V00 this [V00,T05] ( 7, 9 ) ref -> x20 this class-hnd single-def <System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1+<>c__DisplayClass20_0[byte]>
; V01 arg1 [V01,T01] ( 5, 12 ) int -> x19 single-def
-; V02 loc0 [V02,T11] ( 7, 5 ) ref -> [fp+0x20] class-hnd EH-live spill-single-def <System.Buffers.BoundedMemory`1[byte]>
-; V03 loc1 [V03,T13] ( 3, 4 ) int -> x21 single-def
-; V04 loc2 [V04,T12] ( 7, 5 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Buffers.BoundedMemory`1[byte]>
+; V02 loc0 [V02,T10] ( 7, 5 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Buffers.BoundedMemory`1[byte]>
+; V03 loc1 [V03,T12] ( 3, 4 ) int -> x21 single-def
+; V04 loc2 [V04,T11] ( 7, 5 ) ref -> [fp+0x10] class-hnd EH-live spill-single-def <System.Buffers.BoundedMemory`1[byte]>
;* V05 loc3 [V05 ] ( 0, 0 ) byte -> zero-ref ld-addr-op
-; V06 loc4 [V06,T00] ( 7, 19 ) int -> x22
+;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref
;* V07 loc5 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[byte]>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Random>
@@ -29,8 +29,8 @@
;* V18 tmp10 [V18 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[byte]>
;* V19 tmp11 [V19 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op single-def "Inlining Arg" <System.Span`1[byte]>
;* V20 tmp12 [V20 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[byte]>
-; V21 tmp13 [V21,T19] ( 2, 4 ) int -> x25 "Inlining Arg"
-; V22 tmp14 [V22,T16] ( 2, 4 ) byref -> x24 single-def "Inlining Arg"
+; V21 tmp13 [V21,T18] ( 2, 4 ) int -> x25 "Inlining Arg"
+; V22 tmp14 [V22,T15] ( 2, 4 ) byref -> x24 single-def "Inlining Arg"
;* V23 tmp15 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp16 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp17 [V25 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[byte]>
@@ -38,51 +38,50 @@
;* V27 tmp19 [V27 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Span`1[byte]>
;* V28 tmp20 [V28 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[byte]>
;* V29 tmp21 [V29 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Span`1[byte]>
-;* V30 tmp22 [V30,T28] ( 0, 0 ) ubyte -> zero-ref "field V07.hasValue (fldOffset=0x0)" P-INDEP
-;* V31 tmp23 [V31,T29] ( 0, 0 ) byte -> zero-ref "field V07.value (fldOffset=0x1)" P-INDEP
+;* V30 tmp22 [V30,T27] ( 0, 0 ) ubyte -> zero-ref "field V07.hasValue (fldOffset=0x0)" P-INDEP
+;* V31 tmp23 [V31,T28] ( 0, 0 ) byte -> zero-ref "field V07.value (fldOffset=0x1)" P-INDEP
;* V32 tmp24 [V32 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP
;* V33 tmp25 [V33 ] ( 0, 0 ) int -> zero-ref single-def "field V11._length (fldOffset=0x8)" P-INDEP
-; V34 tmp26 [V34,T22] ( 2, 2 ) byref -> x4 "field V12._reference (fldOffset=0x0)" P-INDEP
-; V35 tmp27 [V35,T25] ( 2, 2 ) int -> x5 "field V12._length (fldOffset=0x8)" P-INDEP
+; V34 tmp26 [V34,T21] ( 2, 2 ) byref -> x4 "field V12._reference (fldOffset=0x0)" P-INDEP
+; V35 tmp27 [V35,T24] ( 2, 2 ) int -> x5 "field V12._length (fldOffset=0x8)" P-INDEP
;* V36 tmp28 [V36 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-DEP
;* V37 tmp29 [V37 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-DEP
-; V38 tmp30 [V38,T23] ( 2, 2 ) byref -> x0 "field V19._reference (fldOffset=0x0)" P-INDEP
-; V39 tmp31 [V39,T26] ( 2, 2 ) int -> x1 "field V19._length (fldOffset=0x8)" P-INDEP
-; V40 tmp32 [V40,T24] ( 2, 2 ) byref -> x24 single-def "field V20._reference (fldOffset=0x0)" P-INDEP
-; V41 tmp33 [V41,T27] ( 2, 2 ) int -> x25 single-def "field V20._length (fldOffset=0x8)" P-INDEP
+; V38 tmp30 [V38,T22] ( 2, 2 ) byref -> x0 "field V19._reference (fldOffset=0x0)" P-INDEP
+; V39 tmp31 [V39,T25] ( 2, 2 ) int -> x1 "field V19._length (fldOffset=0x8)" P-INDEP
+; V40 tmp32 [V40,T23] ( 2, 2 ) byref -> x24 single-def "field V20._reference (fldOffset=0x0)" P-INDEP
+; V41 tmp33 [V41,T26] ( 2, 2 ) int -> x25 single-def "field V20._length (fldOffset=0x8)" P-INDEP
;* V42 tmp34 [V42 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-DEP
;* V43 tmp35 [V43 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-DEP
;* V44 tmp36 [V44 ] ( 0, 0 ) byref -> zero-ref "field V26._reference (fldOffset=0x0)" P-DEP
;* V45 tmp37 [V45 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-DEP
-; V46 tmp38 [V46,T17] ( 2, 4 ) byref -> x0 "field V27._reference (fldOffset=0x0)" P-INDEP
-; V47 tmp39 [V47,T20] ( 2, 4 ) int -> x1 "field V27._length (fldOffset=0x8)" P-INDEP
+; V46 tmp38 [V46,T16] ( 2, 4 ) byref -> x0 "field V27._reference (fldOffset=0x0)" P-INDEP
+; V47 tmp39 [V47,T19] ( 2, 4 ) int -> x1 "field V27._length (fldOffset=0x8)" P-INDEP
;* V48 tmp40 [V48 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-DEP
;* V49 tmp41 [V49 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-DEP
-; V50 tmp42 [V50,T18] ( 2, 4 ) byref -> x0 "field V29._reference (fldOffset=0x0)" P-INDEP
-; V51 tmp43 [V51,T21] ( 2, 4 ) int -> x1 "field V29._length (fldOffset=0x8)" P-INDEP
+; V50 tmp42 [V50,T17] ( 2, 4 ) byref -> x0 "field V29._reference (fldOffset=0x0)" P-INDEP
+; V51 tmp43 [V51,T20] ( 2, 4 ) int -> x1 "field V29._length (fldOffset=0x8)" P-INDEP
; V52 tmp44 [V52,T09] ( 3, 6 ) ref -> x3 single-def "argument with side effect"
-; V53 tmp45 [V53,T04] ( 3, 12 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[byte]>
-; V54 PSPSym [V54,T30] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
-; V55 cse0 [V55,T14] ( 3, 4 ) long -> x23 "CSE - moderate"
-; V56 cse1 [V56,T15] ( 3, 4 ) long -> x26 "CSE - moderate"
-; V57 cse2 [V57,T10] ( 3, 6 ) long -> x27 "CSE - aggressive"
+; V53 tmp45 [V53,T04] ( 3, 12 ) struct ( 8) [fp+0x20] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[byte]>
+; V54 PSPSym [V54,T29] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
+; V55 tmp47 [V55,T00] ( 8, 21 ) long -> x22 "Widened primary induction variable"
+; V56 cse0 [V56,T13] ( 3, 4 ) long -> x23 "CSE - moderate"
+; V57 cse1 [V57,T14] ( 3, 4 ) long -> x26 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M22703_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
- stp x19, x20, [sp, #0x38]
- stp x21, x22, [sp, #0x48]
- stp x23, x24, [sp, #0x58]
- stp x25, x26, [sp, #0x68]
- str x27, [sp, #0x78]
+ stp fp, lr, [sp, #-0x70]!
+ stp x19, x20, [sp, #0x30]
+ stp x21, x22, [sp, #0x40]
+ stp x23, x24, [sp, #0x50]
+ stp x25, x26, [sp, #0x60]
mov fp, sp
- add x2, sp, #128
- str x2, [fp, #0x30] // [V54 PSPSym]
+ add x2, sp, #112
+ str x2, [fp, #0x28] // [V54 PSPSym]
mov x20, x0
; gcrRegs +[x20]
mov w19, w1
- ;; size=44 bbWeight=1 PerfScore 9.00
+ ;; size=40 bbWeight=1 PerfScore 8.00
G_M22703_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
ldr x0, [x20, #0x08]
; gcrRegs +[x0]
@@ -93,10 +92,10 @@ G_M22703_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ldr x2, [x2]
blr x2
; gcr arg pop 0
- str x0, [fp, #0x20] // [V02 loc0]
+ str x0, [fp, #0x18] // [V02 loc0]
; GC ptr vars +{V02}
;; size=32 bbWeight=1 PerfScore 10.00
-G_M22703_IG03: ; bbWeight=1, gcVars=0000000000000800 {V02}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+G_M22703_IG03: ; bbWeight=1, gcVars=0000000000000400 {V02}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
ldr x1, [x20, #0x08]
; gcrRegs +[x1]
@@ -124,14 +123,14 @@ G_M22703_IG03: ; bbWeight=1, gcVars=0000000000000800 {V02}, gcrefRegs=100
blr x2
; gcrRegs +[x0]
; gcr arg pop 0
- str x0, [fp, #0x18] // [V04 loc2]
+ str x0, [fp, #0x10] // [V04 loc2]
; GC ptr vars +{V04}
;; size=72 bbWeight=1 PerfScore 25.50
-G_M22703_IG04: ; bbWeight=1, gcVars=0000000000001800 {V02 V04}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+G_M22703_IG04: ; bbWeight=1, gcVars=0000000000000C00 {V02 V04}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
ldr x22, [x20, #0x10]
; gcrRegs +[x22]
- ldr x0, [fp, #0x20] // [V02 loc0]
+ ldr x0, [fp, #0x18] // [V02 loc0]
; gcrRegs +[x0]
ldr x1, [x0]
ldr x23, [x1, #0x48]
@@ -143,7 +142,7 @@ G_M22703_IG04: ; bbWeight=1, gcVars=0000000000001800 {V02 V04}, gcrefRegs
mov x24, x0
; byrRegs +[x24]
sxtw w25, w1
- ldr x0, [fp, #0x18] // [V04 loc2]
+ ldr x0, [fp, #0x10] // [V04 loc2]
; gcrRegs +[x0]
; byrRegs -[x0]
ldr x1, [x0]
@@ -168,7 +167,7 @@ G_M22703_IG04: ; bbWeight=1, gcVars=0000000000001800 {V02 V04}, gcrefRegs
; gcrRegs -[x0 x22]
; byrRegs -[x1 x4 x24]
; gcr arg pop 0
- mov w22, wzr
+ mov x22, xzr
;; size=88 bbWeight=1 PerfScore 38.00
G_M22703_IG05: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
cmp w22, w19
@@ -188,7 +187,7 @@ G_M22703_IG08: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcrRegs +[x24]
ldr x25, [x20, #0x18]
; gcrRegs +[x25]
- ldr x0, [fp, #0x20] // [V02 loc0]
+ ldr x0, [fp, #0x18] // [V02 loc0]
; gcrRegs +[x0]
ldr x1, [x23, #0x38]
blr x1
@@ -197,8 +196,7 @@ G_M22703_IG08: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcr arg pop 0
cmp w22, w1
bhs G_M22703_IG07
- mov w27, w22
- ldrsb w1, [x0, x27]
+ ldrsb w1, [x0, x22]
mov w2, w21
ldr x0, [x25, #0x08]
; gcrRegs +[x0]
@@ -208,7 +206,7 @@ G_M22703_IG08: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcrRegs -[x0 x25]
; gcr arg pop 0
sxtw w25, w0
- ldr x0, [fp, #0x18] // [V04 loc2]
+ ldr x0, [fp, #0x10] // [V04 loc2]
; gcrRegs +[x0]
ldr x1, [x26, #0x38]
blr x1
@@ -217,10 +215,10 @@ G_M22703_IG08: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcr arg pop 0
cmp w22, w1
bhs G_M22703_IG07
- ldrsb w2, [x0, x27]
- strb wzr, [fp, #0x28] // [V53 tmp45]
- strb wzr, [fp, #0x29] // [V53 tmp45+0x01]
- ldrh w3, [fp, #0x28] // [V53 tmp45]
+ ldrsb w2, [x0, x22]
+ strb wzr, [fp, #0x20] // [V53 tmp45]
+ strb wzr, [fp, #0x21] // [V53 tmp45+0x01]
+ ldrh w3, [fp, #0x20] // [V53 tmp45]
mov w1, w25
mov x0, x24
; gcrRegs +[x0]
@@ -231,12 +229,13 @@ G_M22703_IG08: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
blr x4
; gcrRegs -[x0 x24]
; gcr arg pop 0
- add w22, w22, #1
+ add w0, w22, #1
+ mov w22, w0
b G_M22703_IG05
;; size=124 bbWeight=2 PerfScore 104.00
G_M22703_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x20]
- ldr x0, [fp, #0x18] // [V04 loc2]
+ ldr x0, [fp, #0x10] // [V04 loc2]
; gcrRegs +[x0]
movz x11, #0xD1FFAB1E // code for <unknown method>
movk x11, #0xD1FFAB1E LSL #16
@@ -248,7 +247,7 @@ G_M22703_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
;; size=24 bbWeight=1 PerfScore 7.50
G_M22703_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x20] // [V02 loc0]
+ ldr x0, [fp, #0x18] // [V02 loc0]
; gcrRegs +[x0]
movz x11, #0xD1FFAB1E // code for <unknown method>
movk x11, #0xD1FFAB1E LSL #16
@@ -260,59 +259,55 @@ G_M22703_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
;; size=24 bbWeight=1 PerfScore 7.50
G_M22703_IG11: ; bbWeight=1, epilog, nogc, extend
- ldr x27, [sp, #0x78]
- ldp x25, x26, [sp, #0x68]
- ldp x23, x24, [sp, #0x58]
- ldp x21, x22, [sp, #0x48]
- ldp x19, x20, [sp, #0x38]
- ldp fp, lr, [sp], #0x80
+ ldp x25, x26, [sp, #0x60]
+ ldp x23, x24, [sp, #0x50]
+ ldp x21, x22, [sp, #0x40]
+ ldp x19, x20, [sp, #0x30]
+ ldp fp, lr, [sp], #0x70
ret lr
- ;; size=28 bbWeight=1 PerfScore 8.00
-G_M22703_IG12: ; bbWeight=0, gcVars=0000000000001800 {V02 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
- ; GC ptr vars +{V02 V04}
+ ;; size=24 bbWeight=1 PerfScore 6.00
+G_M22703_IG12: ; bbWeight=0, gcVars=0000000000000C00 {V02 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ; GC ptr vars +{V02 V04 V10}
stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- stp x23, x24, [sp, #0x38]
- stp x25, x26, [sp, #0x48]
- str x27, [sp, #0x58]
...
-24 (-3.37%) : 169134.dasm - System.Xml.Schema.FacetsChecker+FacetsCompiler:Preprocess(System.String):System.String (FullOpts)
@@ -8,42 +8,43 @@
; 3 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T10] ( 6, 6.50) ref -> x19 class-hnd single-def <System.String>
+; V00 arg0 [V00,T08] ( 6, 9.50) ref -> x19 class-hnd single-def <System.String>
; V01 loc0 [V01,T06] ( 15, 12.42) ref -> x20 class-hnd exact single-def <System.Text.StringBuilder>
-; V02 loc1 [V02,T17] ( 4, 3.50) int -> x22
-; V03 loc2 [V03,T08] ( 8, 11 ) int -> x23
+; V02 loc1 [V02,T18] ( 4, 3.50) int -> x22
+; V03 loc2 [V03,T09] ( 8, 11 ) int -> x23
; V04 loc3 [V04,T03] ( 11, 29 ) int -> x24
-; V05 loc4 [V05,T04] ( 2, 18 ) ushort -> x28
-; V06 loc5 [V06,T01] ( 8, 86 ) int -> [fp+0x1C]
+; V05 loc4 [V05,T04] ( 2, 18 ) ushort -> x27
+; V06 loc5 [V06,T13] ( 3, 6 ) int -> x27
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T11] ( 4, 8 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder>
+; V08 tmp1 [V08,T12] ( 4, 8 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder>
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.StringBuilder>
-; V10 tmp3 [V10,T20] ( 3, 2.46) int -> x0 "Inline stloc first use temp"
-; V11 tmp4 [V11,T18] ( 3, 2.46) ref -> x1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V10 tmp3 [V10,T21] ( 3, 2.46) int -> x0 "Inline stloc first use temp"
+; V11 tmp4 [V11,T19] ( 3, 2.46) ref -> x1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V12 tmp5 [V12,T05] ( 4, 15.96) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.StringBuilder>
-; V14 tmp7 [V14,T21] ( 3, 2.46) int -> x0 "Inline stloc first use temp"
-; V15 tmp8 [V15,T19] ( 3, 2.46) ref -> x1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V14 tmp7 [V14,T22] ( 3, 2.46) int -> x0 "Inline stloc first use temp"
+; V15 tmp8 [V15,T20] ( 3, 2.46) ref -> x1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V16 tmp9 [V16,T00] ( 3, 96 ) ref -> x0 "arr expr"
; V17 tmp10 [V17,T07] ( 3, 12 ) ref -> x2 "arr expr"
-; V18 cse0 [V18,T02] ( 4, 36 ) ref -> x3 "CSE - aggressive"
-; V19 cse1 [V19,T13] ( 3, 6 ) int -> x28 "CSE - aggressive"
-;* V20 cse2 [V20,T22] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
-; V21 cse3 [V21,T14] ( 3, 6 ) long -> [fp+0x10] spill-single-def "CSE - aggressive"
-; V22 cse4 [V22,T09] ( 5, 10 ) int -> x27 "CSE - aggressive"
-; V23 cse5 [V23,T16] ( 3, 4 ) int -> x21 "CSE - aggressive"
-; V24 cse6 [V24,T12] ( 3, 7 ) byref -> x26 hoist "CSE - aggressive"
-; V25 cse7 [V25,T15] ( 3, 6 ) int -> x25 "CSE - moderate"
+; V18 tmp11 [V18,T01] ( 7, 84 ) long -> x4 "Widened primary induction variable"
+; V19 cse0 [V19,T02] ( 4, 36 ) ref -> x3 "CSE - aggressive"
+; V20 cse1 [V20,T14] ( 3, 6 ) int -> x27 "CSE - aggressive"
+;* V21 cse2 [V21,T23] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V22 cse3 [V22,T15] ( 3, 6 ) long -> x28 "CSE - aggressive"
+; V23 cse4 [V23,T10] ( 5, 10 ) int -> x26 "CSE - aggressive"
+; V24 cse5 [V24,T17] ( 3, 4 ) int -> x21 "CSE - aggressive"
+; V25 cse6 [V25,T16] ( 3, 6 ) int -> x25 "CSE - aggressive"
+; V26 cse7 [V26,T11] ( 3, 10 ) byref -> x3 "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 0
G_M19789_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
- stp x25, x26, [sp, #0x50]
- stp x27, x28, [sp, #0x60]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
+ stp x23, x24, [sp, #0x30]
+ stp x25, x26, [sp, #0x40]
+ stp x27, x28, [sp, #0x50]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
@@ -100,26 +101,26 @@ G_M19789_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
sub w25, w22, #2
cmp w25, #0
ble G_M19789_IG17
- add x26, x19, #12
- ; byrRegs +[x26]
- ;; size=32 bbWeight=1 PerfScore 7.00
-G_M19789_IG05: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
- ldrh w3, [x26, w24, UXTW #2]
- cmp w3, #92
+ ;; size=28 bbWeight=1 PerfScore 6.50
+G_M19789_IG05: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ add x3, x19, #12
+ ; byrRegs +[x3]
+ ldrh w0, [x3, w24, UXTW #2]
+ cmp w0, #92
bne G_M19789_IG16
- ;; size=12 bbWeight=4 PerfScore 18.00
-G_M19789_IG06: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
- add w27, w24, #1
- cmp w27, w21
+ ;; size=16 bbWeight=4 PerfScore 20.00
+G_M19789_IG06: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0008 {x3}, byref, isz
+ add w26, w24, #1
+ cmp w26, w21
bhs G_M19789_IG24
- ldrh w28, [x26, w27, UXTW #2]
- cmp w28, #92
+ ldrh w27, [x3, w26, UXTW #2]
+ cmp w27, #92
bne G_M19789_IG08
- sxtw w24, w27
+ sxtw w24, w26
b G_M19789_IG16
;; size=32 bbWeight=2 PerfScore 16.00
G_M19789_IG07: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ; byrRegs -[x26]
+ ; byrRegs -[x3]
mov x0, x20
; gcrRegs +[x0]
mov w1, #94
@@ -132,86 +133,81 @@ G_M19789_IG07: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcr arg pop 0
b G_M19789_IG04
;; size=32 bbWeight=0.04 PerfScore 0.26
-G_M19789_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
- ; byrRegs +[x26]
- mov w4, wzr
+G_M19789_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
movz x3, #0xD1FFAB1E
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
ldr w3, [x3]
tbz w3, #0, G_M19789_IG25
- ;; size=24 bbWeight=2 PerfScore 12.00
-G_M19789_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
- movz x5, #0xD1FFAB1E
- movk x5, #0xD1FFAB1E LSL #16
- movk x5, #2 LSL #32
- str x5, [fp, #0x10] // [V21 cse3]
- ldr x3, [x5]
+ ;; size=20 bbWeight=2 PerfScore 11.00
+G_M19789_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ movz x28, #0xD1FFAB1E
+ movk x28, #0xD1FFAB1E LSL #16
+ movk x28, #2 LSL #32
+ ldr x3, [x28]
; gcrRegs +[x3]
ldr w0, [x3, #0x08]
cmp w0, #0
ble G_M19789_IG16
- ;; size=32 bbWeight=2 PerfScore 20.00
-G_M19789_IG10: ; bbWeight=16, gcrefRegs=180008 {x3 x19 x20}, byrefRegs=4000000 {x26}, byref, isz
+ mov x4, xzr
+ ;; size=32 bbWeight=2 PerfScore 19.00
+G_M19789_IG10: ; bbWeight=16, gcrefRegs=180008 {x3 x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x3
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w4, w1
bhs G_M19789_IG24
- ubfiz x1, x4, #4, #32
+ lsl x1, x4, #4
add x1, x1, #16
add x0, x0, x1
; gcrRegs -[x0]
; byrRegs +[x0]
ldrh w0, [x0, #0x08]
; byrRegs -[x0]
- cmp w0, w28
+ cmp w0, w27
beq G_M19789_IG12
add w4, w4, #1
+ mov w4, w4
ldr w0, [x3, #0x08]
- str w4, [fp, #0x1C] // [V06 loc5]
cmp w0, w4
- ldr w4, [fp, #0x1C] // [V06 loc5]
bgt G_M19789_IG10
- ;; size=64 bbWeight=16 PerfScore 312.00
-G_M19789_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref
+ ;; size=60 bbWeight=16 PerfScore 272.00
+G_M19789_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x3]
b G_M19789_IG16
;; size=4 bbWeight=4 PerfScore 4.00
-G_M19789_IG12: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
+G_M19789_IG12: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ mov w27, w4
cmp w23, w24
bge G_M19789_IG13
- str w4, [fp, #0x1C] // [V06 loc5]
sub w3, w24, w23
mov x0, x20
; gcrRegs +[x0]
mov x1, x19
; gcrRegs +[x1]
mov w2, w23
- movz x6, #0xD1FFAB1E // code for System.Text.StringBuilder:Append(System.String,int,int):System.Text.StringBuilder:this
- movk x6, #0xD1FFAB1E LSL #16
- movk x6, #1 LSL #32
- ldr x6, [x6]
- blr x6
+ movz x4, #0xD1FFAB1E // code for System.Text.StringBuilder:Append(System.String,int,int):System.Text.StringBuilder:this
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #1 LSL #32
+ ldr x4, [x4]
+ blr x4
; gcrRegs -[x1]
; gcr arg pop 0
- ldr w4, [fp, #0x1C] // [V06 loc5]
- ;; size=52 bbWeight=2 PerfScore 24.00
-G_M19789_IG13: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
+ ;; size=48 bbWeight=2 PerfScore 19.00
+G_M19789_IG13: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x5, [fp, #0x10] // [V21 cse3]
- ldr x2, [x5]
+ ldr x2, [x28]
; gcrRegs +[x2]
ldr w1, [x2, #0x08]
- cmp w4, w1
+ cmp w27, w1
bhs G_M19789_IG24
- ubfiz x1, x4, #4, #32
+ ubfiz x1, x27, #4, #32
add x1, x1, #16
ldr x1, [x2, x1]
; gcrRegs +[x1]
cbz x1, G_M19789_IG15
- ;; size=36 bbWeight=2 PerfScore 30.00
-G_M19789_IG14: ; bbWeight=1.99, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=4000000 {x26}, byref
+ ;; size=32 bbWeight=2 PerfScore 26.00
+G_M19789_IG14: ; bbWeight=1.99, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
ldr w2, [x1, #0x08]
add x1, x1, #12
@@ -228,17 +224,16 @@ G_M19789_IG14: ; bbWeight=1.99, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=
; byrRegs -[x1]
; gcr arg pop 0
;; size=32 bbWeight=1.99 PerfScore 18.91
-G_M19789_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref
- sxtw w24, w27
+G_M19789_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ sxtw w24, w26
add w23, w24, #1
;; size=8 bbWeight=2 PerfScore 2.00
-G_M19789_IG16: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
+G_M19789_IG16: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w24, w24, #1
cmp w24, w25
blt G_M19789_IG05
;; size=12 bbWeight=4 PerfScore 8.00
G_M19789_IG17: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x26]
cmp w23, w22
bge G_M19789_IG19
;; size=8 bbWeight=1 PerfScore 1.50
@@ -286,12 +281,12 @@ G_M19789_IG21: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ldr x1, [x1]
;; size=20 bbWeight=1 PerfScore 5.00
...
+20 (+41.67%) : 140941.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
@@ -8,10 +8,11 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 loc0 [V01,T00] ( 5, 17 ) int -> x2
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp3 [V05,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -21,24 +22,32 @@ G_M58764_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M58764_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0
ble G_M58764_IG04
+ mov x2, xzr
;; size=12 bbWeight=1 PerfScore 2.00
G_M58764_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w2, w1
+ bhs G_M58764_IG05
mov w3, #204
- strb w3, [x0, w2, UXTW #2]
+ strb w3, [x0, x2]
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
blt G_M58764_IG03
- ;; size=20 bbWeight=4 PerfScore 14.00
+ ;; size=32 bbWeight=4 PerfScore 22.00
G_M58764_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M58764_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 48, prolog size 8, PerfScore 19.50, instruction count 12, allocated bytes for code 48 (MethodHash=de8b1a73) for method System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
+; Total bytes of code 68, prolog size 8, PerfScore 27.50, instruction count 17, allocated bytes for code 68 (MethodHash=de8b1a73) for method System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
; ============================================================
Unwind Info:
@@ -49,7 +58,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+45.45%) : 222713.dasm - System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
@@ -8,10 +8,11 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 loc0 [V01,T00] ( 6, 21 ) int -> x2
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp3 [V05,T00] ( 7, 25 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -21,23 +22,31 @@ G_M39013_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M39013_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0
ble G_M39013_IG04
+ mov x2, xzr
;; size=12 bbWeight=1 PerfScore 2.00
G_M39013_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- strb w2, [x0, w2, UXTW #2]
+ cmp w2, w1
+ bhs G_M39013_IG05
+ strb w2, [x0, x2]
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
blt G_M39013_IG03
- ;; size=16 bbWeight=4 PerfScore 12.00
+ ;; size=28 bbWeight=4 PerfScore 20.00
G_M39013_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M39013_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 44, prolog size 8, PerfScore 17.50, instruction count 11, allocated bytes for code 44 (MethodHash=6c0d679a) for method System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 25.50, instruction count 16, allocated bytes for code 64 (MethodHash=6c0d679a) for method System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
; ============================================================
Unwind Info:
@@ -48,7 +57,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+46.15%) : 134063.dasm - System.Linq.Enumerable:Sumdouble,double:double (FullOpts)
@@ -9,9 +9,9 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[double]>
-; V01 loc0 [V01,T05] ( 4, 10 ) double -> d0
+; V01 loc0 [V01,T06] ( 4, 10 ) double -> d0
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[double]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x2
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) double -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -20,7 +20,8 @@
; V09 tmp4 [V09,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V10 tmp5 [V10,T04] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V11 tmp6 [V11,T02] ( 2, 5 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp7 [V12,T01] ( 3, 6 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V12 tmp7 [V12,T01] ( 4, 10 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V13 tmp8 [V13,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -31,24 +32,33 @@ G_M25021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M25021_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
movi v0.16b, #0
- mov w2, wzr
cmp w1, #0
ble G_M25021_IG04
+ mov x2, xzr
;; size=16 bbWeight=1 PerfScore 2.50
G_M25021_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr d16, [x0, w2, UXTW #3]
+ cmp w2, w1
+ bhs G_M25021_IG05
+ lsl x3, x2, #3
+ ldr d16, [x0, x3]
fadd d0, d16, d0
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
blt G_M25021_IG03
- ;; size=20 bbWeight=4 PerfScore 32.00
+ ;; size=36 bbWeight=4 PerfScore 44.00
G_M25021_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M25021_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 38.00, instruction count 13, allocated bytes for code 52 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 50.00, instruction count 19, allocated bytes for code 76 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
; ============================================================
Unwind Info:
@@ -59,7 +69,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
realworld.run.osx.arm64.checked.mch
-20 (-2.34%) : 199.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (FullOpts)
@@ -11,12 +11,12 @@
; V00 this [V00,T01] ( 14, 14 ) ref -> x19 this class-hnd single-def <System.Collections.Generic.Dictionary`2[int,System.__Canon]>
; V01 arg1 [V01,T08] ( 6, 6 ) int -> x20 single-def
; V02 arg2 [V02,T15] ( 3, 3 ) ubyte -> x2 single-def
-; V03 loc0 [V03,T04] ( 11, 12.04) ref -> x21 class-hnd exact single-def <<unknown class>>
+; V03 loc0 [V03,T04] ( 9, 12 ) ref -> x21 class-hnd exact single-def <<unknown class>>
; V04 loc1 [V04,T09] ( 6, 8 ) int -> x22
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V07 loc4 [V07 ] ( 0, 0 ) int -> zero-ref
-; V08 loc5 [V08,T00] ( 14, 19.08) int -> x20
+;* V08 loc5 [V08,T20] ( 0, 0 ) int -> zero-ref
; V09 loc6 [V09,T12] ( 6, 6 ) byref -> x26
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11,T19] ( 0, 0 ) int -> zero-ref
@@ -35,12 +35,15 @@
;* V24 tmp14 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp15 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V26 tmp16 [V26,T18] ( 2, 4 ) long -> x0 "argument with side effect"
-; V27 cse0 [V27,T05] ( 4, 11.88) long -> x23 "CSE - aggressive"
-; V28 cse1 [V28,T06] ( 14, 10 ) ref -> x1 multi-def "CSE - aggressive"
-; V29 cse2 [V29,T13] ( 3, 5.94) int -> x26 "CSE - aggressive"
-; V30 rat0 [V30,T16] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V31 rat1 [V31,T17] ( 3, 4 ) long -> x0 "runtime lookup"
-; V32 rat2 [V32,T14] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V27 tmp17 [V27,T21] ( 7, 0.23) long -> x20 "Widened primary induction variable"
+; V28 tmp18 [V28,T00] ( 6, 18.82) long -> x20 "Widened primary induction variable"
+; V29 cse0 [V29,T22] ( 4, 0.12) byref -> x23 "CSE - conservative"
+; V30 cse1 [V30,T05] ( 4, 11.88) long -> x23 "CSE - aggressive"
+; V31 cse2 [V31,T06] ( 14, 10 ) ref -> x1 multi-def "CSE - aggressive"
+; V32 cse3 [V32,T13] ( 3, 5.94) int -> x26 "CSE - aggressive"
+; V33 rat0 [V33,T16] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V34 rat1 [V34,T17] ( 3, 4 ) long -> x0 "runtime lookup"
+; V35 rat2 [V35,T14] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
@@ -171,28 +174,28 @@ G_M4165_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
movn x0, #0
mov w1, w20
cmp x1, #0
- beq G_M4165_IG24
+ beq G_M4165_IG25
udiv x0, x0, x1
add x0, x0, #1
str x0, [x19, #0x30]
- mov w20, wzr
cmp w22, #0
- ble G_M4165_IG21
+ ble G_M4165_IG22
ldr w0, [x21, #0x08]
cmp w0, w22
blt G_M4165_IG17
+ mov x20, xzr
;; size=132 bbWeight=1 PerfScore 49.00
G_M4165_IG12: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mov w0, #24
- mov x1, #16
- umaddl x23, w20, w0, x1
+ mov x0, #24
+ mul x0, x20, x0
+ add x23, x0, #16
add x0, x21, x23
; byrRegs +[x0]
ldr w0, [x0, #0x0C]
; byrRegs -[x0]
cmn w0, #1
blt G_M4165_IG15
- ;; size=28 bbWeight=3.96 PerfScore 43.56
+ ;; size=28 bbWeight=3.96 PerfScore 31.68
G_M4165_IG13: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
add x0, x21, x23
; byrRegs +[x0]
@@ -211,7 +214,7 @@ G_M4165_IG13: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
mul x0, x0, x1
lsr x28, x0, #32
cmp w2, #0
- beq G_M4165_IG24
+ beq G_M4165_IG25
udiv w0, w24, w2
msub w0, w0, w2, w24
cmp w0, w28
@@ -231,7 +234,7 @@ G_M4165_IG13: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
;; size=112 bbWeight=1.98 PerfScore 87.12
G_M4165_IG14: ; bbWeight=1.98, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
cmp w28, w26
- bhs G_M4165_IG23
+ bhs G_M4165_IG24
add x0, x25, #16
; byrRegs +[x0]
ubfiz x1, x28, #2, #32
@@ -249,40 +252,37 @@ G_M4165_IG14: ; bbWeight=1.98, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs
G_M4165_IG15: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
; byrRegs -[x26]
- add w20, w20, #1
+ add w0, w20, #1
+ mov w20, w0
cmp w20, w22
blt G_M4165_IG12
- ;; size=12 bbWeight=3.96 PerfScore 7.92
+ ;; size=16 bbWeight=3.96 PerfScore 9.90
G_M4165_IG16: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
- b G_M4165_IG21
+ b G_M4165_IG22
;; size=4 bbWeight=1 PerfScore 1.00
-G_M4165_IG17: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M4165_IG17: ; bbWeight=0.01, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ mov x20, xzr
+ ;; size=4 bbWeight=0.01 PerfScore 0.01
+G_M4165_IG18: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x21, #0x08]
cmp w20, w0
- bhs G_M4165_IG23
- mov w0, #24
- mov x1, #16
- umaddl x0, w20, w0, x1
- add x0, x21, x0
- ; byrRegs +[x0]
- ldr w0, [x0, #0x0C]
- ; byrRegs -[x0]
+ bhs G_M4165_IG24
+ mov x0, #24
+ mul x0, x20, x0
+ add x0, x0, #16
+ add x23, x21, x0
+ ; byrRegs +[x23]
+ ldr w0, [x23, #0x0C]
cmn w0, #1
- blt G_M4165_IG20
- ;; size=40 bbWeight=0.04 PerfScore 0.62
-G_M4165_IG18: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mov w0, #24
- mov x1, #16
- umaddl x0, w20, w0, x1
- add x0, x21, x0
- ; byrRegs +[x0]
- ldr w24, [x0, #0x08]
+ blt G_M4165_IG21
+ ;; size=40 bbWeight=0.04 PerfScore 0.50
+G_M4165_IG19: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=800000 {x23}, byref, isz
+ ldr w24, [x23, #0x08]
ldr x25, [x19, #0x08]
; gcrRegs +[x25]
ldr w2, [x25, #0x08]
ldr x27, [x19, #0x30]
mov w0, w24
- ; byrRegs -[x0]
mul x0, x27, x0
lsr x0, x0, #32
add x0, x0, #1
@@ -290,11 +290,11 @@ G_M4165_IG18: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
mul x0, x0, x1
lsr x28, x0, #32
cmp w2, #0
- beq G_M4165_IG24
+ beq G_M4165_IG25
udiv w0, w24, w2
msub w0, w0, w2, w24
cmp w0, w28
- beq G_M4165_IG19
+ beq G_M4165_IG20
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -307,38 +307,33 @@ G_M4165_IG18: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=120 bbWeight=0.02 PerfScore 0.99
-G_M4165_IG19: ; bbWeight=0.02, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
+ ;; size=104 bbWeight=0.02 PerfScore 0.86
+G_M4165_IG20: ; bbWeight=0.02, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=800000 {x23}, byref, isz
ldr w14, [x25, #0x08]
cmp w28, w14
- bhs G_M4165_IG23
+ bhs G_M4165_IG24
add x14, x25, #16
; byrRegs +[x14]
ubfiz x15, x28, #2, #32
add x26, x14, x15
; byrRegs +[x26]
- mov w14, #24
- ; byrRegs -[x14]
- mov x15, #16
- umaddl x14, w20, w14, x15
- add x14, x21, x14
- ; byrRegs +[x14]
- add x14, x14, #12
+ add x14, x23, #12
ldr w15, [x26]
sub w15, w15, #1
str w15, [x14]
add w14, w20, #1
; byrRegs -[x14]
str w14, [x26]
- ;; size=64 bbWeight=0.02 PerfScore 0.39
-G_M4165_IG20: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=48 bbWeight=0.02 PerfScore 0.26
+G_M4165_IG21: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
- ; byrRegs -[x26]
- add w20, w20, #1
+ ; byrRegs -[x23 x26]
+ add w14, w20, #1
+ mov w20, w14
cmp w20, w22
- blt G_M4165_IG17
- ;; size=12 bbWeight=0.04 PerfScore 0.08
-G_M4165_IG21: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ blt G_M4165_IG18
+ ;; size=16 bbWeight=0.04 PerfScore 0.10
+G_M4165_IG22: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
add x14, x19, #16
; byrRegs +[x14]
mov x15, x21
@@ -347,7 +342,7 @@ G_M4165_IG21: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}
; gcrRegs -[x15 x21]
; byrRegs -[x14]
;; size=12 bbWeight=1 PerfScore 2.00
-G_M4165_IG22: ; bbWeight=1, epilog, nogc, extend
+G_M4165_IG23: ; bbWeight=1, epilog, nogc, extend
ldp x27, x28, [sp, #0x60]
ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40]
@@ -356,17 +351,17 @@ G_M4165_IG22: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x70
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M4165_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M4165_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M4165_IG24: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M4165_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROWDIVZERO
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 856, prolog size 40, PerfScore 268.42, instruction count 214, allocated bytes for code 856 (MethodHash=3669efba) for method System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (FullOpts)
+; Total bytes of code 836, prolog size 40, PerfScore 258.17, instruction count 209, allocated bytes for code 836 (MethodHash=3669efba) for method System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (FullOpts)
; ============================================================
Unwind Info:
@@ -377,7 +372,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
...
-16 (-2.33%) : 12673.dasm - Microsoft.ML.Internal.Utilities.Utils:BuildSubsetMaps(Microsoft.ML.DataViewSchema,System.Func`2[Microsoft.ML.DataViewSchema+Column,ubyte],byref,byref) (FullOpts)
@@ -10,40 +10,39 @@
;
; V00 arg0 [V00,T02] ( 7, 13 ) ref -> x19 class-hnd single-def <Microsoft.ML.DataViewSchema>
; V01 arg1 [V01,T04] ( 5, 11 ) ref -> x20 class-hnd single-def <System.Func`2[Microsoft.ML.DataViewSchema+Column,ubyte]>
-; V02 arg2 [V02,T15] ( 3, 3 ) byref -> x22 single-def
-; V03 arg3 [V03,T09] ( 5, 7 ) byref -> x21 single-def
+; V02 arg2 [V02,T14] ( 3, 3 ) byref -> x22 single-def
+; V03 arg3 [V03,T08] ( 5, 7 ) byref -> x21 single-def
; V04 loc0 [V04,T03] ( 8, 14 ) ref -> x24 class-hnd exact single-def <System.Collections.Generic.List`1[int]>
-; V05 loc1 [V05,T00] ( 12, 37 ) int -> x23
+;* V05 loc1 [V05,T17] ( 0, 0 ) int -> zero-ref
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T12] ( 3, 6 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[int]>
+; V07 tmp1 [V07,T11] ( 3, 6 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[int]>
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[S] "spilled call-like call argument" <Microsoft.ML.DataViewSchema+Column>
-; V09 tmp3 [V09,T06] ( 3, 12 ) ref -> x0 class-hnd "impAppendStmt" <System.Object>
-; V10 tmp4 [V10,T11] ( 2, 8 ) int -> x2 "Strict ordering of exceptions for Array store"
+; V09 tmp3 [V09,T05] ( 3, 12 ) ref -> x0 class-hnd "impAppendStmt" <System.Object>
+; V10 tmp4 [V10,T10] ( 2, 8 ) int -> x2 "Strict ordering of exceptions for Array store"
;* V11 tmp5 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V12 tmp6 [V12,T18] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V13 tmp7 [V13,T13] ( 3, 6 ) ref -> x0 class-hnd "Inline stloc first use temp" <int[]>
-; V14 tmp8 [V14,T10] ( 4, 8 ) int -> x1 "Inline stloc first use temp"
+; V13 tmp7 [V13,T12] ( 3, 6 ) ref -> x0 class-hnd "Inline stloc first use temp" <int[]>
+; V14 tmp8 [V14,T09] ( 4, 8 ) int -> x1 "Inline stloc first use temp"
; V15 tmp9 [V15,T01] ( 3, 24 ) ref -> x1 "arr expr"
-; V16 tmp10 [V16 ] ( 2, 16 ) struct (32) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.ML.DataViewSchema+Column>
-; V17 tmp11 [V17,T07] ( 3, 12 ) ref -> x0 "arr expr"
+; V16 tmp10 [V16 ] ( 2, 16 ) struct (32) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.ML.DataViewSchema+Column>
+; V17 tmp11 [V17,T06] ( 3, 12 ) ref -> x0 "arr expr"
; V18 tmp12 [V18,T19] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V19 cse0 [V19,T08] ( 3, 12 ) ref -> x1 "CSE - aggressive"
-; V20 cse1 [V20,T14] ( 3, 6 ) int -> x1 "CSE - aggressive"
-; V21 cse2 [V21,T17] ( 3, 3 ) ref -> x23 "CSE - aggressive"
-; V22 cse3 [V22,T16] ( 2, 4 ) int -> x2 "CSE - aggressive"
-; V23 cse4 [V23,T05] ( 4, 12 ) long -> x25 "CSE - aggressive"
+; V19 tmp13 [V19,T00] ( 14, 41 ) long -> x23 "Widened primary induction variable"
+; V20 cse0 [V20,T07] ( 3, 12 ) ref -> x1 "CSE - aggressive"
+; V21 cse1 [V21,T13] ( 3, 6 ) int -> x1 "CSE - aggressive"
+; V22 cse2 [V22,T16] ( 3, 3 ) ref -> x23 "CSE - aggressive"
+; V23 cse3 [V23,T15] ( 2, 4 ) int -> x2 "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M15198_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x38]
- stp x21, x22, [sp, #0x48]
- stp x23, x24, [sp, #0x58]
- str x25, [sp, #0x68]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x30]
+ stp x21, x22, [sp, #0x40]
+ stp x23, x24, [sp, #0x50]
mov fp, sp
- stp xzr, xzr, [fp, #0x18] // [V16 tmp10], [V16 tmp10+0x08]
- stp xzr, xzr, [fp, #0x28] // [V16 tmp10+0x10], [V16 tmp10+0x18]
+ stp xzr, xzr, [fp, #0x10] // [V16 tmp10], [V16 tmp10+0x08]
+ stp xzr, xzr, [fp, #0x20] // [V16 tmp10+0x10], [V16 tmp10+0x18]
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
@@ -52,7 +51,7 @@ G_M15198_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; byrRegs +[x22]
mov x21, x3
; byrRegs +[x21]
- ;; size=48 bbWeight=1 PerfScore 9.50
+ ;; size=44 bbWeight=1 PerfScore 8.50
G_M15198_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=600000 {x21 x22}, byref, isz
cbz x19, G_M15198_IG13
ldr x23, [x19, #0x08]
@@ -86,13 +85,13 @@ G_M15198_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=600000
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- mov w23, wzr
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
ldr w1, [x1, #0x08]
; gcrRegs -[x1]
cmp w1, #0
ble G_M15198_IG10
+ mov x23, xzr
;; size=112 bbWeight=1 PerfScore 30.50
G_M15198_IG03: ; bbWeight=4, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=600000 {x21 x22}, byref, isz
tbnz w23, #31, G_M15198_IG16
@@ -104,21 +103,18 @@ G_M15198_IG03: ; bbWeight=4, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=6
ldr w0, [x1, #0x08]
cmp w23, w0
bhs G_M15198_IG12
- mov w25, w23
- lsl x0, x25, #5
+ lsl x0, x23, #5
add x0, x0, #16
add x1, x1, x0
; gcrRegs -[x1]
; byrRegs +[x1]
- ;; size=48 bbWeight=4 PerfScore 62.00
+ ;; size=44 bbWeight=4 PerfScore 60.00
G_M15198_IG04: ; bbWeight=4, nogc, extend
- ldp x0, x2, [x1]
- stp x0, x2, [fp, #0x18]
- ldp x0, x2, [x1, #0x10]
- stp x0, x2, [fp, #0x28]
- ;; size=16 bbWeight=4 PerfScore 40.00
+ ldp q16, q17, [x1]
+ stp q16, q17, [fp, #0x10]
+ ;; size=8 bbWeight=4 PerfScore 16.00
G_M15198_IG05: ; bbWeight=4, isz, extend
- add x1, fp, #24 // [V16 tmp10]
+ add x1, fp, #16 // [V16 tmp10]
; byrRegs -[x1]
ldr x0, [x20, #0x08]
; gcrRegs +[x0]
@@ -136,7 +132,7 @@ G_M15198_IG06: ; bbWeight=2, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=6
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
- lsl x1, x25, #2
+ lsl x1, x23, #2
movn w2, #0
str w2, [x0, x1]
b G_M15198_IG09
@@ -153,7 +149,7 @@ G_M15198_IG07: ; bbWeight=2, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=6
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
- lsl x3, x25, #2
+ lsl x3, x23, #2
str w2, [x0, x3]
ldr w0, [x24, #0x14]
; byrRegs -[x0]
@@ -185,14 +181,15 @@ G_M15198_IG08: ; bbWeight=2, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=6
; gcrRegs -[x0]
;; size=28 bbWeight=2 PerfScore 13.00
G_M15198_IG09: ; bbWeight=4, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=600000 {x21 x22}, byref, isz
- add w23, w23, #1
+ add w0, w23, #1
+ mov w23, w0
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
cmp w0, w23
bgt G_M15198_IG03
- ;; size=20 bbWeight=4 PerfScore 32.00
+ ;; size=24 bbWeight=4 PerfScore 34.00
G_M15198_IG10: ; bbWeight=1, gcrefRegs=1000000 {x24}, byrefRegs=400000 {x22}, byref
; gcrRegs -[x19-x20]
; byrRegs -[x21]
@@ -213,13 +210,12 @@ G_M15198_IG10: ; bbWeight=1, gcrefRegs=1000000 {x24}, byrefRegs=400000 {x
; byrRegs -[x14 x22]
;; size=36 bbWeight=1 PerfScore 8.00
G_M15198_IG11: ; bbWeight=1, epilog, nogc, extend
- ldr x25, [sp, #0x68]
- ldp x23, x24, [sp, #0x58]
- ldp x21, x22, [sp, #0x48]
- ldp x19, x20, [sp, #0x38]
- ldp fp, lr, [sp], #0x70
+ ldp x23, x24, [sp, #0x50]
+ ldp x21, x22, [sp, #0x40]
+ ldp x19, x20, [sp, #0x30]
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=24 bbWeight=1 PerfScore 7.00
+ ;; size=20 bbWeight=1 PerfScore 5.00
G_M15198_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
@@ -299,18 +295,18 @@ G_M15198_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 688, prolog size 32, PerfScore 318.00, instruction count 172, allocated bytes for code 688 (MethodHash=8637c4a1) for method Microsoft.ML.Internal.Utilities.Utils:BuildSubsetMaps(Microsoft.ML.DataViewSchema,System.Func`2[Microsoft.ML.DataViewSchema+Column,ubyte],byref,byref) (FullOpts)
+; Total bytes of code 672, prolog size 28, PerfScore 291.00, instruction count 168, allocated bytes for code 672 (MethodHash=8637c4a1) for method Microsoft.ML.Internal.Utilities.Utils:BuildSubsetMaps(Microsoft.ML.DataViewSchema,System.Func`2[Microsoft.ML.DataViewSchema+Column,ubyte],byref,byref) (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 3
+ Code Words : 2
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 172 (0x000ac) Actual length = 688 (0x0002b0)
+ Function Length : 168 (0x000a8) Actual length = 672 (0x0002a0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -318,13 +314,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D1 8D save_reg X#6 Z#13 (0x0D); str x25, [sp, #104]
E6 save_next
E6 save_next
- C8 07 save_regp X#0 Z#7 (0x07); stp x19, x20, [sp, #56]
- 8D save_fplr_x #13 (0x0D); stp fp, lr, [sp, #-112]!
- E4 end
- E4 end
+ C8 06 save_regp X#0 Z#6 (0x06); stp x19, x20, [sp, #48]
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end
-8 (-1.41%) : 13569.dasm - Microsoft.ML.Transforms.Text.WordTokenizingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
@@ -9,22 +9,22 @@
; Final local variable assignments
;
; V00 this [V00,T03] ( 8, 23 ) ref -> x19 this class-hnd single-def <Microsoft.ML.Transforms.Text.WordTokenizingTransformer+Mapper>
-; V01 loc0 [V01,T11] ( 4, 10 ) ref -> x21 class-hnd exact single-def <Microsoft.ML.DataViewSchema+DetachedColumn[]>
-; V02 loc1 [V02,T01] ( 8, 29 ) int -> x22
-; V03 loc2 [V03 ] ( 1, 4 ) int -> [fp+0x54] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V01 loc0 [V01,T10] ( 4, 10 ) ref -> x21 class-hnd exact single-def <Microsoft.ML.DataViewSchema+DetachedColumn[]>
+;* V02 loc1 [V02,T17] ( 0, 0 ) int -> zero-ref
+; V03 loc2 [V03 ] ( 1, 4 ) int -> [fp+0x5C] do-not-enreg[X] must-init addr-exposed ld-addr-op
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05 ] ( 7, 56 ) struct (24) [fp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.ML.DataViewSchema+DetachedColumn>
+; V05 tmp1 [V05 ] ( 7, 56 ) struct (24) [fp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.ML.DataViewSchema+DetachedColumn>
; V06 tmp2 [V06,T07] ( 2, 16 ) ref -> x0 class-hnd exact "Inlining Arg" <Microsoft.ML.DataViewSchema>
; V07 tmp3 [V07,T08] ( 2, 16 ) ref -> x1 class-hnd "Inlining Arg" <<unknown class>>
-; V08 tmp4 [V08 ] ( 4, 16 ) struct (40) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Nullable`1[Microsoft.ML.DataViewSchema+Column]>
-; V09 tmp5 [V09,T13] ( 2, 8 ) byref -> x14
-; V10 tmp6 [V10,T15] ( 2, 6 ) byref -> x15
+; V08 tmp4 [V08 ] ( 4, 16 ) struct (40) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Nullable`1[Microsoft.ML.DataViewSchema+Column]>
+; V09 tmp5 [V09,T12] ( 2, 8 ) byref -> x14
+; V10 tmp6 [V10,T14] ( 2, 6 ) byref -> x15
;* V11 tmp7 [V11 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "Inline stloc first use temp" <Microsoft.ML.DataViewSchema+Column>
;* V12 tmp8 [V12 ] ( 0, 0 ) byref -> zero-ref
-; V13 tmp9 [V13,T12] ( 3, 8 ) int -> x12
+; V13 tmp9 [V13,T11] ( 3, 8 ) int -> x12
; V14 tmp10 [V14,T02] ( 4, 28 ) ref -> x14 class-hnd "Inlining Arg" <<unknown class>>
; V15 tmp11 [V15,T04] ( 3, 24 ) ref -> x15 class-hnd "Inlining Arg" <Microsoft.ML.Data.DataViewType>
-; V16 tmp12 [V16,T14] ( 2, 8 ) byref -> x14
+; V16 tmp12 [V16,T13] ( 2, 8 ) byref -> x14
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref
;* V18 tmp14 [V18 ] ( 0, 0 ) byref -> zero-ref
;* V19 tmp15 [V19 ] ( 0, 0 ) ref -> zero-ref
@@ -33,35 +33,34 @@
; V22 tmp18 [V22,T18] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V23 tmp19 [V23,T19] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V24 tmp20 [V24,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V25 tmp21 [V25 ] ( 5, 32 ) ref -> [fp+0x38] do-not-enreg[X] addr-exposed "field V05.<Name>k__BackingField (fldOffset=0x0)" P-DEP
-; V26 tmp22 [V26 ] ( 4, 28 ) ref -> [fp+0x40] do-not-enreg[X] addr-exposed "field V05.<Type>k__BackingField (fldOffset=0x8)" P-DEP
-; V27 tmp23 [V27 ] ( 4, 28 ) ref -> [fp+0x48] do-not-enreg[X] addr-exposed "field V05.<Annotations>k__BackingField (fldOffset=0x10)" P-DEP
-; V28 tmp24 [V28,T16] ( 2, 4 ) int -> x12 "V11.[024..028)"
+; V25 tmp21 [V25 ] ( 5, 32 ) ref -> [fp+0x40] do-not-enreg[X] addr-exposed "field V05.<Name>k__BackingField (fldOffset=0x0)" P-DEP
+; V26 tmp22 [V26 ] ( 4, 28 ) ref -> [fp+0x48] do-not-enreg[X] addr-exposed "field V05.<Type>k__BackingField (fldOffset=0x8)" P-DEP
+; V27 tmp23 [V27 ] ( 4, 28 ) ref -> [fp+0x50] do-not-enreg[X] addr-exposed "field V05.<Annotations>k__BackingField (fldOffset=0x10)" P-DEP
+; V28 tmp24 [V28,T15] ( 2, 4 ) int -> x12 "V11.[024..028)"
; V29 tmp25 [V29,T05] ( 3, 24 ) ref -> x8 "arr expr"
; V30 tmp26 [V30,T06] ( 3, 24 ) ref -> x14 "arr expr"
-; V31 tmp27 [V31,T00] ( 4, 32 ) byref -> x0 "BlockOp address local"
+; V31 tmp27 [V31,T01] ( 4, 32 ) byref -> x0 "BlockOp address local"
; V32 tmp28 [V32,T20] ( 2, 0 ) ref -> x1 "argument with side effect"
; V33 tmp29 [V33,T21] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V34 cse0 [V34,T17] ( 3, 3 ) ref -> x20 "CSE - moderate"
-; V35 cse1 [V35,T09] ( 3, 12 ) long -> x23 "CSE - aggressive"
-; V36 cse2 [V36,T10] ( 3, 12 ) long -> x20 "CSE - aggressive"
+; V34 tmp30 [V34,T00] ( 9, 33 ) long -> x20 "Widened primary induction variable"
+; V35 cse0 [V35,T09] ( 3, 12 ) long -> x22 "CSE - aggressive"
+; V36 cse1 [V36,T16] ( 3, 3 ) ref -> x20 "CSE - moderate"
;
-; Lcl frame size = 72
+; Lcl frame size = 80
G_M6166_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x80]!
- stp x19, x20, [sp, #0x58]
- stp x21, x22, [sp, #0x68]
- str x23, [sp, #0x78]
+ stp x19, x20, [sp, #0x60]
+ stp x21, x22, [sp, #0x70]
mov fp, sp
- add x9, fp, #16
+ add x9, fp, #24
movi v16.16b, #0
stp q16, q16, [x9]
stp q16, q16, [x9, #0x20]
str xzr, [x9, #0x40]
mov x19, x0
; gcrRegs +[x19]
- ;; size=44 bbWeight=1 PerfScore 9.00
+ ;; size=40 bbWeight=1 PerfScore 8.00
G_M6166_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x19, #0x40]
; gcrRegs +[x1]
@@ -76,33 +75,33 @@ G_M6166_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
; gcrRegs +[x0]
mov x21, x0
; gcrRegs +[x21]
- mov w22, wzr
ldr w8, [x20, #0x08]
cmp w8, #0
ble G_M6166_IG09
+ mov x20, xzr
+ ; gcrRegs -[x20]
;; size=48 bbWeight=1 PerfScore 17.00
G_M6166_IG03: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0 x20]
+ ; gcrRegs -[x0]
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
ldr x8, [x19, #0x40]
; gcrRegs +[x8]
ldr x8, [x8, #0x10]
ldr w1, [x8, #0x08]
- cmp w22, w1
+ cmp w20, w1
bhs G_M6166_IG11
- mov w20, w22
lsl x1, x20, #4
- add x23, x1, #16
- add x8, x8, x23
+ add x22, x1, #16
+ add x8, x8, x22
; gcrRegs -[x8]
; byrRegs +[x8]
ldr x1, [x8, #0x08]
; gcrRegs +[x1]
- stp xzr, xzr, [fp, #0x10]
- stp xzr, xzr, [fp, #0x20]
- str xzr, [fp, #0x30]
- add x8, fp, #16 // [V08 tmp4]
+ stp xzr, xzr, [fp, #0x18]
+ stp xzr, xzr, [fp, #0x28]
+ str xzr, [fp, #0x38]
+ add x8, fp, #24 // [V08 tmp4]
; byrRegs -[x8]
movz x2, #0xD1FFAB1E // code for Microsoft.ML.DataViewSchema:GetColumnOrNull(System.String):System.Nullable`1[Microsoft.ML.DataViewSchema+Column]:this
movk x2, #0xD1FFAB1E LSL #16
@@ -111,13 +110,13 @@ G_M6166_IG03: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}
ldr wzr, [x0]
blr x2
; gcrRegs -[x0-x1]
- add x14, fp, #84 // [V03 loc2]
+ add x14, fp, #92 // [V03 loc2]
; byrRegs +[x14]
- add x15, fp, #16 // [V08 tmp4]
+ add x15, fp, #24 // [V08 tmp4]
; byrRegs +[x15]
- ldrb w12, [fp, #0x10] // [V08 tmp4]
+ ldrb w12, [fp, #0x18] // [V08 tmp4]
cbnz w12, G_M6166_IG05
- ;; size=100 bbWeight=4 PerfScore 140.00
+ ;; size=96 bbWeight=4 PerfScore 138.00
G_M6166_IG04: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=4000 {x14}, byref
; byrRegs -[x15]
movn w12, #0
@@ -130,16 +129,16 @@ G_M6166_IG05: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=C000 {x
G_M6166_IG06: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=4000 {x14}, byref, isz
; byrRegs -[x15]
str w12, [x14]
- stp xzr, xzr, [fp, #0x38]
- str xzr, [fp, #0x48]
+ stp xzr, xzr, [fp, #0x40]
+ str xzr, [fp, #0x50]
ldr x14, [x19, #0x40]
; gcrRegs +[x14]
; byrRegs -[x14]
ldr x14, [x14, #0x10]
ldr w15, [x14, #0x08]
- cmp w22, w15
+ cmp w20, w15
bhs G_M6166_IG11
- ldr x14, [x14, x23]
+ ldr x14, [x14, x22]
ldr x15, [x19, #0x38]
; gcrRegs +[x15]
cbz x14, G_M6166_IG12
@@ -149,8 +148,8 @@ G_M6166_IG07: ; bbWeight=2, gcrefRegs=28C000 {x14 x15 x19 x21}, byrefRegs
cbz w12, G_M6166_IG12
;; size=8 bbWeight=2 PerfScore 8.00
G_M6166_IG08: ; bbWeight=4, gcrefRegs=28C000 {x14 x15 x19 x21}, byrefRegs=0000 {}, byref, isz
- str x14, [fp, #0x38] // [V25 tmp21]
- add x14, fp, #56 // [V05 tmp1]
+ str x14, [fp, #0x40] // [V25 tmp21]
+ add x14, fp, #64 // [V05 tmp1]
; gcrRegs -[x14]
; byrRegs +[x14]
cbz x15, G_M6166_IG13
@@ -163,17 +162,17 @@ G_M6166_IG08: ; bbWeight=4, gcrefRegs=28C000 {x14 x15 x19 x21}, byrefRegs
movk x14, #1 LSL #32
ldr x14, [x14]
; gcrRegs +[x14]
- str x14, [fp, #0x48] // [V05 tmp1+0x10]
+ str x14, [fp, #0x50] // [V05 tmp1+0x10]
ldr w14, [x21, #0x08]
; gcrRegs -[x14]
- cmp w22, w14
+ cmp w20, w14
bhs G_M6166_IG11
mov x14, #24
mul x14, x20, x14
add x14, x14, #16
add x0, x21, x14
; byrRegs +[x0]
- ldr x15, [fp, #0x38] // [V25 tmp21]
+ ldr x15, [fp, #0x40] // [V25 tmp21]
; gcrRegs +[x15]
mov x14, x0
; byrRegs +[x14]
@@ -182,39 +181,39 @@ G_M6166_IG08: ; bbWeight=4, gcrefRegs=28C000 {x14 x15 x19 x21}, byrefRegs
; byrRegs -[x14]
add x14, x0, #8
; byrRegs +[x14]
- ldr x15, [fp, #0x40] // [V26 tmp22]
+ ldr x15, [fp, #0x48] // [V26 tmp22]
; gcrRegs +[x15]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]
add x14, x0, #16
; byrRegs +[x14]
- ldr x15, [fp, #0x48] // [V27 tmp23]
+ ldr x15, [fp, #0x50] // [V27 tmp23]
; gcrRegs +[x15]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x0 x14]
- add w22, w22, #1
+ add w0, w20, #1
+ mov w20, w0
ldr x0, [x19, #0x40]
; gcrRegs +[x0]
ldr x0, [x0, #0x10]
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
- cmp w0, w22
+ cmp w0, w20
bgt G_M6166_IG03
- ;; size=128 bbWeight=4 PerfScore 156.00
+ ;; size=132 bbWeight=4 PerfScore 158.00
G_M6166_IG09: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
mov x0, x21
; gcrRegs +[x0]
;; size=4 bbWeight=1 PerfScore 0.50
G_M6166_IG10: ; bbWeight=1, epilog, nogc, extend
- ldr x23, [sp, #0x78]
- ldp x21, x22, [sp, #0x68]
- ldp x19, x20, [sp, #0x58]
+ ldp x21, x22, [sp, #0x70]
+ ldp x19, x20, [sp, #0x60]
ldp fp, lr, [sp], #0x80
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00
+ ;; size=16 bbWeight=1 PerfScore 4.00
G_M6166_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x21]
bl CORINFO_HELP_RNGCHKFAIL
@@ -279,7 +278,7 @@ G_M6166_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 568, prolog size 40, PerfScore 427.50, instruction count 142, allocated bytes for code 568 (MethodHash=4802e7e9) for method Microsoft.ML.Transforms.Text.WordTokenizingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
...
+24 (+35.29%) : 14252.dasm - Microsoft.CodeAnalysis.CommandLineParser:g_isAllAscii|170(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
@@ -9,33 +9,38 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V02 loc1 [V02,T00] ( 5, 17 ) int -> x2
+;* V02 loc1 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V05 tmp2 [V05,T04] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V06 tmp3 [V06,T02] ( 2, 5 ) byref -> x0 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V07 tmp4 [V07,T01] ( 3, 6 ) int -> x1 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T01] ( 4, 10 ) int -> x1 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp5 [V08,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
-G_M41908_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M41908_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M41908_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0
ble G_M41908_IG04
+ mov x2, xzr
;; size=12 bbWeight=1 PerfScore 2.00
G_M41908_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrh w3, [x0, w2, UXTW #2]
+ cmp w2, w1
+ bhs G_M41908_IG08
+ lsl x3, x2, #1
+ ldrh w3, [x0, x3]
cmp w3, #127
bgt G_M41908_IG06
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
blt G_M41908_IG03
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=40 bbWeight=4 PerfScore 38.00
G_M41908_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov w0, #1
@@ -51,8 +56,13 @@ G_M41908_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M41908_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 68, prolog size 8, PerfScore 32.00, instruction count 17, allocated bytes for code 68 (MethodHash=61d05c4b) for method Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
+; Total bytes of code 92, prolog size 8, PerfScore 44.00, instruction count 23, allocated bytes for code 92 (MethodHash=61d05c4b) for method Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -63,7 +73,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+37.50%) : 12980.dasm - Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)
@@ -8,12 +8,13 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[float]>
-; V01 loc0 [V01,T04] ( 4, 10 ) float -> d16
-; V02 loc1 [V02,T00] ( 5, 17 ) int -> x2
-; V03 loc2 [V03,T03] ( 3, 12 ) float -> d17
+; V01 loc0 [V01,T05] ( 4, 10 ) float -> d16
+;* V02 loc1 [V02,T03] ( 0, 0 ) int -> zero-ref
+; V03 loc2 [V03,T04] ( 3, 12 ) float -> d17
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T02] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T01] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp3 [V07,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -24,18 +25,22 @@ G_M8690_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M8690_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
movi v16.16b, #0
- mov w2, wzr
cmp w1, #0
ble G_M8690_IG04
+ mov x2, xzr
;; size=16 bbWeight=1 PerfScore 2.50
G_M8690_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr s17, [x0, w2, UXTW #2]
+ cmp w2, w1
+ bhs G_M8690_IG06
+ lsl x3, x2, #2
+ ldr s17, [x0, x3]
fsub s17, s17, s17
fadd s16, s17, s16
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
blt G_M8690_IG03
- ;; size=24 bbWeight=4 PerfScore 44.00
+ ;; size=40 bbWeight=4 PerfScore 56.00
G_M8690_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
fcmp s16, #0.0
@@ -45,8 +50,13 @@ G_M8690_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M8690_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 64, prolog size 8, PerfScore 52.50, instruction count 16, allocated bytes for code 64 (MethodHash=2f89de0d) for method Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 64.50, instruction count 22, allocated bytes for code 88 (MethodHash=2f89de0d) for method Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -57,7 +67,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+46.15%) : 1046.dasm - System.Linq.Enumerable:Sumdouble,double:double (FullOpts)
@@ -9,9 +9,9 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[double]>
-; V01 loc0 [V01,T05] ( 4, 10 ) double -> d0
+; V01 loc0 [V01,T06] ( 4, 10 ) double -> d0
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[double]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x2
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) double -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -20,7 +20,8 @@
; V09 tmp4 [V09,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V10 tmp5 [V10,T04] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V11 tmp6 [V11,T02] ( 2, 5 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp7 [V12,T01] ( 3, 6 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V12 tmp7 [V12,T01] ( 4, 10 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V13 tmp8 [V13,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -31,24 +32,33 @@ G_M25021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M25021_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
movi v0.16b, #0
- mov w2, wzr
cmp w1, #0
ble G_M25021_IG04
+ mov x2, xzr
;; size=16 bbWeight=1 PerfScore 2.50
G_M25021_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr d16, [x0, w2, UXTW #3]
+ cmp w2, w1
+ bhs G_M25021_IG05
+ lsl x3, x2, #3
+ ldr d16, [x0, x3]
fadd d0, d16, d0
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
blt G_M25021_IG03
- ;; size=20 bbWeight=4 PerfScore 32.00
+ ;; size=36 bbWeight=4 PerfScore 44.00
G_M25021_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M25021_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 38.00, instruction count 13, allocated bytes for code 52 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 50.00, instruction count 19, allocated bytes for code 76 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
; ============================================================
Unwind Info:
@@ -59,7 +69,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.osx.arm64.checked.mch |
1,692 |
13 |
1,657 |
22 |
-156 |
+27,512 |
| benchmarks.run_pgo.osx.arm64.checked.mch |
2,894 |
29 |
2,790 |
75 |
-260 |
+59,528 |
| benchmarks.run_tiered.osx.arm64.checked.mch |
574 |
7 |
561 |
6 |
-88 |
+13,460 |
| coreclr_tests.run.osx.arm64.checked.mch |
20,098 |
63 |
19,910 |
125 |
-840 |
+313,660 |
| libraries.crossgen2.osx.arm64.checked.mch |
5,110 |
58 |
4,983 |
69 |
-700 |
+78,584 |
| libraries.pmi.osx.arm64.checked.mch |
7,272 |
43 |
7,111 |
118 |
-500 |
+99,636 |
| libraries_tests.run.osx.arm64.Release.mch |
18,794 |
131 |
18,499 |
164 |
-1,508 |
+400,848 |
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
8,382 |
71 |
8,180 |
131 |
-1,036 |
+115,884 |
| realworld.run.osx.arm64.checked.mch |
1,399 |
23 |
1,345 |
31 |
-364 |
+20,916 |
|
66,215 |
438 |
65,036 |
741 |
-5,452 |
+1,130,028 |
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,817 |
48,088 |
35,729 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_tiered.osx.arm64.checked.mch |
48,124 |
37,350 |
10,774 |
0 (0.00%) |
0 (0.00%) |
| coreclr_tests.run.osx.arm64.checked.mch |
585,860 |
356,765 |
229,095 |
26 (0.00%) |
28 (0.00%) |
| libraries.crossgen2.osx.arm64.checked.mch |
234,104 |
15 |
234,089 |
0 (0.00%) |
1 (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,841 |
932,669 |
1,338,172 |
26 (0.00%) |
29 (0.00%) |
jit-analyze output
benchmarks.run.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 11186636 (overridden on cmd)
Total bytes of diff: 11213992 (overridden on cmd)
Total bytes of delta: 27356 (0.24 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
584 : 17123.dasm (6.48 % of base)
572 : 16241.dasm (16.01 % of base)
372 : 15154.dasm (19.79 % of base)
328 : 16868.dasm (10.51 % of base)
232 : 6311.dasm (2.26 % of base)
196 : 23044.dasm (1.81 % of base)
152 : 24628.dasm (9.82 % of base)
144 : 22395.dasm (7.76 % of base)
128 : 10974.dasm (1.17 % of base)
128 : 13349.dasm (1.69 % of base)
128 : 23064.dasm (1.62 % of base)
128 : 24248.dasm (1.19 % of base)
120 : 5311.dasm (1.88 % of base)
108 : 2379.dasm (3.08 % of base)
100 : 15695.dasm (11.68 % of base)
96 : 7179.dasm (5.14 % of base)
96 : 8163.dasm (3.51 % of base)
92 : 5279.dasm (4.51 % of base)
88 : 10749.dasm (6.11 % of base)
84 : 17155.dasm (4.91 % of base)
Top file improvements (bytes):
-32 : 7347.dasm (-0.88 % of base)
-20 : 199.dasm (-2.34 % of base)
-16 : 2939.dasm (-1.97 % of base)
-16 : 21244.dasm (-0.75 % of base)
-12 : 569.dasm (-0.89 % of base)
-12 : 5527.dasm (-0.90 % of base)
-12 : 8820.dasm (-1.34 % of base)
-8 : 2802.dasm (-0.64 % of base)
-8 : 318.dasm (-0.48 % of base)
-8 : 627.dasm (-0.76 % of base)
-4 : 1118.dasm (-1.05 % of base)
-4 : 8332.dasm (-0.34 % of base)
-4 : 19180.dasm (-0.27 % of base)
72 total files with Code Size differences (13 improved, 59 regressed), 22 unchanged.
Top method regressions (bytes):
584 (6.48 % of base) : 17123.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
572 (16.01 % of base) : 16241.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
372 (19.79 % of base) : 15154.dasm - AssignJagged:second_assignments(int[][],short[][]) (FullOpts)
328 (10.51 % of base) : 16868.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
232 (2.26 % of base) : 6311.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
196 (1.81 % of base) : 23044.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
152 (9.82 % of base) : 24628.dasm - SciMark2.LU:factor(double[][],int[]):int (FullOpts)
144 (7.76 % of base) : 22395.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (FullOpts)
128 (1.69 % of base) : 13349.dasm - Jil.Deserialize.Methods:_ReadISO8601Date(System.IO.TextReader,ushort[]):System.DateTime (FullOpts)
128 (1.19 % of base) : 24248.dasm - Jil.Deserialize.Methods:_ReadISO8601DateThunkReader(byref,ushort[]):System.DateTime (FullOpts)
128 (1.62 % of base) : 23064.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffset(System.IO.TextReader,ushort[]):System.DateTimeOffset (FullOpts)
128 (1.17 % of base) : 10974.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffsetThunkReader(byref,ushort[]):System.DateTimeOffset (FullOpts)
120 (1.88 % of base) : 5311.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
108 (3.08 % of base) : 2379.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
100 (11.68 % of base) : 15695.dasm - AssignRect:second_assignments(int[,],short[,]) (FullOpts)
96 (5.14 % of base) : 7179.dasm - ProtoBuf.Meta.MetaType:ResolveTupleConstructor(System.Type,byref):System.Reflection.ConstructorInfo (FullOpts)
96 (3.51 % of base) : 8163.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
92 (4.51 % of base) : 5279.dasm - System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String (FullOpts)
88 (6.11 % of base) : 10749.dasm - BilinearTest:BilinearInterpol_Vector(double[],double[],double,double,double[],double,double,double):double[]:this (FullOpts)
84 (4.91 % of base) : 17155.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (FullOpts)
Top method improvements (bytes):
-32 (-0.88 % of base) : 7347.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-20 (-2.34 % of base) : 199.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-16 (-0.75 % of base) : 21244.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (FullOpts)
-16 (-1.97 % of base) : 2939.dasm - System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory+ServiceDescriptorCacheItem]:Resize(int,ubyte):this (FullOpts)
-12 (-0.89 % of base) : 569.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (FullOpts)
-12 (-1.34 % of base) : 8820.dasm - System.Security.Cryptography.X509Certificates.SecTrustChainPal:GetCertsArray(System.Collections.Generic.List`1[System.Runtime.InteropServices.SafeHandle]):Microsoft.Win32.SafeHandles.SafeCreateHandle:this (FullOpts)
-12 (-0.90 % of base) : 5527.dasm - System.Text.Json.JsonHelpers:TryParseDateTimeOffset(System.ReadOnlySpan`1[ubyte],byref):ubyte (FullOpts)
-8 (-0.76 % of base) : 627.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
-8 (-0.48 % of base) : 318.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-8 (-0.64 % of base) : 2802.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-4 (-0.27 % of base) : 19180.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__ensureAllUnderlyingConversionsChecked|210_1(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-4 (-1.05 % of base) : 1118.dasm - System.Number+Grisu3:TryRoundWeedCounted(System.Span`1[ubyte],int,ulong,ulong,ulong,byref):ubyte (FullOpts)
-4 (-0.34 % of base) : 8332.dasm - System.Security.Cryptography.X509Certificates.UnixExportProvider:EncodeCerts(System.Formats.Asn1.AsnWriter,System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[],int,System.Span`1[ubyte],System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref,byref):System.ArraySegment`1[ubyte] (FullOpts)
Top method regressions (percentages):
24 (46.15 % of base) : 16143.dasm - Struct.SpanWrapper:SumSpan(System.ReadOnlySpan`1[int]):int:this (FullOpts)
24 (46.15 % of base) : 1055.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
28 (41.18 % of base) : 12009.dasm - System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
24 (40.00 % of base) : 21561.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
24 (40.00 % of base) : 23031.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
20 (35.71 % of base) : 12587.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
76 (33.93 % of base) : 24607.dasm - Benchstone.BenchI.BubbleSort2:Test():ubyte:this (FullOpts)
20 (33.33 % of base) : 22185.dasm - Span.IndexerBench:TestIndexer3(System.Span`1[ubyte]):ubyte (FullOpts)
20 (33.33 % of base) : 12351.dasm - Span.IndexerBench:TestKnownSizeArray(System.Span`1[ubyte]):ubyte (FullOpts)
20 (33.33 % of base) : 23212.dasm - Span.IndexerBench:TestReadOnlyIndexer2(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
24 (31.58 % of base) : 22450.dasm - System.Collections.IndexerSet`1[int]:Span():int:this (FullOpts)
20 (31.25 % of base) : 22744.dasm - Span.IndexerBench:TestIndexer6(System.Span`1[ubyte],Span.Sink):ubyte (FullOpts)
24 (30.00 % of base) : 21312.dasm - System.Collections.IterateFor`1[int]:ReadOnlySpan():int:this (FullOpts)
24 (30.00 % of base) : 17145.dasm - System.Collections.IterateFor`1[int]:Span():int:this (FullOpts)
24 (30.00 % of base) : 24238.dasm - System.Collections.IterateForEach`1[int]:ReadOnlySpan():int:this (FullOpts)
24 (30.00 % of base) : 24124.dasm - System.Collections.IterateForEach`1[int]:Span():int:this (FullOpts)
20 (27.78 % of base) : 22582.dasm - Span.IndexerBench:TestIndexer5(System.Span`1[ubyte],byref):ubyte (FullOpts)
20 (27.78 % of base) : 19683.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
24 (27.27 % of base) : 22280.dasm - Span.IndexerBench:TestIndexer4(System.Span`1[ubyte],int):ubyte (FullOpts)
24 (26.09 % of base) : 23657.dasm - System.Collections.IterateForEach`1[System.__Canon]:ReadOnlySpan():System.__Canon:this (FullOpts)
Top method improvements (percentages):
-20 (-2.34 % of base) : 199.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-16 (-1.97 % of base) : 2939.dasm - System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory+ServiceDescriptorCacheItem]:Resize(int,ubyte):this (FullOpts)
-12 (-1.34 % of base) : 8820.dasm - System.Security.Cryptography.X509Certificates.SecTrustChainPal:GetCertsArray(System.Collections.Generic.List`1[System.Runtime.InteropServices.SafeHandle]):Microsoft.Win32.SafeHandles.SafeCreateHandle:this (FullOpts)
-4 (-1.05 % of base) : 1118.dasm - System.Number+Grisu3:TryRoundWeedCounted(System.Span`1[ubyte],int,ulong,ulong,ulong,byref):ubyte (FullOpts)
-12 (-0.90 % of base) : 5527.dasm - System.Text.Json.JsonHelpers:TryParseDateTimeOffset(System.ReadOnlySpan`1[ubyte],byref):ubyte (FullOpts)
-12 (-0.89 % of base) : 569.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (FullOpts)
-32 (-0.88 % of base) : 7347.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-8 (-0.76 % of base) : 627.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
-16 (-0.75 % of base) : 21244.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (FullOpts)
-8 (-0.64 % of base) : 2802.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-8 (-0.48 % of base) : 318.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-4 (-0.34 % of base) : 8332.dasm - System.Security.Cryptography.X509Certificates.UnixExportProvider:EncodeCerts(System.Formats.Asn1.AsnWriter,System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[],int,System.Span`1[ubyte],System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref,byref):System.ArraySegment`1[ubyte] (FullOpts)
-4 (-0.27 % of base) : 19180.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__ensureAllUnderlyingConversionsChecked|210_1(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
benchmarks.run_pgo.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 34442660 (overridden on cmd)
Total bytes of diff: 34501928 (overridden on cmd)
Total bytes of delta: 59268 (0.17 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
684 : 45612.dasm (10.99 % of base)
620 : 58888.dasm (6.54 % of base)
612 : 58880.dasm (6.41 % of base)
592 : 58887.dasm (6.56 % of base)
560 : 42109.dasm (15.77 % of base)
392 : 38106.dasm (19.18 % of base)
352 : 38098.dasm (15.44 % of base)
296 : 45603.dasm (9.14 % of base)
292 : 45614.dasm (11.42 % of base)
252 : 38105.dasm (10.99 % of base)
248 : 42105.dasm (13.84 % of base)
248 : 42108.dasm (13.84 % of base)
232 : 39223.dasm (9.83 % of base)
232 : 58879.dasm (6.95 % of base)
232 : 58886.dasm (6.95 % of base)
224 : 72087.dasm (1.95 % of base)
224 : 72095.dasm (1.98 % of base)
216 : 39233.dasm (9.34 % of base)
216 : 45589.dasm (16.36 % of base)
216 : 45600.dasm (16.36 % of base)
Top file improvements (bytes):
-48 : 80380.dasm (-2.55 % of base)
-36 : 61262.dasm (-1.77 % of base)
-36 : 61272.dasm (-1.77 % of base)
-12 : 1571.dasm (-0.87 % of base)
-12 : 11686.dasm (-1.32 % of base)
-8 : 66722.dasm (-1.35 % of base)
-8 : 68369.dasm (-1.35 % of base)
-8 : 72143.dasm (-1.35 % of base)
-8 : 75145.dasm (-1.35 % of base)
-8 : 76038.dasm (-1.35 % of base)
-4 : 14784.dasm (-0.87 % of base)
-4 : 24189.dasm (-0.81 % of base)
-4 : 39922.dasm (-0.08 % of base)
-4 : 63111.dasm (-2.04 % of base)
-4 : 64709.dasm (-0.81 % of base)
-4 : 66113.dasm (-0.81 % of base)
-4 : 66702.dasm (-0.81 % of base)
-4 : 68345.dasm (-0.81 % of base)
-4 : 24078.dasm (-0.87 % of base)
-4 : 38877.dasm (-0.81 % of base)
84 total files with Code Size differences (25 improved, 59 regressed), 20 unchanged.
Top method regressions (bytes):
684 (10.99 % of base) : 45612.dasm - LUDecomp:Run():double:this (Tier1)
620 (6.54 % of base) : 58888.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
612 (6.41 % of base) : 58880.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
592 (6.56 % of base) : 58887.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
560 (15.77 % of base) : 42109.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
392 (19.18 % of base) : 38106.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
352 (15.44 % of base) : 38098.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
296 (9.14 % of base) : 45603.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
292 (11.42 % of base) : 45614.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
252 (10.99 % of base) : 38105.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
248 (13.84 % of base) : 42105.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
248 (13.84 % of base) : 42108.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
232 (9.83 % of base) : 39223.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
232 (6.95 % of base) : 58879.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
232 (6.95 % of base) : 58886.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
224 (1.95 % of base) : 72087.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
224 (1.98 % of base) : 72095.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
216 (9.34 % of base) : 39233.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
216 (16.36 % of base) : 45589.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
216 (16.36 % of base) : 45600.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
Top method improvements (bytes):
-48 (-2.55 % of base) : 80380.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
-36 (-1.77 % of base) : 61262.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1-OSR)
-36 (-1.77 % of base) : 61272.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1-OSR)
-12 (-0.87 % of base) : 1571.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (Tier0-FullOpts)
-12 (-1.32 % of base) : 11686.dasm - System.Security.Cryptography.X509Certificates.SecTrustChainPal:GetCertsArray(System.Collections.Generic.List`1[System.Runtime.InteropServices.SafeHandle]):Microsoft.Win32.SafeHandles.SafeCreateHandle:this (Tier0-FullOpts)
-8 (-1.35 % of base) : 66722.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-8 (-1.35 % of base) : 68369.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-8 (-1.35 % of base) : 72143.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-8 (-1.35 % of base) : 75145.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-8 (-1.35 % of base) : 76038.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-4 (-2.04 % of base) : 63111.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:AllocateSlow():System.__Canon:this (Tier1)
-4 (-0.81 % of base) : 24189.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 64709.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 66113.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 66702.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 68345.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 38877.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 40779.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 5636.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 74437.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
Top method regressions (percentages):
28 (35.00 % of base) : 18110.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
28 (35.00 % of base) : 75429.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
28 (33.33 % of base) : 63160.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
28 (33.33 % of base) : 56652.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
24 (23.08 % of base) : 61597.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
20 (20.83 % of base) : 64305.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
24 (20.69 % of base) : 60524.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
24 (20.69 % of base) : 17723.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
48 (19.35 % of base) : 82667.dasm - Benchstone.BenchI.BubbleSort2:Inner(int[]) (Tier1-OSR)
392 (19.18 % of base) : 38106.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
20 (18.52 % of base) : 61619.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
20 (18.52 % of base) : 65552.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
20 (18.52 % of base) : 67483.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
20 (18.52 % of base) : 67911.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
20 (18.52 % of base) : 67915.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
20 (18.52 % of base) : 80424.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
20 (18.52 % of base) : 81204.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
20 (18.52 % of base) : 16408.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
20 (18.52 % of base) : 73687.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
20 (18.52 % of base) : 75803.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
Top method improvements (percentages):
-48 (-2.55 % of base) : 80380.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
-4 (-2.04 % of base) : 63111.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:AllocateSlow():System.__Canon:this (Tier1)
-36 (-1.77 % of base) : 61262.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1-OSR)
-36 (-1.77 % of base) : 61272.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1-OSR)
-8 (-1.35 % of base) : 66722.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-8 (-1.35 % of base) : 68369.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-8 (-1.35 % of base) : 72143.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-8 (-1.35 % of base) : 75145.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-8 (-1.35 % of base) : 76038.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-12 (-1.32 % of base) : 11686.dasm - System.Security.Cryptography.X509Certificates.SecTrustChainPal:GetCertsArray(System.Collections.Generic.List`1[System.Runtime.InteropServices.SafeHandle]):Microsoft.Win32.SafeHandles.SafeCreateHandle:this (Tier0-FullOpts)
-12 (-0.87 % of base) : 1571.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (Tier0-FullOpts)
-4 (-0.87 % of base) : 14784.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
-4 (-0.87 % of base) : 24078.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
-4 (-0.81 % of base) : 64709.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 66702.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 38877.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 5636.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 74437.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 80028.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 82848.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
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: 15517000 (overridden on cmd)
Total bytes of diff: 15530372 (overridden on cmd)
Total bytes of delta: 13372 (0.09 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
584 : 39846.dasm (6.48 % of base)
572 : 31776.dasm (16.01 % of base)
432 : 31775.dasm (14.01 % of base)
372 : 29467.dasm (19.79 % of base)
328 : 29465.dasm (15.47 % of base)
328 : 32757.dasm (10.51 % of base)
300 : 32754.dasm (10.30 % of base)
240 : 30796.dasm (11.03 % of base)
224 : 39844.dasm (6.91 % of base)
196 : 45044.dasm (1.81 % of base)
188 : 45042.dasm (4.91 % of base)
152 : 47928.dasm (9.82 % of base)
100 : 30798.dasm (11.68 % of base)
96 : 26090.dasm (3.51 % of base)
92 : 11039.dasm (4.51 % of base)
84 : 46264.dasm (4.91 % of base)
84 : 46277.dasm (5.28 % of base)
80 : 32761.dasm (6.31 % of base)
80 : 5875.dasm (3.88 % of base)
76 : 46528.dasm (4.85 % of base)
Top file improvements (bytes):
-32 : 17666.dasm (-0.84 % of base)
-16 : 42551.dasm (-0.75 % of base)
-12 : 1516.dasm (-0.89 % of base)
-12 : 11143.dasm (-1.34 % of base)
-8 : 4821.dasm (-0.81 % of base)
-4 : 4700.dasm (-0.63 % of base)
-4 : 26126.dasm (-0.34 % of base)
73 total files with Code Size differences (7 improved, 66 regressed), 6 unchanged.
Top method regressions (bytes):
584 (6.48 % of base) : 39846.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
572 (16.01 % of base) : 31776.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
432 (14.01 % of base) : 31775.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
372 (19.79 % of base) : 29467.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
328 (15.47 % of base) : 29465.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
328 (10.51 % of base) : 32757.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
300 (10.30 % of base) : 32754.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
240 (11.03 % of base) : 30796.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
224 (6.91 % of base) : 39844.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
196 (1.81 % of base) : 45044.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
188 (4.91 % of base) : 45042.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
152 (9.82 % of base) : 47928.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1)
100 (11.68 % of base) : 30798.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1)
96 (3.51 % of base) : 26090.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier1)
92 (4.51 % of base) : 11039.dasm - System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String (Tier0-FullOpts)
84 (4.91 % of base) : 46264.dasm - System.Numerics.BigInteger:Add(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
84 (5.28 % of base) : 46277.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
80 (6.31 % of base) : 32761.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
80 (3.88 % of base) : 5875.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(long):System.Reflection.MethodInfo:this (Tier1)
76 (4.85 % of base) : 46528.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (Tier1)
Top method improvements (bytes):
-32 (-0.84 % of base) : 17666.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier0-FullOpts)
-16 (-0.75 % of base) : 42551.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1)
-12 (-0.89 % of base) : 1516.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (Tier0-FullOpts)
-12 (-1.34 % of base) : 11143.dasm - System.Security.Cryptography.X509Certificates.SecTrustChainPal:GetCertsArray(System.Collections.Generic.List`1[System.Runtime.InteropServices.SafeHandle]):Microsoft.Win32.SafeHandles.SafeCreateHandle:this (Tier0-FullOpts)
-8 (-0.81 % of base) : 4821.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-4 (-0.63 % of base) : 4700.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
-4 (-0.34 % of base) : 26126.dasm - System.Security.Cryptography.X509Certificates.UnixExportProvider:EncodeCerts(System.Formats.Asn1.AsnWriter,System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[],int,System.Span`1[ubyte],System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref,byref):System.ArraySegment`1[ubyte] (Tier1)
Top method regressions (percentages):
20 (21.74 % of base) : 38994.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
20 (20.83 % of base) : 38939.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
24 (20.69 % of base) : 6072.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
372 (19.79 % of base) : 29467.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
20 (18.52 % of base) : 4195.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
44 (16.92 % of base) : 47286.dasm - Benchstone.BenchI.BenchE:Strsch(ushort[],ushort[],int,int):int (Tier1)
20 (16.67 % of base) : 27699.dasm - EMFloat:IsMantissaZero(ushort[]):ubyte (Tier1)
24 (16.67 % of base) : 42421.dasm - Microsoft.CodeAnalysis.MetadataHelpers:<InferTypeArityFromMetadataName>g__tryScanArity|16_0(System.ReadOnlySpan`1[ushort]):System.Nullable`1[short] (Tier1)
16 (16.67 % of base) : 39041.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (Tier1)
32 (16.33 % of base) : 47850.dasm - Benchstone.BenchI.BubbleSort2:Test():ubyte:this (Tier1-OSR)
24 (16.22 % of base) : 40062.dasm - System.Text.RegularExpressions.Symbolic.CharSetSolver:Or(System.ReadOnlySpan`1[System.Text.RegularExpressions.Symbolic.BDD]):System.Text.RegularExpressions.Symbolic.BDD:this (Tier1)
572 (16.01 % of base) : 31776.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
328 (15.47 % of base) : 29465.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
24 (15.00 % of base) : 30214.dasm - Benchstone.BenchI.IniArray:Test():ushort[]:this (Tier1-OSR)
24 (15.00 % of base) : 41756.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(ushort[],int,int):int (Tier1)
32 (14.29 % of base) : 47849.dasm - Benchstone.BenchI.BubbleSort2:Inner(int[]) (Tier1-OSR)
24 (14.29 % of base) : 47106.dasm - IfStatements.IfStatements:AndAnd():this (Tier1-OSR)
24 (14.29 % of base) : 25112.dasm - IfStatements.IfStatements:AndOr():this (Tier1-OSR)
24 (14.29 % of base) : 48092.dasm - IfStatements.IfStatements:OrOr():this (Tier1-OSR)
8 (14.29 % of base) : 4870.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1)
Top method improvements (percentages):
-12 (-1.34 % of base) : 11143.dasm - System.Security.Cryptography.X509Certificates.SecTrustChainPal:GetCertsArray(System.Collections.Generic.List`1[System.Runtime.InteropServices.SafeHandle]):Microsoft.Win32.SafeHandles.SafeCreateHandle:this (Tier0-FullOpts)
-12 (-0.89 % of base) : 1516.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (Tier0-FullOpts)
-32 (-0.84 % of base) : 17666.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier0-FullOpts)
-8 (-0.81 % of base) : 4821.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-16 (-0.75 % of base) : 42551.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1)
-4 (-0.63 % of base) : 4700.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
-4 (-0.34 % of base) : 26126.dasm - System.Security.Cryptography.X509Certificates.UnixExportProvider:EncodeCerts(System.Formats.Asn1.AsnWriter,System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[],int,System.Span`1[ubyte],System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref,byref):System.ArraySegment`1[ubyte] (Tier1)
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: 486415276 (overridden on cmd)
Total bytes of diff: 486728096 (overridden on cmd)
Total bytes of delta: 312820 (0.06 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
684 : 249229.dasm (10.96 % of base)
584 : 492653.dasm (6.47 % of base)
572 : 492754.dasm (16.01 % of base)
392 : 248947.dasm (19.18 % of base)
372 : 493601.dasm (19.79 % of base)
360 : 481137.dasm (8.20 % of base)
352 : 248943.dasm (15.44 % of base)
344 : 379882.dasm (2.78 % of base)
328 : 493671.dasm (10.51 % of base)
312 : 248946.dasm (13.88 % of base)
296 : 249219.dasm (9.14 % of base)
292 : 249223.dasm (11.42 % of base)
232 : 248983.dasm (9.83 % of base)
232 : 248988.dasm (10.00 % of base)
216 : 249209.dasm (16.36 % of base)
216 : 249217.dasm (16.36 % of base)
200 : 400811.dasm (12.44 % of base)
196 : 381474.dasm (1.70 % of base)
196 : 492710.dasm (1.81 % of base)
192 : 374831.dasm (1.54 % of base)
Top file improvements (bytes):
-80 : 401957.dasm (-4.83 % of base)
-40 : 248666.dasm (-1.95 % of base)
-36 : 248670.dasm (-1.50 % of base)
-20 : 239983.dasm (-2.06 % of base)
-20 : 488329.dasm (-2.34 % of base)
-20 : 28607.dasm (-2.67 % of base)
-20 : 291745.dasm (-2.06 % of base)
-20 : 378108.dasm (-2.38 % of base)
-20 : 299392.dasm (-3.18 % of base)
-20 : 381338.dasm (-2.38 % of base)
-16 : 438438.dasm (-0.78 % of base)
-16 : 492817.dasm (-0.75 % of base)
-16 : 248917.dasm (-0.49 % of base)
-16 : 375093.dasm (-4.76 % of base)
-16 : 375091.dasm (-1.69 % of base)
-16 : 380679.dasm (-1.69 % of base)
-16 : 380680.dasm (-4.76 % of base)
-16 : 438333.dasm (-0.78 % of base)
-16 : 581085.dasm (-1.64 % of base)
-12 : 462438.dasm (-1.48 % of base)
83 total files with Code Size differences (25 improved, 58 regressed), 20 unchanged.
Top method regressions (bytes):
684 (10.96 % of base) : 249229.dasm - LUDecomp:Run():double:this (Tier1)
584 (6.47 % of base) : 492653.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
572 (16.01 % of base) : 492754.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
392 (19.18 % of base) : 248947.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
372 (19.79 % of base) : 493601.dasm - AssignJagged:second_assignments(int[][],short[][]) (FullOpts)
360 (8.20 % of base) : 481137.dasm - VectorTest:TestEntryPoint():int (FullOpts)
352 (15.44 % of base) : 248943.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
344 (2.78 % of base) : 379882.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
328 (10.51 % of base) : 493671.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
312 (13.88 % of base) : 248946.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
296 (9.14 % of base) : 249219.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
292 (11.42 % of base) : 249223.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
232 (9.83 % of base) : 248983.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
232 (10.00 % of base) : 248988.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
216 (16.36 % of base) : 249209.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
216 (16.36 % of base) : 249217.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
200 (12.44 % of base) : 400811.dasm - Complex_Array_Test:TestEntryPoint():int (FullOpts)
196 (1.81 % of base) : 492710.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
196 (1.70 % of base) : 381474.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (Tier1)
192 (1.54 % of base) : 374831.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (Tier1)
Top method improvements (bytes):
-80 (-4.83 % of base) : 401957.dasm - StrAccess1:Run(System.String):int (FullOpts)
-40 (-1.95 % of base) : 248666.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
-36 (-1.50 % of base) : 248670.dasm - NumericSortJagged:Run():double:this (Tier1-OSR)
-20 (-2.06 % of base) : 291745.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (Instrumented Tier1)
-20 (-2.38 % of base) : 378108.dasm - System.Collections.Generic.Dictionary`2[Internal.TypeSystem.Instantiation,System.__Canon]:Resize(int,ubyte):this (Tier1)
-20 (-2.38 % of base) : 381338.dasm - System.Collections.Generic.Dictionary`2[Internal.TypeSystem.Instantiation,System.__Canon]:Resize(int,ubyte):this (Tier1)
-20 (-2.06 % of base) : 239983.dasm - System.Collections.Generic.Dictionary`2[long,System.__Canon]:Resize(int,ubyte):this (Instrumented Tier1)
-20 (-2.34 % of base) : 488329.dasm - System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.NamespaceDefinitionHandle,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-20 (-2.67 % of base) : 28607.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Instrumented Tier1)
-20 (-3.18 % of base) : 299392.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-16 (-0.75 % of base) : 492817.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (FullOpts)
-16 (-0.49 % of base) : 248917.dasm - EMFloatClass:SetupCPUEmFloatArrays(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int) (Tier1)
-16 (-4.76 % of base) : 375093.dasm - ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon],ubyte):this (Tier1)
-16 (-4.76 % of base) : 380680.dasm - ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon],ubyte):this (Tier1)
-16 (-1.69 % of base) : 375091.dasm - ILCompiler.LazyGenericsSupport+GraphBuilder:<.ctor>g__AddEdge|0_2(Internal.TypeSystem.GenericParameterDesc,Internal.TypeSystem.GenericParameterDesc,ubyte):this (Tier1)
-16 (-1.69 % of base) : 380679.dasm - ILCompiler.LazyGenericsSupport+GraphBuilder:<.ctor>g__AddEdge|0_2(Internal.TypeSystem.GenericParameterDesc,Internal.TypeSystem.GenericParameterDesc,ubyte):this (Tier1)
-16 (-0.78 % of base) : 438438.dasm - JIT.HardwareIntrinsics.Arm._AdvSimd.SimpleBinaryOpTest__ShiftLogicalSaturate_Vector128_SByte:ValidateResult(byte[],byte[],byte[],System.String):this (FullOpts)
-16 (-0.78 % of base) : 438333.dasm - JIT.HardwareIntrinsics.Arm._AdvSimd.SimpleBinaryOpTest__ShiftLogicalSaturate_Vector64_SByte:ValidateResult(byte[],byte[],byte[],System.String):this (FullOpts)
-16 (-1.64 % of base) : 581085.dasm - Tracing.Tests.Common.IpcAdvertise:Parse(System.IO.Stream):Tracing.Tests.Common.IpcAdvertise (FullOpts)
-12 (-1.64 % of base) : 448544.dasm - JIT.HardwareIntrinsics.General._Vector256_1.Program:ToStringDouble() (FullOpts)
Top method regressions (percentages):
24 (46.15 % of base) : 530061.dasm - GitHub_5556:SpanAsParam(System.Span`1[long]):long (FullOpts)
24 (46.15 % of base) : 530062.dasm - GitHub_5556:SpanWithLocalCopy(System.Span`1[long]):long (FullOpts)
20 (45.45 % of base) : 493328.dasm - Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
24 (40.00 % of base) : 505633.dasm - CreateSpanTest:Main():int (FullOpts)
24 (40.00 % of base) : 492488.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
24 (40.00 % of base) : 492507.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
28 (35.00 % of base) : 344649.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
20 (33.33 % of base) : 492491.dasm - Span.IndexerBench:TestIndexer2(System.Span`1[ubyte]):ubyte (FullOpts)
20 (33.33 % of base) : 492494.dasm - Span.IndexerBench:TestIndexer3(System.Span`1[ubyte]):ubyte (FullOpts)
20 (33.33 % of base) : 492510.dasm - Span.IndexerBench:TestReadOnlyIndexer2(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
60 (29.41 % of base) : 491270.dasm - Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)
20 (27.78 % of base) : 492500.dasm - Span.IndexerBench:TestIndexer5(System.Span`1[ubyte],byref):ubyte (FullOpts)
20 (27.78 % of base) : 490040.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
24 (27.27 % of base) : 492497.dasm - Span.IndexerBench:TestIndexer4(System.Span`1[ubyte],int):ubyte (FullOpts)
24 (27.27 % of base) : 378288.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
24 (27.27 % of base) : 381394.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
24 (25.00 % of base) : 406869.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[ubyte]:ReturnArrays(int):this (FullOpts)
24 (25.00 % of base) : 581735.dasm - System.Diagnostics.FileVersionInfo:ParseUInt16UntilNonDigit(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
24 (23.08 % of base) : 485924.dasm - ImplicitByrefTailCalls:L(System.Span`1[int]):int (FullOpts)
24 (23.08 % of base) : 379476.dasm - System.Linq.EnumerableSorter`1[Internal.NativeFormat.VertexHashtable+Entry]:ComputeMap(Internal.NativeFormat.VertexHashtable+Entry[],int):int[]:this (Tier1-OSR)
Top method improvements (percentages):
-80 (-4.83 % of base) : 401957.dasm - StrAccess1:Run(System.String):int (FullOpts)
-16 (-4.76 % of base) : 375093.dasm - ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon],ubyte):this (Tier1)
-16 (-4.76 % of base) : 380680.dasm - ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon],ubyte):this (Tier1)
-20 (-3.18 % of base) : 299392.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-12 (-2.86 % of base) : 300223.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-20 (-2.67 % of base) : 28607.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Instrumented Tier1)
-20 (-2.38 % of base) : 378108.dasm - System.Collections.Generic.Dictionary`2[Internal.TypeSystem.Instantiation,System.__Canon]:Resize(int,ubyte):this (Tier1)
-20 (-2.38 % of base) : 381338.dasm - System.Collections.Generic.Dictionary`2[Internal.TypeSystem.Instantiation,System.__Canon]:Resize(int,ubyte):this (Tier1)
-20 (-2.34 % of base) : 488329.dasm - System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.NamespaceDefinitionHandle,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-20 (-2.06 % of base) : 291745.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (Instrumented Tier1)
-20 (-2.06 % of base) : 239983.dasm - System.Collections.Generic.Dictionary`2[long,System.__Canon]:Resize(int,ubyte):this (Instrumented Tier1)
-40 (-1.95 % of base) : 248666.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
-16 (-1.69 % of base) : 375091.dasm - ILCompiler.LazyGenericsSupport+GraphBuilder:<.ctor>g__AddEdge|0_2(Internal.TypeSystem.GenericParameterDesc,Internal.TypeSystem.GenericParameterDesc,ubyte):this (Tier1)
-16 (-1.69 % of base) : 380679.dasm - ILCompiler.LazyGenericsSupport+GraphBuilder:<.ctor>g__AddEdge|0_2(Internal.TypeSystem.GenericParameterDesc,Internal.TypeSystem.GenericParameterDesc,ubyte):this (Tier1)
-12 (-1.64 % of base) : 448544.dasm - JIT.HardwareIntrinsics.General._Vector256_1.Program:ToStringDouble() (FullOpts)
-16 (-1.64 % of base) : 581085.dasm - Tracing.Tests.Common.IpcAdvertise:Parse(System.IO.Stream):Tracing.Tests.Common.IpcAdvertise (FullOpts)
-12 (-1.59 % of base) : 448542.dasm - JIT.HardwareIntrinsics.General._Vector256_1.Program:ToStringSingle() (FullOpts)
-12 (-1.57 % of base) : 462441.dasm - JIT.HardwareIntrinsics.General._Vector512_1.Program:ToStringDouble() (FullOpts)
-36 (-1.50 % of base) : 248670.dasm - NumericSortJagged:Run():double:this (Tier1-OSR)
-12 (-1.48 % of base) : 462438.dasm - JIT.HardwareIntrinsics.General._Vector512_1.Program:ToStringSingle() (FullOpts)
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: 55725640 (overridden on cmd)
Total bytes of diff: 55803524 (overridden on cmd)
Total bytes of delta: 77884 (0.14 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
1188 : 140498.dasm (4.35 % of base)
264 : 141469.dasm (6.13 % of base)
208 : 2206.dasm (1.93 % of base)
152 : 107226.dasm (5.11 % of base)
140 : 1063.dasm (8.31 % of base)
120 : 141185.dasm (3.75 % of base)
112 : 20001.dasm (6.90 % of base)
112 : 221913.dasm (13.59 % of base)
108 : 159858.dasm (8.94 % of base)
104 : 150283.dasm (0.74 % of base)
100 : 107227.dasm (5.17 % of base)
100 : 194776.dasm (3.32 % of base)
100 : 218637.dasm (6.38 % of base)
100 : 218638.dasm (6.33 % of base)
100 : 208772.dasm (2.59 % of base)
96 : 103191.dasm (2.08 % of base)
96 : 44697.dasm (1.97 % of base)
92 : 160027.dasm (2.96 % of base)
92 : 211311.dasm (2.71 % of base)
88 : 82856.dasm (2.57 % of base)
Top file improvements (bytes):
-56 : 148400.dasm (-1.10 % of base)
-48 : 207149.dasm (-5.38 % of base)
-40 : 140298.dasm (-1.50 % of base)
-40 : 193845.dasm (-5.38 % of base)
-36 : 71170.dasm (-0.68 % of base)
-32 : 149374.dasm (-3.29 % of base)
-24 : 160653.dasm (-10.00 % of base)
-24 : 198763.dasm (-3.31 % of base)
-20 : 18552.dasm (-2.23 % of base)
-20 : 110316.dasm (-0.88 % of base)
-20 : 129526.dasm (-1.79 % of base)
-16 : 62793.dasm (-4.71 % of base)
-16 : 40292.dasm (-1.44 % of base)
-16 : 87012.dasm (-0.22 % of base)
-12 : 213123.dasm (-1.43 % of base)
-12 : 16988.dasm (-0.97 % of base)
-12 : 15639.dasm (-0.91 % of base)
-12 : 198585.dasm (-2.31 % of base)
-12 : 218181.dasm (-3.19 % of base)
-12 : 218616.dasm (-2.42 % of base)
84 total files with Code Size differences (26 improved, 58 regressed), 20 unchanged.
Top method regressions (bytes):
1188 (4.35 % of base) : 140498.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
264 (6.13 % of base) : 141469.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
208 (1.93 % of base) : 2206.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
152 (5.11 % of base) : 107226.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
140 (8.31 % of base) : 1063.dasm - System.Type:FindMembers(int,int,System.Reflection.MemberFilter,System.Object):System.Reflection.MemberInfo[]:this (FullOpts)
120 (3.75 % of base) : 141185.dasm - Microsoft.VisualBasic.CompilerServices.VB6File:Print(System.Object[]):this (FullOpts)
112 (13.59 % of base) : 221913.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
112 (6.90 % of base) : 20001.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)
108 (8.94 % of base) : 159858.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext:FindBestMethod(System.Reflection.MethodInfo[],ubyte,ubyte,System.String,int[]):System.Reflection.MethodInfo (FullOpts)
104 (0.74 % of base) : 150283.dasm - System.Data.XmlTreeGen:HandleTable(System.Data.DataTable,System.Xml.XmlDocument,System.Xml.XmlElement,ubyte):System.Xml.XmlElement:this (FullOpts)
100 (5.17 % of base) : 107227.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
100 (3.32 % of base) : 194776.dasm - System.Data.Common.MultipartIdentifier:ParseMultipartIdentifier(System.String,System.String,System.String,ushort,int,ubyte,System.String,ubyte):System.String[] (FullOpts)
100 (2.59 % of base) : 208772.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,System.__Canon]:MergeSortCooperatively():this (FullOpts)
100 (6.38 % of base) : 218637.dasm - System.Numerics.BigInteger:Add(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (FullOpts)
100 (6.33 % of base) : 218638.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (FullOpts)
96 (1.97 % of base) : 44697.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
96 (2.08 % of base) : 103191.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
92 (2.71 % of base) : 211311.dasm - System.Reflection.DispatchProxyGenerator+ProxyBuilder:AddMethodImpl(System.Reflection.MethodInfo,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
92 (2.96 % of base) : 160027.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
88 (2.57 % of base) : 82856.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportUnspecificProcedures(Microsoft.CodeAnalysis.Location,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte) (FullOpts)
Top method improvements (bytes):
-56 (-1.10 % of base) : 148400.dasm - System.Data.Common.DbDataAdapter:Update(System.Data.DataRow[],System.Data.Common.DataTableMapping):int:this (FullOpts)
-48 (-5.38 % of base) : 207149.dasm - ILCompiler.Reflection.ReadyToRun.NativeCuckooFilter:ToString():System.String:this (FullOpts)
-40 (-1.50 % of base) : 140298.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexGet(System.Object,System.Object[],System.String[]):System.Object (FullOpts)
-40 (-5.38 % of base) : 193845.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo (FullOpts)
-36 (-0.68 % of base) : 71170.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
-32 (-3.29 % of base) : 149374.dasm - System.Data.DataTable:GetPropertyDescriptorCollection():System.ComponentModel.PropertyDescriptorCollection:this (FullOpts)
-24 (-3.31 % of base) : 198763.dasm - System.Runtime.Serialization.DataContracts.DataContract:ValidatePreviousCollectionTypes(System.Type,System.Type,System.Collections.Generic.HashSet`1[System.Type]) (FullOpts)
-24 (-10.00 % of base) : 160653.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
-20 (-0.88 % of base) : 110316.dasm - Microsoft.Diagnostics.Tracing.ActivityComputer:ResolveWellKnownSymbols():this (FullOpts)
-20 (-1.79 % of base) : 129526.dasm - Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetch:ToStream(FastSerialization.Serializer):this (FullOpts)
-20 (-2.23 % of base) : 18552.dasm - System.Collections.Generic.Dictionary`2[long,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-16 (-1.44 % of base) : 40292.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:GetResults(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:this (FullOpts)
-16 (-4.71 % of base) : 62793.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
-16 (-0.22 % of base) : 87012.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedEventAccessorSymbol:ConstructFieldLikeEventAccessorBody_Regular(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceEventSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundBlock (FullOpts)
-12 (-2.75 % of base) : 67337.dasm - Microsoft.CodeAnalysis.CSharp.UnboundLambdaState+ReturnInferenceCacheKey:Equals(System.Object):ubyte:this (FullOpts)
-12 (-2.42 % of base) : 218616.dasm - System.Globalization.FormatProvider+Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-12 (-0.91 % of base) : 15639.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (FullOpts)
-12 (-1.43 % of base) : 213123.dasm - System.Net.NetworkInformation.BsdIPGlobalProperties:GetActiveUdpListeners():System.Net.IPEndPoint[]:this (FullOpts)
-12 (-3.19 % of base) : 218181.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-12 (-0.97 % of base) : 16988.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
Top method regressions (percentages):
36 (60.00 % of base) : 168923.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
36 (60.00 % of base) : 23340.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
32 (57.14 % of base) : 224528.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
36 (56.25 % of base) : 198963.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
32 (53.33 % of base) : 194146.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
32 (53.33 % of base) : 196006.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
36 (52.94 % of base) : 170071.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (52.94 % of base) : 24499.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (52.94 % of base) : 81297.dasm - System.Text.RegularExpressions.Symbolic.UInt64Solver:Or(System.ReadOnlySpan`1[ulong]):ulong:this (FullOpts)
40 (47.62 % of base) : 23430.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
40 (47.62 % of base) : 169009.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
40 (47.62 % of base) : 204361.dasm - System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetStartsWithDistance|11_1(System.String,System.String):int (FullOpts)
32 (44.44 % of base) : 202245.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
44 (42.31 % of base) : 171050.dasm - Microsoft.CodeAnalysis.MemoryExtensions:IndexOfAny(System.ReadOnlySpan`1[ushort],ushort[]):int (FullOpts)
44 (42.31 % of base) : 25599.dasm - Microsoft.CodeAnalysis.MemoryExtensions:IndexOfAny(System.ReadOnlySpan`1[ushort],ushort[]):int (FullOpts)
36 (36.00 % of base) : 221893.dasm - System.Diagnostics.ActivityTraceId:IsLowerCaseHexAndNotAllZeros(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
32 (34.78 % of base) : 231799.dasm - System.Formats.Asn1.AsnDecoder:InterpretNamedBitListReversed(System.ReadOnlySpan`1[ubyte]):long (FullOpts)
32 (33.33 % of base) : 23327.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)
32 (33.33 % of base) : 168912.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)
36 (32.14 % of base) : 181165.dasm - Microsoft.CodeAnalysis.SpanUtilities:All[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
Top method improvements (percentages):
-24 (-10.00 % of base) : 160653.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
-48 (-5.38 % of base) : 207149.dasm - ILCompiler.Reflection.ReadyToRun.NativeCuckooFilter:ToString():System.String:this (FullOpts)
-40 (-5.38 % of base) : 193845.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo (FullOpts)
-16 (-4.71 % of base) : 62793.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
-24 (-3.31 % of base) : 198763.dasm - System.Runtime.Serialization.DataContracts.DataContract:ValidatePreviousCollectionTypes(System.Type,System.Type,System.Collections.Generic.HashSet`1[System.Type]) (FullOpts)
-32 (-3.29 % of base) : 149374.dasm - System.Data.DataTable:GetPropertyDescriptorCollection():System.ComponentModel.PropertyDescriptorCollection:this (FullOpts)
-12 (-3.19 % of base) : 218181.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-12 (-2.75 % of base) : 67337.dasm - Microsoft.CodeAnalysis.CSharp.UnboundLambdaState+ReturnInferenceCacheKey:Equals(System.Object):ubyte:this (FullOpts)
-12 (-2.42 % of base) : 218616.dasm - System.Globalization.FormatProvider+Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-12 (-2.31 % of base) : 198585.dasm - System.Xml.XmlCanonicalWriter:SortAttributes():this (FullOpts)
-4 (-2.27 % of base) : 149128.dasm - System.Data.DataError:GetColumnsInError():System.Data.DataColumn[]:this (FullOpts)
-20 (-2.23 % of base) : 18552.dasm - System.Collections.Generic.Dictionary`2[long,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-4 (-2.08 % of base) : 149263.dasm - System.Data.DataKey:GetIndexDesc():System.Data.IndexField[]:this (FullOpts)
-4 (-1.89 % of base) : 202579.dasm - System.Reflection.Metadata.MetadataReader:ComputeCodedTokenSize(int,int[],ulong):int:this (FullOpts)
-20 (-1.79 % of base) : 129526.dasm - Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetch:ToStream(FastSerialization.Serializer):this (FullOpts)
-8 (-1.61 % of base) : 233877.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities+<>c__DisplayClass18_0:<CreateFactoryReflection>g__GetFactoryParameterContext|3():Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext[]:this (FullOpts)
-8 (-1.52 % of base) : 159632.dasm - System.Xml.Schema.FacetsChecker+FacetsCompiler:Preprocess(System.String):System.String (FullOpts)
-40 (-1.50 % of base) : 140298.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexGet(System.Object,System.Object[],System.String[]):System.Object (FullOpts)
-16 (-1.44 % of base) : 40292.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:GetResults(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:this (FullOpts)
-12 (-1.43 % of base) : 213123.dasm - System.Net.NetworkInformation.BsdIPGlobalProperties:GetActiveUdpListeners():System.Net.IPEndPoint[]:this (FullOpts)
libraries.pmi.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 80218788 (overridden on cmd)
Total bytes of diff: 80317924 (overridden on cmd)
Total bytes of delta: 99136 (0.12 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
1060 : 189302.dasm (3.97 % of base)
264 : 189316.dasm (4.39 % of base)
232 : 5214.dasm (2.26 % of base)
180 : 133776.dasm (3.23 % of base)
144 : 188117.dasm (4.10 % of base)
140 : 3558.dasm (8.88 % of base)
136 : 137883.dasm (3.05 % of base)
136 : 166524.dasm (1.81 % of base)
136 : 207573.dasm (2.97 % of base)
124 : 189205.dasm (3.01 % of base)
124 : 119252.dasm (3.53 % of base)
112 : 296584.dasm (8.67 % of base)
108 : 5532.dasm (1.22 % of base)
108 : 207574.dasm (2.98 % of base)
100 : 162356.dasm (6.33 % of base)
100 : 205165.dasm (8.80 % of base)
100 : 287537.dasm (6.30 % of base)
100 : 59529.dasm (1.74 % of base)
100 : 113328.dasm (3.19 % of base)
100 : 114967.dasm (4.30 % of base)
Top file improvements (bytes):
-52 : 188575.dasm (-1.95 % of base)
-36 : 189309.dasm (-1.28 % of base)
-32 : 26590.dasm (-0.85 % of base)
-28 : 198135.dasm (-12.50 % of base)
-28 : 79370.dasm (-1.17 % of base)
-24 : 201508.dasm (-3.37 % of base)
-24 : 205501.dasm (-10.71 % of base)
-20 : 140306.dasm (-0.94 % of base)
-16 : 26588.dasm (-1.20 % of base)
-16 : 26594.dasm (-0.87 % of base)
-16 : 32984.dasm (-2.03 % of base)
-12 : 169011.dasm (-2.36 % of base)
-12 : 178919.dasm (-0.82 % of base)
-12 : 186543.dasm (-1.34 % of base)
-12 : 61202.dasm (-0.61 % of base)
-12 : 72091.dasm (-0.58 % of base)
-8 : 211674.dasm (-1.06 % of base)
-8 : 213980.dasm (-1.55 % of base)
-8 : 26589.dasm (-0.51 % of base)
-8 : 299350.dasm (-1.32 % of base)
87 total files with Code Size differences (30 improved, 57 regressed), 20 unchanged.
Top method regressions (bytes):
1060 (3.97 % of base) : 189302.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
264 (4.39 % of base) : 189316.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
232 (2.26 % of base) : 5214.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
180 (3.23 % of base) : 133776.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
144 (4.10 % of base) : 188117.dasm - System.Data.Common.MultipartIdentifier:ParseMultipartIdentifier(System.String,System.String,System.String,ushort,int,ubyte,System.String,ubyte):System.String[] (FullOpts)
140 (8.88 % of base) : 3558.dasm - System.Type:FindMembers(int,int,System.Reflection.MemberFilter,System.Object):System.Reflection.MemberInfo[]:this (FullOpts)
136 (1.81 % of base) : 166524.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
136 (3.05 % of base) : 137883.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
136 (2.97 % of base) : 207573.dasm - System.Xml.Serialization.TempAssembly:GenerateSerializerToStream(System.Xml.Serialization.XmlMapping[],System.Type[],System.String,System.Reflection.Assembly,System.Collections.Hashtable,System.IO.Stream):ubyte (FullOpts)
124 (3.53 % of base) : 119252.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbol:GetAttributesToBind(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax]],int,Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax]:this (FullOpts)
124 (3.01 % of base) : 189205.dasm - Microsoft.VisualBasic.CompilerServices.VB6File:Print(System.Object[]):this (FullOpts)
112 (8.67 % of base) : 296584.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
108 (1.22 % of base) : 5532.dasm - System.DateTimeFormat:FormatCustomized[ubyte](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
108 (2.98 % of base) : 207574.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
100 (1.74 % of base) : 59529.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
100 (3.19 % of base) : 113328.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol] (FullOpts)
100 (4.30 % of base) : 114967.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckForOverloadsErrors(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
100 (8.80 % of base) : 205165.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext:FindBestMethod(System.Reflection.MethodInfo[],ubyte,ubyte,System.String,int[]):System.Reflection.MethodInfo (FullOpts)
100 (6.33 % of base) : 162356.dasm - Xunit.Serialization.XunitSerializationInfo+ArraySerializer:Deserialize(Xunit.Abstractions.IXunitSerializationInfo):this (FullOpts)
100 (6.30 % of base) : 287537.dasm - Xunit.Serialization.XunitSerializationInfo+ArraySerializer:Deserialize(Xunit.Abstractions.IXunitSerializationInfo):this (FullOpts)
Top method improvements (bytes):
-52 (-1.95 % of base) : 188575.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexSet(System.Object,System.Object[],System.String[]) (FullOpts)
-36 (-1.28 % of base) : 189309.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-32 (-0.85 % of base) : 26590.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-28 (-1.17 % of base) : 79370.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
-28 (-12.50 % of base) : 198135.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
-24 (-3.37 % of base) : 201508.dasm - System.Xml.Schema.FacetsChecker+FacetsCompiler:Preprocess(System.String):System.String (FullOpts)
-24 (-10.71 % of base) : 205501.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
-20 (-0.94 % of base) : 140306.dasm - Microsoft.Diagnostics.Tracing.ActivityComputer:ResolveWellKnownSymbols():this (FullOpts)
-16 (-2.03 % of base) : 32984.dasm - System.Collections.Generic.Dictionary`2[ubyte,System.Nullable`1[int]]:Resize(int,ubyte):this (FullOpts)
-16 (-0.87 % of base) : 26594.dasm - System.Reflection.MethodBaseInvoker:InvokeConstructorWithoutAlloc(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-16 (-1.20 % of base) : 26588.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-12 (-0.61 % of base) : 61202.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:ApplyDeconstructionConversion(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.LocalRewriter+DeconstructionSideEffects,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-12 (-0.58 % of base) : 72091.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__makeContent|428_4(System.ReadOnlySpan`1[ushort],System.Text.StringBuilder,ubyte,ubyte,System.ReadOnlySpan`1[ushort],byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolatedStringContentSyntax:this (FullOpts)
-12 (-1.34 % of base) : 186543.dasm - System.Security.Cryptography.X509Certificates.SecTrustChainPal:GetCertsArray(System.Collections.Generic.List`1[System.Runtime.InteropServices.SafeHandle]):Microsoft.Win32.SafeHandles.SafeCreateHandle:this (FullOpts)
-12 (-0.82 % of base) : 178919.dasm - System.Text.Json.JsonHelpers:TryParseDateTimeOffset(System.ReadOnlySpan`1[ubyte],byref):ubyte (FullOpts)
-12 (-2.36 % of base) : 169011.dasm - System.Xml.XmlCanonicalWriter:SortAttributes():this (FullOpts)
-8 (-0.10 % of base) : 57326.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:FindEntryPoint(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Threading.CancellationToken,byref):Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:this (FullOpts)
-8 (-1.55 % of base) : 213980.dasm - System.Data.Index:GetUniqueKeyValues(System.Collections.Generic.List`1[System.Object[]],int):this (FullOpts)
-8 (-1.06 % of base) : 211674.dasm - System.Data.XSDSchema:HandleRelations(System.Xml.Schema.XmlSchemaAnnotation,ubyte):this (FullOpts)
-8 (-0.76 % of base) : 794.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
Top method regressions (percentages):
24 (40.00 % of base) : 232038.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
24 (40.00 % of base) : 34604.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
20 (35.71 % of base) : 310288.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
24 (35.29 % of base) : 234157.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
24 (35.29 % of base) : 36880.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
24 (35.29 % of base) : 170148.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
24 (35.29 % of base) : 161255.dasm - System.Text.RegularExpressions.Symbolic.UInt64Solver:Or(System.ReadOnlySpan`1[ulong]):ulong:this (FullOpts)
32 (33.33 % of base) : 229458.dasm - Microsoft.Build.Shared.FileMatcher:HasDotDot(System.String):ubyte (FullOpts)
24 (33.33 % of base) : 232029.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ushort]):int (FullOpts)
24 (33.33 % of base) : 34593.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ushort]):int (FullOpts)
28 (33.33 % of base) : 232542.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
28 (33.33 % of base) : 35246.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
28 (33.33 % of base) : 260561.dasm - System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetStartsWithDistance|11_1(System.String,System.String):int (FullOpts)
20 (33.33 % of base) : 256566.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
20 (33.33 % of base) : 300588.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
32 (30.77 % of base) : 235131.dasm - Microsoft.CodeAnalysis.MemoryExtensions:IndexOfAny(System.ReadOnlySpan`1[ushort],ushort[]):int (FullOpts)
32 (30.77 % of base) : 38001.dasm - Microsoft.CodeAnalysis.MemoryExtensions:IndexOfAny(System.ReadOnlySpan`1[ushort],ushort[]):int (FullOpts)
20 (27.78 % of base) : 221713.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
56 (26.92 % of base) : 203694.dasm - System.Xml.Xsl.XPathConvert+BigInteger:CompareTo(System.Object):int:this (FullOpts)
32 (26.67 % of base) : 180022.dasm - System.Text.Json.ReadStack:GetTopJsonTypeInfoWithParameterizedConstructor():System.Text.Json.Serialization.Metadata.JsonTypeInfo:this (FullOpts)
Top method improvements (percentages):
-28 (-12.50 % of base) : 198135.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
-24 (-10.71 % of base) : 205501.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
-24 (-3.37 % of base) : 201508.dasm - System.Xml.Schema.FacetsChecker+FacetsCompiler:Preprocess(System.String):System.String (FullOpts)
-4 (-2.63 % of base) : 212022.dasm - System.Data.DataError:GetColumnsInError():System.Data.DataColumn[]:this (FullOpts)
-4 (-2.38 % of base) : 212358.dasm - System.Data.DataKey:GetIndexDesc():System.Data.IndexField[]:this (FullOpts)
-12 (-2.36 % of base) : 169011.dasm - System.Xml.XmlCanonicalWriter:SortAttributes():this (FullOpts)
-16 (-2.03 % of base) : 32984.dasm - System.Collections.Generic.Dictionary`2[ubyte,System.Nullable`1[int]]:Resize(int,ubyte):this (FullOpts)
-52 (-1.95 % of base) : 188575.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexSet(System.Object,System.Object[],System.String[]) (FullOpts)
-4 (-1.75 % of base) : 103932.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel+SortBy@2594-1[ubyte,System.Nullable`1[int]]:Invoke(int):this (FullOpts)
-4 (-1.61 % of base) : 261059.dasm - System.Collections.SortedList:ToDebugViewDictionaryItemArray():System.Collections.Generic.DebugViewDictionaryItem`2[System.Object,System.Object][]:this (FullOpts)
-8 (-1.55 % of base) : 213980.dasm - System.Data.Index:GetUniqueKeyValues(System.Collections.Generic.List`1[System.Object[]],int):this (FullOpts)
-12 (-1.34 % of base) : 186543.dasm - System.Security.Cryptography.X509Certificates.SecTrustChainPal:GetCertsArray(System.Collections.Generic.List`1[System.Runtime.InteropServices.SafeHandle]):Microsoft.Win32.SafeHandles.SafeCreateHandle:this (FullOpts)
-8 (-1.32 % of base) : 299350.dasm - System.Security.Cryptography.Pkcs.CmsSigner:BuildAttributes(System.Security.Cryptography.CryptographicAttributeObjectCollection):System.Collections.Generic.List`1[System.Security.Cryptography.Asn1.AttributeAsn] (FullOpts)
-4 (-1.30 % of base) : 292674.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:GetValues(System.Object[]):System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]:this (FullOpts)
-36 (-1.28 % of base) : 189309.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-16 (-1.20 % of base) : 26588.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-28 (-1.17 % of base) : 79370.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
-4 (-1.10 % of base) : 8057.dasm - System.Number+Grisu3:TryRoundWeedCounted(System.Span`1[ubyte],int,ulong,ulong,ulong,byref):ubyte (FullOpts)
-4 (-1.09 % of base) : 314883.dasm - System.Collections.Concurrent.ConcurrentStack`1[ubyte]:PushRange(ubyte[],int,int):this (FullOpts)
-8 (-1.06 % of base) : 211674.dasm - System.Data.XSDSchema:HandleRelations(System.Xml.Schema.XmlSchemaAnnotation,ubyte):this (FullOpts)
libraries_tests.run.osx.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 324601508 (overridden on cmd)
Total bytes of diff: 325000848 (overridden on cmd)
Total bytes of delta: 399340 (0.12 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
524 : 88301.dasm (4.41 % of base)
380 : 613162.dasm (3.13 % of base)
364 : 155782.dasm (3.06 % of base)
364 : 614056.dasm (5.97 % of base)
340 : 349592.dasm (2.77 % of base)
336 : 112531.dasm (2.59 % of base)
328 : 600668.dasm (1.96 % of base)
324 : 477989.dasm (2.48 % of base)
320 : 316147.dasm (2.46 % of base)
316 : 353187.dasm (2.45 % of base)
316 : 56219.dasm (2.65 % of base)
316 : 237667.dasm (2.48 % of base)
300 : 271702.dasm (3.12 % of base)
300 : 429121.dasm (3.16 % of base)
300 : 95758.dasm (3.12 % of base)
296 : 473498.dasm (2.43 % of base)
292 : 121269.dasm (2.28 % of base)
288 : 628786.dasm (2.29 % of base)
284 : 334250.dasm (2.22 % of base)
284 : 330209.dasm (2.20 % of base)
Top file improvements (bytes):
-92 : 602283.dasm (-1.47 % of base)
-76 : 158360.dasm (-2.03 % of base)
-52 : 239402.dasm (-2.09 % of base)
-36 : 87398.dasm (-1.67 % of base)
-32 : 611078.dasm (-0.53 % of base)
-28 : 243201.dasm (-1.28 % of base)
-28 : 611098.dasm (-1.16 % of base)
-28 : 343052.dasm (-2.02 % of base)
-20 : 221234.dasm (-3.21 % of base)
-20 : 239828.dasm (-2.02 % of base)
-20 : 243463.dasm (-3.27 % of base)
-20 : 243216.dasm (-2.02 % of base)
-20 : 246694.dasm (-3.23 % of base)
-20 : 25878.dasm (-2.72 % of base)
-20 : 571551.dasm (-0.81 % of base)
-20 : 595242.dasm (-2.38 % of base)
-20 : 614408.dasm (-2.38 % of base)
-20 : 158174.dasm (-0.43 % of base)
-20 : 171721.dasm (-3.14 % of base)
-20 : 190341.dasm (-3.23 % of base)
88 total files with Code Size differences (28 improved, 60 regressed), 20 unchanged.
Top method regressions (bytes):
524 (4.41 % of base) : 88301.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
380 (3.13 % of base) : 613162.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
364 (5.97 % of base) : 614056.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]:IntroSort(System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]],int,System.Comparison`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]) (Tier1)
364 (3.06 % of base) : 155782.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
340 (2.77 % of base) : 349592.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
336 (2.59 % of base) : 112531.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
328 (1.96 % of base) : 600668.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1)
324 (2.48 % of base) : 477989.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
320 (2.46 % of base) : 316147.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
316 (2.45 % of base) : 353187.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
316 (2.48 % of base) : 237667.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
316 (2.65 % of base) : 56219.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
300 (3.12 % of base) : 271702.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
300 (3.16 % of base) : 429121.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
300 (3.12 % of base) : 95758.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
296 (2.43 % of base) : 473498.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
292 (2.28 % of base) : 121269.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
288 (2.29 % of base) : 628786.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
284 (2.22 % of base) : 334250.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
284 (2.20 % of base) : 330209.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
Top method improvements (bytes):
-92 (-1.47 % of base) : 602283.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArgumentsEvaluate(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]:this (Tier1)
-76 (-2.03 % of base) : 158360.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArgumentsEvaluate(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]:this (Tier1)
-52 (-2.09 % of base) : 239402.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
-36 (-1.67 % of base) : 87398.dasm - System.Threading.Tasks.Parallel:ForWorker[System.__Canon,int](int,int,System.Threading.Tasks.ParallelOptions,System.Action`1[int],System.Action`2[int,System.Threading.Tasks.ParallelLoopState],System.Func`4[int,System.__Canon,System.__Canon,System.__Canon],System.Func`1[System.__Canon],System.Action`1[System.__Canon]):System.Threading.Tasks.ParallelLoopResult (Tier1)
-32 (-0.53 % of base) : 611078.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArrayAccess(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
-28 (-2.02 % of base) : 343052.dasm - Interop+AppleCrypto:SslCtxSetAlpnProtos(System.Net.SafeSslHandle,System.Collections.Generic.List`1[System.Net.Security.SslApplicationProtocol]) (Tier0-FullOpts)
-28 (-1.16 % of base) : 611098.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:GetEffectiveParameterTypes(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte],ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref,byref) (Tier1)
-28 (-1.28 % of base) : 243201.dasm - System.Diagnostics.Tracing.EventSource:DoCommand(System.Diagnostics.Tracing.EventCommandEventArgs):this (Instrumented Tier1)
-20 (-0.36 % of base) : 613427.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:MergeOrRemoveCandidates(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Predicate`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.CSharp.ConversionsBase,short,byref) (Tier1)
-20 (-0.43 % of base) : 158174.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MemberRefMetadataDecoder:MethodSymbolMatchesParamInfo(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][]):ubyte (Tier1)
-20 (-2.02 % of base) : 239828.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (Instrumented Tier1)
-20 (-2.38 % of base) : 614408.dasm - System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.SyntaxTrivia,System.__Canon]:Resize(int,ubyte):this (Tier1)
-20 (-2.02 % of base) : 243216.dasm - System.Collections.Generic.Dictionary`2[ulong,System.__Canon]:Resize(int,ubyte):this (Instrumented Tier1)
-20 (-2.38 % of base) : 595242.dasm - System.Collections.Generic.Dictionary`2[ulong,System.__Canon]:Resize(int,ubyte):this (Tier1)
-20 (-2.72 % of base) : 25878.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Instrumented Tier1)
-20 (-3.21 % of base) : 221234.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.27 % of base) : 243463.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.23 % of base) : 246694.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.14 % of base) : 171721.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.23 % of base) : 190341.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
Top method regressions (percentages):
24 (40.00 % of base) : 599219.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
24 (40.00 % of base) : 88112.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
24 (40.00 % of base) : 51389.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
24 (35.29 % of base) : 603331.dasm - System.Text.RegularExpressions.RegexCharClass:IsAscii(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
28 (35.00 % of base) : 395505.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
24 (30.00 % of base) : 500740.dasm - System.Text.Tests.TranscodingStreamTests+<>c:<GetVeryLongAsciiString>b__40_0(System.Span`1[ushort],System.Object):this (Tier1)
20 (27.78 % of base) : 610964.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
24 (27.27 % of base) : 89466.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
24 (27.27 % of base) : 611297.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
24 (27.27 % of base) : 569009.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
24 (27.27 % of base) : 542577.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
24 (27.27 % of base) : 613754.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
36 (26.47 % of base) : 493483.dasm - System.Numerics.BigIntegerCalculator:AddSelf(System.Span`1[uint],System.ReadOnlySpan`1[uint]) (Tier1)
36 (26.47 % of base) : 434486.dasm - System.Numerics.BigIntegerCalculator:AddSelf(System.Span`1[uint],System.ReadOnlySpan`1[uint]) (Tier1)
36 (26.47 % of base) : 470558.dasm - System.Numerics.BigIntegerCalculator:AddSelf(System.Span`1[uint],System.ReadOnlySpan`1[uint]) (Tier1)
36 (26.47 % of base) : 493485.dasm - System.Numerics.BigIntegerCalculator:SubtractSelf(System.Span`1[uint],System.ReadOnlySpan`1[uint]) (Tier1)
36 (26.47 % of base) : 470560.dasm - System.Numerics.BigIntegerCalculator:SubtractSelf(System.Span`1[uint],System.ReadOnlySpan`1[uint]) (Tier1)
32 (23.53 % of base) : 409790.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (Tier1)
24 (23.08 % of base) : 306396.dasm - System.Linq.EnumerableSorter`1[int]:ComputeMap(int[],int):int[]:this (Tier1-OSR)
24 (23.08 % of base) : 302392.dasm - System.Linq.EnumerableSorter`1[int]:ComputeMap(int[],int):int[]:this (Tier1-OSR)
Top method improvements (percentages):
-20 (-3.27 % of base) : 243463.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.23 % of base) : 246694.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.23 % of base) : 190341.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.21 % of base) : 221234.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.21 % of base) : 482530.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.14 % of base) : 171721.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-16 (-2.84 % of base) : 605845.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState](System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult],System.Func`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState] (Tier1)
-20 (-2.72 % of base) : 25878.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Instrumented Tier1)
-20 (-2.38 % of base) : 614408.dasm - System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.SyntaxTrivia,System.__Canon]:Resize(int,ubyte):this (Tier1)
-20 (-2.38 % of base) : 595242.dasm - System.Collections.Generic.Dictionary`2[ulong,System.__Canon]:Resize(int,ubyte):this (Tier1)
-52 (-2.09 % of base) : 239402.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
-76 (-2.03 % of base) : 158360.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArgumentsEvaluate(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]:this (Tier1)
-20 (-2.02 % of base) : 239828.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (Instrumented Tier1)
-20 (-2.02 % of base) : 243216.dasm - System.Collections.Generic.Dictionary`2[ulong,System.__Canon]:Resize(int,ubyte):this (Instrumented Tier1)
-28 (-2.02 % of base) : 343052.dasm - Interop+AppleCrypto:SslCtxSetAlpnProtos(System.Net.SafeSslHandle,System.Collections.Generic.List`1[System.Net.Security.SslApplicationProtocol]) (Tier0-FullOpts)
-16 (-2.01 % of base) : 127298.dasm - System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain+ChainItemInfo]:Resize(int,ubyte):this (Tier1)
-16 (-2.01 % of base) : 127137.dasm - System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory+ServiceDescriptorCacheItem]:Resize(int,ubyte):this (Tier1)
-16 (-2.01 % of base) : 387941.dasm - System.Collections.Generic.Dictionary`2[MS.Internal.Xml.Cache.XPathNodeRef,MS.Internal.Xml.Cache.XPathNodeRef]:Resize(int,ubyte):this (Tier1)
-16 (-2.01 % of base) : 295590.dasm - System.Collections.Generic.Dictionary`2[System.Linq.Parallel.Wrapper`1[System.Collections.Generic.KeyValuePair`2[int,int]],int]:Resize(int,ubyte):this (Tier1)
-16 (-2.01 % of base) : 87201.dasm - System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.TypeDefinitionHandle,System.Collections.Immutable.ImmutableArray`1[System.Reflection.Metadata.TypeDefinitionHandle]]:Resize(int,ubyte):this (Tier1)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 162572640 (overridden on cmd)
Total bytes of diff: 162687488 (overridden on cmd)
Total bytes of delta: 114848 (0.07 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
820 : 59054.dasm (2.82 % of base)
280 : 59053.dasm (4.56 % of base)
256 : 18892.dasm (10.29 % of base)
240 : 251959.dasm (2.05 % of base)
232 : 296585.dasm (3.87 % of base)
188 : 18859.dasm (9.46 % of base)
184 : 18898.dasm (8.08 % of base)
160 : 173620.dasm (1.29 % of base)
144 : 173618.dasm (1.37 % of base)
140 : 173621.dasm (1.36 % of base)
140 : 173622.dasm (1.37 % of base)
136 : 73011.dasm (6.44 % of base)
128 : 53860.dasm (2.03 % of base)
120 : 227688.dasm (3.23 % of base)
120 : 44215.dasm (2.08 % of base)
120 : 50053.dasm (2.08 % of base)
112 : 129819.dasm (2.98 % of base)
112 : 76358.dasm (2.27 % of base)
112 : 95920.dasm (10.00 % of base)
112 : 35407.dasm (6.17 % of base)
Top file improvements (bytes):
-72 : 10875.dasm (-0.91 % of base)
-72 : 7187.dasm (-1.23 % of base)
-56 : 261244.dasm (-1.64 % of base)
-56 : 242896.dasm (-1.64 % of base)
-52 : 59570.dasm (-1.95 % of base)
-44 : 180173.dasm (-0.71 % of base)
-36 : 44146.dasm (-1.23 % of base)
-36 : 174452.dasm (-1.36 % of base)
-32 : 49957.dasm (-0.96 % of base)
-28 : 173935.dasm (-12.50 % of base)
-28 : 55167.dasm (-1.19 % of base)
-24 : 155487.dasm (-3.82 % of base)
-24 : 169134.dasm (-3.37 % of base)
-20 : 143012.dasm (-3.03 % of base)
-20 : 143097.dasm (-3.01 % of base)
-20 : 142012.dasm (-3.01 % of base)
-16 : 155019.dasm (-0.61 % of base)
-16 : 17177.dasm (-0.59 % of base)
-16 : 6317.dasm (-1.97 % of base)
-16 : 143238.dasm (-1.00 % of base)
86 total files with Code Size differences (29 improved, 57 regressed), 20 unchanged.
Top method regressions (bytes):
820 (2.82 % of base) : 59054.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
280 (4.56 % of base) : 59053.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
256 (10.29 % of base) : 18892.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:NegateBoolsOut2D(SharedTypes.BoolStruct[][],int,int[],byref) (FullOpts)
240 (2.05 % of base) : 251959.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:WriteNumbers(System.Text.Json.JsonWriterOptions,System.String):this (FullOpts)
232 (3.87 % of base) : 296585.dasm - System.Threading.Tasks.Tests.TaskRtTests:RunFromResult() (FullOpts)
188 (9.46 % of base) : 18859.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:FillRangeArray2D(SharedTypes.IntStructWrapper[][],int,int[],int):ubyte (FullOpts)
184 (8.08 % of base) : 18898.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:NegateBoolsRef2D_ClearMarshalling(byref,int,int[]) (FullOpts)
160 (1.29 % of base) : 173620.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess2():int:this (FullOpts)
144 (1.37 % of base) : 173618.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess1():int:this (FullOpts)
140 (1.36 % of base) : 173621.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess3():int:this (FullOpts)
140 (1.37 % of base) : 173622.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess4():int:this (FullOpts)
136 (6.44 % of base) : 73011.dasm - System.Collections.Tests.List_Generic_Tests_Insert+Driver`1[System.__Canon]:InsertRangeIEnumerable(System.__Canon[],System.__Canon[],int,int,System.Func`2[System.__Canon,System.__Canon]):this (FullOpts)
128 (2.03 % of base) : 53860.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
120 (2.08 % of base) : 44215.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
120 (2.08 % of base) : 50053.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
120 (3.23 % of base) : 227688.dasm - System.Text.Encodings.Tests.EncoderMiscTests:GetBytesTest() (FullOpts)
112 (6.17 % of base) : 35407.dasm - LamarCodeGeneration.Util.ExpressionCompiler+ClosureInfo:ConstructClosureTypeAndObject(ubyte):System.Object:this (FullOpts)
112 (2.27 % of base) : 76358.dasm - System.Collections.Tests.LinkedList_Generic_Tests`1[int]:AddAfter_LLNode_LLNode():this (FullOpts)
112 (10.00 % of base) : 95920.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
112 (2.98 % of base) : 129819.dasm - System.Linq.Parallel.SortHelper`2[double,int]:MergeSortCooperatively():this (FullOpts)
Top method improvements (bytes):
-72 (-1.23 % of base) : 7187.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckAndCoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte):this (FullOpts)
-72 (-0.91 % of base) : 10875.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference,Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+FieldInfo]) (FullOpts)
-56 (-1.64 % of base) : 242896.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadArrayOfIImmutableHashSetT>d__309:MoveNext():this (FullOpts)
-56 (-1.64 % of base) : 261244.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadArrayOfIImmutableHashSetT>d__348:MoveNext():this (FullOpts)
-52 (-1.95 % of base) : 59570.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexSet(System.Object,System.Object[],System.String[]) (FullOpts)
-44 (-0.71 % of base) : 180173.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateMethodDef(System.Reflection.Metadata.MetadataReader,uint,uint,ubyte):this (FullOpts)
-36 (-1.23 % of base) : 44146.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-36 (-1.36 % of base) : 174452.dasm - System.Xml.NameTableTests.TCRecordNameTableAdd:Variation_10():int:this (FullOpts)
-32 (-0.96 % of base) : 49957.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,uint):this (FullOpts)
-28 (-1.19 % of base) : 55167.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
-28 (-12.50 % of base) : 173935.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
-24 (-3.82 % of base) : 155487.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1+<>c__DisplayClass20_0[byte]:<ShiftRotateDestination_AllLengths>b__0(int):this (FullOpts)
-24 (-3.37 % of base) : 169134.dasm - System.Xml.Schema.FacetsChecker+FacetsCompiler:Preprocess(System.String):System.String (FullOpts)
-20 (-3.03 % of base) : 143012.dasm - System.SpanTests.ReadOnlySpanTests:TestMultipleMatchCount_String() (FullOpts)
-20 (-3.01 % of base) : 142012.dasm - System.SpanTests.ReadOnlySpanTests:TestMultipleMatchIndexOf_String() (FullOpts)
-20 (-3.01 % of base) : 143097.dasm - System.SpanTests.SpanTests:TestMultipleMatchIndexOf_String() (FullOpts)
-16 (-0.59 % of base) : 17177.dasm - System.AssertExtensions:SequenceEqual[ubyte](System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte]) (FullOpts)
-16 (-1.97 % of base) : 6317.dasm - System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.TypeDefinitionHandle,System.Collections.Immutable.ImmutableArray`1[System.Reflection.Metadata.TypeDefinitionHandle]]:Resize(int,ubyte):this (FullOpts)
-16 (-0.61 % of base) : 155019.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertTruncatingImpl[byte,byte]() (FullOpts)
-16 (-1.00 % of base) : 143238.dasm - System.SpanTests.SpanTests:TestMultipleMatchThree_Byte() (FullOpts)
Top method regressions (percentages):
24 (46.15 % of base) : 134063.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
20 (45.45 % of base) : 222713.dasm - System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
20 (41.67 % of base) : 140941.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
24 (40.00 % of base) : 193497.dasm - XmlDictionaryWriterTest+<>c:<XmlBaseWriter_WriteString>b__14_1(System.Span`1[ushort],System.Object):this (FullOpts)
24 (40.00 % of base) : 195328.dasm - XmlDictionaryWriterTest+<>c:<XmlBaseWriter_WriteString>b__14_1(System.Span`1[ushort],System.Object):this (FullOpts)
20 (35.71 % of base) : 115759.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
24 (35.29 % of base) : 4878.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
24 (35.29 % of base) : 193856.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
24 (35.29 % of base) : 264472.dasm - System.Text.RegularExpressions.RegexCharClass:IsAscii(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
20 (33.33 % of base) : 176900.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
24 (30.00 % of base) : 228015.dasm - System.Text.Tests.TranscodingStreamTests+<>c:<GetVeryLongAsciiString>b__40_0(System.Span`1[ushort],System.Object):this (FullOpts)
20 (29.41 % of base) : 134017.dasm - System.Linq.Enumerable:Sum[long,long](System.ReadOnlySpan`1[long]):long (FullOpts)
24 (28.57 % of base) : 127660.dasm - System.IO.Tests.BinaryWriter_EncodingTests+<>c:<GenerateLargeUnicodeString>b__16_0(System.Span`1[ushort],System.Object):this (FullOpts)
20 (27.78 % of base) : 46425.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
32 (26.67 % of base) : 239811.dasm - System.Text.Json.ReadStack:GetTopJsonTypeInfoWithParameterizedConstructor():System.Text.Json.Serialization.Metadata.JsonTypeInfo:this (FullOpts)
24 (25.00 % of base) : 15462.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[Microsoft.CodeAnalysis.Text.TextSpan]:ReturnArrays(int):this (FullOpts)
24 (25.00 % of base) : 96644.dasm - System.Diagnostics.FileVersionInfo:ParseUInt16UntilNonDigit(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
24 (24.00 % of base) : 95705.dasm - System.Diagnostics.ActivityTraceId:IsLowerCaseHexAndNotAllZeros(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
28 (21.88 % of base) : 188889.dasm - System.Numerics.BigIntegerCalculator:AddSelf(System.Span`1[uint],System.ReadOnlySpan`1[uint]) (FullOpts)
28 (21.88 % of base) : 212274.dasm - System.Numerics.BigIntegerCalculator:SubtractSelf(System.Span`1[uint],System.ReadOnlySpan`1[uint]) (FullOpts)
Top method improvements (percentages):
-28 (-12.50 % of base) : 173935.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
-24 (-3.82 % of base) : 155487.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1+<>c__DisplayClass20_0[byte]:<ShiftRotateDestination_AllLengths>b__0(int):this (FullOpts)
-24 (-3.37 % of base) : 169134.dasm - System.Xml.Schema.FacetsChecker+FacetsCompiler:Preprocess(System.String):System.String (FullOpts)
-20 (-3.03 % of base) : 143012.dasm - System.SpanTests.ReadOnlySpanTests:TestMultipleMatchCount_String() (FullOpts)
-20 (-3.01 % of base) : 142012.dasm - System.SpanTests.ReadOnlySpanTests:TestMultipleMatchIndexOf_String() (FullOpts)
-20 (-3.01 % of base) : 143097.dasm - System.SpanTests.SpanTests:TestMultipleMatchIndexOf_String() (FullOpts)
-4 (-2.63 % of base) : 92495.dasm - System.Data.DataError:GetColumnsInError():System.Data.DataColumn[]:this (FullOpts)
-4 (-2.38 % of base) : 88777.dasm - System.Data.DataKey:GetIndexDesc():System.Data.IndexField[]:this (FullOpts)
-16 (-1.97 % of base) : 6317.dasm - System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.TypeDefinitionHandle,System.Collections.Immutable.ImmutableArray`1[System.Reflection.Metadata.TypeDefinitionHandle]]:Resize(int,ubyte):this (FullOpts)
-52 (-1.95 % of base) : 59570.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexSet(System.Object,System.Object[],System.String[]) (FullOpts)
-56 (-1.64 % of base) : 242896.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadArrayOfIImmutableHashSetT>d__309:MoveNext():this (FullOpts)
-56 (-1.64 % of base) : 261244.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadArrayOfIImmutableHashSetT>d__348:MoveNext():this (FullOpts)
-4 (-1.61 % of base) : 65442.dasm - System.Collections.SortedList:ToDebugViewDictionaryItemArray():System.Collections.Generic.DebugViewDictionaryItem`2[System.Object,System.Object][]:this (FullOpts)
-12 (-1.55 % of base) : 141461.dasm - System.SpanTests.ReadOnlySpanTests:SequenceCompareToEqual_Byte() (FullOpts)
-12 (-1.55 % of base) : 143560.dasm - System.SpanTests.SpanTests:SequenceCompareToEqual_Byte() (FullOpts)
-8 (-1.55 % of base) : 89074.dasm - System.Data.Index:GetUniqueKeyValues(System.Collections.Generic.List`1[System.Object[]],int):this (FullOpts)
-8 (-1.52 % of base) : 5486.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyDataForAssemblyBeingBuilt[System.__Canon,System.__Canon]:BindAssemblyReferences(Roslyn.Utilities.MultiDictionary`2[System.__Canon,System.ValueTuple`2[System.__Canon,int]],Microsoft.CodeAnalysis.AssemblyIdentityComparer):Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceBinding[System.__Canon,System.__Canon][]:this (FullOpts)
-8 (-1.39 % of base) : 184564.dasm - System.Tests.ConvertToStringTests:FromBoolean() (FullOpts)
-8 (-1.38 % of base) : 215390.dasm - System.Security.Cryptography.Pkcs.CmsSigner:BuildAttributes(System.Security.Cryptography.CryptographicAttributeObjectCollection):System.Collections.Generic.List`1[System.Security.Cryptography.Asn1.AttributeAsn] (FullOpts)
-36 (-1.36 % of base) : 174452.dasm - System.Xml.NameTableTests.TCRecordNameTableAdd:Variation_10():int:this (FullOpts)
realworld.run.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15061556 (overridden on cmd)
Total bytes of diff: 15082108 (overridden on cmd)
Total bytes of delta: 20552 (0.14 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
232 : 30934.dasm (2.26 % of base)
152 : 13544.dasm (1.75 % of base)
144 : 13005.dasm (2.52 % of base)
140 : 6065.dasm (2.39 % of base)
128 : 13615.dasm (2.30 % of base)
124 : 13797.dasm (3.21 % of base)
120 : 29085.dasm (1.82 % of base)
116 : 12909.dasm (5.87 % of base)
116 : 13028.dasm (3.59 % of base)
100 : 17800.dasm (1.77 % of base)
92 : 3210.dasm (1.51 % of base)
92 : 28409.dasm (4.63 % of base)
88 : 2989.dasm (0.84 % of base)
88 : 17638.dasm (3.11 % of base)
84 : 18837.dasm (2.99 % of base)
84 : 31233.dasm (9.29 % of base)
80 : 13892.dasm (4.98 % of base)
80 : 2285.dasm (3.79 % of base)
76 : 12509.dasm (1.59 % of base)
76 : 6765.dasm (4.82 % of base)
Top file improvements (bytes):
-80 : 18989.dasm (-1.02 % of base)
-36 : 17645.dasm (-1.05 % of base)
-32 : 12746.dasm (-0.86 % of base)
-28 : 27077.dasm (-1.19 % of base)
-24 : 11958.dasm (-0.60 % of base)
-20 : 199.dasm (-2.34 % of base)
-16 : 12673.dasm (-2.33 % of base)
-12 : 26030.dasm (-0.65 % of base)
-12 : 15773.dasm (-0.76 % of base)
-12 : 553.dasm (-0.89 % of base)
-8 : 13789.dasm (-1.08 % of base)
-8 : 13557.dasm (-1.35 % of base)
-8 : 13569.dasm (-1.41 % of base)
-8 : 14021.dasm (-1.35 % of base)
-8 : 13203.dasm (-0.74 % of base)
-8 : 19574.dasm (-1.22 % of base)
-8 : 2268.dasm (-0.61 % of base)
-8 : 318.dasm (-0.48 % of base)
-8 : 5445.dasm (-1.04 % of base)
-8 : 611.dasm (-0.76 % of base)
81 total files with Code Size differences (22 improved, 59 regressed), 20 unchanged.
Top method regressions (bytes):
232 (2.26 % of base) : 30934.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
152 (1.75 % of base) : 13544.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
144 (2.52 % of base) : 13005.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
140 (2.39 % of base) : 6065.dasm - FSharp.Compiler.TypedTreePickle:unpickleObjWithDanglingCcus[System.__Canon](System.String,FSharp.Compiler.AbstractIL.IL+ILScopeRef,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILModuleDef],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],FSharp.Compiler.IO.ReadOnlyByteMemory):FSharp.Compiler.TypedTreePickle+PickledDataWithReferences`1[System.__Canon] (FullOpts)
128 (2.30 % of base) : 13615.dasm - Microsoft.ML.Transforms.Text.NgramExtractingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.Text.NgramExtractingEstimator+ColumnOptions[],System.Collections.Immutable.ImmutableArray`1[Microsoft.ML.Transforms.Text.NgramExtractingTransformer+TransformInfo],Microsoft.ML.IDataView,byref):Microsoft.ML.Internal.Utilities.SequencePool[] (FullOpts)
124 (3.21 % of base) : 13797.dasm - Microsoft.ML.Transforms.NormalizingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.IDataView,Microsoft.ML.Transforms.NormalizingEstimator+ColumnOptionsBase[]):Microsoft.ML.Transforms.NormalizingTransformer (FullOpts)
120 (1.82 % of base) : 29085.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
116 (5.87 % of base) : 12909.dasm - Microsoft.ML.Data.ColumnConcatenatingTransformer+Mapper+BoundColumn+<>c__DisplayClass18_0`1[float]:<MakeGetter>b__0(byref):this (FullOpts)
116 (3.59 % of base) : 13028.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:CheckConvergence(Microsoft.ML.Runtime.IProgressChannel,int,Microsoft.ML.Trainers.FloatLabelCursor+Factory,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],Microsoft.ML.Data.VBuffer`1[float][],Microsoft.ML.Data.VBuffer`1[float][],float[],float[],float[],float[],long,double[],byref,byref):ubyte:this (FullOpts)
100 (1.77 % of base) : 17800.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
92 (1.51 % of base) : 3210.dasm - FSharp.Compiler.CompilerImports:TcConfig.TryResolveLibsUsingMSBuildRules.Static(FSharp.Compiler.CompilerConfig+TcConfig,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerConfig+AssemblyReference],FSharp.Compiler.Text.Range,FSharp.Compiler.CompilerImports+ResolveAssemblyReferenceMode):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerImports+AssemblyResolution],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerConfig+UnresolvedAssemblyReference]] (FullOpts)
92 (4.63 % of base) : 28409.dasm - System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String (FullOpts)
88 (0.84 % of base) : 2989.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:openMetadataReader(System.String,FSharp.Compiler.AbstractIL.ILBinaryReader+BinaryFile,int,System.Tuple`8[ushort,System.Tuple`2[int,int],ubyte,ubyte,ubyte,ubyte,ubyte,System.Tuple`5[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILPlatform],ubyte,int,int,int]],FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader,FSharp.Compiler.IO.ReadOnlyByteMemory,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader],ubyte):System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILModuleDef,System.Lazy`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILAssemblyRef]]] (FullOpts)
88 (3.11 % of base) : 17638.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveWorseMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,byref):this (FullOpts)
84 (2.99 % of base) : 18837.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
84 (9.29 % of base) : 31233.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteTryExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
80 (4.98 % of base) : 13892.dasm - Microsoft.ML.Numeric.VectorUtils:L2DistSquared(byref,byref):float (FullOpts)
80 (3.79 % of base) : 2285.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(long):System.Reflection.MethodInfo:this (FullOpts)
76 (1.59 % of base) : 12509.dasm - Microsoft.ML.Internal.Utilities.StreamUtils:Expand(System.String):System.String[] (FullOpts)
76 (4.82 % of base) : 6765.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
Top method improvements (bytes):
-80 (-1.02 % of base) : 18989.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference,Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+FieldInfo]) (FullOpts)
-36 (-1.05 % of base) : 17645.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression):this (FullOpts)
-32 (-0.86 % of base) : 12746.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-28 (-1.19 % of base) : 27077.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
-24 (-0.60 % of base) : 11958.dasm - SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1+CdfTileData+RowIntervalOperation[SixLabors.ImageSharp.PixelFormats.Rgba32]:Invoke(byref):this (FullOpts)
-20 (-2.34 % of base) : 199.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-16 (-2.33 % of base) : 12673.dasm - Microsoft.ML.Internal.Utilities.Utils:BuildSubsetMaps(Microsoft.ML.DataViewSchema,System.Func`2[Microsoft.ML.DataViewSchema+Column,ubyte],byref,byref) (FullOpts)
-12 (-0.65 % of base) : 26030.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:ApplyDeconstructionConversion(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.LocalRewriter+DeconstructionSideEffects,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-12 (-0.76 % of base) : 15773.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__makeContent|428_4(System.ReadOnlySpan`1[ushort],System.Text.StringBuilder,ubyte,ubyte,System.ReadOnlySpan`1[ushort],byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolatedStringContentSyntax:this (FullOpts)
-12 (-0.89 % of base) : 553.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (FullOpts)
-8 (-1.22 % of base) : 19574.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.VarianceSafety:IsVarianceUnsafe[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.VarianceSafety+LocationProvider`1[System.__Canon],System.__Canon,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte (FullOpts)
-8 (-0.74 % of base) : 13203.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:CreateMaybeSparseCopy[float](byref,byref,Microsoft.ML.Data.InPredicate`1[float],float) (FullOpts)
-8 (-1.08 % of base) : 13789.dasm - Microsoft.ML.Transforms.KeyToVectorMappingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
-8 (-1.35 % of base) : 14021.dasm - Microsoft.ML.Transforms.Text.StopWordsRemovingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
-8 (-1.35 % of base) : 13557.dasm - Microsoft.ML.Transforms.Text.TextNormalizingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
-8 (-1.41 % of base) : 13569.dasm - Microsoft.ML.Transforms.Text.WordTokenizingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
-8 (-1.04 % of base) : 5445.dasm - System.Collections.Generic.Dictionary`2[FSharp.Compiler.Text.Position,System.ValueTuple`3[int,int,ubyte]]:Resize(int,ubyte):this (FullOpts)
-8 (-0.76 % of base) : 611.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
-8 (-0.48 % of base) : 318.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-8 (-0.61 % of base) : 2268.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
Top method regressions (percentages):
24 (46.15 % of base) : 1046.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
24 (37.50 % of base) : 12980.dasm - Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)
24 (35.29 % of base) : 14252.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
32 (30.77 % of base) : 14354.dasm - Microsoft.CodeAnalysis.MemoryExtensions:IndexOfAny(System.ReadOnlySpan`1[ushort],ushort[]):int (FullOpts)
24 (28.57 % of base) : 12803.dasm - Microsoft.ML.Internal.Utilities.HashArray`1+HashHelpers[float]:GetPrime(int):int (FullOpts)
20 (27.78 % of base) : 26648.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
24 (25.00 % of base) : 555.dasm - System.Diagnostics.FileVersionInfo:ParseUInt16UntilNonDigit(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
20 (21.74 % of base) : 14413.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
20 (21.74 % of base) : 11207.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)
24 (21.43 % of base) : 1214.dasm - DemoBenchmarks.CollisionBatcherTaskBenchmarks:<Setup>g__GetRandomShapeTypeIndex|6_0(System.Span`1[float],byref):BepuPhysics.Collidables.TypedIndex (FullOpts)
24 (21.43 % of base) : 1132.dasm - DemoBenchmarks.Sweeper:<.ctor>g__GetRandomShapeTypeIndex|6_0(System.Span`1[float],byref):BepuPhysics.Collidables.TypedIndex (FullOpts)
20 (20.83 % of base) : 16455.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)
24 (20.00 % of base) : 13358.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[int]:ReturnArrays(int):this (FullOpts)
20 (19.23 % of base) : 13654.dasm - System.Linq.Enumerable:Sum[int,int](System.ReadOnlySpan`1[int]):int (FullOpts)
32 (19.05 % of base) : 14080.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
24 (16.67 % of base) : 17158.dasm - Microsoft.CodeAnalysis.MetadataHelpers:<InferTypeArityFromMetadataName>g__tryScanArity|16_0(System.ReadOnlySpan`1[ushort]):System.Nullable`1[short] (FullOpts)
32 (16.67 % of base) : 14979.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList+WithLotsOfChildren:CalculateOffsets(Microsoft.CodeAnalysis.ArrayElement`1[Microsoft.CodeAnalysis.GreenNode][]):int[] (FullOpts)
32 (16.67 % of base) : 5935.dasm - Microsoft.FSharp.Collections.ArrayModule:ForAll[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],System.__Canon[]):ubyte (FullOpts)
16 (16.67 % of base) : 16457.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
20 (15.15 % of base) : 15114.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
Top method improvements (percentages):
-20 (-2.34 % of base) : 199.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-16 (-2.33 % of base) : 12673.dasm - Microsoft.ML.Internal.Utilities.Utils:BuildSubsetMaps(Microsoft.ML.DataViewSchema,System.Func`2[Microsoft.ML.DataViewSchema+Column,ubyte],byref,byref) (FullOpts)
-8 (-1.41 % of base) : 13569.dasm - Microsoft.ML.Transforms.Text.WordTokenizingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
-8 (-1.35 % of base) : 14021.dasm - Microsoft.ML.Transforms.Text.StopWordsRemovingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
-8 (-1.35 % of base) : 13557.dasm - Microsoft.ML.Transforms.Text.TextNormalizingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
-8 (-1.22 % of base) : 19574.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.VarianceSafety:IsVarianceUnsafe[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.VarianceSafety+LocationProvider`1[System.__Canon],System.__Canon,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte (FullOpts)
-28 (-1.19 % of base) : 27077.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
-8 (-1.08 % of base) : 13789.dasm - Microsoft.ML.Transforms.KeyToVectorMappingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
-4 (-1.05 % of base) : 13320.dasm - Microsoft.ML.Data.TypedCursorable`1+TypedRowBase[System.__Canon]:.ctor(Microsoft.ML.Data.TypedCursorable`1[System.__Canon],Microsoft.ML.DataViewRow,System.String):this (FullOpts)
-4 (-1.05 % of base) : 966.dasm - System.Number+Grisu3:TryRoundWeedCounted(System.Span`1[ubyte],int,ulong,ulong,ulong,byref):ubyte (FullOpts)
-36 (-1.05 % of base) : 17645.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression):this (FullOpts)
-8 (-1.04 % of base) : 5445.dasm - System.Collections.Generic.Dictionary`2[FSharp.Compiler.Text.Position,System.ValueTuple`3[int,int,ubyte]]:Resize(int,ubyte):this (FullOpts)
-80 (-1.02 % of base) : 18989.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference,Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+FieldInfo]) (FullOpts)
-12 (-0.89 % of base) : 553.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (FullOpts)
-32 (-0.86 % of base) : 12746.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-8 (-0.76 % of base) : 611.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
-12 (-0.76 % of base) : 15773.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__makeContent|428_4(System.ReadOnlySpan`1[ushort],System.Text.StringBuilder,ubyte,ubyte,System.ReadOnlySpan`1[ushort],byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolatedStringContentSyntax:this (FullOpts)
-8 (-0.74 % of base) : 13203.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:CreateMaybeSparseCopy[float](byref,byref,Microsoft.ML.Data.InPredicate`1[float],float) (FullOpts)
-12 (-0.65 % of base) : 26030.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:ApplyDeconstructionConversion(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.LocalRewriter+DeconstructionSideEffects,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-8 (-0.61 % of base) : 2268.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
windows arm64
Diffs are based on 2,341,080 contexts (938,449 MinOpts, 1,402,631 FullOpts).
MISSED contexts: base: 34 (0.00%), diff: 37 (0.00%)
Overall (+1,320,572 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.windows.arm64.checked.mch |
10,966,144 |
+26,900 |
| benchmarks.run_pgo.windows.arm64.checked.mch |
45,576,512 |
+150,544 |
| benchmarks.run_tiered.windows.arm64.checked.mch |
15,587,900 |
+14,344 |
| coreclr_tests.run.windows.arm64.checked.mch |
495,268,304 |
+323,640 |
| libraries.crossgen2.windows.arm64.checked.mch |
59,069,380 |
+83,104 |
| libraries.pmi.windows.arm64.checked.mch |
79,846,048 |
+94,408 |
| libraries_tests.run.windows.arm64.Release.mch |
330,812,748 |
+472,236 |
| librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
171,579,600 |
+120,020 |
| realworld.run.windows.arm64.checked.mch |
15,905,252 |
+21,532 |
| smoke_tests.nativeaot.windows.arm64.checked.mch |
3,970,272 |
+13,844 |
FullOpts (+1,320,572 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.windows.arm64.checked.mch |
10,965,608 |
+26,900 |
| benchmarks.run_pgo.windows.arm64.checked.mch |
29,565,116 |
+150,544 |
| benchmarks.run_tiered.windows.arm64.checked.mch |
4,410,712 |
+14,344 |
| coreclr_tests.run.windows.arm64.checked.mch |
156,579,200 |
+323,640 |
| libraries.crossgen2.windows.arm64.checked.mch |
59,067,744 |
+83,104 |
| libraries.pmi.windows.arm64.checked.mch |
79,726,064 |
+94,408 |
| libraries_tests.run.windows.arm64.Release.mch |
127,379,152 |
+472,236 |
| librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
158,425,852 |
+120,020 |
| realworld.run.windows.arm64.checked.mch |
15,341,272 |
+21,532 |
| smoke_tests.nativeaot.windows.arm64.checked.mch |
3,969,260 |
+13,844 |
Example diffs
benchmarks.run.windows.arm64.checked.mch
-20 (-2.34%) : 211.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (FullOpts)
@@ -11,12 +11,12 @@
; V00 this [V00,T01] ( 14, 14 ) ref -> x19 this class-hnd single-def <System.Collections.Generic.Dictionary`2[int,System.__Canon]>
; V01 arg1 [V01,T08] ( 6, 6 ) int -> x20 single-def
; V02 arg2 [V02,T15] ( 3, 3 ) ubyte -> x2 single-def
-; V03 loc0 [V03,T04] ( 11, 12.04) ref -> x21 class-hnd exact single-def <<unknown class>>
+; V03 loc0 [V03,T04] ( 9, 12 ) ref -> x21 class-hnd exact single-def <<unknown class>>
; V04 loc1 [V04,T09] ( 6, 8 ) int -> x22
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V07 loc4 [V07 ] ( 0, 0 ) int -> zero-ref
-; V08 loc5 [V08,T00] ( 14, 19.08) int -> x20
+;* V08 loc5 [V08,T20] ( 0, 0 ) int -> zero-ref
; V09 loc6 [V09,T12] ( 6, 6 ) byref -> x26
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11,T19] ( 0, 0 ) int -> zero-ref
@@ -35,12 +35,15 @@
;* V24 tmp14 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp15 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V26 tmp16 [V26,T18] ( 2, 4 ) long -> x0 "argument with side effect"
-; V27 cse0 [V27,T05] ( 4, 11.88) long -> x23 "CSE - aggressive"
-; V28 cse1 [V28,T06] ( 14, 10 ) ref -> x1 multi-def "CSE - aggressive"
-; V29 cse2 [V29,T13] ( 3, 5.94) int -> x26 "CSE - aggressive"
-; V30 rat0 [V30,T16] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V31 rat1 [V31,T17] ( 3, 4 ) long -> x0 "runtime lookup"
-; V32 rat2 [V32,T14] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V27 tmp17 [V27,T21] ( 7, 0.23) long -> x20 "Widened primary induction variable"
+; V28 tmp18 [V28,T00] ( 6, 18.82) long -> x20 "Widened primary induction variable"
+; V29 cse0 [V29,T22] ( 4, 0.12) byref -> x23 "CSE - conservative"
+; V30 cse1 [V30,T05] ( 4, 11.88) long -> x23 "CSE - aggressive"
+; V31 cse2 [V31,T06] ( 14, 10 ) ref -> x1 multi-def "CSE - aggressive"
+; V32 cse3 [V32,T13] ( 3, 5.94) int -> x26 "CSE - aggressive"
+; V33 rat0 [V33,T16] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V34 rat1 [V34,T17] ( 3, 4 ) long -> x0 "runtime lookup"
+; V35 rat2 [V35,T14] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
@@ -171,28 +174,28 @@ G_M4165_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
movn x0, #0
mov w1, w20
cmp x1, #0
- beq G_M4165_IG24
+ beq G_M4165_IG25
udiv x0, x0, x1
add x0, x0, #1
str x0, [x19, #0x30]
- mov w20, wzr
cmp w22, #0
- ble G_M4165_IG21
+ ble G_M4165_IG22
ldr w0, [x21, #0x08]
cmp w0, w22
blt G_M4165_IG17
+ mov x20, xzr
;; size=132 bbWeight=1 PerfScore 49.00
G_M4165_IG12: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mov w0, #24
- mov x1, #16
- umaddl x23, w20, w0, x1
+ mov x0, #24
+ mul x0, x20, x0
+ add x23, x0, #16
add x0, x21, x23
; byrRegs +[x0]
ldr w0, [x0, #0x0C]
; byrRegs -[x0]
cmn w0, #1
blt G_M4165_IG15
- ;; size=28 bbWeight=3.96 PerfScore 43.56
+ ;; size=28 bbWeight=3.96 PerfScore 31.68
G_M4165_IG13: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
add x0, x21, x23
; byrRegs +[x0]
@@ -211,7 +214,7 @@ G_M4165_IG13: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
mul x0, x0, x1
lsr x28, x0, #32
cmp w2, #0
- beq G_M4165_IG24
+ beq G_M4165_IG25
udiv w0, w24, w2
msub w0, w0, w2, w24
cmp w0, w28
@@ -231,7 +234,7 @@ G_M4165_IG13: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
;; size=112 bbWeight=1.98 PerfScore 87.12
G_M4165_IG14: ; bbWeight=1.98, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
cmp w28, w26
- bhs G_M4165_IG23
+ bhs G_M4165_IG24
add x0, x25, #16
; byrRegs +[x0]
ubfiz x1, x28, #2, #32
@@ -249,40 +252,37 @@ G_M4165_IG14: ; bbWeight=1.98, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs
G_M4165_IG15: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
; byrRegs -[x26]
- add w20, w20, #1
+ add w0, w20, #1
+ mov w20, w0
cmp w20, w22
blt G_M4165_IG12
- ;; size=12 bbWeight=3.96 PerfScore 7.92
+ ;; size=16 bbWeight=3.96 PerfScore 9.90
G_M4165_IG16: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
- b G_M4165_IG21
+ b G_M4165_IG22
;; size=4 bbWeight=1 PerfScore 1.00
-G_M4165_IG17: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M4165_IG17: ; bbWeight=0.01, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ mov x20, xzr
+ ;; size=4 bbWeight=0.01 PerfScore 0.01
+G_M4165_IG18: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x21, #0x08]
cmp w20, w0
- bhs G_M4165_IG23
- mov w0, #24
- mov x1, #16
- umaddl x0, w20, w0, x1
- add x0, x21, x0
- ; byrRegs +[x0]
- ldr w0, [x0, #0x0C]
- ; byrRegs -[x0]
+ bhs G_M4165_IG24
+ mov x0, #24
+ mul x0, x20, x0
+ add x0, x0, #16
+ add x23, x21, x0
+ ; byrRegs +[x23]
+ ldr w0, [x23, #0x0C]
cmn w0, #1
- blt G_M4165_IG20
- ;; size=40 bbWeight=0.04 PerfScore 0.62
-G_M4165_IG18: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mov w0, #24
- mov x1, #16
- umaddl x0, w20, w0, x1
- add x0, x21, x0
- ; byrRegs +[x0]
- ldr w24, [x0, #0x08]
+ blt G_M4165_IG21
+ ;; size=40 bbWeight=0.04 PerfScore 0.50
+G_M4165_IG19: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=800000 {x23}, byref, isz
+ ldr w24, [x23, #0x08]
ldr x25, [x19, #0x08]
; gcrRegs +[x25]
ldr w2, [x25, #0x08]
ldr x27, [x19, #0x30]
mov w0, w24
- ; byrRegs -[x0]
mul x0, x27, x0
lsr x0, x0, #32
add x0, x0, #1
@@ -290,11 +290,11 @@ G_M4165_IG18: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
mul x0, x0, x1
lsr x28, x0, #32
cmp w2, #0
- beq G_M4165_IG24
+ beq G_M4165_IG25
udiv w0, w24, w2
msub w0, w0, w2, w24
cmp w0, w28
- beq G_M4165_IG19
+ beq G_M4165_IG20
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -307,38 +307,33 @@ G_M4165_IG18: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=120 bbWeight=0.02 PerfScore 0.99
-G_M4165_IG19: ; bbWeight=0.02, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
+ ;; size=104 bbWeight=0.02 PerfScore 0.86
+G_M4165_IG20: ; bbWeight=0.02, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=800000 {x23}, byref, isz
ldr w14, [x25, #0x08]
cmp w28, w14
- bhs G_M4165_IG23
+ bhs G_M4165_IG24
add x14, x25, #16
; byrRegs +[x14]
ubfiz x15, x28, #2, #32
add x26, x14, x15
; byrRegs +[x26]
- mov w14, #24
- ; byrRegs -[x14]
- mov x15, #16
- umaddl x14, w20, w14, x15
- add x14, x21, x14
- ; byrRegs +[x14]
- add x14, x14, #12
+ add x14, x23, #12
ldr w15, [x26]
sub w15, w15, #1
str w15, [x14]
add w14, w20, #1
; byrRegs -[x14]
str w14, [x26]
- ;; size=64 bbWeight=0.02 PerfScore 0.39
-G_M4165_IG20: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=48 bbWeight=0.02 PerfScore 0.26
+G_M4165_IG21: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
- ; byrRegs -[x26]
- add w20, w20, #1
+ ; byrRegs -[x23 x26]
+ add w14, w20, #1
+ mov w20, w14
cmp w20, w22
- blt G_M4165_IG17
- ;; size=12 bbWeight=0.04 PerfScore 0.08
-G_M4165_IG21: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ blt G_M4165_IG18
+ ;; size=16 bbWeight=0.04 PerfScore 0.10
+G_M4165_IG22: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
add x14, x19, #16
; byrRegs +[x14]
mov x15, x21
@@ -347,7 +342,7 @@ G_M4165_IG21: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}
; gcrRegs -[x15 x21]
; byrRegs -[x14]
;; size=12 bbWeight=1 PerfScore 2.00
-G_M4165_IG22: ; bbWeight=1, epilog, nogc, extend
+G_M4165_IG23: ; bbWeight=1, epilog, nogc, extend
ldp x27, x28, [sp, #0x60]
ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40]
@@ -356,17 +351,17 @@ G_M4165_IG22: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x70
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M4165_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M4165_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M4165_IG24: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M4165_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROWDIVZERO
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 856, prolog size 40, PerfScore 268.42, instruction count 214, allocated bytes for code 856 (MethodHash=3669efba) for method System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (FullOpts)
+; Total bytes of code 836, prolog size 40, PerfScore 258.17, instruction count 209, allocated bytes for code 836 (MethodHash=3669efba) for method System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (FullOpts)
; ============================================================
Unwind Info:
@@ -377,7 +372,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
...
-16 (-2.01%) : 6533.dasm - System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory+ServiceDescriptorCacheItem]:Resize(int,ubyte):this (FullOpts)
@@ -11,12 +11,12 @@
; V00 this [V00,T03] ( 13, 13 ) ref -> x19 this class-hnd single-def <System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory+ServiceDescriptorCacheItem]>
; V01 arg1 [V01,T07] ( 6, 6 ) int -> x20 single-def
; V02 arg2 [V02,T13] ( 3, 3 ) ubyte -> x2 single-def
-; V03 loc0 [V03,T04] ( 11, 12.04) ref -> x21 class-hnd exact single-def <<unknown class>>
+; V03 loc0 [V03,T04] ( 10, 12.02) ref -> x21 class-hnd exact single-def <<unknown class>>
; V04 loc1 [V04,T08] ( 6, 8 ) int -> x22
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V07 loc4 [V07 ] ( 0, 0 ) int -> zero-ref
-; V08 loc5 [V08,T00] ( 14, 19.08) int -> x20
+;* V08 loc5 [V08,T15] ( 0, 0 ) int -> zero-ref
; V09 loc6 [V09,T11] ( 6, 6 ) byref -> x26
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V11 tmp1 [V11,T14] ( 2, 2 ) int -> x0
@@ -27,8 +27,12 @@
; V16 tmp6 [V16,T02] ( 8, 16 ) int -> x27 "Inlining Arg"
; V17 tmp7 [V17,T09] ( 4, 8 ) long -> x28 "Inlining Arg"
; V18 tmp8 [V18,T06] ( 8, 8 ) int -> x28 "Inline stloc first use temp"
-; V19 cse0 [V19,T05] ( 4, 11.88) long -> x23 "CSE - aggressive"
-; V20 cse1 [V20,T12] ( 3, 5.94) int -> x26 "CSE - aggressive"
+; V19 tmp9 [V19,T16] ( 7, 0.23) long -> x20 "Widened primary induction variable"
+; V20 tmp10 [V20,T00] ( 6, 18.82) long -> x20 "Widened primary induction variable"
+; V21 cse0 [V21,T17] ( 3, 0.10) byref -> x23 "CSE - conservative"
+; V22 cse1 [V22,T05] ( 4, 11.88) long -> x23 "CSE - aggressive"
+; V23 cse2 [V23,T18] ( 3, 0.10) long -> x0 "CSE - conservative"
+; V24 cse3 [V24,T12] ( 3, 5.94) int -> x26 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -123,28 +127,28 @@ G_M35343_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
movn x0, #0
mov w1, w20
cmp x1, #0
- beq G_M35343_IG15
+ beq G_M35343_IG16
udiv x0, x0, x1
add x0, x0, #1
str x0, [x19, #0x30]
- mov w20, wzr
cmp w22, #0
- ble G_M35343_IG12
+ ble G_M35343_IG13
ldr w0, [x21, #0x08]
cmp w0, w22
blt G_M35343_IG09
+ mov x20, xzr
;; size=180 bbWeight=1 PerfScore 63.00
G_M35343_IG05: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mov w0, #40
- mov x1, #16
- umaddl x23, w20, w0, x1
+ mov x0, #40
+ mul x0, x20, x0
+ add x23, x0, #16
add x0, x21, x23
; byrRegs +[x0]
ldr w0, [x0, #0x04]
; byrRegs -[x0]
cmn w0, #1
blt G_M35343_IG07
- ;; size=28 bbWeight=3.96 PerfScore 43.56
+ ;; size=28 bbWeight=3.96 PerfScore 31.68
G_M35343_IG06: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w24, [x21, x23]
ldr x25, [x19, #0x08]
@@ -167,7 +171,7 @@ G_M35343_IG06: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=000
mul x0, x0, x1
lsr x28, x0, #32
cmp w27, #0
- beq G_M35343_IG15
+ beq G_M35343_IG16
udiv w0, w24, w27
msub w0, w0, w27, w24
cmp w0, w28
@@ -179,7 +183,7 @@ G_M35343_IG06: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=000
blr x1
; gcr arg pop 0
cmp w28, w26
- bhs G_M35343_IG14
+ bhs G_M35343_IG15
add x0, x25, #16
; byrRegs +[x0]
ubfiz x1, x28, #2, #32
@@ -197,31 +201,31 @@ G_M35343_IG06: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=000
G_M35343_IG07: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
; byrRegs -[x26]
- add w20, w20, #1
+ add w0, w20, #1
+ mov w20, w0
cmp w20, w22
blt G_M35343_IG05
- ;; size=12 bbWeight=3.96 PerfScore 7.92
+ ;; size=16 bbWeight=3.96 PerfScore 9.90
G_M35343_IG08: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
- b G_M35343_IG12
+ b G_M35343_IG13
;; size=4 bbWeight=1 PerfScore 1.00
-G_M35343_IG09: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M35343_IG09: ; bbWeight=0.01, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ mov x20, xzr
+ ;; size=4 bbWeight=0.01 PerfScore 0.01
+G_M35343_IG10: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x21, #0x08]
cmp w20, w0
- bhs G_M35343_IG14
- mov w0, #40
- mov x1, #16
- umaddl x0, w20, w0, x1
- add x0, x21, x0
- ; byrRegs +[x0]
- ldr w0, [x0, #0x04]
- ; byrRegs -[x0]
- cmn w0, #1
- blt G_M35343_IG11
- ;; size=40 bbWeight=0.04 PerfScore 0.62
-G_M35343_IG10: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mov w0, #40
- mov x1, #16
- umaddl x0, w20, w0, x1
+ bhs G_M35343_IG15
+ mov x0, #40
+ mul x0, x20, x0
+ add x0, x0, #16
+ add x23, x21, x0
+ ; byrRegs +[x23]
+ ldr w1, [x23, #0x04]
+ cmn w1, #1
+ blt G_M35343_IG12
+ ;; size=40 bbWeight=0.04 PerfScore 0.50
+G_M35343_IG11: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=800000 {x23}, byref, isz
ldr w24, [x21, x0]
ldr x25, [x19, #0x08]
; gcrRegs +[x25]
@@ -242,7 +246,7 @@ G_M35343_IG10: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=000
mul x0, x0, x1
lsr x28, x0, #32
cmp w27, #0
- beq G_M35343_IG15
+ beq G_M35343_IG16
udiv w0, w24, w27
msub w0, w0, w27, w24
cmp w0, w28
@@ -255,34 +259,29 @@ G_M35343_IG10: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=000
; gcr arg pop 0
ldr w14, [x25, #0x08]
cmp w28, w14
- bhs G_M35343_IG14
+ bhs G_M35343_IG15
add x14, x25, #16
; byrRegs +[x14]
ubfiz x15, x28, #2, #32
add x26, x14, x15
; byrRegs +[x26]
- mov w14, #40
- ; byrRegs -[x14]
- mov x15, #16
- umaddl x14, w20, w14, x15
- add x14, x21, x14
- ; byrRegs +[x14]
- add x14, x14, #4
+ add x14, x23, #4
ldr w15, [x26]
sub w15, w15, #1
str w15, [x14]
add w14, w20, #1
; byrRegs -[x14]
str w14, [x26]
- ;; size=188 bbWeight=0.02 PerfScore 1.44
-G_M35343_IG11: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=160 bbWeight=0.02 PerfScore 1.19
+G_M35343_IG12: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
- ; byrRegs -[x26]
- add w20, w20, #1
+ ; byrRegs -[x23 x26]
+ add w14, w20, #1
+ mov w20, w14
cmp w20, w22
- blt G_M35343_IG09
- ;; size=12 bbWeight=0.04 PerfScore 0.08
-G_M35343_IG12: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ blt G_M35343_IG10
+ ;; size=16 bbWeight=0.04 PerfScore 0.10
+G_M35343_IG13: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
add x14, x19, #16
; byrRegs +[x14]
mov x15, x21
@@ -291,7 +290,7 @@ G_M35343_IG12: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
; gcrRegs -[x15 x19 x21]
; byrRegs -[x14]
;; size=12 bbWeight=1 PerfScore 2.00
-G_M35343_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M35343_IG14: ; bbWeight=1, epilog, nogc, extend
ldp x27, x28, [sp, #0x50]
ldp x25, x26, [sp, #0x40]
ldp x23, x24, [sp, #0x30]
@@ -300,17 +299,17 @@ G_M35343_IG13: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x60
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M35343_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M35343_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M35343_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35343_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROWDIVZERO
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 796, prolog size 36, PerfScore 262.72, instruction count 199, allocated bytes for code 796 (MethodHash=607475f0) for method System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory+ServiceDescriptorCacheItem]:Resize(int,ubyte):this (FullOpts)
+; Total bytes of code 780, prolog size 36, PerfScore 252.48, instruction count 195, allocated bytes for code 780 (MethodHash=607475f0) for method System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory+ServiceDescriptorCacheItem]:Resize(int,ubyte):this (FullOpts)
; ============================================================
Unwind Info:
@@ -321,7 +320,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 199 (0x000c7) Actual length = 796 (0x00031c)
+ Function Length : 195 (0x000c3) Actual length = 780 (0x00030c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-1.05%) : 2687.dasm - System.Number+Grisu3:TryRoundWeedCounted(System.Span`1[ubyte],int,ulong,ulong,ulong,byref):ubyte (FullOpts)
@@ -14,19 +14,21 @@
; V03 arg3 [V03,T06] ( 9, 7 ) long -> x21 single-def
; V04 arg4 [V04,T07] ( 8, 6.50) long -> x22 single-def
; V05 arg5 [V05,T09] ( 4, 3 ) byref -> x24 single-def
-; V06 loc0 [V06,T01] ( 7, 21 ) int -> x0
+; V06 loc0 [V06,T16] ( 2, 1 ) int -> x0
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T11] ( 3, 3 ) byref -> x1 single-def "dup spill"
-; V09 tmp2 [V09,T00] ( 3, 24 ) byref -> x1 "dup spill"
+; V08 tmp1 [V08,T11] ( 3, 3 ) byref -> x2 single-def "dup spill"
+; V09 tmp2 [V09,T01] ( 3, 24 ) byref -> x0 "dup spill"
;* V10 tmp3 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp4 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V12 tmp5 [V12,T02] ( 7, 14.50) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V13 tmp6 [V13,T05] ( 4, 9.50) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V14 cse0 [V14,T03] ( 4, 16 ) int -> x0 "CSE - aggressive"
-; V15 cse1 [V15,T12] ( 4, 2 ) long -> x0 "CSE - aggressive"
-; V16 cse2 [V16,T13] ( 4, 2 ) int -> x0 "CSE - aggressive"
-; V17 cse3 [V17,T14] ( 3, 1.50) ref -> x1 "CSE - moderate"
-; V18 cse4 [V18,T04] ( 3, 12 ) long -> x1 "CSE - aggressive"
+; V14 tmp7 [V14,T00] ( 7, 24.50) long -> x1 "Widened primary induction variable"
+; V15 cse0 [V15,T03] ( 3, 12 ) long -> x1 "CSE - aggressive"
+; V16 cse1 [V16,T04] ( 3, 12 ) int -> x1 "CSE - aggressive"
+; V17 cse2 [V17,T15] ( 3, 1.50) long -> x1 "CSE - moderate"
+; V18 cse3 [V18,T12] ( 4, 2 ) long -> x0 "CSE - aggressive"
+; V19 cse4 [V19,T13] ( 4, 2 ) int -> x0 "CSE - aggressive"
+; V20 cse5 [V20,T14] ( 3, 1.50) ref -> x1 "CSE - moderate"
;
; Lcl frame size = 8
@@ -120,38 +122,37 @@ G_M50855_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19
cmp w0, w20
bhs G_M50855_IG14
mov w1, w0
- add x1, x19, x1
- ; byrRegs +[x1]
- ldrb w2, [x1]
- add w2, w2, #1
- strb w2, [x1]
+ add x2, x19, x1
+ ; byrRegs +[x2]
+ ldrb w3, [x2]
+ add w3, w3, #1
+ strb w3, [x2]
cmp w0, #0
ble G_M50855_IG13
;; size=40 bbWeight=0.50 PerfScore 4.50
G_M50855_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
- ; byrRegs -[x1]
- cmp w0, w20
+ ; byrRegs -[x2]
+ cmp w1, w20
bhs G_M50855_IG14
- mov w1, w0
- ldrb w2, [x19, x1]
- cmp w2, #58
+ ldrb w0, [x19, x1]
+ cmp w0, #58
bne G_M50855_IG13
- mov w2, #48
- strb w2, [x19, x1]
- sub w0, w0, #1
- cmp w0, w20
+ mov w0, #48
+ strb w0, [x19, x1]
+ sub w1, w1, #1
+ cmp w1, w20
bhs G_M50855_IG14
- mov w1, w0
- add x1, x19, x1
- ; byrRegs +[x1]
- ldrb w2, [x1]
+ mov w1, w1
+ add x0, x19, x1
+ ; byrRegs +[x0]
+ ldrb w2, [x0]
add w2, w2, #1
- strb w2, [x1]
- cmp w0, #0
+ strb w2, [x0]
+ cmp w1, #0
bgt G_M50855_IG12
- ;; size=72 bbWeight=4 PerfScore 68.00
+ ;; size=68 bbWeight=4 PerfScore 66.00
G_M50855_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
- ; byrRegs -[x1]
+ ; byrRegs -[x0]
ldrb w0, [x19]
cmp w0, #58
bne G_M50855_IG08
@@ -169,7 +170,7 @@ G_M50855_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 380, prolog size 52, PerfScore 107.75, instruction count 95, allocated bytes for code 380 (MethodHash=b8e43958) for method System.Number+Grisu3:TryRoundWeedCounted(System.Span`1[ubyte],int,ulong,ulong,ulong,byref):ubyte (FullOpts)
+; Total bytes of code 376, prolog size 52, PerfScore 105.75, instruction count 94, allocated bytes for code 376 (MethodHash=b8e43958) for method System.Number+Grisu3:TryRoundWeedCounted(System.Span`1[ubyte],int,ulong,ulong,ulong,byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -180,7 +181,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 95 (0x0005f) Actual length = 380 (0x00017c)
+ Function Length : 94 (0x0005e) Actual length = 376 (0x000178)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+28 (+41.18%) : 9422.dasm - System.Collections.IterateFor`1[System.Canon]:ImmutableArray():System.Canon:this (FullOpts)
@@ -8,73 +8,81 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 3, 3 ) ref -> [fp+0x18] this class-hnd single-def <System.Collections.IterateFor`1[System.__Canon]>
-; V01 loc0 [V01,T02] ( 3, 6 ) ref -> x1 ld-addr-op class-hnd <System.__Canon>
+; V00 this [V00,T02] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Collections.IterateFor`1[System.__Canon]>
+; V01 loc0 [V01,T03] ( 3, 6 ) ref -> x0 ld-addr-op class-hnd <System.__Canon>
;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+;* V03 loc2 [V03,T09] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 tmp3 [V07,T08] ( 3, 3 ) ref -> x2 single-def "field V02.array (fldOffset=0x0)" P-INDEP
-;* V08 cse0 [V08,T09] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
-; V09 cse1 [V09,T03] ( 3, 6 ) int -> x4 "CSE - aggressive"
-; V10 cse2 [V10,T05] ( 2, 5 ) byref -> x2 hoist "CSE - aggressive"
-;* V11 rat0 [V11,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V12 rat1 [V12,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V13 rat2 [V13,T04] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T08] ( 3, 3 ) ref -> x1 single-def "field V02.array (fldOffset=0x0)" P-INDEP
+; V08 tmp4 [V08,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
+;* V09 cse0 [V09,T10] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V10 cse1 [V10,T01] ( 4, 10 ) int -> x2 "CSE - aggressive"
+; V11 cse2 [V11,T05] ( 2, 5 ) byref -> x1 hoist "CSE - aggressive"
+;* V12 rat0 [V12,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V13 rat1 [V13,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V14 rat2 [V14,T04] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M3722_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M3722_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ mov x19, x0
+ ; gcrRegs +[x19]
+ ;; size=16 bbWeight=1 PerfScore 3.00
+G_M3722_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ mov x0, xzr
; gcrRegs +[x0]
- mov x1, xzr
+ ldr x1, [x19, #0x38]
; gcrRegs +[x1]
- str x0, [fp, #0x18] // [V00 this]
- ; GC ptr vars +{V00}
- ldr x2, [x0, #0x38]
- ; gcrRegs +[x2]
- mov w3, wzr
- ldr w4, [x2, #0x08]
- cmp w4, #0
+ ldr w2, [x1, #0x08]
+ cmp w2, #0
ble G_M3722_IG04
- add x2, x2, #16
- ; gcrRegs -[x2]
- ; byrRegs +[x2]
- ;; size=32 bbWeight=1 PerfScore 10.00
-G_M3722_IG03: ; bbWeight=4, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, gcvars, byref, isz
- ; gcrRegs -[x0-x1]
- ldr x1, [x2, w3, UXTW #3]
- ; gcrRegs +[x1]
- add w3, w3, #1
- cmp w4, w3
- bgt G_M3722_IG03
- ;; size=16 bbWeight=4 PerfScore 20.00
-G_M3722_IG04: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
- mov x0, x1
+ mov x3, xzr
+ add x1, x1, #16
+ ; gcrRegs -[x1]
+ ; byrRegs +[x1]
+ ;; size=28 bbWeight=1 PerfScore 9.00
+G_M3722_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref, isz
+ ; gcrRegs -[x0]
+ cmp w3, w2
+ bhs G_M3722_IG05
+ lsl x0, x3, #3
+ ldr x0, [x1, x0]
; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M3722_IG05: ; bbWeight=1, epilog, nogc, extend
+ add w3, w3, #1
+ mov w3, w3
+ cmp w2, w3
+ bgt G_M3722_IG03
+ ;; size=32 bbWeight=4 PerfScore 32.00
+G_M3722_IG04: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; byrRegs -[x1]
+ ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
+G_M3722_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 68, prolog size 8, PerfScore 34.00, instruction count 17, allocated bytes for code 68 (MethodHash=877ef175) for method System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
+; Total bytes of code 96, prolog size 16, PerfScore 48.00, instruction count 24, allocated bytes for code 96 (MethodHash=877ef175) for method System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -82,7 +90,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
+ E4 end
+ E4 end
+24 (+46.15%) : 15506.dasm - Struct.SpanWrapper:SumSpan(System.ReadOnlySpan`1[int]):int:this (FullOpts)
@@ -11,13 +11,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[int]>
; V02 loc0 [V02,T01] ( 4, 10 ) int -> x0
;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
-; V04 loc2 [V04,T00] ( 5, 17 ) int -> x3
+;* V04 loc2 [V04,T06] ( 0, 0 ) int -> zero-ref
;* V05 loc3 [V05 ] ( 0, 0 ) int -> zero-ref
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T04] ( 2, 2 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V08 tmp2 [V08,T05] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V09 tmp3 [V09,T03] ( 2, 5 ) byref -> x1 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp4 [V10,T02] ( 3, 6 ) int -> x2 single-def "field V03._length (fldOffset=0x8)" P-INDEP
+; V10 tmp4 [V10,T02] ( 4, 10 ) int -> x2 single-def "field V03._length (fldOffset=0x8)" P-INDEP
+; V11 tmp5 [V11,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -28,24 +29,33 @@ G_M10672_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M10672_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
mov w0, wzr
- mov w3, wzr
cmp w2, #0
ble G_M10672_IG04
+ mov x3, xzr
;; size=16 bbWeight=1 PerfScore 2.50
G_M10672_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldr w4, [x1, w3, UXTW #2]
+ cmp w3, w2
+ bhs G_M10672_IG05
+ lsl x4, x3, #2
+ ldr w4, [x1, x4]
add w0, w4, w0
add w3, w3, #1
+ mov w3, w3
cmp w3, w2
blt G_M10672_IG03
- ;; size=20 bbWeight=4 PerfScore 22.00
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M10672_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M10672_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 28.00, instruction count 13, allocated bytes for code 52 (MethodHash=42a0d64f) for method Struct.SpanWrapper:SumSpan(System.ReadOnlySpan`1[int]):int:this (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 40.00, instruction count 19, allocated bytes for code 76 (MethodHash=42a0d64f) for method Struct.SpanWrapper:SumSpan(System.ReadOnlySpan`1[int]):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -56,7 +66,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+46.15%) : 1839.dasm - System.Linq.Enumerable:Sumdouble,double:double (FullOpts)
@@ -9,9 +9,9 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[double]>
-; V01 loc0 [V01,T05] ( 4, 10 ) double -> d0
+; V01 loc0 [V01,T06] ( 4, 10 ) double -> d0
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[double]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x2
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) double -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -20,7 +20,8 @@
; V09 tmp4 [V09,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V10 tmp5 [V10,T04] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V11 tmp6 [V11,T02] ( 2, 5 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp7 [V12,T01] ( 3, 6 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V12 tmp7 [V12,T01] ( 4, 10 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V13 tmp8 [V13,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -31,24 +32,33 @@ G_M25021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M25021_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
movi v0.16b, #0
- mov w2, wzr
cmp w1, #0
ble G_M25021_IG04
+ mov x2, xzr
;; size=16 bbWeight=1 PerfScore 2.50
G_M25021_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr d16, [x0, w2, UXTW #3]
+ cmp w2, w1
+ bhs G_M25021_IG05
+ lsl x3, x2, #3
+ ldr d16, [x0, x3]
fadd d0, d16, d0
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
blt G_M25021_IG03
- ;; size=20 bbWeight=4 PerfScore 32.00
+ ;; size=36 bbWeight=4 PerfScore 44.00
G_M25021_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M25021_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 38.00, instruction count 13, allocated bytes for code 52 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 50.00, instruction count 19, allocated bytes for code 76 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
; ============================================================
Unwind Info:
@@ -59,7 +69,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run_pgo.windows.arm64.checked.mch
-36 (-1.77%) : 67034.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1-OSR)
@@ -10,165 +10,171 @@
; Final local variable assignments
;
; V00 this [V00,T06] ( 14, 2.36) ref -> x19 this class-hnd single-def <Benchstone.BenchI.Puzzle>
-; V01 loc0 [V01,T03] ( 33,101.44) int -> registers
-; V02 loc1 [V02,T12] ( 24, 0.17) int -> x4
-;* V03 loc2 [V03,T14] ( 0, 0 ) int -> zero-ref
-; V04 loc3 [V04,T02] ( 7,499.40) int -> x0
+; V01 loc0 [V01,T07] ( 29, 1.80) int -> registers
+; V02 loc1 [V02,T14] ( 24, 0.17) int -> x4
+;* V03 loc2 [V03,T15] ( 0, 0 ) int -> zero-ref
+; V04 loc3 [V04,T08] ( 3, 0.60) int -> x2
;* V05 loc4 [V05 ] ( 0, 0 ) int -> zero-ref
-; V06 loc5 [V06,T114] ( 3, 0.02) ubyte -> x0
+; V06 loc5 [V06,T116] ( 3, 0.02) ubyte -> x0
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) ref -> zero-ref "arr expr"
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref "arr expr"
;* V10 tmp3 [V10 ] ( 0, 0 ) int -> zero-ref "index expr"
; V11 tmp4 [V11,T00] ( 3,598.79) ref -> x4 "arr expr"
; V12 tmp5 [V12,T01] ( 3,598.79) ref -> x4 "arr expr"
-; V13 tmp6 [V13,T15] ( 3, 0.27) ref -> x0 "arr expr"
-; V14 tmp7 [V14,T10] ( 6, 0.54) int -> x3 "index expr"
-; V15 tmp8 [V15,T16] ( 3, 0.27) ref -> x0 "arr expr"
-; V16 tmp9 [V16,T55] ( 3, 0.07) ref -> x2 single-def "arr expr"
-; V17 tmp10 [V17,T56] ( 3, 0.07) ref -> x4 single-def "arr expr"
-; V18 tmp11 [V18,T19] ( 3, 0.13) ref -> x6 "arr expr"
-; V19 tmp12 [V19,T08] ( 12, 0.54) int -> x7 "index expr"
-; V20 tmp13 [V20,T20] ( 3, 0.13) ref -> x6 "arr expr"
-; V21 tmp14 [V21,T84] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V22 tmp15 [V22,T85] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V23 tmp16 [V23,T70] ( 3, 0.03) ref -> x6 "arr expr"
-; V24 tmp17 [V24,T54] ( 6, 0.07) int -> x7 "index expr"
-; V25 tmp18 [V25,T71] ( 3, 0.03) ref -> x6 "arr expr"
-; V26 tmp19 [V26,T86] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V27 tmp20 [V27,T87] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V28 tmp21 [V28,T48] ( 3, 0.07) ref -> x7 "arr expr"
-; V29 tmp22 [V29,T31] ( 6, 0.13) int -> x8 "index expr"
-; V30 tmp23 [V30,T49] ( 3, 0.07) ref -> x6 "arr expr"
-; V31 tmp24 [V31,T88] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V32 tmp25 [V32,T89] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V33 tmp26 [V33,T17] ( 3, 0.27) ref -> x6 "arr expr"
-; V34 tmp27 [V34,T11] ( 6, 0.54) int -> x7 "index expr"
-; V35 tmp28 [V35,T18] ( 3, 0.27) ref -> x6 "arr expr"
-; V36 tmp29 [V36,T90] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V37 tmp30 [V37,T91] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V38 tmp31 [V38,T109] ( 3, 0.02) ref -> x6 "arr expr"
-; V39 tmp32 [V39,T53] ( 12, 0.07) int -> x7 "index expr"
-; V40 tmp33 [V40,T110] ( 3, 0.02) ref -> x6 "arr expr"
-; V41 tmp34 [V41,T92] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V42 tmp35 [V42,T93] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V43 tmp36 [V43,T38] ( 3, 0.07) ref -> x4 "arr expr"
-;* V44 tmp37 [V44,T61] ( 0, 0 ) int -> zero-ref "index expr"
-; V45 tmp38 [V45,T39] ( 3, 0.07) ref -> x4 "arr expr"
-; V46 tmp39 [V46,T94] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V47 tmp40 [V47,T95] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V48 tmp41 [V48,T40] ( 3, 0.07) ref -> x4 "arr expr"
-;* V49 tmp42 [V49,T62] ( 0, 0 ) int -> zero-ref "index expr"
-; V50 tmp43 [V50,T41] ( 3, 0.07) ref -> x4 "arr expr"
-; V51 tmp44 [V51,T96] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V52 tmp45 [V52,T97] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V53 tmp46 [V53,T42] ( 3, 0.07) ref -> x4 "arr expr"
-;* V54 tmp47 [V54,T63] ( 0, 0 ) int -> zero-ref "index expr"
-; V55 tmp48 [V55,T43] ( 3, 0.07) ref -> x4 "arr expr"
-; V56 tmp49 [V56,T98] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V57 tmp50 [V57,T99] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V58 tmp51 [V58,T25] ( 3, 0.07) ref -> x4 "arr expr"
-;* V59 tmp52 [V59,T50] ( 0, 0 ) int -> zero-ref "index expr"
-; V60 tmp53 [V60,T26] ( 3, 0.07) ref -> x4 "arr expr"
-; V61 tmp54 [V61,T100] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V62 tmp55 [V62,T101] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V63 tmp56 [V63,T27] ( 3, 0.07) ref -> x4 "arr expr"
-;* V64 tmp57 [V64,T51] ( 0, 0 ) int -> zero-ref "index expr"
-; V65 tmp58 [V65,T28] ( 3, 0.07) ref -> x4 "arr expr"
-; V66 tmp59 [V66,T102] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V67 tmp60 [V67,T103] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V68 tmp61 [V68,T29] ( 3, 0.07) ref -> x4 "arr expr"
-;* V69 tmp62 [V69,T52] ( 0, 0 ) int -> zero-ref "index expr"
-; V70 tmp63 [V70,T30] ( 3, 0.07) ref -> x4 "arr expr"
-; V71 tmp64 [V71,T104] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V72 tmp65 [V72,T105] ( 2, 0.04) ref -> x4 single-def "arr expr"
-; V73 tmp66 [V73,T07] ( 12, 0.54) ref -> x8 "arr expr"
-; V74 tmp67 [V74,T09] ( 12, 0.54) int -> x9 "index expr"
-; V75 tmp68 [V75,T13] ( 9, 0.40) ref -> x6 "arr expr"
-; V76 tmp69 [V76,T106] ( 2, 0.04) ref -> x0 single-def "arr expr"
-; V77 tmp70 [V77,T107] ( 2, 0.04) ref -> x2 single-def "arr expr"
-; V78 tmp71 [V78,T57] ( 3, 0.07) ref -> x0 single-def "arr expr"
-; V79 tmp72 [V79,T58] ( 3, 0.07) ref -> x0 single-def "arr expr"
-; V80 tmp73 [V80,T59] ( 3, 0.07) ref -> x0 single-def "arr expr"
-; V81 tmp74 [V81,T60] ( 3, 0.07) ref -> x0 single-def "arr expr"
-; V82 tmp75 [V82,T108] ( 2, 0.04) int -> x1 "argument with side effect"
-; V83 cse0 [V83,T44] ( 2, 0.04) ref -> x6 "CSE - conservative"
-; V84 cse1 [V84,T119] ( 2, 0.01) ref -> x6 "CSE - conservative"
-; V85 cse2 [V85,T32] ( 2, 0.09) ref -> x0 "CSE - conservative"
-; V86 cse3 [V86,T116] ( 2, 0.01) ref -> x6 "CSE - conservative"
-; V87 cse4 [V87,T111] ( 2, 0.02) ref -> x6 "CSE - conservative"
-; V88 cse5 [V88,T33] ( 2, 0.09) ref -> x6 "CSE - conservative"
-; V89 cse6 [V89,T64] ( 2, 0.02) ref -> x4 "CSE - conservative"
-; V90 cse7 [V90,T65] ( 2, 0.02) ref -> x4 "CSE - conservative"
-; V91 cse8 [V91,T66] ( 2, 0.02) ref -> x4 "CSE - conservative"
-; V92 cse9 [V92,T72] ( 2, 0.02) ref -> x4 "CSE - conservative"
-; V93 cse10 [V93,T73] ( 2, 0.02) ref -> x4 "CSE - conservative"
-; V94 cse11 [V94,T74] ( 2, 0.02) ref -> x4 "CSE - conservative"
-; V95 cse12 [V95,T122] ( 2, 0.01) int -> x7 "CSE - conservative"
-; V96 cse13 [V96,T123] ( 2, 0.01) int -> x7 "CSE - conservative"
-; V97 cse14 [V97,T115] ( 2, 0.02) int -> x8 "CSE - conservative"
-; V98 cse15 [V98,T124] ( 2, 0.01) int -> x7 "CSE - conservative"
-; V99 cse16 [V99,T125] ( 2, 0.01) int -> x7 "CSE - conservative"
-; V100 cse17 [V100,T126] ( 2, 0.01) int -> x7 "CSE - conservative"
-; V101 cse18 [V101,T127] ( 2, 0.01) int -> x7 "CSE - conservative"
-; V102 cse19 [V102,T45] ( 5, 0.11) ref -> x7 "CSE - conservative"
-; V103 cse20 [V103,T23] ( 14, 0.16) int -> x3 "CSE - conservative"
-; V104 cse21 [V104,T24] ( 14, 0.16) int -> x5 "CSE - conservative"
-; V105 cse22 [V105,T47] ( 5, 0.11) int -> x8 "CSE - conservative"
-; V106 cse23 [V106,T46] ( 5, 0.11) byref -> x6 "CSE - conservative"
-; V107 cse24 [V107,T121] ( 5, 0.01) int -> x8 "CSE - conservative"
-; V108 cse25 [V108,T120] ( 5, 0.01) byref -> x6 "CSE - conservative"
-; V109 cse26 [V109,T36] ( 3, 0.13) int -> x4 "CSE - conservative"
-; V110 cse27 [V110,T34] ( 3, 0.13) byref -> x0 "CSE - conservative"
-; V111 cse28 [V111,T118] ( 3, 0.02) int -> x8 "CSE - conservative"
-; V112 cse29 [V112,T117] ( 3, 0.02) byref -> x6 "CSE - conservative"
-; V113 cse30 [V113,T113] ( 3, 0.03) int -> x9 "CSE - conservative"
-; V114 cse31 [V114,T112] ( 3, 0.03) byref -> x7 "CSE - conservative"
-; V115 cse32 [V115,T37] ( 3, 0.13) int -> x8 "CSE - conservative"
-; V116 cse33 [V116,T35] ( 3, 0.13) byref -> x6 "CSE - conservative"
-; V117 cse34 [V117,T78] ( 4, 0.04) int -> x6 "CSE - conservative"
-; V118 cse35 [V118,T67] ( 5, 0.06) byref -> x4 "CSE - conservative"
-; V119 cse36 [V119,T79] ( 4, 0.04) int -> x6 "CSE - conservative"
-; V120 cse37 [V120,T68] ( 5, 0.06) byref -> x4 "CSE - conservative"
-; V121 cse38 [V121,T80] ( 4, 0.04) int -> x6 "CSE - conservative"
-; V122 cse39 [V122,T69] ( 5, 0.06) byref -> x4 "CSE - conservative"
-; V123 cse40 [V123,T81] ( 4, 0.04) int -> x6 "CSE - conservative"
-; V124 cse41 [V124,T75] ( 4, 0.04) byref -> x4 "CSE - conservative"
-; V125 cse42 [V125,T82] ( 4, 0.04) int -> x6 "CSE - conservative"
-; V126 cse43 [V126,T76] ( 4, 0.04) byref -> x4 "CSE - conservative"
-; V127 cse44 [V127,T83] ( 4, 0.04) int -> x6 "CSE - conservative"
-; V128 cse45 [V128,T77] ( 4, 0.04) byref -> x4 "CSE - conservative"
-; V129 cse46 [V129,T04] ( 19,100.33) ref -> x1 hoist multi-def "CSE - aggressive"
-; V130 cse47 [V130,T05] ( 2,100.00) long -> x3 hoist "CSE - aggressive"
-; V131 cse48 [V131,T21] ( 14, 0.16) ref -> x0 "CSE - conservative"
-; V132 cse49 [V132,T22] ( 14, 0.16) ref -> x2 "CSE - conservative"
+; V13 tmp6 [V13,T16] ( 3, 0.27) ref -> x2 "arr expr"
+; V14 tmp7 [V14,T12] ( 6, 0.54) int -> x3 "index expr"
+; V15 tmp8 [V15,T17] ( 3, 0.27) ref -> x2 "arr expr"
+; V16 tmp9 [V16,T57] ( 3, 0.07) ref -> x0 single-def "arr expr"
+; V17 tmp10 [V17,T58] ( 3, 0.07) ref -> x4 single-def "arr expr"
+; V18 tmp11 [V18,T20] ( 3, 0.13) ref -> x6 "arr expr"
+; V19 tmp12 [V19,T10] ( 12, 0.54) int -> x7 "index expr"
+; V20 tmp13 [V20,T21] ( 3, 0.13) ref -> x6 "arr expr"
+; V21 tmp14 [V21,T86] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V22 tmp15 [V22,T87] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V23 tmp16 [V23,T72] ( 3, 0.03) ref -> x6 "arr expr"
+; V24 tmp17 [V24,T56] ( 6, 0.07) int -> x7 "index expr"
+; V25 tmp18 [V25,T73] ( 3, 0.03) ref -> x6 "arr expr"
+; V26 tmp19 [V26,T88] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V27 tmp20 [V27,T89] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V28 tmp21 [V28,T50] ( 3, 0.07) ref -> x7 "arr expr"
+; V29 tmp22 [V29,T33] ( 6, 0.13) int -> x8 "index expr"
+; V30 tmp23 [V30,T51] ( 3, 0.07) ref -> x6 "arr expr"
+; V31 tmp24 [V31,T90] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V32 tmp25 [V32,T91] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V33 tmp26 [V33,T18] ( 3, 0.27) ref -> x6 "arr expr"
+; V34 tmp27 [V34,T13] ( 6, 0.54) int -> x7 "index expr"
+; V35 tmp28 [V35,T19] ( 3, 0.27) ref -> x6 "arr expr"
+; V36 tmp29 [V36,T92] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V37 tmp30 [V37,T93] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V38 tmp31 [V38,T111] ( 3, 0.02) ref -> x6 "arr expr"
+; V39 tmp32 [V39,T55] ( 12, 0.07) int -> x7 "index expr"
+; V40 tmp33 [V40,T112] ( 3, 0.02) ref -> x6 "arr expr"
+; V41 tmp34 [V41,T94] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V42 tmp35 [V42,T95] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V43 tmp36 [V43,T40] ( 3, 0.07) ref -> x4 "arr expr"
+;* V44 tmp37 [V44,T63] ( 0, 0 ) int -> zero-ref "index expr"
+; V45 tmp38 [V45,T41] ( 3, 0.07) ref -> x4 "arr expr"
+; V46 tmp39 [V46,T96] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V47 tmp40 [V47,T97] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V48 tmp41 [V48,T42] ( 3, 0.07) ref -> x4 "arr expr"
+;* V49 tmp42 [V49,T64] ( 0, 0 ) int -> zero-ref "index expr"
+; V50 tmp43 [V50,T43] ( 3, 0.07) ref -> x4 "arr expr"
+; V51 tmp44 [V51,T98] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V52 tmp45 [V52,T99] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V53 tmp46 [V53,T44] ( 3, 0.07) ref -> x4 "arr expr"
+;* V54 tmp47 [V54,T65] ( 0, 0 ) int -> zero-ref "index expr"
+; V55 tmp48 [V55,T45] ( 3, 0.07) ref -> x4 "arr expr"
+; V56 tmp49 [V56,T100] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V57 tmp50 [V57,T101] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V58 tmp51 [V58,T27] ( 3, 0.07) ref -> x4 "arr expr"
+;* V59 tmp52 [V59,T52] ( 0, 0 ) int -> zero-ref "index expr"
+; V60 tmp53 [V60,T28] ( 3, 0.07) ref -> x4 "arr expr"
+; V61 tmp54 [V61,T102] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V62 tmp55 [V62,T103] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V63 tmp56 [V63,T29] ( 3, 0.07) ref -> x4 "arr expr"
+;* V64 tmp57 [V64,T53] ( 0, 0 ) int -> zero-ref "index expr"
+; V65 tmp58 [V65,T30] ( 3, 0.07) ref -> x4 "arr expr"
+; V66 tmp59 [V66,T104] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V67 tmp60 [V67,T105] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V68 tmp61 [V68,T31] ( 3, 0.07) ref -> x4 "arr expr"
+;* V69 tmp62 [V69,T54] ( 0, 0 ) int -> zero-ref "index expr"
+; V70 tmp63 [V70,T32] ( 3, 0.07) ref -> x4 "arr expr"
+; V71 tmp64 [V71,T106] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V72 tmp65 [V72,T107] ( 2, 0.04) ref -> x4 single-def "arr expr"
+; V73 tmp66 [V73,T09] ( 12, 0.54) ref -> x7 "arr expr"
+; V74 tmp67 [V74,T11] ( 12, 0.54) int -> x8 "index expr"
+; V75 tmp68 [V75,T22] ( 3, 0.13) ref -> x6 "arr expr"
+; V76 tmp69 [V76,T108] ( 2, 0.04) ref -> x2 single-def "arr expr"
+; V77 tmp70 [V77,T109] ( 2, 0.04) ref -> x0 single-def "arr expr"
+; V78 tmp71 [V78,T59] ( 3, 0.07) ref -> x0 single-def "arr expr"
+; V79 tmp72 [V79,T60] ( 3, 0.07) ref -> x0 single-def "arr expr"
+; V80 tmp73 [V80,T61] ( 3, 0.07) ref -> x0 single-def "arr expr"
+; V81 tmp74 [V81,T62] ( 3, 0.07) ref -> x0 single-def "arr expr"
+; V82 tmp75 [V82,T110] ( 2, 0.04) int -> x1 "argument with side effect"
+; V83 tmp76 [V83,T03] ( 6,101.64) long -> x0 "Widened primary induction variable"
+; V84 tmp77 [V84,T02] ( 6,499.20) long -> x2 "Widened primary induction variable"
+; V85 cse0 [V85,T46] ( 2, 0.04) ref -> x6 "CSE - conservative"
+; V86 cse1 [V86,T121] ( 2, 0.01) ref -> x6 "CSE - conservative"
+; V87 cse2 [V87,T47] ( 5, 0.11) ref -> x6 "CSE - conservative"
+; V88 cse3 [V88,T34] ( 2, 0.09) ref -> x2 "CSE - conservative"
+; V89 cse4 [V89,T118] ( 2, 0.01) ref -> x6 "CSE - conservative"
+; V90 cse5 [V90,T113] ( 2, 0.02) ref -> x6 "CSE - conservative"
+; V91 cse6 [V91,T35] ( 2, 0.09) ref -> x6 "CSE - conservative"
+; V92 cse7 [V92,T66] ( 2, 0.02) ref -> x4 "CSE - conservative"
+; V93 cse8 [V93,T67] ( 2, 0.02) ref -> x4 "CSE - conservative"
+; V94 cse9 [V94,T68] ( 2, 0.02) ref -> x4 "CSE - conservative"
+; V95 cse10 [V95,T74] ( 2, 0.02) ref -> x4 "CSE - conservative"
+; V96 cse11 [V96,T75] ( 2, 0.02) ref -> x4 "CSE - conservative"
+; V97 cse12 [V97,T76] ( 2, 0.02) ref -> x4 "CSE - conservative"
+; V98 cse13 [V98,T124] ( 2, 0.01) int -> x7 "CSE - conservative"
+; V99 cse14 [V99,T125] ( 2, 0.01) int -> x7 "CSE - conservative"
+; V100 cse15 [V100,T117] ( 2, 0.02) int -> x8 "CSE - conservative"
+; V101 cse16 [V101,T126] ( 2, 0.01) int -> x7 "CSE - conservative"
+; V102 cse17 [V102,T127] ( 2, 0.01) int -> x7 "CSE - conservative"
+; V103 cse18 [V103,T128] ( 2, 0.01) int -> x7 "CSE - conservative"
+; V104 cse19 [V104,T129] ( 2, 0.01) int -> x7 "CSE - conservative"
+; V105 cse20 [V105,T05] ( 2,100.00) long -> x3 hoist "CSE - aggressive"
+; V106 cse21 [V106,T25] ( 14, 0.16) int -> x3 "CSE - conservative"
+; V107 cse22 [V107,T26] ( 14, 0.16) int -> x5 "CSE - conservative"
+; V108 cse23 [V108,T49] ( 5, 0.11) int -> x8 "CSE - conservative"
+; V109 cse24 [V109,T48] ( 5, 0.11) byref -> x6 "CSE - conservative"
+; V110 cse25 [V110,T123] ( 5, 0.01) int -> x8 "CSE - conservative"
+; V111 cse26 [V111,T122] ( 5, 0.01) byref -> x6 "CSE - conservative"
+; V112 cse27 [V112,T38] ( 3, 0.13) int -> x4 "CSE - conservative"
+; V113 cse28 [V113,T36] ( 3, 0.13) byref -> x2 "CSE - conservative"
+; V114 cse29 [V114,T120] ( 3, 0.02) int -> x8 "CSE - conservative"
+; V115 cse30 [V115,T119] ( 3, 0.02) byref -> x6 "CSE - conservative"
+; V116 cse31 [V116,T115] ( 3, 0.03) int -> x9 "CSE - conservative"
+; V117 cse32 [V117,T114] ( 3, 0.03) byref -> x7 "CSE - conservative"
+; V118 cse33 [V118,T39] ( 3, 0.13) int -> x8 "CSE - conservative"
+; V119 cse34 [V119,T37] ( 3, 0.13) byref -> x6 "CSE - conservative"
+; V120 cse35 [V120,T80] ( 4, 0.04) int -> x6 "CSE - conservative"
+; V121 cse36 [V121,T69] ( 5, 0.06) byref -> x4 "CSE - conservative"
...
-36 (-1.77%) : 67044.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1-OSR)
@@ -10,165 +10,171 @@
; Final local variable assignments
;
; V00 this [V00,T06] ( 14, 2.15) ref -> x19 this class-hnd single-def <Benchstone.BenchI.Puzzle>
-; V01 loc0 [V01,T03] ( 33,100.62) int -> registers
-; V02 loc1 [V02,T12] ( 24, 0.08) int -> x4
-;* V03 loc2 [V03,T14] ( 0, 0 ) int -> zero-ref
-; V04 loc3 [V04,T02] ( 7,499.74) int -> x0
+; V01 loc0 [V01,T07] ( 29, 1.35) int -> registers
+; V02 loc1 [V02,T14] ( 24, 0.08) int -> x4
+;* V03 loc2 [V03,T15] ( 0, 0 ) int -> zero-ref
+; V04 loc3 [V04,T08] ( 3, 0.26) int -> x2
;* V05 loc4 [V05 ] ( 0, 0 ) int -> zero-ref
-; V06 loc5 [V06,T114] ( 3, 0.01) ubyte -> x0
+; V06 loc5 [V06,T116] ( 3, 0.01) ubyte -> x0
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) ref -> zero-ref "arr expr"
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref "arr expr"
;* V10 tmp3 [V10 ] ( 0, 0 ) int -> zero-ref "index expr"
; V11 tmp4 [V11,T00] ( 3,599.49) ref -> x4 "arr expr"
; V12 tmp5 [V12,T01] ( 3,599.49) ref -> x4 "arr expr"
-; V13 tmp6 [V13,T15] ( 3, 0.12) ref -> x0 "arr expr"
-; V14 tmp7 [V14,T10] ( 6, 0.23) int -> x3 "index expr"
-; V15 tmp8 [V15,T16] ( 3, 0.12) ref -> x0 "arr expr"
-; V16 tmp9 [V16,T55] ( 3, 0.03) ref -> x2 single-def "arr expr"
-; V17 tmp10 [V17,T56] ( 3, 0.03) ref -> x4 single-def "arr expr"
-; V18 tmp11 [V18,T19] ( 3, 0.06) ref -> x6 "arr expr"
-; V19 tmp12 [V19,T08] ( 12, 0.23) int -> x7 "index expr"
-; V20 tmp13 [V20,T20] ( 3, 0.06) ref -> x6 "arr expr"
-; V21 tmp14 [V21,T84] ( 2, 0.02) ref -> x4 single-def "arr expr"
-; V22 tmp15 [V22,T85] ( 2, 0.02) ref -> x4 single-def "arr expr"
-; V23 tmp16 [V23,T70] ( 3, 0.01) ref -> x6 "arr expr"
-; V24 tmp17 [V24,T54] ( 6, 0.03) int -> x7 "index expr"
-; V25 tmp18 [V25,T71] ( 3, 0.01) ref -> x6 "arr expr"
-; V26 tmp19 [V26,T86] ( 2, 0.02) ref -> x4 single-def "arr expr"
-; V27 tmp20 [V27,T87] ( 2, 0.02) ref -> x4 single-def "arr expr"
-; V28 tmp21 [V28,T48] ( 3, 0.03) ref -> x7 "arr expr"
-; V29 tmp22 [V29,T31] ( 6, 0.06) int -> x8 "index expr"
-; V30 tmp23 [V30,T49] ( 3, 0.03) ref -> x6 "arr expr"
-; V31 tmp24 [V31,T88] ( 2, 0.02) ref -> x4 single-def "arr expr"
-; V32 tmp25 [V32,T89] ( 2, 0.02) ref -> x4 single-def "arr expr"
-; V33 tmp26 [V33,T17] ( 3, 0.12) ref -> x6 "arr expr"
-; V34 tmp27 [V34,T11] ( 6, 0.23) int -> x7 "index expr"
-; V35 tmp28 [V35,T18] ( 3, 0.12) ref -> x6 "arr expr"
-; V36 tmp29 [V36,T90] ( 2, 0.02) ref -> x4 single-def "arr expr"
-; V37 tmp30 [V37,T91] ( 2, 0.02) ref -> x4 single-def "arr expr"
-; V38 tmp31 [V38,T109] ( 3, 0.01) ref -> x6 "arr expr"
-; V39 tmp32 [V39,T53] ( 12, 0.03) int -> x7 "index expr"
-; V40 tmp33 [V40,T110] ( 3, 0.01) ref -> x6 "arr expr"
-; V41 tmp34 [V41,T92] ( 2, 0.02) ref -> x4 single-def "arr expr"
-; V42 tmp35 [V42,T93] ( 2, 0.02) ref -> x4 single-def "arr expr"
-; V43 tmp36 [V43,T38] ( 3, 0.03) ref -> x4 "arr expr"
-;* V44 tmp37 [V44,T61] ( 0, 0 ) int -> zero-ref "index expr"
-; V45 tmp38 [V45,T39] ( 3, 0.03) ref -> x4 "arr expr"
-; V46 tmp39 [V46,T94] ( 2, 0.02) ref -> x4 single-def "arr expr"
-; V47 tmp40 [V47,T95] ( 2, 0.02) ref -> x4 single-def "arr expr"
-; V48 tmp41 [V48,T40] ( 3, 0.03) ref -> x4 "arr expr"
-;* V49 tmp42 [V49,T62] ( 0, 0 ) int -> zero-ref "index expr"
-; V50 tmp43 [V50,T41] ( 3, 0.03) ref -> x4 "arr expr"
-; V51 tmp44 [V51,T96] ( 2, 0.02) ref -> x4 single-def "arr expr"
-; V52 tmp45 [V52,T97] ( 2, 0.02) ref -> x4 single-def "arr expr"
-; V53 tmp46 [V53,T42] ( 3, 0.03) ref -> x4 "arr expr"
-;* V54 tmp47 [V54,T63] ( 0, 0 ) int -> zero-ref "index expr"
-; V55 tmp48 [V55,T43] ( 3, 0.03) ref -> x4 "arr expr"
-; V56 tmp49 [V56,T98] ( 2, 0.02) ref -> x4 single-def "arr expr"
-; V57 tmp50 [V57,T99] ( 2, 0.02) ref -> x4 single-def "arr expr"
-; V58 tmp51 [V58,T25] ( 3, 0.03) ref -> x4 "arr expr"
-;* V59 tmp52 [V59,T50] ( 0, 0 ) int -> zero-ref "index expr"
-; V60 tmp53 [V60,T26] ( 3, 0.03) ref -> x4 "arr expr"
-; V61 tmp54 [V61,T100] ( 2, 0.02) ref -> x4 single-def "arr expr"
-; V62 tmp55 [V62,T101] ( 2, 0.02) ref -> x4 single-def "arr expr"
-; V63 tmp56 [V63,T27] ( 3, 0.03) ref -> x4 "arr expr"
-;* V64 tmp57 [V64,T51] ( 0, 0 ) int -> zero-ref "index expr"
-; V65 tmp58 [V65,T28] ( 3, 0.03) ref -> x4 "arr expr"
-; V66 tmp59 [V66,T102] ( 2, 0.02) ref -> x4 single-def "arr expr"
-; V67 tmp60 [V67,T103] ( 2, 0.02) ref -> x4 single-def "arr expr"
-; V68 tmp61 [V68,T29] ( 3, 0.03) ref -> x4 "arr expr"
-;* V69 tmp62 [V69,T52] ( 0, 0 ) int -> zero-ref "index expr"
-; V70 tmp63 [V70,T30] ( 3, 0.03) ref -> x4 "arr expr"
-; V71 tmp64 [V71,T104] ( 2, 0.02) ref -> x4 single-def "arr expr"
-; V72 tmp65 [V72,T105] ( 2, 0.02) ref -> x4 single-def "arr expr"
-; V73 tmp66 [V73,T07] ( 12, 0.23) ref -> x8 "arr expr"
-; V74 tmp67 [V74,T09] ( 12, 0.23) int -> x9 "index expr"
-; V75 tmp68 [V75,T13] ( 9, 0.18) ref -> x6 "arr expr"
-; V76 tmp69 [V76,T106] ( 2, 0.02) ref -> x0 single-def "arr expr"
-; V77 tmp70 [V77,T107] ( 2, 0.02) ref -> x2 single-def "arr expr"
-; V78 tmp71 [V78,T57] ( 3, 0.03) ref -> x0 single-def "arr expr"
-; V79 tmp72 [V79,T58] ( 3, 0.03) ref -> x0 single-def "arr expr"
-; V80 tmp73 [V80,T59] ( 3, 0.03) ref -> x0 single-def "arr expr"
-; V81 tmp74 [V81,T60] ( 3, 0.03) ref -> x0 single-def "arr expr"
-; V82 tmp75 [V82,T108] ( 2, 0.02) int -> x1 "argument with side effect"
-; V83 cse0 [V83,T44] ( 2, 0.02) ref -> x6 "CSE - conservative"
-; V84 cse1 [V84,T119] ( 2, 0.00) ref -> x6 "CSE - conservative"
-; V85 cse2 [V85,T32] ( 2, 0.04) ref -> x0 "CSE - conservative"
-; V86 cse3 [V86,T116] ( 2, 0.00) ref -> x6 "CSE - conservative"
-; V87 cse4 [V87,T111] ( 2, 0.01) ref -> x6 "CSE - conservative"
-; V88 cse5 [V88,T33] ( 2, 0.04) ref -> x6 "CSE - conservative"
-; V89 cse6 [V89,T64] ( 2, 0.01) ref -> x4 "CSE - conservative"
-; V90 cse7 [V90,T65] ( 2, 0.01) ref -> x4 "CSE - conservative"
-; V91 cse8 [V91,T66] ( 2, 0.01) ref -> x4 "CSE - conservative"
-; V92 cse9 [V92,T72] ( 2, 0.01) ref -> x4 "CSE - conservative"
-; V93 cse10 [V93,T73] ( 2, 0.01) ref -> x4 "CSE - conservative"
-; V94 cse11 [V94,T74] ( 2, 0.01) ref -> x4 "CSE - conservative"
-; V95 cse12 [V95,T122] ( 2, 0.00) int -> x7 "CSE - conservative"
-; V96 cse13 [V96,T123] ( 2, 0.00) int -> x7 "CSE - conservative"
-; V97 cse14 [V97,T115] ( 2, 0.01) int -> x8 "CSE - conservative"
-; V98 cse15 [V98,T124] ( 2, 0.00) int -> x7 "CSE - conservative"
-; V99 cse16 [V99,T125] ( 2, 0.00) int -> x7 "CSE - conservative"
-; V100 cse17 [V100,T126] ( 2, 0.00) int -> x7 "CSE - conservative"
-; V101 cse18 [V101,T127] ( 2, 0.00) int -> x7 "CSE - conservative"
-; V102 cse19 [V102,T45] ( 5, 0.05) ref -> x7 "CSE - conservative"
-; V103 cse20 [V103,T23] ( 14, 0.07) int -> x3 "CSE - conservative"
-; V104 cse21 [V104,T24] ( 14, 0.07) int -> x5 "CSE - conservative"
-; V105 cse22 [V105,T47] ( 5, 0.05) int -> x8 "CSE - conservative"
-; V106 cse23 [V106,T46] ( 5, 0.05) byref -> x6 "CSE - conservative"
-; V107 cse24 [V107,T121] ( 5, 0.01) int -> x8 "CSE - conservative"
-; V108 cse25 [V108,T120] ( 5, 0.01) byref -> x6 "CSE - conservative"
-; V109 cse26 [V109,T36] ( 3, 0.06) int -> x4 "CSE - conservative"
-; V110 cse27 [V110,T34] ( 3, 0.06) byref -> x0 "CSE - conservative"
-; V111 cse28 [V111,T118] ( 3, 0.01) int -> x8 "CSE - conservative"
-; V112 cse29 [V112,T117] ( 3, 0.01) byref -> x6 "CSE - conservative"
-; V113 cse30 [V113,T113] ( 3, 0.01) int -> x9 "CSE - conservative"
-; V114 cse31 [V114,T112] ( 3, 0.01) byref -> x7 "CSE - conservative"
-; V115 cse32 [V115,T37] ( 3, 0.06) int -> x8 "CSE - conservative"
-; V116 cse33 [V116,T35] ( 3, 0.06) byref -> x6 "CSE - conservative"
-; V117 cse34 [V117,T78] ( 4, 0.02) int -> x6 "CSE - conservative"
-; V118 cse35 [V118,T67] ( 5, 0.02) byref -> x4 "CSE - conservative"
-; V119 cse36 [V119,T79] ( 4, 0.02) int -> x6 "CSE - conservative"
-; V120 cse37 [V120,T68] ( 5, 0.02) byref -> x4 "CSE - conservative"
-; V121 cse38 [V121,T80] ( 4, 0.02) int -> x6 "CSE - conservative"
-; V122 cse39 [V122,T69] ( 5, 0.02) byref -> x4 "CSE - conservative"
-; V123 cse40 [V123,T81] ( 4, 0.02) int -> x6 "CSE - conservative"
-; V124 cse41 [V124,T75] ( 4, 0.02) byref -> x4 "CSE - conservative"
-; V125 cse42 [V125,T82] ( 4, 0.02) int -> x6 "CSE - conservative"
-; V126 cse43 [V126,T76] ( 4, 0.02) byref -> x4 "CSE - conservative"
-; V127 cse44 [V127,T83] ( 4, 0.02) int -> x6 "CSE - conservative"
-; V128 cse45 [V128,T77] ( 4, 0.02) byref -> x4 "CSE - conservative"
-; V129 cse46 [V129,T04] ( 19,100.15) ref -> x1 hoist multi-def "CSE - aggressive"
-; V130 cse47 [V130,T05] ( 2,100.00) long -> x3 hoist "CSE - aggressive"
-; V131 cse48 [V131,T21] ( 14, 0.07) ref -> x0 "CSE - conservative"
-; V132 cse49 [V132,T22] ( 14, 0.07) ref -> x2 "CSE - conservative"
+; V13 tmp6 [V13,T16] ( 3, 0.12) ref -> x2 "arr expr"
+; V14 tmp7 [V14,T12] ( 6, 0.23) int -> x3 "index expr"
+; V15 tmp8 [V15,T17] ( 3, 0.12) ref -> x2 "arr expr"
+; V16 tmp9 [V16,T57] ( 3, 0.03) ref -> x0 single-def "arr expr"
+; V17 tmp10 [V17,T58] ( 3, 0.03) ref -> x4 single-def "arr expr"
+; V18 tmp11 [V18,T20] ( 3, 0.06) ref -> x6 "arr expr"
+; V19 tmp12 [V19,T10] ( 12, 0.23) int -> x7 "index expr"
+; V20 tmp13 [V20,T21] ( 3, 0.06) ref -> x6 "arr expr"
+; V21 tmp14 [V21,T86] ( 2, 0.02) ref -> x4 single-def "arr expr"
+; V22 tmp15 [V22,T87] ( 2, 0.02) ref -> x4 single-def "arr expr"
+; V23 tmp16 [V23,T72] ( 3, 0.01) ref -> x6 "arr expr"
+; V24 tmp17 [V24,T56] ( 6, 0.03) int -> x7 "index expr"
+; V25 tmp18 [V25,T73] ( 3, 0.01) ref -> x6 "arr expr"
+; V26 tmp19 [V26,T88] ( 2, 0.02) ref -> x4 single-def "arr expr"
+; V27 tmp20 [V27,T89] ( 2, 0.02) ref -> x4 single-def "arr expr"
+; V28 tmp21 [V28,T50] ( 3, 0.03) ref -> x7 "arr expr"
+; V29 tmp22 [V29,T33] ( 6, 0.06) int -> x8 "index expr"
+; V30 tmp23 [V30,T51] ( 3, 0.03) ref -> x6 "arr expr"
+; V31 tmp24 [V31,T90] ( 2, 0.02) ref -> x4 single-def "arr expr"
+; V32 tmp25 [V32,T91] ( 2, 0.02) ref -> x4 single-def "arr expr"
+; V33 tmp26 [V33,T18] ( 3, 0.12) ref -> x6 "arr expr"
+; V34 tmp27 [V34,T13] ( 6, 0.23) int -> x7 "index expr"
+; V35 tmp28 [V35,T19] ( 3, 0.12) ref -> x6 "arr expr"
+; V36 tmp29 [V36,T92] ( 2, 0.02) ref -> x4 single-def "arr expr"
+; V37 tmp30 [V37,T93] ( 2, 0.02) ref -> x4 single-def "arr expr"
+; V38 tmp31 [V38,T111] ( 3, 0.01) ref -> x6 "arr expr"
+; V39 tmp32 [V39,T55] ( 12, 0.03) int -> x7 "index expr"
+; V40 tmp33 [V40,T112] ( 3, 0.01) ref -> x6 "arr expr"
+; V41 tmp34 [V41,T94] ( 2, 0.02) ref -> x4 single-def "arr expr"
+; V42 tmp35 [V42,T95] ( 2, 0.02) ref -> x4 single-def "arr expr"
+; V43 tmp36 [V43,T40] ( 3, 0.03) ref -> x4 "arr expr"
+;* V44 tmp37 [V44,T63] ( 0, 0 ) int -> zero-ref "index expr"
+; V45 tmp38 [V45,T41] ( 3, 0.03) ref -> x4 "arr expr"
+; V46 tmp39 [V46,T96] ( 2, 0.02) ref -> x4 single-def "arr expr"
+; V47 tmp40 [V47,T97] ( 2, 0.02) ref -> x4 single-def "arr expr"
+; V48 tmp41 [V48,T42] ( 3, 0.03) ref -> x4 "arr expr"
+;* V49 tmp42 [V49,T64] ( 0, 0 ) int -> zero-ref "index expr"
+; V50 tmp43 [V50,T43] ( 3, 0.03) ref -> x4 "arr expr"
+; V51 tmp44 [V51,T98] ( 2, 0.02) ref -> x4 single-def "arr expr"
+; V52 tmp45 [V52,T99] ( 2, 0.02) ref -> x4 single-def "arr expr"
+; V53 tmp46 [V53,T44] ( 3, 0.03) ref -> x4 "arr expr"
+;* V54 tmp47 [V54,T65] ( 0, 0 ) int -> zero-ref "index expr"
+; V55 tmp48 [V55,T45] ( 3, 0.03) ref -> x4 "arr expr"
+; V56 tmp49 [V56,T100] ( 2, 0.02) ref -> x4 single-def "arr expr"
+; V57 tmp50 [V57,T101] ( 2, 0.02) ref -> x4 single-def "arr expr"
+; V58 tmp51 [V58,T27] ( 3, 0.03) ref -> x4 "arr expr"
+;* V59 tmp52 [V59,T52] ( 0, 0 ) int -> zero-ref "index expr"
+; V60 tmp53 [V60,T28] ( 3, 0.03) ref -> x4 "arr expr"
+; V61 tmp54 [V61,T102] ( 2, 0.02) ref -> x4 single-def "arr expr"
+; V62 tmp55 [V62,T103] ( 2, 0.02) ref -> x4 single-def "arr expr"
+; V63 tmp56 [V63,T29] ( 3, 0.03) ref -> x4 "arr expr"
+;* V64 tmp57 [V64,T53] ( 0, 0 ) int -> zero-ref "index expr"
+; V65 tmp58 [V65,T30] ( 3, 0.03) ref -> x4 "arr expr"
+; V66 tmp59 [V66,T104] ( 2, 0.02) ref -> x4 single-def "arr expr"
+; V67 tmp60 [V67,T105] ( 2, 0.02) ref -> x4 single-def "arr expr"
+; V68 tmp61 [V68,T31] ( 3, 0.03) ref -> x4 "arr expr"
+;* V69 tmp62 [V69,T54] ( 0, 0 ) int -> zero-ref "index expr"
+; V70 tmp63 [V70,T32] ( 3, 0.03) ref -> x4 "arr expr"
+; V71 tmp64 [V71,T106] ( 2, 0.02) ref -> x4 single-def "arr expr"
+; V72 tmp65 [V72,T107] ( 2, 0.02) ref -> x4 single-def "arr expr"
+; V73 tmp66 [V73,T09] ( 12, 0.23) ref -> x7 "arr expr"
+; V74 tmp67 [V74,T11] ( 12, 0.23) int -> x8 "index expr"
+; V75 tmp68 [V75,T22] ( 3, 0.06) ref -> x6 "arr expr"
+; V76 tmp69 [V76,T108] ( 2, 0.02) ref -> x2 single-def "arr expr"
+; V77 tmp70 [V77,T109] ( 2, 0.02) ref -> x0 single-def "arr expr"
+; V78 tmp71 [V78,T59] ( 3, 0.03) ref -> x0 single-def "arr expr"
+; V79 tmp72 [V79,T60] ( 3, 0.03) ref -> x0 single-def "arr expr"
+; V80 tmp73 [V80,T61] ( 3, 0.03) ref -> x0 single-def "arr expr"
+; V81 tmp74 [V81,T62] ( 3, 0.03) ref -> x0 single-def "arr expr"
+; V82 tmp75 [V82,T110] ( 2, 0.02) int -> x1 "argument with side effect"
+; V83 tmp76 [V83,T03] ( 6,101.27) long -> x0 "Widened primary induction variable"
+; V84 tmp77 [V84,T02] ( 6,499.66) long -> x2 "Widened primary induction variable"
+; V85 cse0 [V85,T46] ( 2, 0.02) ref -> x6 "CSE - conservative"
+; V86 cse1 [V86,T121] ( 2, 0.00) ref -> x6 "CSE - conservative"
+; V87 cse2 [V87,T47] ( 5, 0.05) ref -> x6 "CSE - conservative"
+; V88 cse3 [V88,T34] ( 2, 0.04) ref -> x2 "CSE - conservative"
+; V89 cse4 [V89,T118] ( 2, 0.00) ref -> x6 "CSE - conservative"
+; V90 cse5 [V90,T113] ( 2, 0.01) ref -> x6 "CSE - conservative"
+; V91 cse6 [V91,T35] ( 2, 0.04) ref -> x6 "CSE - conservative"
+; V92 cse7 [V92,T66] ( 2, 0.01) ref -> x4 "CSE - conservative"
+; V93 cse8 [V93,T67] ( 2, 0.01) ref -> x4 "CSE - conservative"
+; V94 cse9 [V94,T68] ( 2, 0.01) ref -> x4 "CSE - conservative"
+; V95 cse10 [V95,T74] ( 2, 0.01) ref -> x4 "CSE - conservative"
+; V96 cse11 [V96,T75] ( 2, 0.01) ref -> x4 "CSE - conservative"
+; V97 cse12 [V97,T76] ( 2, 0.01) ref -> x4 "CSE - conservative"
+; V98 cse13 [V98,T124] ( 2, 0.00) int -> x7 "CSE - conservative"
+; V99 cse14 [V99,T125] ( 2, 0.00) int -> x7 "CSE - conservative"
+; V100 cse15 [V100,T117] ( 2, 0.01) int -> x8 "CSE - conservative"
+; V101 cse16 [V101,T126] ( 2, 0.00) int -> x7 "CSE - conservative"
+; V102 cse17 [V102,T127] ( 2, 0.00) int -> x7 "CSE - conservative"
+; V103 cse18 [V103,T128] ( 2, 0.00) int -> x7 "CSE - conservative"
+; V104 cse19 [V104,T129] ( 2, 0.00) int -> x7 "CSE - conservative"
+; V105 cse20 [V105,T05] ( 2,100.00) long -> x3 hoist "CSE - aggressive"
+; V106 cse21 [V106,T25] ( 14, 0.07) int -> x3 "CSE - conservative"
+; V107 cse22 [V107,T26] ( 14, 0.07) int -> x5 "CSE - conservative"
+; V108 cse23 [V108,T49] ( 5, 0.05) int -> x8 "CSE - conservative"
+; V109 cse24 [V109,T48] ( 5, 0.05) byref -> x6 "CSE - conservative"
+; V110 cse25 [V110,T123] ( 5, 0.01) int -> x8 "CSE - conservative"
+; V111 cse26 [V111,T122] ( 5, 0.01) byref -> x6 "CSE - conservative"
+; V112 cse27 [V112,T38] ( 3, 0.06) int -> x4 "CSE - conservative"
+; V113 cse28 [V113,T36] ( 3, 0.06) byref -> x2 "CSE - conservative"
+; V114 cse29 [V114,T120] ( 3, 0.01) int -> x8 "CSE - conservative"
+; V115 cse30 [V115,T119] ( 3, 0.01) byref -> x6 "CSE - conservative"
+; V116 cse31 [V116,T115] ( 3, 0.01) int -> x9 "CSE - conservative"
+; V117 cse32 [V117,T114] ( 3, 0.01) byref -> x7 "CSE - conservative"
+; V118 cse33 [V118,T39] ( 3, 0.06) int -> x8 "CSE - conservative"
+; V119 cse34 [V119,T37] ( 3, 0.06) byref -> x6 "CSE - conservative"
+; V120 cse35 [V120,T80] ( 4, 0.02) int -> x6 "CSE - conservative"
+; V121 cse36 [V121,T69] ( 5, 0.02) byref -> x4 "CSE - conservative"
...
-32 (-1.70%) : 90726.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
@@ -9,91 +9,105 @@
; 6 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T58] ( 16, 1017.89) ref -> x21 class-hnd single-def <int[][]>
-; V01 arg1 [V01,T31] ( 10, 908959.09) int -> x19 single-def
-; V02 arg2 [V02,T56] ( 11, 1223.12) int -> x20 single-def
-; V03 loc0 [V03,T77] ( 2, 2 ) long -> x24 single-def
-; V04 loc1 [V04,T65] ( 10, 871.67) int -> x0
+; V00 arg0 [V00,T67] ( 16, 1017.89) ref -> x21 class-hnd single-def <int[][]>
+; V01 arg1 [V01,T36] ( 10, 908959.09) int -> x19 single-def
+; V02 arg2 [V02,T65] ( 11, 1223.12) int -> x20 single-def
+; V03 loc0 [V03,T89] ( 2, 2 ) long -> x24 single-def
+;* V04 loc1 [V04,T95] ( 0, 0 ) int -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T42] ( 16, 9001.88) int -> x3 "Inline stloc first use temp"
-; V07 tmp2 [V07,T44] ( 3, 5994.00) ref -> x7 class-hnd "impAppendStmt" <int[]>
+;* V06 tmp1 [V06,T90] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V07 tmp2 [V07,T51] ( 3, 5994.00) ref -> x7 class-hnd "impAppendStmt" <int[]>
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "Strict ordering of exceptions for Array store"
-; V09 tmp4 [V09,T24] ( 14, 5442741.54) int -> x0 "Inline stloc first use temp"
-; V10 tmp5 [V10,T25] ( 6, 5441742.54) ref -> x2 class-hnd "Strict ordering of exceptions for Array store" <int[]>
-; V11 tmp6 [V11,T28] ( 4, 3627828.36) int -> x4 "Strict ordering of exceptions for Array store"
-; V12 tmp7 [V12,T78] ( 2, 2 ) int -> x5 single-def "Inline stloc first use temp"
-; V13 tmp8 [V13,T74] ( 2, 4 ) int -> x3 "Strict ordering of exceptions for Array store"
-; V14 tmp9 [V14,T50] ( 3, 2997.00) int -> x10 "Inline stloc first use temp"
-; V15 tmp10 [V15,T49] ( 2, 3996.00) int -> x9 "Strict ordering of exceptions for Array store"
+;* V09 tmp4 [V09,T74] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V10 tmp5 [V10,T28] ( 6, 5441742.54) ref -> x3 class-hnd "Strict ordering of exceptions for Array store" <int[]>
+; V11 tmp6 [V11,T33] ( 4, 3627828.36) int -> x4 "Strict ordering of exceptions for Array store"
+; V12 tmp7 [V12,T91] ( 2, 2 ) int -> x5 single-def "Inline stloc first use temp"
+; V13 tmp8 [V13,T86] ( 2, 4 ) int -> x3 "Strict ordering of exceptions for Array store"
+; V14 tmp9 [V14,T59] ( 3, 2997.00) int -> x10 "Inline stloc first use temp"
+; V15 tmp10 [V15,T57] ( 2, 3996.00) int -> x9 "Strict ordering of exceptions for Array store"
; V16 tmp11 [V16,T02] ( 16,998814949.60) int -> x2 "Inlining Arg"
-; V17 tmp12 [V17,T06] ( 45,553295136.81) int -> x3 "Inline stloc first use temp"
-; V18 tmp13 [V18,T05] ( 56,679222443.59) ref -> x1 class-hnd "Inlining Arg" <int[]>
-; V19 tmp14 [V19,T27] ( 6, 4355527.50) int -> x6 "Inline stloc first use temp"
-; V20 tmp15 [V20,T17] ( 6, 8711055 ) int -> x9 "Strict ordering of exceptions for Array store"
+; V17 tmp12 [V17,T07] ( 20,536386902.68) int -> x3 "Inline stloc first use temp"
+; V18 tmp13 [V18,T05] ( 25,641692115.55) ref -> x1 class-hnd "Inlining Arg" <int[]>
+; V19 tmp14 [V19,T32] ( 6, 4355527.50) int -> x6 "Inline stloc first use temp"
+; V20 tmp15 [V20,T20] ( 6, 8711055 ) int -> x9 "Strict ordering of exceptions for Array store"
; V21 tmp16 [V21,T00] ( 20, 2.1e+09) int -> x5 "Inlining Arg"
-; V22 tmp17 [V22,T01] ( 24, 1.3e+09) int -> x6 "Inline stloc first use temp"
-; V23 tmp18 [V23,T13] ( 4,221695564.66) int -> x9 "Inline stloc first use temp"
-; V24 tmp19 [V24,T08] ( 4,443391129.32) int -> x8 "Strict ordering of exceptions for Array store"
+; V22 tmp17 [V22,T01] ( 20, 1.3e+09) int -> x6 "Inline stloc first use temp"
+; V23 tmp18 [V23,T13] ( 4,221695564.66) int -> registers "Inline stloc first use temp"
+; V24 tmp19 [V24,T08] ( 4,443391129.32) int -> registers "Strict ordering of exceptions for Array store"
; V25 tmp20 [V25,T14] ( 25, 30154155.23) int -> x10 "Inlining Arg"
; V26 tmp21 [V26,T15] ( 33, 21258461.44) int -> x11 "Inline stloc first use temp"
-; V27 tmp22 [V27,T29] ( 6, 3600399.15) int -> x5 "Inline stloc first use temp"
-; V28 tmp23 [V28,T18] ( 6, 7200798.30) int -> x2 "Strict ordering of exceptions for Array store"
+; V27 tmp22 [V27,T34] ( 6, 3600399.15) int -> x5 "Inline stloc first use temp"
+; V28 tmp23 [V28,T21] ( 6, 7200798.30) int -> registers "Strict ordering of exceptions for Array store"
;* V29 tmp24 [V29 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V30 tmp25 [V30,T69] ( 3, 6 ) ref -> x1 single-def "arr expr"
-; V31 tmp26 [V31,T71] ( 2, 4 ) ref -> x3 single-def "arr expr"
-; V32 tmp27 [V32,T68] ( 4, 8 ) int -> x5 "fgMakeTemp is creating a new local variable"
-; V33 tmp28 [V33,T72] ( 2, 4 ) ref -> x3 single-def "arr expr"
-; V34 tmp29 [V34,T73] ( 2, 4 ) ref -> x5 single-def "arr expr"
-;* V35 tmp30 [V35,T79] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
-;* V36 tmp31 [V36,T80] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
-;* V37 tmp32 [V37,T81] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
-; V38 tmp33 [V38,T43] ( 4, 7992.00) int -> x10 "fgMakeTemp is creating a new local variable"
-; V39 tmp34 [V39,T47] ( 2, 3996.00) ref -> x9 "arr expr"
-; V40 tmp35 [V40,T48] ( 2, 3996.00) ref -> x10 "arr expr"
-;* V41 tmp36 [V41,T52] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V42 tmp37 [V42,T53] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V43 tmp38 [V43,T54] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V44 tmp39 [V44,T26] ( 6, 5441742.54) ref -> x4 "arr expr"
-; V45 cse0 [V45,T09] ( 3,420289323.62) int -> x9 "CSE - aggressive"
-; V46 cse1 [V46,T10] ( 3,420289323.62) int -> x8 "CSE - aggressive"
-; V47 cse2 [V47,T19] ( 3, 6757362.20) int -> x5 "CSE - aggressive"
-; V48 cse3 [V48,T20] ( 3, 6757362.20) int -> x2 "CSE - aggressive"
-; V49 cse4 [V49,T35] ( 3, 68256.18) int -> x5 "CSE - moderate"
-; V50 cse5 [V50,T36] ( 3, 68256.18) int -> x2 "CSE - moderate"
-; V51 cse6 [V51,T41] ( 2, 9079.55) ref -> x1 hoist "CSE - moderate"
-; V52 cse7 [V52,T32] ( 6, 908954.99) ref -> x5 hoist multi-def "CSE - moderate"
-; V53 cse8 [V53,T51] ( 3, 2997.00) int -> x9 "CSE - moderate"
-; V54 cse9 [V54,T75] ( 3, 3 ) int -> x3 "CSE - moderate"
-; V55 cse10 [V55,T33] ( 2, 898875.44) ref -> x1 hoist "CSE - moderate"
-; V56 cse11 [V56,T60] ( 4, 1002.00) byref -> x2 "CSE - moderate"
-; V57 cse12 [V57,T61] ( 4, 1002.00) byref -> x1 "CSE - moderate"
-; V58 cse13 [V58,T46] ( 7, 2003.00) ref -> x0 "CSE - moderate"
-; V59 cse14 [V59,T11] ( 3,420289323.62) long -> x7 "CSE - aggressive"
-; V60 cse15 [V60,T12] ( 3,420289323.62) long -> x5 "CSE - aggressive"
-; V61 cse16 [V61,T21] ( 3, 6757362.20) long -> x9 "CSE - aggressive"
-; V62 cse17 [V62,T22] ( 3, 6757362.20) long -> x10 "CSE - aggressive"
-; V63 cse18 [V63,T23] ( 3, 6403278.75) long -> x10 "CSE - aggressive"
-; V64 cse19 [V64,T55] ( 2, 1975.84) long -> x5 hoist "CSE - moderate"
-; V65 cse20 [V65,T30] ( 3, 2693662.56) long -> x6 "CSE - moderate"
-; V66 cse21 [V66,T37] ( 3, 68256.18) long -> x7 "CSE - moderate"
-; V67 cse22 [V67,T38] ( 3, 68256.18) long -> x10 "CSE - moderate"
-; V68 cse23 [V68,T39] ( 3, 64679.58) long -> x8 "CSE - moderate"
-; V69 cse24 [V69,T67] ( 2, 19.96) long -> x5 hoist "CSE - moderate"
-; V70 cse25 [V70,T40] ( 3, 27208.71) long -> x6 "CSE - moderate"
-; V71 cse26 [V71,T62] ( 3, 1001.00) int -> x4 "CSE - moderate"
-; V72 cse27 [V72,T63] ( 3, 1001.00) int -> x6 "CSE - moderate"
-; V73 cse28 [V73,T64] ( 3, 1001.00) int -> x8 "CSE - moderate"
-; V74 cse29 [V74,T04] ( 25,863888555.70) byref -> x4 hoist multi-def "CSE - aggressive"
-; V75 cse30 [V75,T03] ( 22,951963978.51) int -> x7 multi-def "CSE - aggressive"
-; V76 cse31 [V76,T07] ( 4,552736088.47) int -> x9 "CSE - aggressive"
-; V77 cse32 [V77,T16] ( 4, 8886825.68) int -> x5 "CSE - aggressive"
-; V78 cse33 [V78,T59] ( 11, 1016.05) int -> x22 hoist multi-def "CSE - moderate"
-; V79 cse34 [V79,T57] ( 8, 1217.04) byref -> x23 hoist multi-def "CSE - moderate"
-; V80 cse35 [V80,T34] ( 4, 89765.92) int -> x2 "CSE - moderate"
-; V81 cse36 [V81,T76] ( 3, 3 ) int -> x2 "CSE - moderate"
-; V82 cse37 [V82,T66] ( 4, 218.13) int -> x25 hoist multi-def "CSE - moderate"
-; V83 rat0 [V83,T70] ( 3, 6 ) int -> x7 "ReplaceWithLclVar is creating a new local variable"
-; V84 rat1 [V84,T45] ( 3, 5994.00) int -> x11 "ReplaceWithLclVar is creating a new local variable"
+; V30 tmp25 [V30,T81] ( 3, 6 ) ref -> x1 single-def "arr expr"
+; V31 tmp26 [V31,T83] ( 2, 4 ) ref -> x3 single-def "arr expr"
+; V32 tmp27 [V32,T80] ( 4, 8 ) int -> x5 "fgMakeTemp is creating a new local variable"
+; V33 tmp28 [V33,T84] ( 2, 4 ) ref -> x3 single-def "arr expr"
+; V34 tmp29 [V34,T85] ( 2, 4 ) ref -> x5 single-def "arr expr"
+;* V35 tmp30 [V35,T92] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+;* V36 tmp31 [V36,T93] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+;* V37 tmp32 [V37,T94] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+; V38 tmp33 [V38,T50] ( 4, 7992.00) int -> x10 "fgMakeTemp is creating a new local variable"
+; V39 tmp34 [V39,T55] ( 2, 3996.00) ref -> x9 "arr expr"
+; V40 tmp35 [V40,T56] ( 2, 3996.00) ref -> x10 "arr expr"
+;* V41 tmp36 [V41,T61] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V42 tmp37 [V42,T62] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V43 tmp38 [V43,T63] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V44 tmp39 [V44,T29] ( 6, 5441742.54) ref -> x4 "arr expr"
+; V45 tmp40 [V45,T54] ( 6, 4996.00) long -> x3 "Widened primary induction variable"
+; V46 tmp41 [V46,T77] ( 6, 49.94) long -> x0 "Widened primary induction variable"
+; V47 tmp42 [V47,T47] ( 7, 54427.40) long -> x1 "Widened primary induction variable"
+; V48 tmp43 [V48,T58] ( 5, 3955.95) long -> x0 "Widened primary induction variable"
+; V49 tmp44 [V49,T30] ( 7, 5388313.03) long -> x1 "Widened primary induction variable"
+; V50 tmp45 [V50,T79] ( 6, 10.87) long -> x0 "Widened primary induction variable"
+; V51 tmp46 [V51,T39] ( 12, 233550.69) long -> x2 "Widened primary induction variable"
+; V52 tmp47 [V52,T75] ( 5, 860.81) long -> x0 "Widened primary induction variable"
+; V53 tmp48 [V53,T40] ( 10, 188095.46) long -> x3 "Widened primary induction variable"
+; V54 tmp49 [V54,T16] ( 9, 16487026.48) long -> x3 "Widened primary induction variable"
+; V55 cse0 [V55,T49] ( 2, 9079.55) ref -> x2 hoist "CSE - moderate"
+; V56 cse1 [V56,T09] ( 3,420289323.62) int -> x9 "CSE - aggressive"
+; V57 cse2 [V57,T10] ( 3,420289323.62) int -> x8 "CSE - aggressive"
+; V58 cse3 [V58,T22] ( 3, 6757362.20) int -> x5 "CSE - aggressive"
+; V59 cse4 [V59,T23] ( 3, 6757362.20) int -> x2 "CSE - aggressive"
+; V60 cse5 [V60,T42] ( 3, 68256.18) int -> x5 "CSE - moderate"
+; V61 cse6 [V61,T43] ( 3, 68256.18) int -> x2 "CSE - moderate"
+; V62 cse7 [V62,T37] ( 6, 908954.99) ref -> x5 hoist multi-def "CSE - moderate"
+; V63 cse8 [V63,T60] ( 3, 2997.00) int -> x9 "CSE - moderate"
+; V64 cse9 [V64,T87] ( 3, 3 ) int -> x3 "CSE - moderate"
+; V65 cse10 [V65,T38] ( 2, 898875.44) ref -> x2 hoist "CSE - moderate"
+; V66 cse11 [V66,T69] ( 4, 1002.00) byref -> x2 "CSE - moderate"
+; V67 cse12 [V67,T70] ( 4, 1002.00) byref -> x1 "CSE - moderate"
+; V68 cse13 [V68,T53] ( 7, 2003.00) ref -> x0 "CSE - moderate"
+; V69 cse14 [V69,T26] ( 3, 6403278.75) long -> x10 "CSE - aggressive"
+; V70 cse15 [V70,T64] ( 2, 1975.84) long -> x5 hoist "CSE - moderate"
+; V71 cse16 [V71,T35] ( 3, 2693662.56) long -> x6 "CSE - moderate"
+; V72 cse17 [V72,T46] ( 3, 64679.58) long -> x8 "CSE - moderate"
+; V73 cse18 [V73,T78] ( 2, 19.96) long -> x5 hoist "CSE - moderate"
+; V74 cse19 [V74,T48] ( 3, 27208.71) long -> x6 "CSE - moderate"
+; V75 cse20 [V75,T11] ( 3,420289323.62) long -> x7 "CSE - aggressive"
+; V76 cse21 [V76,T12] ( 3,420289323.62) long -> x5 "CSE - aggressive"
+; V77 cse22 [V77,T24] ( 3, 6757362.20) long -> x9 "CSE - aggressive"
+; V78 cse23 [V78,T25] ( 3, 6757362.20) long -> x10 "CSE - aggressive"
+; V79 cse24 [V79,T44] ( 3, 68256.18) long -> x7 "CSE - moderate"
+; V80 cse25 [V80,T45] ( 3, 68256.18) long -> x10 "CSE - moderate"
+; V81 cse26 [V81,T71] ( 3, 1001.00) int -> x4 "CSE - moderate"
+; V82 cse27 [V82,T72] ( 3, 1001.00) int -> x6 "CSE - moderate"
+; V83 cse28 [V83,T73] ( 3, 1001.00) int -> x8 "CSE - moderate"
+; V84 cse29 [V84,T04] ( 25,863888555.70) byref -> x4 hoist multi-def "CSE - aggressive"
+; V85 cse30 [V85,T03] ( 22,951963978.51) int -> x7 multi-def "CSE - aggressive"
+; V86 cse31 [V86,T06] ( 4,552736088.47) int -> x9 "CSE - aggressive"
+; V87 cse32 [V87,T18] ( 20, 10979106.64) byref -> x4 hoist multi-def "CSE - aggressive"
+; V88 cse33 [V88,T17] ( 25, 14259249.09) int -> x7 multi-def "CSE - aggressive"
+; V89 cse34 [V89,T19] ( 4, 8886825.68) int -> x5 "CSE - aggressive"
+; V90 cse35 [V90,T27] ( 4, 5583192.81) int -> x9 "CSE - aggressive"
+; V91 cse36 [V91,T68] ( 11, 1016.05) int -> x22 hoist multi-def "CSE - moderate"
+; V92 cse37 [V92,T66] ( 8, 1217.04) byref -> x23 hoist multi-def "CSE - moderate"
+; V93 cse38 [V93,T41] ( 4, 89765.92) int -> x2 "CSE - moderate"
+; V94 cse39 [V94,T88] ( 3, 3 ) int -> x2 "CSE - moderate"
+; V95 cse40 [V95,T76] ( 4, 218.13) int -> x25 hoist multi-def "CSE - moderate"
+; V96 cse41 [V96,T31] ( 4, 5353824.53) long -> x9 "CSE - aggressive"
+; V97 rat0 [V97,T82] ( 3, 6 ) int -> x7 "ReplaceWithLclVar is creating a new local variable"
+; V98 rat1 [V98,T52] ( 3, 5994.00) int -> x11 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 8
@@ -119,7 +133,7 @@ G_M42768_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
; gcrRegs +[x1]
ldr w2, [x1, #0x08]
cmp w2, #0
- bls G_M42768_IG78
+ bls G_M42768_IG80
add x1, x1, #16
; gcrRegs -[x1]
; byrRegs +[x1]
@@ -128,7 +142,7 @@ G_M42768_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
mov x3, x0
; gcrRegs +[x3]
cmp w2, #1
- bls G_M42768_IG78
+ bls G_M42768_IG80
add x2, x3, #20
; byrRegs +[x2]
mov w3, #117
@@ -160,17 +174,17 @@ G_M42768_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
msub w5, w7, w8, w5
str w3, [x2]
str w5, [x1]
- mov w3, wzr
cmp w19, #0
ble G_M42768_IG05
- ;; size=168 bbWeight=1 PerfScore 42.00
+ ;; size=164 bbWeight=1 PerfScore 41.50
G_M42768_IG03: ; bbWeight=1.00, gcrefRegs=200001 {x0 x21}, byrefRegs=0006 {x1 x2}, byref, isz
+ mov x3, xzr
ldr w22, [x21, #0x08]
cmp w22, #0
- bls G_M42768_IG78
+ bls G_M42768_IG80
ldr x5, [x21, #0x10]
; gcrRegs +[x5]
- ;; size=16 bbWeight=1.00 PerfScore 7.49
+ ;; size=20 bbWeight=1.00 PerfScore 7.99
G_M42768_IG04: ; bbWeight=999.00, gcrefRegs=200021 {x0 x5 x21}, byrefRegs=0006 {x1 x2}, byref, isz
mov x7, x5
; gcrRegs +[x7]
@@ -196,160 +210,168 @@ G_M42768_IG04: ; bbWeight=999.00, gcrefRegs=200021 {x0 x5 x21}, byrefRegs
str w10, [x1]
ldr w9, [x7, #0x08]
cmp w3, w9
- bhs G_M42768_IG78
+ bhs G_M42768_IG80
add x7, x7, #16
; gcrRegs -[x7]
; byrRegs +[x7]
- str w10, [x7, w3, UXTW #2]
+ lsl x9, x3, #2
+ str w10, [x7, x9]
add w3, w3, #1
+ mov w3, w3
cmp w3, w19
blt G_M42768_IG04
- ;; size=100 bbWeight=999.00 PerfScore 29970.00
+ ;; size=108 bbWeight=999.00 PerfScore 31468.50
G_M42768_IG05: ; bbWeight=1.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x5]
; byrRegs -[x1-x2 x7]
- mov w3, #1
cmp w20, #1
ble G_M42768_IG17
- ;; size=12 bbWeight=1.00 PerfScore 2.00
+ ;; size=8 bbWeight=1.00 PerfScore 1.50
...
+28 (+33.33%) : 68368.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.Canon]:FreeSlow(System.Canon):this (Tier1)
@@ -8,17 +8,17 @@
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 20228
; Final local variable assignments
;
-; V00 this [V00,T04] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]>
-; V01 arg1 [V01,T05] ( 3, 2.99) ref -> x1 class-hnd single-def <System.__Canon>
+; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]>
+; V01 arg1 [V01,T04] ( 3, 2.99) ref -> x1 class-hnd single-def <System.__Canon>
; V02 loc0 [V02,T02] ( 4, 6.22) ref -> x14 class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 5, 13.93) int -> x15
+; V03 loc1 [V03,T05] ( 3, 2.98) int -> x12
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T01] ( 3, 7.45) long -> xip0 "CSE - aggressive"
-; V06 cse1 [V06,T03] ( 3, 5.23) int -> x12 "CSE - aggressive"
+; V05 tmp1 [V05,T00] ( 6, 14.91) long -> x12 "Widened primary induction variable"
+; V06 cse0 [V06,T01] ( 4, 6.23) int -> x15 "CSE - aggressive"
;
; Lcl frame size = 0
-G_M50542_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M50542_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
@@ -26,33 +26,40 @@ G_M50542_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
; gcrRegs +[x0-x1]
ldr x14, [x0, #0x10]
; gcrRegs +[x14]
- mov w15, wzr
- ldr w12, [x14, #0x08]
- cmp w12, #0
- ble G_M50542_IG05
- ;; size=20 bbWeight=1 PerfScore 8.00
-G_M50542_IG03: ; bbWeight=3.23, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz
+ ldr w15, [x14, #0x08]
+ cmp w15, #0
+ ble G_M50542_IG06
+ ;; size=16 bbWeight=1 PerfScore 7.50
+G_M50542_IG03: ; bbWeight=0.99, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- ubfiz xip0, x15, #3, #32
- add xip0, xip0, #16
- ldr x0, [x14, xip0]
- ; gcrRegs +[x0]
- cbz x0, G_M50542_IG06
- ;; size=16 bbWeight=3.23 PerfScore 17.75
+ mov x12, xzr
+ ;; size=4 bbWeight=0.99 PerfScore 0.50
G_M50542_IG04: ; bbWeight=3.23, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- add w15, w15, #1
- cmp w12, w15
- bgt G_M50542_IG03
- ;; size=12 bbWeight=3.23 PerfScore 6.47
-G_M50542_IG05: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ lsl xip0, x12, #3
+ add xip0, xip0, #16
+ ldr xip0, [x14, xip0]
+ ; gcrRegs +[xip0]
+ cbz xip0, G_M50542_IG07
+ ;; size=16 bbWeight=3.23 PerfScore 17.75
+G_M50542_IG05: ; bbWeight=3.23, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[xip0]
+ add w12, w12, #1
+ mov w12, w12
+ cmp w15, w12
+ bgt G_M50542_IG04
+ ;; size=16 bbWeight=3.23 PerfScore 8.09
+G_M50542_IG06: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x1 x14]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.01 PerfScore 0.01
-G_M50542_IG06: ; bbWeight=0.99, gcVars=0000000000000000 {}, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, gcvars, byref
+G_M50542_IG07: ; bbWeight=0.99, gcVars=0000000000000000 {}, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1 x14]
- add x14, x14, xip0
+ cmp w12, w15
+ bhs G_M50542_IG09
+ ubfiz x15, x12, #3, #32
+ add x15, x15, #16
+ add x14, x14, x15
; gcrRegs -[x14]
; byrRegs +[x14]
mov x15, x1
@@ -60,13 +67,18 @@ G_M50542_IG06: ; bbWeight=0.99, gcVars=0000000000000000 {}, gcrefRegs=400
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x1 x15]
; byrRegs -[x14]
- ;; size=12 bbWeight=0.99 PerfScore 1.99
-G_M50542_IG07: ; bbWeight=0.99, epilog, nogc, extend
+ ;; size=28 bbWeight=0.99 PerfScore 4.96
+G_M50542_IG08: ; bbWeight=0.99, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.99 PerfScore 1.99
+G_M50542_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 84, prolog size 8, PerfScore 37.70, instruction count 21, allocated bytes for code 84 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
+; Total bytes of code 112, prolog size 8, PerfScore 42.29, instruction count 28, allocated bytes for code 112 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
; ============================================================
Unwind Info:
@@ -77,7 +89,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+28 (+35.00%) : 32390.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
@@ -9,11 +9,12 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 5, 3 ) ref -> x0 class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
+; V00 arg0 [V00,T00] ( 6, 3 ) ref -> x0 class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
; V01 loc0 [V01,T01] ( 4, 1 ) int -> x1
-; V02 loc1 [V02,T02] ( 5, 0 ) int -> x2
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
+; V05 tmp2 [V05,T02] ( 6, 0 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -34,20 +35,25 @@ G_M16110_IG03: ; bbWeight=1, epilog, nogc, extend
;; size=8 bbWeight=1 PerfScore 2.00
G_M16110_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
- mov w2, wzr
+ mov x2, xzr
b G_M16110_IG06
;; size=8 bbWeight=0 PerfScore 0.00
-G_M16110_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M16110_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr w3, [x0, #0x08]
+ cmp w2, w3
+ bhs G_M16110_IG08
add x3, x0, #16
; byrRegs +[x3]
- ldr x3, [x3, w2, UXTW #3]
+ lsl x4, x2, #3
+ ldr x3, [x3, x4]
; gcrRegs +[x3]
; byrRegs -[x3]
ldr w3, [x3, #0x3C]
; gcrRegs -[x3]
add w1, w3, w1
add w2, w2, #1
- ;; size=20 bbWeight=0 PerfScore 0.00
+ mov w2, w2
+ ;; size=40 bbWeight=0 PerfScore 0.00
G_M16110_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr w3, [x0, #0x08]
cmp w3, w2
@@ -59,8 +65,13 @@ G_M16110_IG07: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0 PerfScore 0.00
+G_M16110_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 80, prolog size 8, PerfScore 5.50, instruction count 20, allocated bytes for code 80 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
+; Total bytes of code 108, prolog size 8, PerfScore 5.50, instruction count 27, allocated bytes for code 108 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
; ============================================================
Unwind Info:
@@ -71,7 +82,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+28 (+35.00%) : 33944.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
@@ -9,11 +9,12 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 5, 3 ) ref -> x0 class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
+; V00 arg0 [V00,T00] ( 6, 3 ) ref -> x0 class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
; V01 loc0 [V01,T01] ( 4, 1 ) int -> x1
-; V02 loc1 [V02,T02] ( 5, 0 ) int -> x2
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
+; V05 tmp2 [V05,T02] ( 6, 0 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -34,20 +35,25 @@ G_M16110_IG03: ; bbWeight=1, epilog, nogc, extend
;; size=8 bbWeight=1 PerfScore 2.00
G_M16110_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
- mov w2, wzr
+ mov x2, xzr
b G_M16110_IG06
;; size=8 bbWeight=0 PerfScore 0.00
-G_M16110_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M16110_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr w3, [x0, #0x08]
+ cmp w2, w3
+ bhs G_M16110_IG08
add x3, x0, #16
; byrRegs +[x3]
- ldr x3, [x3, w2, UXTW #3]
+ lsl x4, x2, #3
+ ldr x3, [x3, x4]
; gcrRegs +[x3]
; byrRegs -[x3]
ldr w3, [x3, #0x3C]
; gcrRegs -[x3]
add w1, w3, w1
add w2, w2, #1
- ;; size=20 bbWeight=0 PerfScore 0.00
+ mov w2, w2
+ ;; size=40 bbWeight=0 PerfScore 0.00
G_M16110_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr w3, [x0, #0x08]
cmp w3, w2
@@ -59,8 +65,13 @@ G_M16110_IG07: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0 PerfScore 0.00
+G_M16110_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 80, prolog size 8, PerfScore 5.50, instruction count 20, allocated bytes for code 80 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
+; Total bytes of code 108, prolog size 8, PerfScore 5.50, instruction count 27, allocated bytes for code 108 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
; ============================================================
Unwind Info:
@@ -71,7 +82,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run_tiered.windows.arm64.checked.mch
-12 (-0.89%) : 14145.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan1[ushort],System.Span1[System.Range],System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[System.String],ubyte,int):int (Tier0-FullOpts)
@@ -22,7 +22,7 @@
; V11 loc5 [V11 ] ( 11, 10 ) struct (32) [fp-0x98] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Generic.ValueListBuilder`1[int]>
; V12 loc6 [V12,T16] ( 5, 5.50) int -> x28
; V13 loc7 [V13,T03] ( 11, 15 ) int -> x27
-; V14 loc8 [V14,T02] ( 8, 16.50) int -> x23
+;* V14 loc8 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 loc9 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[System.Range]>
;* V16 loc10 [V16 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
; V17 loc11 [V17,T12] ( 3, 6 ) int -> [fp-0x9C] spill-single-def
@@ -48,7 +48,7 @@
;* V37 tmp19 [V37 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Index>
; V38 tmp20 [V38,T30] ( 2, 2 ) long -> x0 "Inlining Arg"
; V39 tmp21 [V39,T31] ( 2, 2 ) long -> x0 "Inlining Arg"
-; V40 tmp22 [V40,T18] ( 4, 4 ) int -> [fp-0xBC] spill-single-def "Inlining Arg"
+; V40 tmp22 [V40,T18] ( 4, 4 ) int -> x23 "Inlining Arg"
;* V41 tmp23 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Range]>
;* V42 tmp24 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V43 tmp25 [V43 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -73,7 +73,7 @@
; V62 tmp44 [V62,T26] ( 2, 1.50) byref -> x4 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
; V63 tmp45 [V63,T20] ( 3, 2 ) int -> x3 single-def "field V03._length (fldOffset=0x8)" P-INDEP
;* V64 tmp46 [V64,T51] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
-; V65 tmp47 [V65,T10] ( 3, 6.50) int -> [fp-0xC0] spill-single-def "field V15._length (fldOffset=0x8)" P-INDEP
+; V65 tmp47 [V65,T10] ( 3, 6.50) int -> x23 "field V15._length (fldOffset=0x8)" P-INDEP
;* V66 tmp48 [V66 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
;* V67 tmp49 [V67 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
; V68 tmp50 [V68,T39] ( 2, 1 ) byref -> x0 single-def "field V19._reference (fldOffset=0x0)" P-INDEP
@@ -101,7 +101,7 @@
; V90 tmp72 [V90,T46] ( 2, 1 ) int -> x26 "field V36._value (fldOffset=0x0)" P-INDEP
; V91 tmp73 [V91,T47] ( 2, 1 ) int -> x23 "field V37._value (fldOffset=0x0)" P-INDEP
;* V92 tmp74 [V92,T52] ( 0, 0 ) byref -> zero-ref single-def "field V41._reference (fldOffset=0x0)" P-INDEP
-; V93 tmp75 [V93,T48] ( 2, 1 ) int -> x4 "field V41._length (fldOffset=0x8)" P-INDEP
+; V93 tmp75 [V93,T48] ( 2, 1 ) int -> x23 "field V41._length (fldOffset=0x8)" P-INDEP
; V94 tmp76 [V94,T23] ( 2, 4 ) int -> x1 "field V49._value (fldOffset=0x0)" P-INDEP
; V95 tmp77 [V95,T24] ( 2, 4 ) int -> x2 "field V50._value (fldOffset=0x0)" P-INDEP
; V96 tmp78 [V96,T49] ( 2, 1 ) int -> x1 "field V53._value (fldOffset=0x0)" P-INDEP
@@ -109,8 +109,9 @@
; V98 tmp80 [V98,T28] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
; V99 tmp81 [V99,T29] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
; V100 GsCookie [V100 ] ( 1, 1 ) long -> [fp-0xC8] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V101 cse0 [V101,T13] ( 3, 6 ) long -> x1 "CSE - aggressive"
-; V102 cse1 [V102,T09] ( 6, 7.50) ref -> x1 multi-def "CSE - aggressive"
+; V101 tmp83 [V101,T02] ( 8, 16.50) long -> [fp-0xC0] "Widened primary induction variable"
+; V102 cse0 [V102,T13] ( 3, 6 ) long -> x1 "CSE - aggressive"
+; V103 cse1 [V103,T09] ( 6, 7.50) ref -> x1 multi-def "CSE - aggressive"
;
; Lcl frame size = 128
@@ -313,46 +314,42 @@ G_M27501_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300004 {x2 x
sxtw w28, w23
;; size=40 bbWeight=0.50 PerfScore 4.00
G_M27501_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
- mov w23, wzr
- sub w2, w22, #1
- str w2, [fp, #-0xBC] // [V40 tmp22]
- cmp w2, w22
+ sub w23, w22, #1
+ cmp w23, w22
bhi G_M27501_IG28
- tbz w2, #31, G_M27501_IG14
+ tbz w23, #31, G_M27501_IG14
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
mov x0, x1
; gcrRegs +[x0]
- movz x3, #0xD1FFAB1E // code for <unknown method>
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=60 bbWeight=0.50 PerfScore 6.00
+ ;; size=52 bbWeight=0.50 PerfScore 5.25
G_M27501_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref
- ldr w2, [fp, #-0xBC] // [V40 tmp22]
- sxtw w4, w2
- str w4, [fp, #-0xC0] // [V65 tmp47]
+ mov x4, xzr
b G_M27501_IG20
- ;; size=16 bbWeight=0.50 PerfScore 2.25
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
G_M27501_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
ldr w0, [fp, #-0x60] // [V10 loc4+0x18]
- cmp w23, w0
+ cmp w4, w0
bhs G_M27501_IG27
ldr x0, [fp, #-0x68] // [V10 loc4+0x10]
; byrRegs +[x0]
- ubfiz x1, x23, #2, #32
+ lsl x1, x4, #2
ldr w0, [x0, x1]
; byrRegs -[x0]
sxtw w5, w0
ldr w0, [fp, #-0x90] // [V11 loc5+0x08]
- cmp w23, w0
+ cmp w4, w0
bge G_M27501_IG16
ldr w0, [fp, #-0x80] // [V11 loc5+0x18]
- cmp w23, w0
+ cmp w4, w0
bhs G_M27501_IG27
ldr x0, [fp, #-0x88] // [V11 loc5+0x10]
; byrRegs +[x0]
@@ -360,7 +357,9 @@ G_M27501_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21
;; size=60 bbWeight=2 PerfScore 44.00
G_M27501_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
; byrRegs -[x0]
- add w23, w23, #1
+ add w4, w4, #1
+ mov w4, w4
+ str x4, [fp, #-0xC0] // [V101 tmp83]
sxtw w6, w5
str w6, [fp, #-0x9C] // [V17 loc11]
cbz w25, G_M27501_IG17
@@ -382,7 +381,7 @@ G_M27501_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21
sxtw w2, w5
mov w5, w2
ldr w6, [fp, #-0x9C] // [V17 loc11]
- ;; size=76 bbWeight=2 PerfScore 37.00
+ ;; size=84 bbWeight=2 PerfScore 40.00
G_M27501_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
str w5, [fp, #-0x54] // [V09 loc3]
cmp w26, w5
@@ -407,8 +406,7 @@ G_M27501_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21
cset x0, ne
orr w0, w0, w24
cbz w0, G_M27501_IG19
- ldr w4, [fp, #-0xC0] // [V65 tmp47]
- cmp w27, w4
+ cmp w27, w23
bhs G_M27501_IG21
ubfiz x0, x27, #3, #32
add x0, x20, x0
@@ -419,17 +417,17 @@ G_M27501_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21
sxtw w2, w5
stp w1, w2, [x0]
add w27, w27, #1
- ;; size=64 bbWeight=2 PerfScore 28.00
+ ;; size=60 bbWeight=2 PerfScore 24.00
G_M27501_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref
; byrRegs -[x0]
add w26, w6, w28
- ldr w4, [fp, #-0xC0] // [V65 tmp47]
+ ldr x4, [fp, #-0xC0] // [V101 tmp83]
;; size=8 bbWeight=2 PerfScore 5.00
G_M27501_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
ldr w0, [fp, #-0x70] // [V10 loc4+0x08]
- cmp w23, w0
+ cmp w4, w0
bge G_M27501_IG21
- cmp w27, w4
+ cmp w27, w23
blt G_M27501_IG15
cbz w24, G_M27501_IG15
;; size=24 bbWeight=4 PerfScore 24.00
@@ -572,7 +570,7 @@ G_M27501_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1352, prolog size 100, PerfScore 283.25, instruction count 338, allocated bytes for code 1352 (MethodHash=c0dd9492) for method System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (Tier0-FullOpts)
+; Total bytes of code 1340, prolog size 100, PerfScore 280.00, instruction count 335, allocated bytes for code 1340 (MethodHash=c0dd9492) for method System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -583,7 +581,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 338 (0x00152) Actual length = 1352 (0x000548)
+ Function Length : 335 (0x0014f) Actual length = 1340 (0x00053c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-32 (-0.86%) : 7563.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier0-FullOpts)
@@ -8,101 +8,101 @@
; 0 inlinees with PGO data; 28 single block inlinees; 22 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 31, 39 ) ref -> x19 this class-hnd single-def <System.Reflection.MethodBaseInvoker>
+; V00 this [V00,T02] ( 31, 39 ) ref -> x19 this class-hnd single-def <System.Reflection.MethodBaseInvoker>
; V01 arg1 [V01,T48] ( 4, 3 ) ref -> x23 class-hnd single-def <System.Object>
; V02 arg2 [V02,T35] ( 6, 6 ) int -> [fp-0x5C] EH-live single-def
; V03 arg3 [V03,T36] ( 4, 6 ) ref -> x21 class-hnd single-def <System.Reflection.Binder>
; V04 arg4 [V04,T10] ( 14, 14 ) ref -> x20 class-hnd single-def <System.Object[]>
; V05 arg5 [V05,T37] ( 4, 6 ) ref -> x22 class-hnd single-def <System.Globalization.CultureInfo>
;* V06 loc0 [V06 ] ( 0, 0 ) struct (16) zero-ref multireg-arg <System.Span`1[System.Object]>
-; V07 loc1 [V07,T80] ( 3, 2 ) ref -> x28 class-hnd <System.Object>
+; V07 loc1 [V07,T78] ( 3, 2 ) ref -> x28 class-hnd <System.Object>
; V08 loc2 [V08 ] ( 15, 7 ) struct (32) [fp-0x80] do-not-enreg[XSF] addr-exposed ld-addr-op <System.Runtime.GCFrameRegistration>
;* V09 loc3 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ubyte]>
-; V10 loc4 [V10,T71] ( 6, 3 ) long -> x24
-; V11 loc5 [V11,T115] ( 2, 0 ) ref -> [fp-0x100] must-init class-hnd EH-live single-def <<unknown class>>
+; V10 loc4 [V10,T69] ( 6, 3 ) long -> x24
+; V11 loc5 [V11,T117] ( 2, 0 ) ref -> [fp-0xF0] must-init class-hnd EH-live single-def <<unknown class>>
; V12 loc6 [V12,T41] ( 9, 7.50) long -> x24
-; V13 loc7 [V13,T70] ( 4, 3.50) long -> x28
+; V13 loc7 [V13,T68] ( 4, 3.50) long -> x28
; V14 loc8 [V14 ] ( 8, 3.50) struct (32) [fp-0xA0] do-not-enreg[XSF] addr-exposed ld-addr-op <System.Runtime.GCFrameRegistration>
-; V15 loc9 [V15,T15] ( 7, 14.50) int -> x0
-; V16 loc10 [V16,T116] ( 2, 0 ) ref -> [fp-0x108] must-init class-hnd EH-live single-def <<unknown class>>
+;* V15 loc9 [V15 ] ( 0, 0 ) int -> zero-ref
+; V16 loc10 [V16,T118] ( 2, 0 ) ref -> [fp-0xF8] must-init class-hnd EH-live single-def <<unknown class>>
;# V17 OutArgs [V17 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V18 tmp1 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
;* V19 tmp2 [V19 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[System.Object]>
-; V20 tmp3 [V20,T63] ( 2, 4 ) long -> x2
+; V20 tmp3 [V20,T61] ( 2, 4 ) long -> x2
;* V21 tmp4 [V21 ] ( 0, 0 ) long -> zero-ref
;* V22 tmp5 [V22 ] ( 0, 0 ) struct ( 8) zero-ref <System.ByReference>
-; V23 tmp6 [V23,T117] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
-; V24 tmp7 [V24,T109] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
+; V23 tmp6 [V23,T119] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
+; V24 tmp7 [V24,T111] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
;* V25 tmp8 [V25 ] ( 0, 0 ) ref -> zero-ref single-def
-; V26 tmp9 [V26,T113] ( 3, 0 ) int -> x0
+; V26 tmp9 [V26,T115] ( 3, 0 ) int -> x0
;* V27 tmp10 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
-; V28 tmp11 [V28,T110] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V28 tmp11 [V28,T112] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V29 tmp12 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
;* V30 tmp13 [V30 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[System.Object]>
-; V31 tmp14 [V31,T118] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
-; V32 tmp15 [V32,T111] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
+; V31 tmp14 [V31,T120] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
+; V32 tmp15 [V32,T113] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
;* V33 tmp16 [V33 ] ( 0, 0 ) ref -> zero-ref single-def
-; V34 tmp17 [V34,T114] ( 3, 0 ) int -> x0
+; V34 tmp17 [V34,T116] ( 3, 0 ) int -> x0
;* V35 tmp18 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
-; V36 tmp19 [V36,T112] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V36 tmp19 [V36,T114] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V37 tmp20 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V38 tmp21 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V39 tmp22 [V39,T42] ( 6, 6 ) byref -> x24 single-def "Inlining Arg"
-; V40 tmp23 [V40,T81] ( 2, 2 ) byref -> x25 single-def "Inlining Arg"
-; V41 tmp24 [V41,T82] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
+; V40 tmp23 [V40,T79] ( 2, 2 ) byref -> x25 single-def "Inlining Arg"
+; V41 tmp24 [V41,T80] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
; V42 tmp25 [V42,T46] ( 5, 5 ) long -> [fp-0xA8] spill-single-def "Inlining Arg"
;* V43 tmp26 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V44 tmp27 [V44,T75] ( 3, 3 ) int -> x25 "Inlining Arg"
+; V44 tmp27 [V44,T73] ( 3, 3 ) int -> x25 "Inlining Arg"
;* V45 tmp28 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V46 tmp29 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V47 tmp30 [V47,T85] ( 2, 2 ) int -> x0 "Inlining Arg"
-; V48 tmp31 [V48,T76] ( 3, 3 ) int -> x27 "Inlining Arg"
-; V49 tmp32 [V49,T86] ( 2, 2 ) long -> x24 "Inlining Arg"
+; V47 tmp30 [V47,T83] ( 2, 2 ) int -> x0 "Inlining Arg"
+; V48 tmp31 [V48,T74] ( 3, 3 ) int -> x27 "Inlining Arg"
+; V49 tmp32 [V49,T84] ( 2, 2 ) long -> x24 "Inlining Arg"
;* V50 tmp33 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Object]>
-; V51 tmp34 [V51,T03] ( 12, 34.50) int -> [fp-0xAC] "Inline stloc first use temp"
+;* V51 tmp34 [V51,T103] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V52 tmp35 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[System.Object]>
-; V53 tmp36 [V53 ] ( 11, 28.50) ref -> [fp-0xB8] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
-; V54 tmp37 [V54,T16] ( 6, 14 ) ref -> [fp-0x110] class-hnd exact spill-single-def "Inline stloc first use temp" <System.RuntimeType>
+; V53 tmp36 [V53 ] ( 11, 28.50) ref -> [fp-0xB0] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
+; V54 tmp37 [V54,T14] ( 6, 14 ) ref -> [fp-0x100] class-hnd exact spill-single-def "Inline stloc first use temp" <System.RuntimeType>
;* V55 tmp38 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Object]>
;* V56 tmp39 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V57 tmp40 [V57 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
;* V58 tmp41 [V58 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
;* V59 tmp42 [V59 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
;* V60 tmp43 [V60 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-;* V61 tmp44 [V61,T64] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V62 tmp45 [V62,T30] ( 4, 8 ) ref -> [fp-0x118] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.RuntimeType>
-;* V63 tmp46 [V63,T65] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V61 tmp44 [V61,T62] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V62 tmp45 [V62,T28] ( 4, 8 ) ref -> [fp-0x108] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.RuntimeType>
+;* V63 tmp46 [V63,T63] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V64 tmp47 [V64 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V65 tmp48 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
-; V66 tmp49 [V66,T01] ( 14, 36.50) int -> x21 "Inline stloc first use temp"
+;* V66 tmp49 [V66,T104] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V67 tmp50 [V67 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V68 tmp51 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Object]>
;* V69 tmp52 [V69 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V70 tmp53 [V70 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V71 tmp54 [V71,T43] ( 6, 6 ) byref -> x28 single-def "Inlining Arg"
-; V72 tmp55 [V72,T83] ( 2, 2 ) byref -> x24 single-def "Inlining Arg"
-; V73 tmp56 [V73,T84] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
-; V74 tmp57 [V74,T47] ( 5, 5 ) long -> [fp-0xC0] spill-single-def "Inlining Arg"
+; V72 tmp55 [V72,T81] ( 2, 2 ) byref -> x24 single-def "Inlining Arg"
+; V73 tmp56 [V73,T82] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
+; V74 tmp57 [V74,T47] ( 5, 5 ) long -> [fp-0xB8] spill-single-def "Inlining Arg"
;* V75 tmp58 [V75 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V76 tmp59 [V76,T77] ( 3, 3 ) int -> x25 "Inlining Arg"
-; V77 tmp60 [V77,T87] ( 2, 2 ) int -> x0 "Inlining Arg"
-; V78 tmp61 [V78,T88] ( 2, 2 ) int -> x0 "Inlining Arg"
-; V79 tmp62 [V79,T78] ( 3, 3 ) int -> x27 "Inlining Arg"
-; V80 tmp63 [V80,T89] ( 2, 2 ) long -> x0 "Inlining Arg"
+; V76 tmp59 [V76,T75] ( 3, 3 ) int -> x25 "Inlining Arg"
+; V77 tmp60 [V77,T85] ( 2, 2 ) int -> x0 "Inlining Arg"
+; V78 tmp61 [V78,T86] ( 2, 2 ) int -> x0 "Inlining Arg"
+; V79 tmp62 [V79,T76] ( 3, 3 ) int -> x27 "Inlining Arg"
+; V80 tmp63 [V80,T87] ( 2, 2 ) long -> x0 "Inlining Arg"
;* V81 tmp64 [V81 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Object]>
-; V82 tmp65 [V82,T04] ( 12, 34.50) int -> [fp-0xC4] "Inline stloc first use temp"
+;* V82 tmp65 [V82,T105] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V83 tmp66 [V83 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[System.Object]>
-; V84 tmp67 [V84 ] ( 11, 28.50) ref -> [fp-0xD0] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
-; V85 tmp68 [V85,T17] ( 6, 14 ) ref -> [fp-0x120] class-hnd exact spill-single-def "Inline stloc first use temp" <System.RuntimeType>
+; V84 tmp67 [V84 ] ( 11, 28.50) ref -> [fp-0xC0] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
+; V85 tmp68 [V85,T15] ( 6, 14 ) ref -> [fp-0x110] class-hnd exact spill-single-def "Inline stloc first use temp" <System.RuntimeType>
;* V86 tmp69 [V86 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Object]>
;* V87 tmp70 [V87 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V88 tmp71 [V88 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
;* V89 tmp72 [V89 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
;* V90 tmp73 [V90 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
;* V91 tmp74 [V91 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-;* V92 tmp75 [V92,T66] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V93 tmp76 [V93,T31] ( 4, 8 ) ref -> [fp-0x128] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.RuntimeType>
-;* V94 tmp77 [V94,T67] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V92 tmp75 [V92,T64] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V93 tmp76 [V93,T29] ( 4, 8 ) ref -> [fp-0x118] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.RuntimeType>
+;* V94 tmp77 [V94,T65] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V95 tmp78 [V95 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V96 tmp79 [V96 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
;* V97 tmp80 [V97 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -112,95 +112,98 @@
;* V101 tmp84 [V101 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
;* V102 tmp85 [V102 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V103 tmp86 [V103 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ByReference>
-; V104 tmp87 [V104,T02] ( 14, 36.50) int -> x25 "Inline stloc first use temp"
+;* V104 tmp87 [V104,T106] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V105 tmp88 [V105 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V106 tmp89 [V106 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Object]>
;* V107 tmp90 [V107 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V108 tmp91 [V108 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V109 tmp92 [V109,T28] ( 7, 10.50) byref -> x26 "field V06._reference (fldOffset=0x0)" P-INDEP
-; V110 tmp93 [V110,T29] ( 7, 10.50) int -> x25 "field V06._length (fldOffset=0x8)" P-INDEP
-; V111 tmp94 [V111,T13] ( 10, 14 ) byref -> [fp-0x130] "field V09._reference (fldOffset=0x0)" P-INDEP
-; V112 tmp95 [V112,T14] ( 10, 14 ) int -> x27 "field V09._length (fldOffset=0x8)" P-INDEP
-; V113 tmp96 [V113,T96] ( 2, 1 ) byref -> x26 single-def "field V18._reference (fldOffset=0x0)" P-INDEP
-; V114 tmp97 [V114,T98] ( 2, 1 ) int -> x25 "field V18._length (fldOffset=0x8)" P-INDEP
+; V109 tmp92 [V109,T26] ( 7, 10.50) byref -> x26 "field V06._reference (fldOffset=0x0)" P-INDEP
+; V110 tmp93 [V110,T27] ( 7, 10.50) int -> x25 "field V06._length (fldOffset=0x8)" P-INDEP
+; V111 tmp94 [V111,T11] ( 10, 14 ) byref -> [fp-0x120] "field V09._reference (fldOffset=0x0)" P-INDEP
+; V112 tmp95 [V112,T12] ( 10, 14 ) int -> x27 "field V09._length (fldOffset=0x8)" P-INDEP
+; V113 tmp96 [V113,T94] ( 2, 1 ) byref -> x26 single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+; V114 tmp97 [V114,T96] ( 2, 1 ) int -> x25 "field V18._length (fldOffset=0x8)" P-INDEP
;* V115 tmp98 [V115 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP
;* V116 tmp99 [V116 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
; V117 tmp100 [V117,T44] ( 3, 6 ) byref -> x3 "field V22.Value (fldOffset=0x0)" P-INDEP
-; V118 tmp101 [V118,T97] ( 2, 1 ) byref -> x26 single-def "field V29._reference (fldOffset=0x0)" P-INDEP
-; V119 tmp102 [V119,T99] ( 2, 1 ) int -> x25 "field V29._length (fldOffset=0x8)" P-INDEP
+; V118 tmp101 [V118,T95] ( 2, 1 ) byref -> x26 single-def "field V29._reference (fldOffset=0x0)" P-INDEP
+; V119 tmp102 [V119,T97] ( 2, 1 ) int -> x25 "field V29._length (fldOffset=0x8)" P-INDEP
;* V120 tmp103 [V120 ] ( 0, 0 ) byref -> zero-ref "field V30._reference (fldOffset=0x0)" P-INDEP
;* V121 tmp104 [V121 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
-; V122 tmp105 [V122,T90] ( 3, 1.50) byref -> x28 "field V50._reference (fldOffset=0x0)" P-INDEP
-; V123 tmp106 [V123,T92] ( 3, 1.50) int -> x1 "field V50._length (fldOffset=0x8)" P-INDEP
-; V124 tmp107 [V124,T53] ( 2, 4.50) byref -> x28 single-def "field V52._reference (fldOffset=0x0)" P-INDEP
-; V125 tmp108 [V125,T49] ( 3, 5 ) int -> [fp-0xD4] spill-single-def "field V52._length (fldOffset=0x8)" P-INDEP
-;* V126 tmp109 [V126,T101] ( 0, 0 ) byref -> zero-ref single-def "field V55._reference (fldOffset=0x0)" P-INDEP
-;* V127 tmp110 [V127,T105] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP
-;* V128 tmp111 [V128,T102] ( 0, 0 ) byref -> zero-ref single-def "field V56._reference (fldOffset=0x0)" P-INDEP
-;* V129 tmp112 [V129,T106] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x8)" P-INDEP
+; V122 tmp105 [V122,T88] ( 3, 1.50) byref -> x28 "field V50._reference (fldOffset=0x0)" P-INDEP
+; V123 tmp106 [V123,T90] ( 3, 1.50) int -> x1 "field V50._length (fldOffset=0x8)" P-INDEP
+; V124 tmp107 [V124,T51] ( 2, 4.50) byref -> x28 single-def "field V52._reference (fldOffset=0x0)" P-INDEP
+; V125 tmp108 [V125,T31] ( 4, 9 ) int -> [fp-0xC4] spill-single-def "field V52._length (fldOffset=0x8)" P-INDEP
+;* V126 tmp109 [V126,T99] ( 0, 0 ) byref -> zero-ref single-def "field V55._reference (fldOffset=0x0)" P-INDEP
+;* V127 tmp110 [V127,T107] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP
+;* V128 tmp111 [V128,T100] ( 0, 0 ) byref -> zero-ref single-def "field V56._reference (fldOffset=0x0)" P-INDEP
+;* V129 tmp112 [V129,T108] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x8)" P-INDEP
;* V130 tmp113 [V130 ] ( 0, 0 ) byref -> zero-ref "field V59._reference (fldOffset=0x0)" P-DEP
;* V131 tmp114 [V131 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x8)" P-DEP
-; V132 tmp115 [V132,T59] ( 2, 4 ) byref -> x0 "field V60._reference (fldOffset=0x0)" P-INDEP
-; V133 tmp116 [V133,T68] ( 2, 4 ) int -> x1 "field V60._length (fldOffset=0x8)" P-INDEP
-; V134 tmp117 [V134,T54] ( 2, 4.50) byref -> x24 single-def "field V67._reference (fldOffset=0x0)" P-INDEP
-; V135 tmp118 [V135,T57] ( 2, 4.50) int -> x27 "field V67._length (fldOffset=0x8)" P-INDEP
+; V132 tmp115 [V132,T57] ( 2, 4 ) byref -> x0 "field V60._reference (fldOffset=0x0)" P-INDEP
+; V133 tmp116 [V133,T66] ( 2, 4 ) int -> x1 "field V60._length (fldOffset=0x8)" P-INDEP
+; V134 tmp117 [V134,T52] ( 2, 4.50) byref -> x24 single-def "field V67._reference (fldOffset=0x0)" P-INDEP
+; V135 tmp118 [V135,T55] ( 2, 4.50) int -> x27 "field V67._length (fldOffset=0x8)" P-INDEP
; V136 tmp119 [V136,T33] ( 5, 8.50) byref -> x26 single-def "field V68._reference (fldOffset=0x0)" P-INDEP
-; V137 tmp120 [V137,T51] ( 3, 4.50) int -> x25 "field V68._length (fldOffset=0x8)" P-INDEP
-; V138 tmp121 [V138,T91] ( 3, 1.50) byref -> x1 "field V81._reference (fldOffset=0x0)" P-INDEP
-; V139 tmp122 [V139,T93] ( 3, 1.50) int -> x2 "field V81._length (fldOffset=0x8)" P-INDEP
-; V140 tmp123 [V140,T55] ( 2, 4.50) byref -> [fp-0x138] spill-single-def "field V83._reference (fldOffset=0x0)" P-INDEP
-; V141 tmp124 [V141,T50] ( 3, 5 ) int -> [fp-0xD8] spill-single-def "field V83._length (fldOffset=0x8)" P-INDEP
-;* V142 tmp125 [V142,T103] ( 0, 0 ) byref -> zero-ref single-def "field V86._reference (fldOffset=0x0)" P-INDEP
-;* V143 tmp126 [V143,T107] ( 0, 0 ) int -> zero-ref "field V86._length (fldOffset=0x8)" P-INDEP
-;* V144 tmp127 [V144,T104] ( 0, 0 ) byref -> zero-ref single-def "field V87._reference (fldOffset=0x0)" P-INDEP
-;* V145 tmp128 [V145,T108] ( 0, 0 ) int -> zero-ref "field V87._length (fldOffset=0x8)" P-INDEP
+; V137 tmp120 [V137,T49] ( 3, 4.50) int -> x25 "field V68._length (fldOffset=0x8)" P-INDEP
+; V138 tmp121 [V138,T89] ( 3, 1.50) byref -> x1 "field V81._reference (fldOffset=0x0)" P-INDEP
+; V139 tmp122 [V139,T91] ( 3, 1.50) int -> x2 "field V81._length (fldOffset=0x8)" P-INDEP
+; V140 tmp123 [V140,T53] ( 2, 4.50) byref -> [fp-0x128] spill-single-def "field V83._reference (fldOffset=0x0)" P-INDEP
+; V141 tmp124 [V141,T32] ( 4, 9 ) int -> [fp-0xC8] spill-single-def "field V83._length (fldOffset=0x8)" P-INDEP
+;* V142 tmp125 [V142,T101] ( 0, 0 ) byref -> zero-ref single-def "field V86._reference (fldOffset=0x0)" P-INDEP
+;* V143 tmp126 [V143,T109] ( 0, 0 ) int -> zero-ref "field V86._length (fldOffset=0x8)" P-INDEP
+;* V144 tmp127 [V144,T102] ( 0, 0 ) byref -> zero-ref single-def "field V87._reference (fldOffset=0x0)" P-INDEP
+;* V145 tmp128 [V145,T110] ( 0, 0 ) int -> zero-ref "field V87._length (fldOffset=0x8)" P-INDEP
;* V146 tmp129 [V146 ] ( 0, 0 ) byref -> zero-ref "field V90._reference (fldOffset=0x0)" P-DEP
;* V147 tmp130 [V147 ] ( 0, 0 ) int -> zero-ref "field V90._length (fldOffset=0x8)" P-DEP
-; V148 tmp131 [V148,T60] ( 2, 4 ) byref -> x0 "field V91._reference (fldOffset=0x0)" P-INDEP
-; V149 tmp132 [V149,T69] ( 2, 4 ) int -> x1 "field V91._length (fldOffset=0x8)" P-INDEP
-; V150 tmp133 [V150,T61] ( 2, 4 ) byref -> x3 "field V98.Value (fldOffset=0x0)" P-INDEP
-; V151 tmp134 [V151,T62] ( 2, 4 ) byref -> x3 "field V103.Value (fldOffset=0x0)" P-INDEP
-; V152 tmp135 [V152,T56] ( 2, 4.50) byref -> x23 single-def "field V105._reference (fldOffset=0x0)" P-INDEP
-; V153 tmp136 [V153,T58] ( 2, 4.50) int -> x24 "field V105._length (fldOffset=0x8)" P-INDEP
+; V148 tmp131 [V148,T58] ( 2, 4 ) byref -> x0 "field V91._reference (fldOffset=0x0)" P-INDEP
+; V149 tmp132 [V149,T67] ( 2, 4 ) int -> x1 "field V91._length (fldOffset=0x8)" P-INDEP
+; V150 tmp133 [V150,T59] ( 2, 4 ) byref -> x3 "field V98.Value (fldOffset=0x0)" P-INDEP
+; V151 tmp134 [V151,T60] ( 2, 4 ) byref -> x3 "field V103.Value (fldOffset=0x0)" P-INDEP
+; V152 tmp135 [V152,T54] ( 2, 4.50) byref -> x23 single-def "field V105._reference (fldOffset=0x0)" P-INDEP
+; V153 tmp136 [V153,T56] ( 2, 4.50) int -> x24 "field V105._length (fldOffset=0x8)" P-INDEP
; V154 tmp137 [V154,T34] ( 5, 8.50) byref -> x21 single-def "field V106._reference (fldOffset=0x0)" P-INDEP
-; V155 tmp138 [V155,T52] ( 3, 4.50) int -> x22 "field V106._length (fldOffset=0x8)" P-INDEP
+; V155 tmp138 [V155,T50] ( 3, 4.50) int -> x22 "field V106._length (fldOffset=0x8)" P-INDEP
; V156 tmp139 [V156,T06] ( 3, 24 ) ref -> x0 "arr expr"
-; V157 tmp140 [V157,T21] ( 3, 12 ) ref -> x0 "argument with side effect"
-; V158 tmp141 [V158,T22] ( 3, 12 ) ref -> x0 "arr expr"
-; V159 tmp142 [V159,T23] ( 3, 12 ) ref -> x3 "arr expr"
+; V157 tmp140 [V157,T19] ( 3, 12 ) ref -> x0 "argument with side effect"
+; V158 tmp141 [V158,T20] ( 3, 12 ) ref -> x0 "arr expr"
+; V159 tmp142 [V159,T21] ( 3, 12 ) ref -> x3 "arr expr"
; V160 tmp143 [V160,T45] ( 3, 6 ) ref -> x3 "Field obj"
-; V161 tmp144 [V161,T24] ( 3, 12 ) ref -> x0 "arr expr"
+; V161 tmp144 [V161,T22] ( 3, 12 ) ref -> x0 "arr expr"
; V162 tmp145 [V162,T39] ( 2, 8 ) ref -> x2 "argument with side effect"
; V163 tmp146 [V163,T07] ( 3, 24 ) ref -> x0 "arr expr"
...
-8 (-0.81%) : 5185.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
@@ -9,16 +9,16 @@
; Final local variable assignments
;
; V00 this [V00,T03] ( 14, 15.50) ref -> x19 this class-hnd single-def <System.Reflection.MethodBaseInvoker>
-; V01 arg1 [V01,T15] ( 4, 3 ) ref -> x22 class-hnd single-def <System.Object>
-; V02 arg2 [V02,T11] ( 5, 4.50) int -> [fp+0x54] EH-live single-def
-; V03 arg3 [V03,T13] ( 3, 4 ) ref -> x20 class-hnd single-def <System.Reflection.Binder>
+; V01 arg1 [V01,T14] ( 4, 3 ) ref -> x22 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T10] ( 5, 4.50) int -> [fp+0x54] EH-live single-def
+; V03 arg3 [V03,T12] ( 3, 4 ) ref -> x20 class-hnd single-def <System.Reflection.Binder>
; V04 arg4 [V04 ] ( 3, 3 ) ref -> [fp+0x48] do-not-enreg[X] addr-exposed ld-addr-op class-hnd single-def <System.Object>
-; V05 arg5 [V05,T14] ( 3, 4 ) ref -> x21 class-hnd single-def <System.Globalization.CultureInfo>
+; V05 arg5 [V05,T13] ( 3, 4 ) ref -> x21 class-hnd single-def <System.Globalization.CultureInfo>
; V06 loc0 [V06 ] ( 2, 2 ) ref -> [fp+0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Object>
;* V07 loc1 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-arg <System.Span`1[System.Object]>
; V08 loc2 [V08 ] ( 2, 2 ) ubyte -> [fp+0x3C] do-not-enreg[X] addr-exposed ld-addr-op
;* V09 loc3 [V09 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ubyte]>
-; V10 loc4 [V10,T40] ( 2, 0 ) ref -> [fp+0x20] must-init class-hnd EH-live single-def <<unknown class>>
+; V10 loc4 [V10,T40] ( 2, 0 ) ref -> [fp+0x28] must-init class-hnd EH-live single-def <<unknown class>>
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V12 tmp1 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
;* V13 tmp2 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
@@ -30,53 +30,54 @@
;* V19 tmp8 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
; V20 tmp9 [V20,T38] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V21 tmp10 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V22 tmp11 [V22,T00] ( 8, 25 ) int -> x26 "Inline stloc first use temp"
+;* V22 tmp11 [V22,T28] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V23 tmp12 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[System.Object]>
; V24 tmp13 [V24 ] ( 11, 29 ) ref -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
-; V25 tmp14 [V25,T05] ( 6, 14 ) ref -> [fp+0x18] class-hnd exact spill-single-def "Inline stloc first use temp" <System.RuntimeType>
+; V25 tmp14 [V25,T04] ( 6, 14 ) ref -> [fp+0x20] class-hnd exact spill-single-def "Inline stloc first use temp" <System.RuntimeType>
;* V26 tmp15 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Object]>
;* V27 tmp16 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V28 tmp17 [V28 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
;* V29 tmp18 [V29 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
;* V30 tmp19 [V30 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
;* V31 tmp20 [V31 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-;* V32 tmp21 [V32,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V33 tmp22 [V33,T08] ( 4, 8 ) ref -> [fp+0x10] ld-addr-op class-hnd spill-single-def "Inline ldloca(s) first use temp" <System.RuntimeType>
-;* V34 tmp23 [V34,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp21 [V32,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V33 tmp22 [V33,T07] ( 4, 8 ) ref -> [fp+0x18] ld-addr-op class-hnd spill-single-def "Inline ldloca(s) first use temp" <System.RuntimeType>
+;* V34 tmp23 [V34,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V35 tmp24 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V36 tmp25 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
;* V37 tmp26 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V38 tmp27 [V38,T12] ( 6, 6 ) byref -> x20 single-def "Inlining Arg"
-; V39 tmp28 [V39,T23] ( 2, 2 ) byref -> x21 single-def "Inlining Arg"
-; V40 tmp29 [V40,T24] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
-; V41 tmp30 [V41,T09] ( 4, 6 ) byref -> x23 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+; V38 tmp27 [V38,T11] ( 6, 6 ) byref -> x20 single-def "Inlining Arg"
+; V39 tmp28 [V39,T22] ( 2, 2 ) byref -> x21 single-def "Inlining Arg"
+; V40 tmp29 [V40,T23] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
+; V41 tmp30 [V41,T08] ( 4, 6 ) byref -> x23 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
;* V42 tmp31 [V42,T29] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V43 tmp32 [V43 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp33 [V44 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V45 tmp34 [V45,T25] ( 2, 2 ) byref -> x23 single-def "field V12._reference (fldOffset=0x0)" P-INDEP
+; V45 tmp34 [V45,T24] ( 2, 2 ) byref -> x23 single-def "field V12._reference (fldOffset=0x0)" P-INDEP
;* V46 tmp35 [V46,T30] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
-; V47 tmp36 [V47,T26] ( 2, 2 ) byref -> x24 single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+; V47 tmp36 [V47,T25] ( 2, 2 ) byref -> x24 single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V48 tmp37 [V48,T31] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
-; V49 tmp38 [V49,T27] ( 2, 2 ) byref -> x25 single-def "field V14._reference (fldOffset=0x0)" P-INDEP
+; V49 tmp38 [V49,T26] ( 2, 2 ) byref -> x25 single-def "field V14._reference (fldOffset=0x0)" P-INDEP
;* V50 tmp39 [V50,T32] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
-; V51 tmp40 [V51,T16] ( 2, 5 ) byref -> x25 single-def "field V23._reference (fldOffset=0x0)" P-INDEP
+; V51 tmp40 [V51,T15] ( 2, 5 ) byref -> x25 single-def "field V23._reference (fldOffset=0x0)" P-INDEP
;* V52 tmp41 [V52,T33] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
-;* V53 tmp42 [V53,T28] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP
+;* V53 tmp42 [V53,T27] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP
;* V54 tmp43 [V54,T34] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP
-; V55 tmp44 [V55,T10] ( 4, 7 ) byref -> x24 single-def "field V27._reference (fldOffset=0x0)" P-INDEP
+; V55 tmp44 [V55,T09] ( 4, 7 ) byref -> x24 single-def "field V27._reference (fldOffset=0x0)" P-INDEP
;* V56 tmp45 [V56,T35] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
;* V57 tmp46 [V57 ] ( 0, 0 ) byref -> zero-ref "field V30._reference (fldOffset=0x0)" P-DEP
;* V58 tmp47 [V58 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-DEP
-; V59 tmp48 [V59,T18] ( 2, 4 ) byref -> x0 "field V31._reference (fldOffset=0x0)" P-INDEP
-; V60 tmp49 [V60,T21] ( 2, 4 ) int -> x1 "field V31._length (fldOffset=0x8)" P-INDEP
+; V59 tmp48 [V59,T17] ( 2, 4 ) byref -> x0 "field V31._reference (fldOffset=0x0)" P-INDEP
+; V60 tmp49 [V60,T20] ( 2, 4 ) int -> x1 "field V31._length (fldOffset=0x8)" P-INDEP
; V61 tmp50 [V61,T01] ( 3, 24 ) ref -> x0 "arr expr"
-; V62 tmp51 [V62,T06] ( 3, 12 ) ref -> x0 "argument with side effect"
-; V63 tmp52 [V63,T07] ( 3, 12 ) ref -> x0 "arr expr"
+; V62 tmp51 [V62,T05] ( 3, 12 ) ref -> x0 "argument with side effect"
+; V63 tmp52 [V63,T06] ( 3, 12 ) ref -> x0 "arr expr"
; V64 PSPSym [V64,T36] ( 1, 1 ) long -> [fp+0x58] do-not-enreg[V] "PSPSym"
-; V65 cse0 [V65,T17] ( 2, 5 ) ref -> x27 hoist "CSE - aggressive"
-; V66 cse1 [V66,T02] ( 5, 18 ) long -> [fp+0x28] spill-single-def "CSE - aggressive"
-; V67 cse2 [V67,T04] ( 6, 16 ) long -> x28 "CSE - aggressive"
-; V68 rat0 [V68,T22] ( 3, 3 ) ref -> x5 "delegate invoke call"
+; V65 tmp54 [V65,T00] ( 13, 37 ) long -> x26 "Widened primary induction variable"
+; V66 cse0 [V66,T16] ( 2, 5 ) ref -> x27 hoist "CSE - aggressive"
+; V67 cse1 [V67,T02] ( 5, 18 ) long -> x28 "CSE - aggressive"
+; V68 rat0 [V68,T21] ( 3, 3 ) ref -> x5 "delegate invoke call"
+; TEMP_01 byref -> [fp+0x10]
;
; Lcl frame size = 80
@@ -89,8 +90,8 @@ G_M5060_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x27, x28, [sp, #0xA0]
mov fp, sp
str xzr, [fp, #0x40] // [V06 loc0]
- str xzr, [fp, #0x20] // [V10 loc4]
- str xzr, [fp, #0x30] // [V24 tmp13]
+ stp xzr, xzr, [fp, #0x28] // [V10 loc4], [V24 tmp13]
+ str xzr, [fp, #0x10] // [TEMP_01]
add x6, sp, #176
str x6, [fp, #0x58] // [V64 PSPSym]
str w2, [fp, #0x54] // [V02 arg2]
@@ -133,7 +134,7 @@ G_M5060_IG04: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs
; byrRegs +[x24]
add x25, fp, #72 // [V04 arg4]
; byrRegs +[x25]
- mov w26, wzr
+ mov x26, xzr
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -141,22 +142,22 @@ G_M5060_IG04: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs
; gcrRegs +[x27]
;; size=40 bbWeight=1 PerfScore 8.50
G_M5060_IG05: ; bbWeight=4, gcrefRegs=8780000 {x19 x20 x21 x22 x27}, byrefRegs=3800000 {x23 x24 x25}, byref, isz
- mov w28, w26
- lsl x1, x28, #3
- str x1, [fp, #0x28] // [V66 cse1]
- ldr x0, [x25, x1]
+ cmp w26, #1
+ bhs G_M5060_IG20
+ lsl x28, x26, #3
+ ldr x0, [x25, x28]
; gcrRegs +[x0]
str x0, [fp, #0x30] // [V24 tmp13]
ldr x0, [x19, #0x28]
- ldr w2, [x0, #0x08]
- cmp w26, w2
- bhs G_M5060_IG21
+ ldr w1, [x0, #0x08]
+ cmp w26, w1
+ bhs G_M5060_IG20
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
- ldr x2, [x0, x1]
- ; gcrRegs +[x2]
- str x2, [fp, #0x18] // [V25 tmp14]
+ ldr x1, [x0, x28]
+ ; gcrRegs +[x1]
+ str x1, [fp, #0x20] // [V25 tmp14]
; GC ptr vars +{V25}
ldr x0, [fp, #0x30] // [V24 tmp13]
; gcrRegs +[x0]
@@ -164,38 +165,37 @@ G_M5060_IG05: ; bbWeight=4, gcrefRegs=8780000 {x19 x20 x21 x22 x27}, byre
cmp x0, x27
bne G_M5060_IG07
;; size=60 bbWeight=4 PerfScore 88.00
-G_M5060_IG06: ; bbWeight=2, gcVars=0000010000000020 {V10 V25}, gcrefRegs=8780000 {x19 x20 x21 x22 x27}, byrefRegs=3800000 {x23 x24 x25}, gcvars, byref, isz
- ; gcrRegs -[x0 x2]
+G_M5060_IG06: ; bbWeight=2, gcVars=0000010000000010 {V10 V25}, gcrefRegs=8780000 {x19 x20 x21 x22 x27}, byrefRegs=3800000 {x23 x24 x25}, gcvars, byref, isz
+ ; gcrRegs -[x0-x1]
; GC ptr vars -{V40}
ldr x0, [x19, #0x30]
; gcrRegs +[x0]
- ldr x3, [x0]
- ldr x3, [x3, #0x58]
- ldr x3, [x3, #0x10]
- blr x3
+ ldr x2, [x0]
+ ldr x2, [x2, #0x58]
+ ldr x2, [x2, #0x10]
+ blr x2
; gcrRegs -[x0]
; byrRegs +[x0]
; gcr arg pop 0
cmp w26, w1
- bhs G_M5060_IG21
- ldr x2, [fp, #0x28] // [V66 cse1]
- ldr x0, [x0, x2]
+ bhs G_M5060_IG20
+ ldr x0, [x0, x28]
; gcrRegs +[x0]
; byrRegs -[x0]
- ldr x1, [fp, #0x18] // [V25 tmp14]
+ ldr x1, [fp, #0x20] // [V25 tmp14]
; gcrRegs +[x1]
- movz x3, #0xD1FFAB1E // code for System.Reflection.MethodBase:HandleTypeMissing(System.Reflection.ParameterInfo,System.RuntimeType):System.Object
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
+ movz x2, #0xD1FFAB1E // code for System.Reflection.MethodBase:HandleTypeMissing(System.Reflection.ParameterInfo,System.RuntimeType):System.Object
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
; gcrRegs -[x1]
; gcr arg pop 0
str x0, [fp, #0x30] // [V24 tmp13]
mov w0, #1
; gcrRegs -[x0]
- strb w0, [x24, x28]
- ;; size=72 bbWeight=2 PerfScore 59.00
+ strb w0, [x24, x26]
+ ;; size=68 bbWeight=2 PerfScore 55.00
G_M5060_IG07: ; bbWeight=4, gcrefRegs=8780000 {x19 x20 x21 x22 x27}, byrefRegs=3800000 {x23 x24 x25}, byref, isz
ldr x0, [fp, #0x30] // [V24 tmp13]
; gcrRegs +[x0]
@@ -205,54 +205,48 @@ G_M5060_IG08: ; bbWeight=2, gcrefRegs=8780000 {x19 x20 x21 x22 x27}, byre
; gcrRegs -[x0]
ldr x0, [x19, #0x20]
; gcrRegs +[x0]
- ldr w3, [x0, #0x08]
- cmp w26, w3
- bhs G_M5060_IG21
+ ldr w2, [x0, #0x08]
+ cmp w26, w2
+ bhs G_M5060_IG20
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
- lsl x3, x28, #2
- ldr w0, [x0, x3]
+ lsl x2, x26, #2
+ ldr w0, [x0, x2]
; byrRegs -[x0]
- tbz w0, #1, G_M5060_IG13
- ldr x2, [fp, #0x18] // [V25 tmp14]
- ; gcrRegs +[x2]
- b G_M5060_IG12
- ;; size=40 bbWeight=2 PerfScore 32.00
+ tbz w0, #1, G_M5060_IG12
+ b G_M5060_IG11
+ ;; size=36 bbWeight=2 PerfScore 28.00
G_M5060_IG09: ; bbWeight=2, gcrefRegs=8780000 {x19 x20 x21 x22 x27}, byrefRegs=3800000 {x23 x24 x25}, byref, isz
- ; gcrRegs -[x2]
ldr x0, [fp, #0x30] // [V24 tmp13]
; gcrRegs +[x0]
bl <unknown method>
; gcr arg pop 0
- ldr x1, [fp, #0x18] // [V25 tmp14]
+ ldr x1, [fp, #0x20] // [V25 tmp14]
; gcrRegs +[x1]
cmp x0, x1
- beq G_M5060_IG13
+ beq G_M5060_IG12
mov x0, x1
bl <unknown method>
; gcrRegs -[x0-x1]
; gcr arg pop 0
...
+20 (+20.83%) : 37507.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
@@ -9,14 +9,15 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
; V01 arg1 [V01,T06] ( 3, 3 ) byref -> x2 single-def
-; V02 loc0 [V02,T02] ( 4, 10 ) int -> x3
-; V03 loc1 [V03,T03] ( 4, 10 ) ubyte -> x4
-; V04 loc2 [V04,T00] ( 5, 17 ) int -> x5
-; V05 loc3 [V05,T01] ( 3, 12 ) ubyte -> x7
+; V02 loc0 [V02,T03] ( 4, 10 ) int -> x3
+; V03 loc1 [V03,T04] ( 4, 10 ) ubyte -> x4
+;* V04 loc2 [V04,T08] ( 0, 0 ) int -> zero-ref
+; V05 loc3 [V05,T02] ( 3, 12 ) ubyte -> x7
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T05] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp2 [V08,T04] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T07] ( 2, 5 ) int -> x6 hoist "CSE - aggressive"
+; V08 tmp2 [V08,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V09 tmp3 [V09,T00] ( 6, 21 ) long -> x5 "Widened primary induction variable"
+; V10 cse0 [V10,T07] ( 2, 5 ) int -> x6 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -29,22 +30,25 @@ G_M60849_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, b
movz w3, #0xD1FFAB1E
movk w3, #0xD1FFAB1E LSL #16
mov w4, wzr
- mov w5, wzr
cmp w1, #0
ble G_M60849_IG04
+ mov x5, xzr
movz w6, #0xD1FFAB1E
movk w6, #0xD1FFAB1E LSL #16
;; size=32 bbWeight=1 PerfScore 4.50
G_M60849_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- ldrb w7, [x0, w5, UXTW #2]
+ cmp w5, w1
+ bhs G_M60849_IG06
+ ldrb w7, [x0, x5]
orr w4, w4, w7
uxtb w4, w4
eor w3, w3, w7
mul w3, w3, w6
add w5, w5, #1
+ mov w5, w5
cmp w5, w1
blt G_M60849_IG03
- ;; size=32 bbWeight=4 PerfScore 34.00
+ ;; size=44 bbWeight=4 PerfScore 42.00
G_M60849_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, byref
; byrRegs -[x0]
tst w4, #128
@@ -56,8 +60,14 @@ G_M60849_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M60849_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; byrRegs -[x2]
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 96, prolog size 8, PerfScore 44.50, instruction count 24, allocated bytes for code 96 (MethodHash=f528124e) for method Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
+; Total bytes of code 116, prolog size 8, PerfScore 52.50, instruction count 29, allocated bytes for code 116 (MethodHash=f528124e) for method Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
; ============================================================
Unwind Info:
@@ -68,7 +78,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 24 (0x00018) Actual length = 96 (0x000060)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+21.74%) : 37552.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.Canon]:FreeSlow(System.Canon):this (Tier1)
@@ -10,13 +10,14 @@
; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]>
; V01 arg1 [V01,T04] ( 3, 2.50) ref -> x1 class-hnd single-def <System.__Canon>
; V02 loc0 [V02,T01] ( 4, 6.50) ref -> x14 class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 6, 17.50) int -> x15
+; V03 loc1 [V03,T05] ( 3, 1.50) int -> x12
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T02] ( 3, 6 ) int -> x12 "CSE - aggressive"
+; V05 tmp1 [V05,T00] ( 6, 17.50) long -> x12 "Widened primary induction variable"
+; V06 cse0 [V06,T02] ( 4, 6.50) int -> x15 "CSE - aggressive"
;
; Lcl frame size = 0
-G_M50542_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M50542_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
@@ -24,30 +25,33 @@ G_M50542_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
; gcrRegs +[x0-x1]
ldr x14, [x0, #0x10]
; gcrRegs +[x14]
- mov w15, wzr
- ldr w12, [x14, #0x08]
- cmp w12, #0
+ ldr w15, [x14, #0x08]
+ cmp w15, #0
ble G_M50542_IG04
+ mov x12, xzr
;; size=20 bbWeight=1 PerfScore 8.00
G_M50542_IG03: ; bbWeight=4, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ubfiz xip0, x15, #3, #32
+ lsl xip0, x12, #3
add xip0, xip0, #16
ldr xip0, [x14, xip0]
; gcrRegs +[xip0]
cbz xip0, G_M50542_IG05
- add w15, w15, #1
- cmp w12, w15
+ add w12, w12, #1
+ mov w12, w12
+ cmp w15, w12
bgt G_M50542_IG03
- ;; size=28 bbWeight=4 PerfScore 30.00
+ ;; size=32 bbWeight=4 PerfScore 32.00
G_M50542_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x1 x14 xip0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50542_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, gcvars, byref
+G_M50542_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1 x14]
- ubfiz x15, x15, #3, #32
+ cmp w12, w15
+ bhs G_M50542_IG07
+ ubfiz x15, x12, #3, #32
add x15, x15, #16
add x14, x14, x15
; gcrRegs -[x14]
@@ -57,13 +61,18 @@ G_M50542_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x1 x15]
; byrRegs -[x14]
- ;; size=20 bbWeight=0.50 PerfScore 1.75
+ ;; size=28 bbWeight=0.50 PerfScore 2.50
G_M50542_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M50542_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 92, prolog size 8, PerfScore 43.25, instruction count 23, allocated bytes for code 92 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
+; Total bytes of code 112, prolog size 8, PerfScore 46.00, instruction count 28, allocated bytes for code 112 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
; ============================================================
Unwind Info:
@@ -74,7 +83,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+31.58%) : 8312.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
@@ -10,13 +10,14 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V02 loc1 [V02,T00] ( 5, 16.50) int -> x2
+;* V02 loc1 [V02,T05] ( 0, 0 ) int -> zero-ref
;* V03 loc2 [V03 ] ( 0, 0 ) ushort -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T04] ( 2, 1.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V06 tmp2 [V06,T02] ( 3, 2.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V07 tmp3 [V07,T03] ( 2, 4.50) byref -> x0 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp4 [V08,T01] ( 3, 5 ) int -> x1 "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp4 [V08,T01] ( 4, 9 ) int -> x1 "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 tmp5 [V09,T00] ( 6, 20.50) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -38,18 +39,22 @@ G_M8555_IG04: ; bbWeight=0.50, epilog, nogc, extend
;; size=8 bbWeight=0.50 PerfScore 1.00
G_M8555_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0
ble G_M8555_IG03
+ mov x2, xzr
;; size=12 bbWeight=0.50 PerfScore 1.00
G_M8555_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrh w3, [x0, w2, UXTW #2]
+ cmp w2, w1
+ bhs G_M8555_IG10
+ lsl x3, x2, #1
+ ldrh w3, [x0, x3]
cmp w3, #32
bne G_M8555_IG08
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
blt G_M8555_IG06
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=40 bbWeight=4 PerfScore 38.00
G_M8555_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
b G_M8555_IG03
@@ -61,8 +66,13 @@ G_M8555_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M8555_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 32.50, instruction count 19, allocated bytes for code 76 (MethodHash=7167de94) for method System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
+; Total bytes of code 100, prolog size 8, PerfScore 44.50, instruction count 25, allocated bytes for code 100 (MethodHash=7167de94) for method System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -73,7 +83,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 25 (0x00019) Actual length = 100 (0x000064)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
coreclr_tests.run.windows.arm64.checked.mch
-16 (-4.76%) : 588095.dasm - ILCompiler.LazyGenericsSupport+Graph1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph1+Vertex[System.__Canon],ubyte):this (Tier1)
@@ -13,7 +13,7 @@
; V01 arg1 [V01,T05] ( 4, 17.08) ref -> x1 class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
; V02 arg2 [V02,T10] ( 4, 3 ) ubyte -> x2 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
-; V04 loc1 [V04,T00] ( 11, 85.49) int -> x14
+; V04 loc1 [V04,T17] ( 3, 0.00) int -> x14
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "location for address-of(RValue)" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
@@ -21,7 +21,7 @@
; V09 tmp3 [V09,T02] ( 2, 56.33) ref -> x15 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
; V11 tmp5 [V11,T22] ( 2, 0.00) ref -> x15 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
-; V12 tmp6 [V12,T18] ( 4, 0.00) ref -> x3 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
+; V12 tmp6 [V12,T19] ( 4, 0.00) ref -> x4 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
;* V13 tmp7 [V13 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
; V15 tmp9 [V15,T07] ( 6, 10.24) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
@@ -30,8 +30,8 @@
;* V18 tmp12 [V18 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
; V19 tmp13 [V19,T14] ( 3, 2.12) ref -> x1 single-def "field V03.Destination (fldOffset=0x0)" P-INDEP
; V20 tmp14 [V20,T15] ( 3, 2.12) ubyte -> x2 single-def "field V03.Flagged (fldOffset=0x8)" P-INDEP
-; V21 tmp15 [V21,T23] ( 2, 0.00) ref -> x15 "field V05.Destination (fldOffset=0x0)" P-INDEP
-;* V22 tmp16 [V22,T24] ( 0, 0 ) ubyte -> zero-ref "field V05.Flagged (fldOffset=0x8)" P-INDEP
+; V21 tmp15 [V21,T24] ( 2, 0.00) ref -> x15 "field V05.Destination (fldOffset=0x0)" P-INDEP
+;* V22 tmp16 [V22,T26] ( 0, 0 ) ubyte -> zero-ref "field V05.Flagged (fldOffset=0x8)" P-INDEP
; V23 tmp17 [V23,T03] ( 3, 42.25) ref -> x15 "field V07.Destination (fldOffset=0x0)" P-INDEP
;* V24 tmp18 [V24 ] ( 0, 0 ) ubyte -> zero-ref "field V07.Flagged (fldOffset=0x8)" P-INDEP
;* V25 tmp19 [V25 ] ( 0, 0 ) ref -> zero-ref "field V13.Destination (fldOffset=0x0)" P-INDEP
@@ -39,15 +39,17 @@
;* V27 tmp21 [V27 ] ( 0, 0 ) ref -> zero-ref single-def "field V18.Destination (fldOffset=0x0)" P-INDEP
;* V28 tmp22 [V28 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V18.Flagged (fldOffset=0x8)" P-INDEP
; V29 tmp23 [V29,T01] ( 3, 84.49) ref -> x15 "arr expr"
-; V30 tmp24 [V30,T19] ( 3, 0.00) ref -> x15 "arr expr"
-; V31 tmp25 [V31,T20] ( 3, 0.00) ref -> x12 "arr expr"
-; V32 tmp26 [V32,T21] ( 3, 0.00) byref -> x4 "BlockOp address local"
-; V33 tmp27 [V33,T17] ( 3, 0.75) byref -> x0 single-def "BlockOp address local"
-; V34 cse0 [V34,T04] ( 5, 31.16) int -> x3 "CSE - aggressive"
-; V35 cse1 [V35,T06] ( 6, 17.08) ref -> x0 "CSE - aggressive"
-;* V36 rat0 [V36,T11] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V37 rat1 [V37,T16] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V38 rat2 [V38,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V30 tmp24 [V30,T20] ( 3, 0.00) ref -> x15 "arr expr"
+;* V31 tmp25 [V31,T25] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V32 tmp26 [V32,T21] ( 3, 0.00) byref -> x3 "BlockOp address local"
+; V33 tmp27 [V33,T18] ( 3, 0.75) byref -> x0 single-def "BlockOp address local"
+; V34 tmp28 [V34,T00] ( 8, 85.43) long -> x14 "Widened primary induction variable"
+; V35 cse0 [V35,T23] ( 3, 0.00) byref -> x3 "CSE - conservative"
+; V36 cse1 [V36,T04] ( 5, 31.16) int -> x3 "CSE - aggressive"
+; V37 cse2 [V37,T06] ( 6, 17.08) ref -> x0 "CSE - aggressive"
+;* V38 rat0 [V38,T11] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V39 rat1 [V39,T16] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V40 rat2 [V40,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -60,33 +62,36 @@ G_M27820_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=16 bbWeight=1 PerfScore 3.00
G_M27820_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
- mov w14, wzr
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
ldr w3, [x0, #0x10]
cmp w3, #0
- ble G_M27820_IG04
- ;; size=20 bbWeight=1 PerfScore 8.00
-G_M27820_IG03: ; bbWeight=14.08, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
+ ble G_M27820_IG05
+ ;; size=16 bbWeight=1 PerfScore 7.50
+G_M27820_IG03: ; bbWeight=0.93, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref
+ mov x14, xzr
+ ;; size=4 bbWeight=0.93 PerfScore 0.47
+G_M27820_IG04: ; bbWeight=14.08, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
mov x15, x0
; gcrRegs +[x15]
cmp w14, w3
- bhs G_M27820_IG09
+ bhs G_M27820_IG10
ldr x15, [x15, #0x08]
ldr w12, [x15, #0x08]
cmp w14, w12
- bhs G_M27820_IG08
- ubfiz x12, x14, #4, #32
+ bhs G_M27820_IG09
+ lsl x12, x14, #4
add x12, x12, #16
ldr x15, [x15, x12]
ldrsb wzr, [x15]
cmp x15, x1
- beq G_M27820_IG07
+ beq G_M27820_IG08
add w14, w14, #1
+ mov w14, w14
cmp w14, w3
- blt G_M27820_IG03
- ;; size=64 bbWeight=14.08 PerfScore 288.68
-G_M27820_IG04: ; bbWeight=1.00, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
+ blt G_M27820_IG04
+ ;; size=68 bbWeight=14.08 PerfScore 295.72
+G_M27820_IG05: ; bbWeight=1.00, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x15]
uxtb w2, w2
ldr w14, [x0, #0x14]
@@ -96,7 +101,7 @@ G_M27820_IG04: ; bbWeight=1.00, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=00
; gcrRegs +[x4]
ldr w14, [x4, #0x08]
cmp w14, w3
- bhi G_M27820_IG06
+ bhi G_M27820_IG07
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
@@ -105,12 +110,12 @@ G_M27820_IG04: ; bbWeight=1.00, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=00
; gcrRegs -[x0-x1 x4]
; gcr arg pop 0
;; size=52 bbWeight=1.00 PerfScore 17.99
-G_M27820_IG05: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M27820_IG06: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.00 PerfScore 0.00
-G_M27820_IG06: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=80013 {x0 x1 x4 x19}, byrefRegs=0000 {}, gcvars, byref
+G_M27820_IG07: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=80013 {x0 x1 x4 x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0-x1 x4]
add w14, w3, #1
str w14, [x0, #0x10]
@@ -127,52 +132,46 @@ G_M27820_IG06: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=800
; gcrRegs -[x1 x4 x15]
; byrRegs -[x14]
strb w2, [x0, #0x08]
- b G_M27820_IG05
+ b G_M27820_IG06
;; size=40 bbWeight=0.12 PerfScore 0.94
-G_M27820_IG07: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M27820_IG08: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
; byrRegs -[x0]
tst w2, #255
- beq G_M27820_IG05
+ beq G_M27820_IG06
mov x15, x0
; gcrRegs +[x15]
ldr x15, [x15, #0x08]
ldr w12, [x15, #0x08]
cmp w14, w12
- bhs G_M27820_IG08
- ubfiz x12, x14, #4, #32
- add x12, x12, #16
- ldr x15, [x15, x12]
- mov x3, x0
- ; gcrRegs +[x3]
- ldr x12, [x3, #0x08]
- ; gcrRegs +[x12]
- ldr wip0, [x12, #0x08]
- cmp w14, wip0
- bhs G_M27820_IG08
+ bhs G_M27820_IG09
ubfiz x14, x14, #4, #32
add x14, x14, #16
- add x4, x12, x14
- ; byrRegs +[x4]
- mov x14, x4
+ add x3, x15, x14
+ ; byrRegs +[x3]
+ ldr x15, [x3]
+ mov x4, x0
+ ; gcrRegs +[x4]
+ ldr xzr, [x4, #0x08]
+ mov x14, x3
; byrRegs +[x14]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[x0 x12 x15]
+ ; gcrRegs -[x0 x15]
; byrRegs -[x14]
mov w1, #1
- strb w1, [x4, #0x08]
- ldr w14, [x3, #0x14]
+ strb w1, [x3, #0x08]
+ ldr w14, [x4, #0x14]
add w14, w14, #1
- str w14, [x3, #0x14]
- b G_M27820_IG05
- ;; size=104 bbWeight=0.00 PerfScore 0.02
-G_M27820_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x3]
- ; byrRegs -[x4]
+ str w14, [x4, #0x14]
+ b G_M27820_IG06
+ ;; size=84 bbWeight=0.00 PerfScore 0.01
+G_M27820_IG09: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x4]
+ ; byrRegs -[x3]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M27820_IG09: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M27820_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -182,7 +181,7 @@ G_M27820_IG09: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 336, prolog size 16, PerfScore 318.63, instruction count 84, allocated bytes for code 336 (MethodHash=28189353) for method ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon],ubyte):this (Tier1)
+; Total bytes of code 320, prolog size 16, PerfScore 325.63, instruction count 80, allocated bytes for code 320 (MethodHash=28189353) for method ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon],ubyte):this (Tier1)
; ============================================================
Unwind Info:
@@ -193,7 +192,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 84 (0x00054) Actual length = 336 (0x000150)
+ Function Length : 80 (0x00050) Actual length = 320 (0x000140)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-16 (-4.76%) : 591896.dasm - ILCompiler.LazyGenericsSupport+Graph1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph1+Vertex[System.__Canon],ubyte):this (Tier1)
@@ -13,7 +13,7 @@
; V01 arg1 [V01,T05] ( 4, 17.11) ref -> x1 class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
; V02 arg2 [V02,T10] ( 4, 3 ) ubyte -> x2 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
-; V04 loc1 [V04,T00] ( 11, 85.66) int -> x14
+; V04 loc1 [V04,T17] ( 3, 0.00) int -> x14
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "location for address-of(RValue)" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
@@ -21,7 +21,7 @@
; V09 tmp3 [V09,T02] ( 2, 56.44) ref -> x15 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
; V11 tmp5 [V11,T22] ( 2, 0.00) ref -> x15 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
-; V12 tmp6 [V12,T18] ( 4, 0.00) ref -> x3 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
+; V12 tmp6 [V12,T19] ( 4, 0.00) ref -> x4 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
;* V13 tmp7 [V13 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
; V15 tmp9 [V15,T07] ( 6, 10.33) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]>
@@ -30,8 +30,8 @@
;* V18 tmp12 [V18 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
; V19 tmp13 [V19,T14] ( 3, 2.17) ref -> x1 single-def "field V03.Destination (fldOffset=0x0)" P-INDEP
; V20 tmp14 [V20,T15] ( 3, 2.17) ubyte -> x2 single-def "field V03.Flagged (fldOffset=0x8)" P-INDEP
-; V21 tmp15 [V21,T23] ( 2, 0.00) ref -> x15 "field V05.Destination (fldOffset=0x0)" P-INDEP
-;* V22 tmp16 [V22,T24] ( 0, 0 ) ubyte -> zero-ref "field V05.Flagged (fldOffset=0x8)" P-INDEP
+; V21 tmp15 [V21,T24] ( 2, 0.00) ref -> x15 "field V05.Destination (fldOffset=0x0)" P-INDEP
+;* V22 tmp16 [V22,T26] ( 0, 0 ) ubyte -> zero-ref "field V05.Flagged (fldOffset=0x8)" P-INDEP
; V23 tmp17 [V23,T03] ( 3, 42.33) ref -> x15 "field V07.Destination (fldOffset=0x0)" P-INDEP
;* V24 tmp18 [V24 ] ( 0, 0 ) ubyte -> zero-ref "field V07.Flagged (fldOffset=0x8)" P-INDEP
;* V25 tmp19 [V25 ] ( 0, 0 ) ref -> zero-ref "field V13.Destination (fldOffset=0x0)" P-INDEP
@@ -39,15 +39,17 @@
;* V27 tmp21 [V27 ] ( 0, 0 ) ref -> zero-ref single-def "field V18.Destination (fldOffset=0x0)" P-INDEP
;* V28 tmp22 [V28 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V18.Flagged (fldOffset=0x8)" P-INDEP
; V29 tmp23 [V29,T01] ( 3, 84.65) ref -> x15 "arr expr"
-; V30 tmp24 [V30,T19] ( 3, 0.00) ref -> x15 "arr expr"
-; V31 tmp25 [V31,T20] ( 3, 0.00) ref -> x12 "arr expr"
-; V32 tmp26 [V32,T21] ( 3, 0.00) byref -> x4 "BlockOp address local"
-; V33 tmp27 [V33,T17] ( 3, 1.00) byref -> x0 single-def "BlockOp address local"
-; V34 cse0 [V34,T04] ( 5, 31.22) int -> x3 "CSE - aggressive"
-; V35 cse1 [V35,T06] ( 6, 17.11) ref -> x0 "CSE - aggressive"
-;* V36 rat0 [V36,T11] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V37 rat1 [V37,T16] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V38 rat2 [V38,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V30 tmp24 [V30,T20] ( 3, 0.00) ref -> x15 "arr expr"
+;* V31 tmp25 [V31,T25] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V32 tmp26 [V32,T21] ( 3, 0.00) byref -> x3 "BlockOp address local"
+; V33 tmp27 [V33,T18] ( 3, 1.00) byref -> x0 single-def "BlockOp address local"
+; V34 tmp28 [V34,T00] ( 8, 85.59) long -> x14 "Widened primary induction variable"
+; V35 cse0 [V35,T23] ( 3, 0.00) byref -> x3 "CSE - conservative"
+; V36 cse1 [V36,T04] ( 5, 31.22) int -> x3 "CSE - aggressive"
+; V37 cse2 [V37,T06] ( 6, 17.11) ref -> x0 "CSE - aggressive"
+;* V38 rat0 [V38,T11] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V39 rat1 [V39,T16] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V40 rat2 [V40,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -60,33 +62,36 @@ G_M27820_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=16 bbWeight=1 PerfScore 3.00
G_M27820_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
- mov w14, wzr
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
ldr w3, [x0, #0x10]
cmp w3, #0
- ble G_M27820_IG04
- ;; size=20 bbWeight=1 PerfScore 8.00
-G_M27820_IG03: ; bbWeight=14.11, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
+ ble G_M27820_IG05
+ ;; size=16 bbWeight=1 PerfScore 7.50
+G_M27820_IG03: ; bbWeight=0.93, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref
+ mov x14, xzr
+ ;; size=4 bbWeight=0.93 PerfScore 0.47
+G_M27820_IG04: ; bbWeight=14.11, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
mov x15, x0
; gcrRegs +[x15]
cmp w14, w3
- bhs G_M27820_IG09
+ bhs G_M27820_IG10
ldr x15, [x15, #0x08]
ldr w12, [x15, #0x08]
cmp w14, w12
- bhs G_M27820_IG08
- ubfiz x12, x14, #4, #32
+ bhs G_M27820_IG09
+ lsl x12, x14, #4
add x12, x12, #16
ldr x15, [x15, x12]
ldrsb wzr, [x15]
cmp x15, x1
- beq G_M27820_IG07
+ beq G_M27820_IG08
add w14, w14, #1
+ mov w14, w14
cmp w14, w3
- blt G_M27820_IG03
- ;; size=64 bbWeight=14.11 PerfScore 289.23
-G_M27820_IG04: ; bbWeight=1.00, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
+ blt G_M27820_IG04
+ ;; size=68 bbWeight=14.11 PerfScore 296.29
+G_M27820_IG05: ; bbWeight=1.00, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x15]
uxtb w2, w2
ldr w14, [x0, #0x14]
@@ -96,7 +101,7 @@ G_M27820_IG04: ; bbWeight=1.00, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=00
; gcrRegs +[x4]
ldr w14, [x4, #0x08]
cmp w14, w3
- bhi G_M27820_IG06
+ bhi G_M27820_IG07
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
@@ -105,12 +110,12 @@ G_M27820_IG04: ; bbWeight=1.00, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=00
; gcrRegs -[x0-x1 x4]
; gcr arg pop 0
;; size=52 bbWeight=1.00 PerfScore 17.99
-G_M27820_IG05: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M27820_IG06: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.00 PerfScore 0.00
-G_M27820_IG06: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=80013 {x0 x1 x4 x19}, byrefRegs=0000 {}, gcvars, byref
+G_M27820_IG07: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=80013 {x0 x1 x4 x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0-x1 x4]
add w14, w3, #1
str w14, [x0, #0x10]
@@ -127,52 +132,46 @@ G_M27820_IG06: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=800
; gcrRegs -[x1 x4 x15]
; byrRegs -[x14]
strb w2, [x0, #0x08]
- b G_M27820_IG05
+ b G_M27820_IG06
;; size=40 bbWeight=0.17 PerfScore 1.25
-G_M27820_IG07: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M27820_IG08: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
; byrRegs -[x0]
tst w2, #255
- beq G_M27820_IG05
+ beq G_M27820_IG06
mov x15, x0
; gcrRegs +[x15]
ldr x15, [x15, #0x08]
ldr w12, [x15, #0x08]
cmp w14, w12
- bhs G_M27820_IG08
- ubfiz x12, x14, #4, #32
- add x12, x12, #16
- ldr x15, [x15, x12]
- mov x3, x0
- ; gcrRegs +[x3]
- ldr x12, [x3, #0x08]
- ; gcrRegs +[x12]
- ldr wip0, [x12, #0x08]
- cmp w14, wip0
- bhs G_M27820_IG08
+ bhs G_M27820_IG09
ubfiz x14, x14, #4, #32
add x14, x14, #16
- add x4, x12, x14
- ; byrRegs +[x4]
- mov x14, x4
+ add x3, x15, x14
+ ; byrRegs +[x3]
+ ldr x15, [x3]
+ mov x4, x0
+ ; gcrRegs +[x4]
+ ldr xzr, [x4, #0x08]
+ mov x14, x3
; byrRegs +[x14]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[x0 x12 x15]
+ ; gcrRegs -[x0 x15]
; byrRegs -[x14]
mov w1, #1
- strb w1, [x4, #0x08]
- ldr w14, [x3, #0x14]
+ strb w1, [x3, #0x08]
+ ldr w14, [x4, #0x14]
add w14, w14, #1
- str w14, [x3, #0x14]
- b G_M27820_IG05
- ;; size=104 bbWeight=0.00 PerfScore 0.02
-G_M27820_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x3]
- ; byrRegs -[x4]
+ str w14, [x4, #0x14]
+ b G_M27820_IG06
+ ;; size=84 bbWeight=0.00 PerfScore 0.01
+G_M27820_IG09: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x4]
+ ; byrRegs -[x3]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M27820_IG09: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M27820_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -182,7 +181,7 @@ G_M27820_IG09: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 336, prolog size 16, PerfScore 319.49, instruction count 84, allocated bytes for code 336 (MethodHash=28189353) for method ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon],ubyte):this (Tier1)
+; Total bytes of code 320, prolog size 16, PerfScore 326.51, instruction count 80, allocated bytes for code 320 (MethodHash=28189353) for method ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon],ubyte):this (Tier1)
; ============================================================
Unwind Info:
@@ -193,7 +192,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 84 (0x00054) Actual length = 336 (0x000150)
+ Function Length : 80 (0x00050) Actual length = 320 (0x000140)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-2.86%) : 250662.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
@@ -8,35 +8,34 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V01 arg1 [V01,T06] ( 7, 4.50) byref -> x21 single-def
-; V02 loc0 [V02,T07] ( 5, 3 ) ushort -> x22
-; V03 loc1 [V03,T05] ( 5, 7 ) int -> x23
-; V04 loc2 [V04,T00] ( 7, 13.50) int -> x24
+; V01 arg1 [V01,T05] ( 7, 4.50) byref -> x21 single-def
+; V02 loc0 [V02,T06] ( 5, 3 ) ushort -> x22
+; V03 loc1 [V03,T04] ( 5, 7 ) int -> x23
+; V04 loc2 [V04,T08] ( 3, 1.50) int -> x24
; V05 loc3 [V05,T09] ( 3, 1.50) int -> x0
; V06 loc4 [V06,T10] ( 3, 1.50) int -> x0
; V07 loc5 [V07,T11] ( 3, 1.50) int -> x1
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T04] ( 2, 8 ) int -> x24 "impSpillLclRefs"
-; V10 tmp2 [V10,T08] ( 2, 2 ) int -> x22 "Single return block return value"
+; V09 tmp1 [V09,T03] ( 2, 8 ) int -> x0 "impSpillLclRefs"
+; V10 tmp2 [V10,T07] ( 2, 2 ) int -> x22 "Single return block return value"
; V11 tmp3 [V11,T01] ( 8, 9.50) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp4 [V12,T03] ( 8, 8.50) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V13 cse0 [V13,T02] ( 5, 11 ) long -> x25 multi-def "CSE - aggressive"
+; V12 tmp4 [V12,T02] ( 8, 8.50) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V13 tmp5 [V13,T00] ( 7, 15 ) long -> x24 "Widened primary induction variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M3969_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- stp x23, x24, [sp, #0x38]
- str x25, [sp, #0x48]
+ stp fp, lr, [sp, #-0x40]!
+ stp x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
+ stp x23, x24, [sp, #0x30]
mov fp, sp
mov x19, x0
; byrRegs +[x19]
mov w20, w1
mov x21, x2
; byrRegs +[x21]
- ;; size=36 bbWeight=1 PerfScore 7.00
+ ;; size=32 bbWeight=1 PerfScore 6.00
G_M3969_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}, byref, isz
mov w22, wzr
cmp w20, #0
@@ -84,7 +83,7 @@ G_M3969_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x
;; size=52 bbWeight=0.50 PerfScore 7.50
G_M3969_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}, byref
mov w23, wzr
- mov w24, #1
+ mov x24, #1
b G_M3969_IG09
;; size=12 bbWeight=0.50 PerfScore 1.00
G_M3969_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}, byref, isz
@@ -99,17 +98,19 @@ G_M3969_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}
blr x0
;; size=36 bbWeight=2 PerfScore 16.00
G_M3969_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}, byref
- add w24, w24, #1
- ldrh w0, [x19, x25]
+ sxtw w0, w24
+ add w1, w24, #1
+ mov w24, w1
+ ldrh w0, [x19, w0, UXTW #2]
mov w1, #10
madd w0, w23, w1, w0
sub w23, w0, #48
- ;; size=20 bbWeight=2 PerfScore 13.00
+ ;; size=28 bbWeight=2 PerfScore 15.00
G_M3969_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}, byref, isz
cmp w24, w20
bhs G_M3969_IG10
- ubfiz x25, x24, #1, #32
- ldrh w0, [x19, x25]
+ lsl x0, x24, #1
+ ldrh w0, [x19, x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -120,10 +121,9 @@ G_M3969_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}
G_M3969_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}, byref, isz
cmp w24, w20
bhs G_M3969_IG11
- ubfiz x25, x24, #1, #32
- ldrh w0, [x19, x25]
+ ldrh w0, [x19, w24, UXTW #2]
cbnz w0, G_M3969_IG12
- ;; size=20 bbWeight=0.50 PerfScore 3.25
+ ;; size=16 bbWeight=0.50 PerfScore 2.75
G_M3969_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
; byrRegs -[x19]
str w23, [x21]
@@ -137,49 +137,46 @@ G_M3969_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=200000 {x21},
mov w0, wzr
;; size=20 bbWeight=0.50 PerfScore 2.00
G_M3969_IG13: ; bbWeight=0.50, epilog, nogc, extend
- ldr x25, [sp, #0x48]
- ldp x23, x24, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x50
+ ldp x23, x24, [sp, #0x30]
+ ldp x21, x22, [sp, #0x20]
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=24 bbWeight=0.50 PerfScore 3.50
+ ;; size=20 bbWeight=0.50 PerfScore 2.50
G_M3969_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[x21]
mov w0, #71
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3969_IG15: ; bbWeight=0.50, epilog, nogc, extend
- ldr x25, [sp, #0x48]
- ldp x23, x24, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x50
+ ldp x23, x24, [sp, #0x30]
+ ldp x21, x22, [sp, #0x20]
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=24 bbWeight=0.50 PerfScore 3.50
+ ;; size=20 bbWeight=0.50 PerfScore 2.50
G_M3969_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
uxth w0, w22
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3969_IG17: ; bbWeight=0.50, epilog, nogc, extend
- ldr x25, [sp, #0x48]
- ldp x23, x24, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x50
+ ldp x23, x24, [sp, #0x30]
+ ldp x21, x22, [sp, #0x20]
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=24 bbWeight=0.50 PerfScore 3.50
+ ;; size=20 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 420, prolog size 24, PerfScore 123.00, instruction count 105, allocated bytes for code 420 (MethodHash=db41f07e) for method System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
+; Total bytes of code 408, prolog size 20, PerfScore 120.50, instruction count 102, allocated bytes for code 408 (MethodHash=db41f07e) for method System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 3
+ Code Words : 2
Epilog Count : 3
E bit : 0
X bit : 0
Vers : 0
- Function Length : 105 (0x00069) Actual length = 420 (0x0001a4)
+ Function Length : 102 (0x00066) Actual length = 408 (0x000198)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -193,13 +190,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D1 89 save_reg X#6 Z#9 (0x09); str x25, [sp, #72]
E6 save_next
E6 save_next
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]!
- E4 end
- E4 end
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end
E4 end
+20 (+45.45%) : 205967.dasm - Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
@@ -8,10 +8,11 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 loc0 [V01,T00] ( 6, 21 ) int -> x2
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp3 [V05,T00] ( 7, 25 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -21,23 +22,31 @@ G_M31126_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M31126_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0
ble G_M31126_IG04
+ mov x2, xzr
;; size=12 bbWeight=1 PerfScore 2.00
G_M31126_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- strb w2, [x0, w2, UXTW #2]
+ cmp w2, w1
+ bhs G_M31126_IG05
+ strb w2, [x0, x2]
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
blt G_M31126_IG03
- ;; size=16 bbWeight=4 PerfScore 12.00
+ ;; size=28 bbWeight=4 PerfScore 20.00
G_M31126_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M31126_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 44, prolog size 8, PerfScore 17.50, instruction count 11, allocated bytes for code 44 (MethodHash=c32d8669) for method Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 25.50, instruction count 16, allocated bytes for code 64 (MethodHash=c32d8669) for method Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
; ============================================================
Unwind Info:
@@ -48,7 +57,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+46.15%) : 255619.dasm - GitHub_5556:SpanAsParam(System.Span`1[long]):long (FullOpts)
@@ -9,10 +9,11 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[long]>
; V01 loc0 [V01,T03] ( 3, 6 ) long -> x2
-; V02 loc1 [V02,T00] ( 5, 17 ) int -> x3
+;* V02 loc1 [V02,T04] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T02] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T01] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp2 [V05,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -23,16 +24,20 @@ G_M19747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M19747_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
mov x2, xzr
- mov w3, wzr
cmp w1, #0
ble G_M19747_IG04
+ mov x3, xzr
;; size=16 bbWeight=1 PerfScore 2.50
G_M19747_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr x2, [x0, w3, UXTW #3]
+ cmp w3, w1
+ bhs G_M19747_IG06
+ lsl x2, x3, #3
+ ldr x2, [x0, x2]
add w3, w3, #1
+ mov w3, w3
cmp w3, w1
blt G_M19747_IG03
- ;; size=16 bbWeight=4 PerfScore 20.00
+ ;; size=32 bbWeight=4 PerfScore 32.00
G_M19747_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov x0, x2
@@ -41,8 +46,13 @@ G_M19747_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M19747_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 26.50, instruction count 13, allocated bytes for code 52 (MethodHash=b91bb2dc) for method GitHub_5556:SpanAsParam(System.Span`1[long]):long (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 38.50, instruction count 19, allocated bytes for code 76 (MethodHash=b91bb2dc) for method GitHub_5556:SpanAsParam(System.Span`1[long]):long (FullOpts)
; ============================================================
Unwind Info:
@@ -53,7 +63,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+46.15%) : 255620.dasm - GitHub_5556:SpanWithLocalCopy(System.Span`1[long]):long (FullOpts)
@@ -9,13 +9,14 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[long]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[long]>
-; V02 loc1 [V02,T01] ( 3, 6 ) long -> x2
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+; V02 loc1 [V02,T02] ( 3, 6 ) long -> x2
+;* V03 loc2 [V03,T06] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T04] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V06 tmp2 [V06,T05] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V07 tmp3 [V07,T03] ( 2, 5 ) byref -> x0 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp4 [V08,T02] ( 3, 6 ) int -> x1 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp4 [V08,T01] ( 4, 10 ) int -> x1 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 tmp5 [V09,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -26,16 +27,20 @@ G_M40372_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M40372_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
mov x2, xzr
- mov w3, wzr
cmp w1, #0
ble G_M40372_IG04
+ mov x3, xzr
;; size=16 bbWeight=1 PerfScore 2.50
G_M40372_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr x2, [x0, w3, UXTW #3]
+ cmp w3, w1
+ bhs G_M40372_IG06
+ lsl x2, x3, #3
+ ldr x2, [x0, x2]
add w3, w3, #1
+ mov w3, w3
cmp w3, w1
blt G_M40372_IG03
- ;; size=16 bbWeight=4 PerfScore 20.00
+ ;; size=32 bbWeight=4 PerfScore 32.00
G_M40372_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov x0, x2
@@ -44,8 +49,13 @@ G_M40372_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M40372_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 26.50, instruction count 13, allocated bytes for code 52 (MethodHash=e720624b) for method GitHub_5556:SpanWithLocalCopy(System.Span`1[long]):long (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 38.50, instruction count 19, allocated bytes for code 76 (MethodHash=e720624b) for method GitHub_5556:SpanWithLocalCopy(System.Span`1[long]):long (FullOpts)
; ============================================================
Unwind Info:
@@ -56,7 +66,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries.crossgen2.windows.arm64.checked.mch
-24 (-10.00%) : 188547.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
@@ -10,21 +10,22 @@
;
; V00 arg0 [V00,T03] ( 3, 4 ) ref -> x19 class-hnd single-def <System.Text.StringBuilder>
; V01 arg1 [V01,T13] ( 3, 3 ) double -> d0 single-def
-; V02 arg2 [V02,T05] ( 3, 3 ) ubyte -> x1 single-def
+; V02 arg2 [V02,T04] ( 3, 3 ) ubyte -> x1 single-def
; V03 loc0 [V03,T02] ( 4, 9 ) int -> x20
; V04 loc1 [V04,T08] ( 2, 3 ) ref -> x21 class-hnd single-def <<unknown class>>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
-; V06 loc3 [V06,T00] ( 7, 12 ) int -> registers
+;* V06 loc3 [V06 ] ( 0, 0 ) int -> zero-ref
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T09] ( 3, 2 ) ref -> x21
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
-; V10 tmp3 [V10,T04] ( 3, 6 ) int -> x23 "impSpillLclRefs"
-; V11 tmp4 [V11,T06] ( 2, 5 ) byref -> x22 single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp3 [V10,T07] ( 2, 4 ) int -> x3 "impSpillLclRefs"
+; V11 tmp4 [V11,T05] ( 2, 5 ) byref -> x22 single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V12 tmp5 [V12,T11] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
; V13 tmp6 [V13,T10] ( 2, 2 ) byref -> x22 single-def "field V09._reference (fldOffset=0x0)" P-INDEP
;* V14 tmp7 [V14,T12] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V15 cse0 [V15,T01] ( 3, 10 ) int -> x3 "CSE - aggressive"
-; V16 cse1 [V16,T07] ( 2, 5 ) long -> registers hoist "CSE - aggressive"
+; V15 tmp8 [V15,T00] ( 8, 13 ) long -> x23 "Widened primary induction variable"
+; V16 cse0 [V16,T01] ( 3, 10 ) int -> x3 "CSE - aggressive"
+; V17 cse1 [V17,T06] ( 2, 5 ) long -> x24 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -61,18 +62,15 @@ G_M10117_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
G_M10117_IG05: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
adrp x22, [HIGH RELOC #0xD1FFAB1E]
add x22, x22, [LOW RELOC #0xD1FFAB1E]
- mov w23, #13
- b G_M10117_IG10
+ mov x23, #13
+ b G_M10117_IG09
;; size=16 bbWeight=1 PerfScore 2.50
G_M10117_IG06: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref
; byrRegs +[x22]
- ubfiz x23, x24, #2, #32
+ lsl x24, x23, #2
b G_M10117_IG08
;; size=8 bbWeight=1 PerfScore 2.00
G_M10117_IG07: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref
- mov x0, x23
- mov w23, w24
- mov x24, x0
sub w20, w20, w3
and w3, w23, #1
add w3, w3, #1
@@ -88,34 +86,29 @@ G_M10117_IG07: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000
blr x4
; gcrRegs -[x1]
; gcr arg pop 0
- mov w0, w23
- ; gcrRegs -[x0]
- mov x23, x24
- mov w24, w0
- ;; size=68 bbWeight=2 PerfScore 28.00
+ ;; size=44 bbWeight=2 PerfScore 22.00
G_M10117_IG08: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz
- cmp w24, #13
- bhs G_M10117_IG12
- ldr w3, [x22, x23]
+ ; gcrRegs -[x0]
+ cmp w23, #13
+ bhs G_M10117_IG11
+ ldr w3, [x22, x24]
cmp w3, w20
ble G_M10117_IG07
;; size=20 bbWeight=4 PerfScore 24.00
-G_M10117_IG09: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref
- mov w23, w24
- ;; size=4 bbWeight=2 PerfScore 1.00
-G_M10117_IG10: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz
- sub w3, w23, #1
- sxtw w24, w3
- cbnz w23, G_M10117_IG06
- ;; size=12 bbWeight=1 PerfScore 2.00
-G_M10117_IG11: ; bbWeight=1, epilog, nogc, extend
+G_M10117_IG09: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz
+ sxtw w3, w23
+ sub w0, w23, #1
+ mov w23, w0
+ cbnz w3, G_M10117_IG06
+ ;; size=16 bbWeight=1 PerfScore 2.50
+G_M10117_IG10: ; bbWeight=1, epilog, nogc, extend
ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x40
ret lr
;; size=20 bbWeight=1 PerfScore 5.00
-G_M10117_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M10117_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19 x21]
; byrRegs -[x22]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -126,7 +119,7 @@ G_M10117_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 240, prolog size 24, PerfScore 80.50, instruction count 60, allocated bytes for code 240 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
+; Total bytes of code 216, prolog size 24, PerfScore 74.00, instruction count 54, allocated bytes for code 216 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
; ============================================================
Unwind Info:
@@ -137,7 +130,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-48 (-5.38%) : 198264.dasm - ILCompiler.Reflection.ReadyToRun.NativeCuckooFilter:ToString():System.String:this (FullOpts)
@@ -10,45 +10,43 @@
;
; V00 this [V00,T14] ( 5, 5 ) byref -> x19 this single-def
; V01 loc0 [V01,T03] ( 7, 27 ) ref -> x20 class-hnd exact single-def <<unknown class>>
-; V02 loc1 [V02,T11] ( 4, 13 ) int -> x24
-; V03 loc2 [V03,T13] ( 7, 10 ) ref -> [fp+0x30] class-hnd EH-live spill-single-def <<unknown class>>
-; V04 loc3 [V04,T12] ( 7, 12.20) ref -> [fp+0x28] class-hnd spill-single-def <ushort[]>
-; V05 loc4 [V05,T01] ( 10, 68.16) int -> [fp+0x44]
+; V02 loc1 [V02,T11] ( 4, 13 ) int -> x22
+; V03 loc2 [V03,T13] ( 7, 10 ) ref -> [fp+0x20] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc3 [V04,T12] ( 7, 12.20) ref -> x25 class-hnd <ushort[]>
+;* V05 loc4 [V05,T22] ( 0, 0 ) int -> zero-ref
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T15] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V08 tmp2 [V08,T16] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V09 tmp3 [V09,T04] ( 3, 24 ) ref -> x0 class-hnd exact "Single-def Box Helper" <<unknown class>>
+; V09 tmp3 [V09,T05] ( 3, 24 ) ref -> x0 class-hnd exact "Single-def Box Helper" <<unknown class>>
; V10 tmp4 [V10,T00] ( 6, 96 ) ref -> x0 class-hnd exact "Single-def Box Helper" <<unknown class>>
-; V11 tmp5 [V11,T24] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V12 tmp6 [V12,T25] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
+; V11 tmp5 [V11,T20] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V12 tmp6 [V12,T21] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
; V13 tmp7 [V13,T10] ( 2, 16 ) ref -> x1 "argument with side effect"
; V14 tmp8 [V14,T02] ( 4, 64 ) ref -> x0 "argument with side effect"
-; V15 PSPSym [V15,T26] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
-; V16 cse0 [V16,T09] ( 3, 17 ) ref -> [fp+0x20] spill-single-def hoist "CSE - aggressive"
-; V17 cse1 [V17,T21] ( 2, 5 ) ref -> x26 hoist "CSE - aggressive"
-; V18 cse2 [V18,T22] ( 2, 5 ) ref -> x28 hoist "CSE - aggressive"
-; V19 cse3 [V19,T07] ( 4, 18.02) byref -> [fp+0x18] hoist multi-def "CSE - aggressive"
-; V20 cse4 [V20,T05] ( 5, 22 ) long -> x22 "CSE - aggressive"
-; V21 cse5 [V21,T06] ( 4, 21 ) long -> x27 hoist "CSE - aggressive"
-; V22 cse6 [V22,T08] ( 4, 18.02) long -> [fp+0x38] hoist multi-def "CSE - aggressive"
-; V23 cse7 [V23,T17] ( 3, 6 ) long -> x21 "CSE - moderate"
-; V24 cse8 [V24,T23] ( 2, 5 ) long -> x25 hoist "CSE - moderate"
-; V25 cse9 [V25,T18] ( 3, 6 ) long -> x23 "CSE - moderate"
-; V26 cse10 [V26,T19] ( 3, 6 ) long -> x19 "CSE - moderate"
-; V27 rat0 [V27,T20] ( 3, 6 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V15 PSPSym [V15,T23] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
+; V16 tmp10 [V16,T24] ( 6, 0.82) long -> x27 "Widened primary induction variable"
+; V17 tmp11 [V17,T01] ( 5, 65.36) long -> x27 "Widened primary induction variable"
+; V18 cse0 [V18,T09] ( 3, 17 ) ref -> x24 hoist "CSE - aggressive"
+; V19 cse1 [V19,T18] ( 2, 5 ) ref -> x19 hoist "CSE - aggressive"
+; V20 cse2 [V20,T19] ( 2, 5 ) ref -> x23 hoist "CSE - aggressive"
+; V21 cse3 [V21,T07] ( 4, 18.02) byref -> [fp+0x18] hoist multi-def "CSE - aggressive"
+; V22 cse4 [V22,T06] ( 5, 22 ) long -> x21 "CSE - aggressive"
+; V23 cse5 [V23,T04] ( 4, 24 ) long -> x26 "CSE - aggressive"
+; V24 cse6 [V24,T08] ( 4, 18.02) long -> x28 hoist multi-def "CSE - aggressive"
+; V25 rat0 [V25,T17] ( 3, 6 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 64
+; Lcl frame size = 32
G_M49470_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0xA0]!
- stp x19, x20, [sp, #0x50]
- stp x21, x22, [sp, #0x60]
- stp x23, x24, [sp, #0x70]
- stp x25, x26, [sp, #0x80]
- stp x27, x28, [sp, #0x90]
+ stp fp, lr, [sp, #-0x80]!
+ stp x19, x20, [sp, #0x30]
+ stp x21, x22, [sp, #0x40]
+ stp x23, x24, [sp, #0x50]
+ stp x25, x26, [sp, #0x60]
+ stp x27, x28, [sp, #0x70]
mov fp, sp
- add x1, sp, #160
- str x1, [fp, #0x48] // [V15 PSPSym]
+ add x1, sp, #128
+ str x1, [fp, #0x28] // [V15 PSPSym]
mov x19, x0
; byrRegs +[x19]
;; size=40 bbWeight=1 PerfScore 8.50
@@ -67,9 +65,8 @@ G_M49470_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- adrp x21, [HIGH RELOC #0xD1FFAB1E] // function address
- add x21, x21, [LOW RELOC #0xD1FFAB1E]
- mov x11, x21
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x11]
blr x0
; gcrRegs +[x0]
@@ -89,9 +86,9 @@ G_M49470_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
ldr x0, [x0]
ldr x0, [x0]
; gcrRegs +[x0]
- adrp x22, [HIGH RELOC #0xD1FFAB1E] // function address
- add x22, x22, [LOW RELOC #0xD1FFAB1E]
- mov x11, x22
+ adrp x21, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x21, x21, [LOW RELOC #0xD1FFAB1E]
+ mov x11, x21
ldr x2, [x11]
blr x2
; gcrRegs -[x1]
@@ -99,14 +96,13 @@ G_M49470_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
mov x1, x0
; gcrRegs +[x1]
mov x0, x20
- adrp x23, [HIGH RELOC #0xD1FFAB1E] // function address
- add x23, x23, [LOW RELOC #0xD1FFAB1E]
- mov x11, x23
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- mov w24, wzr
+ mov w22, wzr
mov x0, x19
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -122,59 +118,55 @@ G_M49470_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
ldr x1, [x11]
blr x1
; gcr arg pop 0
- str x0, [fp, #0x30] // [V03 loc2]
+ str x0, [fp, #0x20] // [V03 loc2]
; GC ptr vars +{V03}
- ;; size=196 bbWeight=1 PerfScore 55.00
+ ;; size=188 bbWeight=1 PerfScore 54.00
G_M49470_IG03: ; bbWeight=1, gcVars=0000000000002000 {V03}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- adrp x19, [HIGH RELOC #0xD1FFAB1E]
- add x19, x19, [LOW RELOC #0xD1FFAB1E]
- mov x11, x19
+ adrp x11, [HIGH RELOC #0xD1FFAB1E]
+ add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
cbz w0, G_M49470_IG12
- adrp x25, [HIGH RELOC #0xD1FFAB1E]
- add x25, x25, [LOW RELOC #0xD1FFAB1E]
adrp x0, [HIGH RELOC #0xD1FFAB1E]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x26, [x0]
- ; gcrRegs +[x26]
- adrp x27, [HIGH RELOC #0xD1FFAB1E]
- add x27, x27, [LOW RELOC #0xD1FFAB1E]
+ ldr x19, [x0]
+ ; gcrRegs +[x19]
adrp x0, [HIGH RELOC #0xD1FFAB1E]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x28, [x0]
- ; gcrRegs +[x28]
+ ldr x23, [x0]
+ ; gcrRegs +[x23]
adrp x0, [HIGH RELOC #0xD1FFAB1E]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x1, [x0]
- ; gcrRegs +[x1]
- str x1, [fp, #0x20] // [V16 cse0]
- ; GC ptr vars +{V16}
- ;; size=92 bbWeight=1 PerfScore 30.50
-G_M49470_IG04: ; bbWeight=4, gcVars=0000000000002200 {V03 V16}, gcrefRegs=14100000 {x20 x26 x28}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x1]
- ldr x0, [fp, #0x30] // [V03 loc2]
+ ldr x24, [x0]
+ ; gcrRegs +[x24]
+ ;; size=68 bbWeight=1 PerfScore 27.00
+G_M49470_IG04: ; bbWeight=4, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [fp, #0x20] // [V03 loc2]
; gcrRegs +[x0]
- mov x11, x25
- ldr x2, [x11]
- blr x2
- ; gcr arg pop 0
- str x0, [fp, #0x28] // [V04 loc3]
- ; GC ptr vars +{V04}
- mov x11, x21
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
; gcr arg pop 0
- str w24, [x0, #0x08]
+ mov x25, x0
+ ; gcrRegs +[x25]
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x11, x11, [LOW RELOC #0xD1FFAB1E]
+ ldr x0, [x11]
+ ; gcrRegs -[x0]
+ blr x0
+ ; gcrRegs +[x0]
+ ; gcr arg pop 0
+ str w22, [x0, #0x08]
mov x1, x0
; gcrRegs +[x1]
- mov x0, x26
- mov x11, x22
+ mov x0, x19
+ mov x11, x21
ldr x2, [x11]
blr x2
; gcrRegs -[x1]
@@ -182,91 +174,82 @@ G_M49470_IG04: ; bbWeight=4, gcVars=0000000000002200 {V03 V16}, gcrefRegs
mov x1, x0
; gcrRegs +[x1]
mov x0, x20
- mov x11, x27
+ adrp x26, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x26, x26, [LOW RELOC #0xD1FFAB1E]
+ mov x11, x26
ldr x2, [x11]
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- str wzr, [fp, #0x44] // [V05 loc4]
- ldr x1, [fp, #0x28] // [V04 loc3]
- ; gcrRegs +[x1]
- cbz x1, G_M49470_IG10
- ;; size=88 bbWeight=4 PerfScore 112.00
-G_M49470_IG05: ; bbWeight=2, gcrefRegs=14100002 {x1 x20 x26 x28}, byrefRegs=0000 {}, byref, isz
+ cbz x25, G_M49470_IG10
+ ;; size=96 bbWeight=4 PerfScore 106.00
+G_M49470_IG05: ; bbWeight=2, gcrefRegs=3980000 {x19 x20 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr w11, [x1, #0x08]
+ ldr w11, [x25, #0x08]
cmp w11, #8
blt G_M49470_IG10
- adrp x2, [HIGH RELOC #0xD1FFAB1E]
- add x2, x2, [LOW RELOC #0xD1FFAB1E]
- add x3, x1, #16
- ; byrRegs +[x3]
- str x3, [fp, #0x18] // [V19 cse3]
- ; GC ptr vars +{V19}
- ;; size=28 bbWeight=2 PerfScore 14.00
-G_M49470_IG06: ; bbWeight=15.84, gcVars=0000000000002280 {V03 V16 V19}, gcrefRegs=14100000 {x20 x26 x28}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x1]
- ; byrRegs -[x3]
- ; GC ptr vars -{V04}
- str x2, [fp, #0x38] // [V22 cse6]
- mov x11, x2
- ldr x1, [x11]
- blr x1
+ mov x27, xzr
+ adrp x28, [HIGH RELOC #0xD1FFAB1E]
+ add x28, x28, [LOW RELOC #0xD1FFAB1E]
+ add x25, x25, #16
+ ; gcrRegs -[x25]
+ ; byrRegs +[x25]
...
-40 (-5.38%) : 218090.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo (FullOpts)
@@ -14,35 +14,35 @@
;* V03 arg3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Reflection.ParameterModifier[]>
; V04 loc0 [V04,T15] ( 4, 6 ) ref -> x21 class-hnd <System.Reflection.PropertyInfo>
; V05 loc1 [V05,T03] ( 7, 29 ) int -> x22 single-def
-; V06 loc2 [V06,T07] ( 5, 17 ) int -> x23
-; V07 loc3 [V07,T10] ( 7, 10.20) ref -> x28 class-hnd <<unknown class>>
-; V08 loc4 [V08,T00] ( 13, 72.48) int -> [fp+0x3C]
+;* V06 loc2 [V06,T18] ( 0, 0 ) int -> zero-ref
+; V07 loc3 [V07,T10] ( 7, 10.20) ref -> x27 class-hnd <<unknown class>>
+; V08 loc4 [V08,T00] ( 13, 72.48) int -> x28
;* V09 loc5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Type>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T18] ( 3, 2 ) int -> x22
+; V11 tmp1 [V11,T17] ( 3, 2 ) int -> x22
; V12 tmp2 [V12,T19] ( 3, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V13 tmp3 [V13,T21] ( 2, 0 ) ref -> x19 class-hnd "finalizable newobj spill" <<unknown class>>
; V14 tmp4 [V14,T20] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V15 tmp5 [V15,T01] ( 4, 64 ) ref -> x0 "argument with side effect"
; V16 tmp6 [V16,T13] ( 2, 8 ) ref -> x1 "argument with side effect"
-; V17 cse0 [V17,T02] ( 3, 47.52) long -> [fp+0x30] spill-single-def "CSE - aggressive"
-; V18 cse1 [V18,T08] ( 4, 12 ) long -> x27 "CSE - aggressive"
-; V19 cse2 [V19,T05] ( 4, 18.02) byref -> [fp+0x20] hoist multi-def "CSE - aggressive"
-; V20 cse3 [V20,T04] ( 4, 18.16) byref -> [fp+0x18] hoist multi-def "CSE - aggressive"
-; V21 cse4 [V21,T11] ( 4, 9 ) byref -> x25 hoist "CSE - aggressive"
-; V22 cse5 [V22,T16] ( 3, 6 ) int -> x24 "CSE - moderate"
-; V23 cse6 [V23,T06] ( 4, 18.02) long -> [fp+0x28] hoist multi-def "CSE - aggressive"
-; V24 cse7 [V24,T17] ( 2, 5 ) long -> x26 hoist "CSE - moderate"
+; V17 tmp7 [V17,T07] ( 5, 17 ) long -> x24 "Widened primary induction variable"
+; V18 cse0 [V18,T08] ( 4, 12 ) long -> x26 "CSE - aggressive"
+; V19 cse1 [V19,T02] ( 3, 47.52) long -> [fp+0x28] spill-single-def "CSE - aggressive"
+; V20 cse2 [V20,T05] ( 4, 18.02) byref -> [fp+0x18] hoist multi-def "CSE - aggressive"
+; V21 cse3 [V21,T04] ( 4, 18.16) byref -> [fp+0x10] hoist multi-def "CSE - aggressive"
+; V22 cse4 [V22,T11] ( 4, 9 ) byref -> x25 hoist "CSE - aggressive"
+; V23 cse5 [V23,T16] ( 3, 6 ) int -> x23 "CSE - moderate"
+; V24 cse6 [V24,T06] ( 4, 18.02) long -> [fp+0x20] hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 32
G_M1302_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x90]!
- stp x19, x20, [sp, #0x40]
- stp x21, x22, [sp, #0x50]
- stp x23, x24, [sp, #0x60]
- stp x25, x26, [sp, #0x70]
- stp x27, x28, [sp, #0x80]
+ stp fp, lr, [sp, #-0x80]!
+ stp x19, x20, [sp, #0x30]
+ stp x21, x22, [sp, #0x40]
+ stp x23, x24, [sp, #0x50]
+ stp x25, x26, [sp, #0x60]
+ stp x27, x28, [sp, #0x70]
mov fp, sp
mov x20, x1
; gcrRegs +[x20]
@@ -51,7 +51,7 @@ G_M1302_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=36 bbWeight=1 PerfScore 7.50
G_M1302_IG02: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbz x0, G_M1302_IG21
+ cbz x0, G_M1302_IG19
mov x21, xzr
; gcrRegs +[x21]
cbnz x19, G_M1302_IG04
@@ -64,65 +64,63 @@ G_M1302_IG04: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRe
ldr w22, [x19, #0x08]
;; size=4 bbWeight=0.50 PerfScore 1.50
G_M1302_IG05: ; bbWeight=1, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- mov w23, wzr
- ldr w24, [x0, #0x08]
- cmp w24, #0
- ble G_M1302_IG18
+ ldr w23, [x0, #0x08]
+ cmp w23, #0
+ ble G_M1302_IG16
+ mov x24, xzr
add x25, x0, #16
; byrRegs +[x25]
- adrp x26, [HIGH RELOC #0xD1FFAB1E]
- add x26, x26, [LOW RELOC #0xD1FFAB1E]
- ;; size=28 bbWeight=1 PerfScore 6.50
+ ;; size=20 bbWeight=1 PerfScore 5.50
G_M1302_IG06: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=2000000 {x25}, byref, isz
; gcrRegs -[x0]
- ubfiz x27, x23, #3, #32
- ldr x0, [x25, x27]
+ lsl x26, x24, #3
+ ldr x0, [x25, x26]
; gcrRegs +[x0]
- mov x11, x26
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr wzr, [x0]
ldr x1, [x11]
blr x1
- mov x28, x0
- ; gcrRegs +[x28]
- mov w1, wzr
+ mov x27, x0
+ ; gcrRegs +[x27]
+ mov w28, wzr
cmp w22, #0
- ble G_M1302_IG10
- ;; size=40 bbWeight=4 PerfScore 56.00
-G_M1302_IG07: ; bbWeight=2, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=2000000 {x25}, byref, isz
+ ble G_M1302_IG12
+ ;; size=44 bbWeight=4 PerfScore 58.00
+G_M1302_IG07: ; bbWeight=2, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=2000000 {x25}, byref, isz
; gcrRegs -[x0]
- cbz x28, G_M1302_IG11
- cbz x19, G_M1302_IG11
- ldr w0, [x28, #0x08]
+ cbz x27, G_M1302_IG10
+ cbz x19, G_M1302_IG10
+ ldr w0, [x27, #0x08]
cmp w0, w22
- blt G_M1302_IG11
+ blt G_M1302_IG10
ldr w0, [x19, #0x08]
cmp w0, w22
- blt G_M1302_IG11
- add x28, x28, #16
- ; gcrRegs -[x28]
- ; byrRegs +[x28]
- adrp x2, [HIGH RELOC #0xD1FFAB1E]
- add x2, x2, [LOW RELOC #0xD1FFAB1E]
- add x3, x19, #16
- ; byrRegs +[x3]
- str x3, [fp, #0x18] // [V20 cse3]
- ; GC ptr vars +{V20}
- ;; size=52 bbWeight=2 PerfScore 28.00
-G_M1302_IG08: ; bbWeight=15.84, gcVars=0000000000000010 {V20}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=12000000 {x25 x28}, gcvars, byref, isz
- ; byrRegs -[x3]
- str w1, [fp, #0x3C] // [V08 loc4]
- ubfiz x4, x1, #3, #32
- str x4, [fp, #0x30] // [V17 cse0]
- ldr x0, [x28, x4]
- ; gcrRegs +[x0]
- str x2, [fp, #0x28] // [V23 cse6]
- mov x11, x2
- ldr wzr, [x0]
- ldr x5, [x11]
- blr x5
- ldr x2, [fp, #0x18] // [V20 cse3]
+ blt G_M1302_IG10
+ add x27, x27, #16
+ ; gcrRegs -[x27]
+ ; byrRegs +[x27]
+ adrp x1, [HIGH RELOC #0xD1FFAB1E]
+ add x1, x1, [LOW RELOC #0xD1FFAB1E]
+ add x2, x19, #16
; byrRegs +[x2]
- ldr x1, [fp, #0x30] // [V17 cse0]
+ str x2, [fp, #0x10] // [V21 cse3]
+ ; GC ptr vars +{V21}
+ ;; size=52 bbWeight=2 PerfScore 28.00
+G_M1302_IG08: ; bbWeight=15.84, gcVars=0000000000000010 {V21}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=A000000 {x25 x27}, gcvars, byref, isz
+ ; byrRegs -[x2]
+ ubfiz x3, x28, #3, #32
+ str x3, [fp, #0x28] // [V19 cse1]
+ ldr x0, [x27, x3]
+ ; gcrRegs +[x0]
+ str x1, [fp, #0x20] // [V24 cse6]
+ mov x11, x1
+ ldr wzr, [x0]
+ ldr x4, [x11]
+ blr x4
+ ldr x2, [fp, #0x10] // [V21 cse3]
+ ; byrRegs +[x2]
+ ldr x1, [fp, #0x28] // [V19 cse1]
ldr x1, [x2, x1]
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -131,87 +129,76 @@ G_M1302_IG08: ; bbWeight=15.84, gcVars=0000000000000010 {V20}, gcrefRegs=
blr x3
; gcrRegs -[x0-x1]
; byrRegs -[x2]
- cbnz w0, G_M1302_IG14
- ldr w1, [fp, #0x3C] // [V08 loc4]
- add w1, w1, #1
- cmp w1, w22
- ldr x2, [fp, #0x28] // [V23 cse6]
+ cbnz w0, G_M1302_IG12
+ add w28, w28, #1
+ cmp w28, w22
+ ldr x1, [fp, #0x20] // [V24 cse6]
blt G_M1302_IG08
- ;; size=88 bbWeight=15.84 PerfScore 530.64
+ ;; size=80 bbWeight=15.84 PerfScore 483.12
G_M1302_IG09: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=2000000 {x25}, gcvars, byref
- ; byrRegs -[x28]
- ; GC ptr vars -{V20}
- str w1, [fp, #0x3C] // [V08 loc4]
- b G_M1302_IG14
- ;; size=8 bbWeight=4 PerfScore 8.00
-G_M1302_IG10: ; bbWeight=2, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=2000000 {x25}, byref
- str w1, [fp, #0x3C] // [V08 loc4]
- b G_M1302_IG14
- ;; size=8 bbWeight=2 PerfScore 4.00
-G_M1302_IG11: ; bbWeight=0.02, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=2000000 {x25}, byref
- ; gcrRegs +[x28]
- ldr wzr, [x28, #0x08]
- add x0, x28, #16
+ ; byrRegs -[x27]
+ ; GC ptr vars -{V21}
+ b G_M1302_IG12
+ ;; size=4 bbWeight=4 PerfScore 4.00
+G_M1302_IG10: ; bbWeight=0.02, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=2000000 {x25}, byref
+ ; gcrRegs +[x27]
+ ldr wzr, [x27, #0x08]
+ add x0, x27, #16
; byrRegs +[x0]
- mov x2, x0
- ; byrRegs +[x2]
+ mov x1, x0
+ ; byrRegs +[x1]
adrp x0, [HIGH RELOC #0xD1FFAB1E]
; byrRegs -[x0]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
- mov x3, x0
+ mov x2, x0
;; size=24 bbWeight=0.02 PerfScore 0.11
-G_M1302_IG12: ; bbWeight=0.16, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=2000004 {x2 x25}, byref, isz
- ldr w0, [x28, #0x08]
- cmp w1, w0
- bhs G_M1302_IG20
- str x2, [fp, #0x20] // [V19 cse2]
- ; GC ptr vars +{V19}
- str w1, [fp, #0x3C] // [V08 loc4]
- ldr x0, [x2, w1, UXTW #3]
+G_M1302_IG11: ; bbWeight=0.16, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=2000002 {x1 x25}, byref, isz
+ ldr w0, [x27, #0x08]
+ cmp w28, w0
+ bhs G_M1302_IG18
+ str x1, [fp, #0x18] // [V20 cse2]
+ ; GC ptr vars +{V20}
+ ldr x0, [x1, w28, UXTW #3]
; gcrRegs +[x0]
- str x3, [fp, #0x28] // [V23 cse6]
- mov x11, x3
+ str x2, [fp, #0x20] // [V24 cse6]
+ mov x11, x2
ldr wzr, [x0]
- ldr x4, [x11]
- blr x4
- ; byrRegs -[x2]
+ ldr x3, [x11]
+ blr x3
+ ; byrRegs -[x1]
ldr w1, [x19, #0x08]
...
+32 (+57.14%) : 228491.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
@@ -11,13 +11,14 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
; V01 loc0 [V01,T01] ( 4, 10 ) int -> x2
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+;* V03 loc2 [V03,T06] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) ubyte -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T04] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V07 tmp2 [V07,T05] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V08 tmp3 [V08,T03] ( 2, 5 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V09 tmp4 [V09,T02] ( 3, 6 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V09 tmp4 [V09,T02] ( 4, 10 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V10 tmp5 [V10,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -28,17 +29,20 @@ G_M59336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M59336_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
mov w2, wzr
- mov w3, wzr
cmp w1, #0
ble G_M59336_IG04
+ mov x3, xzr
;; size=16 bbWeight=1 PerfScore 2.50
G_M59336_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2]
+ cmp w3, w1
+ bhs G_M59336_IG06
+ ldrb w4, [x0, x3]
add w2, w4, w2
add w3, w3, #1
+ mov w3, w3
cmp w3, w1
blt G_M59336_IG03
- ;; size=20 bbWeight=4 PerfScore 22.00
+ ;; size=32 bbWeight=4 PerfScore 30.00
G_M59336_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov w0, w2
@@ -47,8 +51,16 @@ G_M59336_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M59336_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x0, x0, [LOW RELOC #0xD1FFAB1E]
+ ldr x0, [x0]
+ blr x0
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 8, PerfScore 28.50, instruction count 14, allocated bytes for code 56 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 36.50, instruction count 22, allocated bytes for code 88 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -59,7 +71,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+36 (+60.00%) : 155473.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
@@ -10,11 +10,12 @@
;
; V00 arg0 [V00,T01] ( 5, 11 ) int -> x0
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 17 ) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V06 cse0 [V06,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 10 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
+; V07 cse0 [V07,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -24,27 +25,39 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0
ble G_M1770_IG04
+ mov x3, xzr
movz w4, #0xD1FFAB1E
movk w4, #0xD1FFAB1E LSL #16
;; size=20 bbWeight=1 PerfScore 3.00
G_M1770_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2
+ bhs G_M1770_IG05
+ lsl x5, x3, #1
+ ldrh w5, [x1, x5]
eor w0, w5, w0
mul w0, w0, w4
add w3, w3, #1
+ mov w3, w3
cmp w3, w2
blt G_M1770_IG03
- ;; size=24 bbWeight=4 PerfScore 30.00
+ ;; size=40 bbWeight=4 PerfScore 42.00
G_M1770_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x0, x0, [LOW RELOC #0xD1FFAB1E]
+ ldr x0, [x0]
+ blr x0
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 36.50, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 96, prolog size 8, PerfScore 48.50, instruction count 24, allocated bytes for code 96 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -55,7 +68,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+36 (+60.00%) : 126256.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
@@ -10,11 +10,12 @@
;
; V00 arg0 [V00,T01] ( 5, 11 ) int -> x0
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 17 ) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V06 cse0 [V06,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 10 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
+; V07 cse0 [V07,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -24,27 +25,39 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0
ble G_M1770_IG04
+ mov x3, xzr
movz w4, #0xD1FFAB1E
movk w4, #0xD1FFAB1E LSL #16
;; size=20 bbWeight=1 PerfScore 3.00
G_M1770_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2
+ bhs G_M1770_IG05
+ lsl x5, x3, #1
+ ldrh w5, [x1, x5]
eor w0, w5, w0
mul w0, w0, w4
add w3, w3, #1
+ mov w3, w3
cmp w3, w2
blt G_M1770_IG03
- ;; size=24 bbWeight=4 PerfScore 30.00
+ ;; size=40 bbWeight=4 PerfScore 42.00
G_M1770_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x0, x0, [LOW RELOC #0xD1FFAB1E]
+ ldr x0, [x0]
+ blr x0
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 36.50, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 96, prolog size 8, PerfScore 48.50, instruction count 24, allocated bytes for code 96 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -55,7 +68,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries.pmi.windows.arm64.checked.mch
-28 (-12.50%) : 195137.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
@@ -8,28 +8,32 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 5, 4.50) ref -> x0 this class-hnd single-def <System.Xml.XmlSubtreeReader>
-; V01 arg1 [V01,T04] ( 3, 6 ) ref -> x1 class-hnd single-def <System.String>
-; V02 arg2 [V02,T07] ( 3, 4 ) ref -> x2 class-hnd single-def <System.String>
-; V03 loc0 [V03,T01] ( 9, 22.50) int -> x14
-; V04 loc1 [V04,T17] ( 2, 1 ) ref -> x4 class-hnd exact <<unknown class>>
+; V00 this [V00,T07] ( 5, 4.50) ref -> x0 this class-hnd single-def <System.Xml.XmlSubtreeReader>
+; V01 arg1 [V01,T06] ( 3, 6 ) ref -> x1 class-hnd single-def <System.String>
+; V02 arg2 [V02,T09] ( 3, 4 ) ref -> x2 class-hnd single-def <System.String>
+; V03 loc0 [V03,T13] ( 3, 1.50) int -> x15
+; V04 loc1 [V04,T18] ( 2, 1 ) ref -> x2 class-hnd exact <<unknown class>>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T09] ( 3, 3 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
-; V07 tmp2 [V07,T14] ( 2, 2 ) ref -> x12 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
+;* V06 tmp1 [V06,T19] ( 0, 0 ) ref -> zero-ref class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
+; V07 tmp2 [V07,T14] ( 2, 2 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V10 tmp5 [V10,T00] ( 3, 24 ) ref -> x12 "arr expr"
-;* V11 tmp6 [V11,T08] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V12 tmp7 [V12,T18] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V13 tmp8 [V13,T10] ( 3, 3 ) ref -> x12 "arr expr"
-; V14 tmp9 [V14,T12] ( 3, 3 ) int -> xip0 "index expr"
-; V15 tmp10 [V15,T11] ( 3, 3 ) ref -> x3 "arr expr"
+; V10 tmp5 [V10,T00] ( 3, 24 ) ref -> xip0 "arr expr"
+;* V11 tmp6 [V11,T10] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V12 tmp7 [V12,T20] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V13 tmp8 [V13,T21] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V14 tmp9 [V14,T11] ( 3, 3 ) int -> x15 "index expr"
+;* V15 tmp10 [V15,T22] ( 0, 0 ) ref -> zero-ref "arr expr"
; V16 tmp11 [V16,T15] ( 2, 2 ) int -> x14 "index expr"
-; V17 cse0 [V17,T02] ( 4, 10.50) ref -> x4 "CSE - aggressive"
-; V18 cse1 [V18,T13] ( 5, 2.50) int -> x1 "CSE - aggressive"
-; V19 cse2 [V19,T03] ( 5, 6.50) ref -> x3 hoist "CSE - aggressive"
-; V20 cse3 [V20,T06] ( 4, 6.50) int -> x15 "CSE - aggressive"
-; V21 cse4 [V21,T16] ( 3, 1.50) long -> x2 "CSE - moderate"
+; V17 tmp12 [V17,T01] ( 7, 21.50) long -> x15 "Widened primary induction variable"
+; V18 cse0 [V18,T03] ( 3, 10 ) ref -> xip0 "CSE - aggressive"
+; V19 cse1 [V19,T12] ( 5, 2.50) int -> x1 "CSE - aggressive"
+; V20 cse2 [V20,T04] ( 2, 5 ) ref -> x12 hoist "CSE - aggressive"
+; V21 cse3 [V21,T08] ( 4, 6.50) int -> x14 "CSE - aggressive"
+; V22 cse4 [V22,T16] ( 3, 1.50) long -> x14 "CSE - moderate"
+; V23 cse5 [V23,T17] ( 3, 1.50) long -> x5 "CSE - moderate"
+; V24 cse6 [V24,T05] ( 4, 9 ) int -> x3 "CSE - aggressive"
+; V25 cse7 [V25,T02] ( 6, 10 ) byref -> x4 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -39,95 +43,80 @@ G_M23254_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M23254_IG02: ; bbWeight=1, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x2]
- mov w14, wzr
- ldr w15, [x0, #0x58]
- cmp w15, #0
+ ldr w14, [x0, #0x58]
+ cmp w14, #0
ble G_M23254_IG06
- ldr x3, [x0, #0x20]
- ; gcrRegs +[x3]
+ mov x15, xzr
+ ldr x12, [x0, #0x20]
+ ; gcrRegs +[x12]
;; size=20 bbWeight=1 PerfScore 8.00
-G_M23254_IG03: ; bbWeight=4, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz
- mov x12, x3
- ; gcrRegs +[x12]
- ldr wip0, [x12, #0x08]
- cmp w14, wip0
+G_M23254_IG03: ; bbWeight=4, gcrefRegs=1007 {x0 x1 x2 x12}, byrefRegs=0000 {}, byref, isz
+ mov xip0, x12
+ ; gcrRegs +[xip0]
+ ldr w3, [xip0, #0x08]
+ cmp w15, w3
bhs G_M23254_IG10
- add x12, x12, #16
- ; gcrRegs -[x12]
- ; byrRegs +[x12]
- ldr x4, [x12, w14, UXTW #3]
- ; gcrRegs +[x4]
- ldr x12, [x4, #0x10]
- ; gcrRegs +[x12]
- ; byrRegs -[x12]
- cmp x12, x1
+ add x4, xip0, #16
+ ; byrRegs +[x4]
+ lsl xip0, x15, #3
+ ; gcrRegs -[xip0]
+ ldr xip0, [x4, xip0]
+ ; gcrRegs +[xip0]
+ ldr x5, [xip0, #0x10]
+ ; gcrRegs +[x5]
+ cmp x5, x1
bne G_M23254_IG05
- ;; size=36 bbWeight=4 PerfScore 52.00
-G_M23254_IG04: ; bbWeight=2, gcrefRegs=001F {x0 x1 x2 x3 x4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x12]
- ldr x12, [x4, #0x08]
- ; gcrRegs +[x12]
- cmp x12, x2
+ ;; size=40 bbWeight=4 PerfScore 56.00
+G_M23254_IG04: ; bbWeight=2, gcrefRegs=11007 {x0 x1 x2 x12 xip0}, byrefRegs=0010 {x4}, byref, isz
+ ; gcrRegs -[x5]
+ ldr xip0, [xip0, #0x08]
+ cmp xip0, x2
beq G_M23254_IG07
;; size=12 bbWeight=2 PerfScore 9.00
-G_M23254_IG05: ; bbWeight=4, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x4 x12]
- add w14, w14, #1
- cmp w14, w15
+G_M23254_IG05: ; bbWeight=4, gcrefRegs=1007 {x0 x1 x2 x12}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[xip0]
+ ; byrRegs -[x4]
+ add w15, w15, #1
+ mov w15, w15
+ cmp w15, w14
blt G_M23254_IG03
- ;; size=12 bbWeight=4 PerfScore 8.00
+ ;; size=16 bbWeight=4 PerfScore 10.00
G_M23254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x0-x3]
+ ; gcrRegs -[x0-x2 x12]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M23254_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0019 {x0 x3 x4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0 x3-x4]
- sub w1, w15, #1
- cmp w14, w1
+G_M23254_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, gcvars, byref, isz
+ ; gcrRegs +[x0]
+ ; byrRegs +[x4]
+ sub w1, w14, #1
+ cmp w15, w1
bge G_M23254_IG08
- mov x15, x3
+ ubfiz x14, x15, #3, #32
+ ldr x2, [x4, x14]
+ ; gcrRegs +[x2]
+ sxtw w15, w1
+ cmp w15, w3
+ bhs G_M23254_IG10
+ ubfiz x5, x15, #3, #32
+ ldr x15, [x4, x5]
; gcrRegs +[x15]
- mov x12, x3
- ; gcrRegs +[x12]
- sxtw wip0, w1
- ldr w2, [x12, #0x08]
- cmp wip0, w2
- bhs G_M23254_IG10
- add x12, x12, #16
- ; gcrRegs -[x12]
- ; byrRegs +[x12]
- ubfiz x2, xip0, #3, #32
- ldr x12, [x12, x2]
- ; gcrRegs +[x12]
- ; byrRegs -[x12]
- ldr wip0, [x15, #0x08]
- cmp w14, wip0
- bhs G_M23254_IG10
- add x15, x15, #16
- ; gcrRegs -[x15]
- ; byrRegs +[x15]
- add x14, x15, x14, LSL #3
+ add x14, x4, x14
; byrRegs +[x14]
- mov x15, x12
- ; gcrRegs +[x15]
- ; byrRegs -[x15]
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x12 x15]
+ bl CORINFO_HELP_CHECKED_ASSIGN_REF
+ ; gcrRegs -[x15]
; byrRegs -[x14]
sxtw w14, w1
- ldr w15, [x3, #0x08]
- cmp w14, w15
+ cmp w14, w3
bhs G_M23254_IG10
- add x14, x3, #16
+ add x14, x4, x5
; byrRegs +[x14]
- add x14, x14, x2
- mov x15, x4
+ mov x15, x2
; gcrRegs +[x15]
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x3-x4 x15]
- ; byrRegs -[x14]
- ;; size=108 bbWeight=0.50 PerfScore 13.75
+ bl CORINFO_HELP_CHECKED_ASSIGN_REF
+ ; gcrRegs -[x2 x15]
+ ; byrRegs -[x4 x14]
+ ;; size=72 bbWeight=0.50 PerfScore 8.75
G_M23254_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
str w1, [x0, #0x58]
;; size=4 bbWeight=0.50 PerfScore 0.50
@@ -142,7 +131,7 @@ G_M23254_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 224, prolog size 8, PerfScore 94.75, instruction count 56, allocated bytes for code 224 (MethodHash=dfe8a529) for method System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
+; Total bytes of code 196, prolog size 8, PerfScore 95.75, instruction count 49, allocated bytes for code 196 (MethodHash=dfe8a529) for method System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
; ============================================================
Unwind Info:
@@ -153,7 +142,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
+ Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-10.71%) : 202486.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
@@ -9,21 +9,22 @@
;
; V00 arg0 [V00,T03] ( 3, 4 ) ref -> x19 class-hnd single-def <System.Text.StringBuilder>
; V01 arg1 [V01,T13] ( 3, 3 ) double -> d0 single-def
-; V02 arg2 [V02,T05] ( 3, 3 ) ubyte -> x1 single-def
+; V02 arg2 [V02,T04] ( 3, 3 ) ubyte -> x1 single-def
; V03 loc0 [V03,T02] ( 4, 9 ) int -> x20
; V04 loc1 [V04,T08] ( 2, 3 ) ref -> x21 class-hnd single-def <System.String>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
-; V06 loc3 [V06,T00] ( 7, 12 ) int -> registers
+;* V06 loc3 [V06 ] ( 0, 0 ) int -> zero-ref
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T09] ( 2, 2 ) ref -> x21
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
-; V10 tmp3 [V10,T04] ( 3, 6 ) int -> x23 "impSpillLclRefs"
-; V11 tmp4 [V11,T06] ( 2, 5 ) byref -> x22 single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp3 [V10,T07] ( 2, 4 ) int -> x3 "impSpillLclRefs"
+; V11 tmp4 [V11,T05] ( 2, 5 ) byref -> x22 single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V12 tmp5 [V12,T11] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
; V13 tmp6 [V13,T10] ( 2, 2 ) byref -> x22 single-def "field V09._reference (fldOffset=0x0)" P-INDEP
;* V14 tmp7 [V14,T12] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V15 cse0 [V15,T01] ( 3, 10 ) int -> x3 "CSE - aggressive"
-; V16 cse1 [V16,T07] ( 2, 5 ) long -> registers hoist "CSE - aggressive"
+; V15 tmp8 [V15,T00] ( 8, 13 ) long -> x23 "Widened primary induction variable"
+; V16 cse0 [V16,T01] ( 3, 10 ) int -> x3 "CSE - aggressive"
+; V17 cse1 [V17,T06] ( 2, 5 ) long -> x24 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -50,18 +51,15 @@ G_M10117_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
movz x22, #0xD1FFAB1E
movk x22, #0xD1FFAB1E LSL #16
movk x22, #0xD1FFAB1E LSL #32
- mov w23, #13
- b G_M10117_IG07
+ mov x23, #13
+ b G_M10117_IG06
;; size=56 bbWeight=1 PerfScore 9.00
G_M10117_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref
; byrRegs +[x22]
- ubfiz x23, x24, #2, #32
+ lsl x24, x23, #2
b G_M10117_IG05
;; size=8 bbWeight=1 PerfScore 2.00
G_M10117_IG04: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref
- mov x0, x23
- mov w23, w24
- mov x24, x0
sub w20, w20, w3
and w3, w23, #1
add w3, w3, #1
@@ -78,34 +76,29 @@ G_M10117_IG04: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000
blr x4
; gcrRegs -[x1]
; gcr arg pop 0
- mov w0, w23
- ; gcrRegs -[x0]
- mov x23, x24
- mov w24, w0
- ;; size=72 bbWeight=2 PerfScore 29.00
+ ;; size=48 bbWeight=2 PerfScore 23.00
G_M10117_IG05: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz
- cmp w24, #13
- bhs G_M10117_IG09
- ldr w3, [x22, x23]
+ ; gcrRegs -[x0]
+ cmp w23, #13
+ bhs G_M10117_IG08
+ ldr w3, [x22, x24]
cmp w3, w20
ble G_M10117_IG04
;; size=20 bbWeight=4 PerfScore 24.00
-G_M10117_IG06: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref
- mov w23, w24
- ;; size=4 bbWeight=2 PerfScore 1.00
-G_M10117_IG07: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz
- sub w3, w23, #1
- sxtw w24, w3
- cbnz w23, G_M10117_IG03
- ;; size=12 bbWeight=1 PerfScore 2.00
-G_M10117_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M10117_IG06: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz
+ sxtw w3, w23
+ sub w0, w23, #1
+ mov w23, w0
+ cbnz w3, G_M10117_IG03
+ ;; size=16 bbWeight=1 PerfScore 2.50
+G_M10117_IG07: ; bbWeight=1, epilog, nogc, extend
ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x40
ret lr
;; size=20 bbWeight=1 PerfScore 5.00
-G_M10117_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M10117_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19 x21]
; byrRegs -[x22]
bl CORINFO_HELP_RNGCHKFAIL
@@ -113,7 +106,7 @@ G_M10117_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 224, prolog size 24, PerfScore 77.00, instruction count 56, allocated bytes for code 224 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
+; Total bytes of code 200, prolog size 24, PerfScore 70.50, instruction count 50, allocated bytes for code 200 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
; ============================================================
Unwind Info:
@@ -124,7 +117,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
+ Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-3.37%) : 198505.dasm - System.Xml.Schema.FacetsChecker+FacetsCompiler:Preprocess(System.String):System.String (FullOpts)
@@ -8,42 +8,43 @@
; 3 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T10] ( 6, 6.50) ref -> x19 class-hnd single-def <System.String>
+; V00 arg0 [V00,T08] ( 6, 9.50) ref -> x19 class-hnd single-def <System.String>
; V01 loc0 [V01,T06] ( 15, 12.41) ref -> x20 class-hnd exact single-def <System.Text.StringBuilder>
-; V02 loc1 [V02,T17] ( 4, 3.50) int -> x22
-; V03 loc2 [V03,T08] ( 8, 11 ) int -> x23
+; V02 loc1 [V02,T18] ( 4, 3.50) int -> x22
+; V03 loc2 [V03,T09] ( 8, 11 ) int -> x23
; V04 loc3 [V04,T03] ( 11, 29 ) int -> x24
-; V05 loc4 [V05,T04] ( 2, 18 ) ushort -> x28
-; V06 loc5 [V06,T01] ( 8, 86 ) int -> [fp+0x1C]
+; V05 loc4 [V05,T04] ( 2, 18 ) ushort -> x27
+; V06 loc5 [V06,T13] ( 3, 6 ) int -> x27
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T11] ( 4, 8 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder>
+; V08 tmp1 [V08,T12] ( 4, 8 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder>
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.StringBuilder>
-; V10 tmp3 [V10,T20] ( 3, 2.46) int -> x0 "Inline stloc first use temp"
-; V11 tmp4 [V11,T18] ( 3, 2.46) ref -> x1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V10 tmp3 [V10,T21] ( 3, 2.46) int -> x0 "Inline stloc first use temp"
+; V11 tmp4 [V11,T19] ( 3, 2.46) ref -> x1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V12 tmp5 [V12,T05] ( 4, 15.98) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.StringBuilder>
-; V14 tmp7 [V14,T21] ( 3, 2.46) int -> x0 "Inline stloc first use temp"
-; V15 tmp8 [V15,T19] ( 3, 2.46) ref -> x1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V14 tmp7 [V14,T22] ( 3, 2.46) int -> x0 "Inline stloc first use temp"
+; V15 tmp8 [V15,T20] ( 3, 2.46) ref -> x1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V16 tmp9 [V16,T00] ( 3, 96 ) ref -> x0 "arr expr"
; V17 tmp10 [V17,T07] ( 3, 12 ) ref -> x2 "arr expr"
-; V18 cse0 [V18,T02] ( 4, 36 ) ref -> x3 "CSE - aggressive"
-; V19 cse1 [V19,T13] ( 3, 6 ) int -> x28 "CSE - aggressive"
-;* V20 cse2 [V20,T22] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
-; V21 cse3 [V21,T14] ( 3, 6 ) long -> [fp+0x10] spill-single-def "CSE - aggressive"
-; V22 cse4 [V22,T09] ( 5, 10 ) int -> x27 "CSE - aggressive"
-; V23 cse5 [V23,T16] ( 3, 4 ) int -> x21 "CSE - aggressive"
-; V24 cse6 [V24,T12] ( 3, 7 ) byref -> x26 hoist "CSE - aggressive"
-; V25 cse7 [V25,T15] ( 3, 6 ) int -> x25 "CSE - moderate"
+; V18 tmp11 [V18,T01] ( 7, 84 ) long -> x4 "Widened primary induction variable"
+; V19 cse0 [V19,T02] ( 4, 36 ) ref -> x3 "CSE - aggressive"
+; V20 cse1 [V20,T14] ( 3, 6 ) int -> x27 "CSE - aggressive"
+;* V21 cse2 [V21,T23] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V22 cse3 [V22,T15] ( 3, 6 ) long -> x28 "CSE - aggressive"
+; V23 cse4 [V23,T10] ( 5, 10 ) int -> x26 "CSE - aggressive"
+; V24 cse5 [V24,T17] ( 3, 4 ) int -> x21 "CSE - aggressive"
+; V25 cse6 [V25,T16] ( 3, 6 ) int -> x25 "CSE - aggressive"
+; V26 cse7 [V26,T11] ( 3, 10 ) byref -> x3 "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 0
G_M19789_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
- stp x25, x26, [sp, #0x50]
- stp x27, x28, [sp, #0x60]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
+ stp x23, x24, [sp, #0x30]
+ stp x25, x26, [sp, #0x40]
+ stp x27, x28, [sp, #0x50]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
@@ -100,26 +101,26 @@ G_M19789_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
sub w25, w22, #2
cmp w25, #0
ble G_M19789_IG17
- add x26, x19, #12
- ; byrRegs +[x26]
- ;; size=32 bbWeight=1 PerfScore 7.00
-G_M19789_IG05: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
- ldrh w3, [x26, w24, UXTW #2]
- cmp w3, #92
+ ;; size=28 bbWeight=1 PerfScore 6.50
+G_M19789_IG05: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ add x3, x19, #12
+ ; byrRegs +[x3]
+ ldrh w0, [x3, w24, UXTW #2]
+ cmp w0, #92
bne G_M19789_IG16
- ;; size=12 bbWeight=4 PerfScore 18.00
-G_M19789_IG06: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
- add w27, w24, #1
- cmp w27, w21
+ ;; size=16 bbWeight=4 PerfScore 20.00
+G_M19789_IG06: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0008 {x3}, byref, isz
+ add w26, w24, #1
+ cmp w26, w21
bhs G_M19789_IG24
- ldrh w28, [x26, w27, UXTW #2]
- cmp w28, #92
+ ldrh w27, [x3, w26, UXTW #2]
+ cmp w27, #92
bne G_M19789_IG08
- sxtw w24, w27
+ sxtw w24, w26
b G_M19789_IG16
;; size=32 bbWeight=2 PerfScore 16.00
G_M19789_IG07: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ; byrRegs -[x26]
+ ; byrRegs -[x3]
mov x0, x20
; gcrRegs +[x0]
mov w1, #94
@@ -132,86 +133,81 @@ G_M19789_IG07: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcr arg pop 0
b G_M19789_IG04
;; size=32 bbWeight=0.04 PerfScore 0.32
-G_M19789_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
- ; byrRegs +[x26]
- mov w4, wzr
+G_M19789_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
movz x3, #0xD1FFAB1E
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr w3, [x3]
tbz w3, #0, G_M19789_IG25
- ;; size=24 bbWeight=2 PerfScore 12.00
-G_M19789_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
- movz x5, #0xD1FFAB1E
- movk x5, #0xD1FFAB1E LSL #16
- movk x5, #0xD1FFAB1E LSL #32
- str x5, [fp, #0x10] // [V21 cse3]
- ldr x3, [x5]
+ ;; size=20 bbWeight=2 PerfScore 11.00
+G_M19789_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ movz x28, #0xD1FFAB1E
+ movk x28, #0xD1FFAB1E LSL #16
+ movk x28, #0xD1FFAB1E LSL #32
+ ldr x3, [x28]
; gcrRegs +[x3]
ldr w0, [x3, #0x08]
cmp w0, #0
ble G_M19789_IG16
- ;; size=32 bbWeight=2 PerfScore 20.00
-G_M19789_IG10: ; bbWeight=16, gcrefRegs=180008 {x3 x19 x20}, byrefRegs=4000000 {x26}, byref, isz
+ mov x4, xzr
+ ;; size=32 bbWeight=2 PerfScore 19.00
+G_M19789_IG10: ; bbWeight=16, gcrefRegs=180008 {x3 x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x3
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w4, w1
bhs G_M19789_IG24
- ubfiz x1, x4, #4, #32
+ lsl x1, x4, #4
add x1, x1, #16
add x0, x0, x1
; gcrRegs -[x0]
; byrRegs +[x0]
ldrh w0, [x0, #0x08]
; byrRegs -[x0]
- cmp w0, w28
+ cmp w0, w27
beq G_M19789_IG12
add w4, w4, #1
+ mov w4, w4
ldr w0, [x3, #0x08]
- str w4, [fp, #0x1C] // [V06 loc5]
cmp w0, w4
- ldr w4, [fp, #0x1C] // [V06 loc5]
bgt G_M19789_IG10
- ;; size=64 bbWeight=16 PerfScore 312.00
-G_M19789_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref
+ ;; size=60 bbWeight=16 PerfScore 272.00
+G_M19789_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x3]
b G_M19789_IG16
;; size=4 bbWeight=4 PerfScore 4.00
-G_M19789_IG12: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
+G_M19789_IG12: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ mov w27, w4
cmp w23, w24
bge G_M19789_IG13
- str w4, [fp, #0x1C] // [V06 loc5]
sub w3, w24, w23
mov x0, x20
; gcrRegs +[x0]
mov x1, x19
; gcrRegs +[x1]
mov w2, w23
- movz x6, #0xD1FFAB1E // code for System.Text.StringBuilder:Append(System.String,int,int):System.Text.StringBuilder:this
- movk x6, #0xD1FFAB1E LSL #16
- movk x6, #0xD1FFAB1E LSL #32
- ldr x6, [x6]
- blr x6
+ movz x4, #0xD1FFAB1E // code for System.Text.StringBuilder:Append(System.String,int,int):System.Text.StringBuilder:this
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #0xD1FFAB1E LSL #32
+ ldr x4, [x4]
+ blr x4
; gcrRegs -[x1]
; gcr arg pop 0
- ldr w4, [fp, #0x1C] // [V06 loc5]
- ;; size=52 bbWeight=2 PerfScore 24.00
-G_M19789_IG13: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
+ ;; size=48 bbWeight=2 PerfScore 19.00
+G_M19789_IG13: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x5, [fp, #0x10] // [V21 cse3]
- ldr x2, [x5]
+ ldr x2, [x28]
; gcrRegs +[x2]
ldr w1, [x2, #0x08]
- cmp w4, w1
+ cmp w27, w1
bhs G_M19789_IG24
- ubfiz x1, x4, #4, #32
+ ubfiz x1, x27, #4, #32
add x1, x1, #16
ldr x1, [x2, x1]
; gcrRegs +[x1]
cbz x1, G_M19789_IG15
- ;; size=36 bbWeight=2 PerfScore 30.00
-G_M19789_IG14: ; bbWeight=2.00, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=4000000 {x26}, byref
+ ;; size=32 bbWeight=2 PerfScore 26.00
+G_M19789_IG14: ; bbWeight=2.00, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
ldr w2, [x1, #0x08]
add x1, x1, #12
@@ -228,17 +224,16 @@ G_M19789_IG14: ; bbWeight=2.00, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=
; byrRegs -[x1]
; gcr arg pop 0
;; size=32 bbWeight=2.00 PerfScore 18.96
-G_M19789_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref
- sxtw w24, w27
+G_M19789_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ sxtw w24, w26
add w23, w24, #1
;; size=8 bbWeight=2 PerfScore 2.00
-G_M19789_IG16: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
+G_M19789_IG16: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w24, w24, #1
cmp w24, w25
blt G_M19789_IG05
;; size=12 bbWeight=4 PerfScore 8.00
G_M19789_IG17: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x26]
cmp w23, w22
bge G_M19789_IG19
;; size=8 bbWeight=1 PerfScore 1.50
@@ -286,12 +281,12 @@ G_M19789_IG21: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ldr x1, [x1]
;; size=20 bbWeight=1 PerfScore 5.00
...
+20 (+35.71%) : 267076.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
@@ -10,13 +10,14 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
; V01 loc0 [V01,T01] ( 4, 10 ) int -> x2
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+;* V03 loc2 [V03,T06] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) ubyte -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T04] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V07 tmp2 [V07,T05] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V08 tmp3 [V08,T03] ( 2, 5 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V09 tmp4 [V09,T02] ( 3, 6 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V09 tmp4 [V09,T02] ( 4, 10 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V10 tmp5 [V10,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -27,17 +28,20 @@ G_M59336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M59336_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
mov w2, wzr
- mov w3, wzr
cmp w1, #0
ble G_M59336_IG04
+ mov x3, xzr
;; size=16 bbWeight=1 PerfScore 2.50
G_M59336_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2]
+ cmp w3, w1
+ bhs G_M59336_IG06
+ ldrb w4, [x0, x3]
add w2, w4, w2
add w3, w3, #1
+ mov w3, w3
cmp w3, w1
blt G_M59336_IG03
- ;; size=20 bbWeight=4 PerfScore 22.00
+ ;; size=32 bbWeight=4 PerfScore 30.00
G_M59336_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov w0, w2
@@ -46,8 +50,13 @@ G_M59336_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M59336_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 8, PerfScore 28.50, instruction count 14, allocated bytes for code 56 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 36.50, instruction count 19, allocated bytes for code 76 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -58,7 +67,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+40.00%) : 153777.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
@@ -9,11 +9,12 @@
;
; V00 arg0 [V00,T01] ( 5, 11 ) int -> x0
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 17 ) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V06 cse0 [V06,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 10 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
+; V07 cse0 [V07,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -23,27 +24,36 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0
ble G_M1770_IG04
+ mov x3, xzr
movz w4, #0xD1FFAB1E
movk w4, #0xD1FFAB1E LSL #16
;; size=20 bbWeight=1 PerfScore 3.00
G_M1770_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2
+ bhs G_M1770_IG05
+ lsl x5, x3, #1
+ ldrh w5, [x1, x5]
eor w0, w5, w0
mul w0, w0, w4
add w3, w3, #1
+ mov w3, w3
cmp w3, w2
blt G_M1770_IG03
- ;; size=24 bbWeight=4 PerfScore 30.00
+ ;; size=40 bbWeight=4 PerfScore 42.00
G_M1770_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 36.50, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 48.50, instruction count 21, allocated bytes for code 84 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -54,7 +64,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+40.00%) : 122431.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
@@ -9,11 +9,12 @@
;
; V00 arg0 [V00,T01] ( 5, 11 ) int -> x0
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 17 ) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V06 cse0 [V06,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 10 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
+; V07 cse0 [V07,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -23,27 +24,36 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0
ble G_M1770_IG04
+ mov x3, xzr
movz w4, #0xD1FFAB1E
movk w4, #0xD1FFAB1E LSL #16
;; size=20 bbWeight=1 PerfScore 3.00
G_M1770_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2
+ bhs G_M1770_IG05
+ lsl x5, x3, #1
+ ldrh w5, [x1, x5]
eor w0, w5, w0
mul w0, w0, w4
add w3, w3, #1
+ mov w3, w3
cmp w3, w2
blt G_M1770_IG03
- ;; size=24 bbWeight=4 PerfScore 30.00
+ ;; size=40 bbWeight=4 PerfScore 42.00
G_M1770_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 36.50, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 48.50, instruction count 21, allocated bytes for code 84 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -54,7 +64,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries_tests.run.windows.arm64.Release.mch
-20 (-3.23%) : 451929.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
@@ -10,62 +10,61 @@
; Final local variable assignments
;
; V00 this [V00,T01] ( 10, 12.67) ref -> x19 this class-hnd single-def <System.Reflection.MethodBaseInvoker>
-; V01 arg1 [V01,T06] ( 4, 3 ) ref -> x20 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T05] ( 4, 3 ) ref -> x20 class-hnd single-def <System.Object>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Object]>
-; V03 arg3 [V03,T09] ( 3, 2 ) int -> [fp+0x3C] EH-live single-def
-; V04 loc0 [V04 ] ( 2, 2 ) struct (32) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.MethodBase+StackAllocatedByRefs>
-; V05 loc1 [V05,T10] ( 4, 3.83) long -> x23
-; V06 loc2 [V06,T00] ( 9, 14.83) int -> x4
+; V03 arg3 [V03,T08] ( 3, 2 ) int -> [fp+0x44] EH-live single-def
+; V04 loc0 [V04 ] ( 2, 2 ) struct (32) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.MethodBase+StackAllocatedByRefs>
+; V05 loc1 [V05,T09] ( 4, 3.83) long -> x23
+;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Object>
-; V08 loc4 [V08,T22] ( 2, 0 ) ref -> [fp+0x10] must-init class-hnd EH-live single-def <<unknown class>>
+; V08 loc4 [V08,T21] ( 2, 0 ) ref -> [fp+0x18] must-init class-hnd EH-live single-def <<unknown class>>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T13] ( 2, 3.67) long -> x24
+; V10 tmp1 [V10,T12] ( 2, 3.67) long -> x24
;* V11 tmp2 [V11 ] ( 0, 0 ) long -> zero-ref
;* V12 tmp3 [V12 ] ( 0, 0 ) struct ( 8) zero-ref <System.ByReference>
-; V13 tmp4 [V13,T23] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
-; V14 tmp5 [V14,T18] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
+; V13 tmp4 [V13,T22] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
+; V14 tmp5 [V14,T17] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
-; V16 tmp7 [V16,T21] ( 3, 0 ) int -> x0
+; V16 tmp7 [V16,T20] ( 3, 0 ) int -> x0
;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
-; V18 tmp9 [V18,T19] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V19 tmp10 [V19,T16] ( 3, 2 ) ref -> x0 "guarded devirt return temp"
+; V18 tmp9 [V18,T18] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V19 tmp10 [V19,T15] ( 3, 2 ) ref -> x0 "guarded devirt return temp"
; V20 tmp11 [V20,T04] ( 5, 6.50) ref -> x22 single-def "guarded devirt arg temp"
;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <System.Reflection.MethodBaseInvoker>
; V22 tmp13 [V22,T03] ( 6, 8 ) byref -> x23 single-def "Inlining Arg"
-; V23 tmp14 [V23,T14] ( 2, 2.14) byref -> x24 single-def "Inlining Arg"
-; V24 tmp15 [V24,T15] ( 2, 2.14) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
+; V23 tmp14 [V23,T13] ( 2, 2.14) byref -> x24 single-def "Inlining Arg"
+; V24 tmp15 [V24,T14] ( 2, 2.14) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
;* V25 tmp16 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V26 tmp17 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ByReference>
;* V27 tmp18 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Object>
;* V28 tmp19 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
;* V29 tmp20 [V29 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V30 tmp21 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ByReference>
-; V31 tmp22 [V31,T07] ( 3, 2.83) byref -> x21 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V32 tmp23 [V32,T08] ( 3, 2.83) int -> x22 single-def "field V02._length (fldOffset=0x8)" P-INDEP
-; V33 tmp24 [V33,T11] ( 3, 3.67) byref -> x5 "field V12.Value (fldOffset=0x0)" P-INDEP
-; V34 tmp25 [V34,T12] ( 2, 3.67) byref -> x5 "field V26.Value (fldOffset=0x0)" P-INDEP
-; V35 tmp26 [V35,T24] ( 2, 0 ) byref -> x5 "field V30.Value (fldOffset=0x0)" P-INDEP
+; V31 tmp22 [V31,T06] ( 3, 2.83) byref -> x21 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V32 tmp23 [V32,T07] ( 3, 2.83) int -> x22 single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V33 tmp24 [V33,T10] ( 3, 3.67) byref -> x5 "field V12.Value (fldOffset=0x0)" P-INDEP
+; V34 tmp25 [V34,T11] ( 2, 3.67) byref -> x5 "field V26.Value (fldOffset=0x0)" P-INDEP
+; V35 tmp26 [V35,T23] ( 2, 0 ) byref -> x5 "field V30.Value (fldOffset=0x0)" P-INDEP
; V36 tmp27 [V36,T02] ( 3, 11 ) ref -> x2 "arr expr"
-; V37 tmp28 [V37,T20] ( 3, 0 ) ref -> x0 "Field obj"
-; V38 PSPSym [V38,T17] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
-; V39 cse0 [V39,T05] ( 4, 5.50) long -> x25 "CSE - aggressive"
+; V37 tmp28 [V37,T19] ( 3, 0 ) ref -> x0 "Field obj"
+; V38 PSPSym [V38,T16] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
+; V39 tmp30 [V39,T00] ( 11, 16.67) long -> x4 "Widened primary induction variable"
;
-; Lcl frame size = 56
+; Lcl frame size = 64
G_M51382_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x80]!
- stp x19, x20, [sp, #0x48]
- stp x21, x22, [sp, #0x58]
- stp x23, x24, [sp, #0x68]
- str x25, [sp, #0x78]
+ stp x19, x20, [sp, #0x50]
+ stp x21, x22, [sp, #0x60]
+ stp x23, x24, [sp, #0x70]
mov fp, sp
- add x9, fp, #16
+ add x9, fp, #24
movi v16.16b, #0
stp q16, q16, [x9]
str xzr, [x9, #0x20]
add x5, sp, #128
- str x5, [fp, #0x40] // [V38 PSPSym]
- str w4, [fp, #0x3C] // [V03 arg3]
+ str x5, [fp, #0x48] // [V38 PSPSym]
+ str w4, [fp, #0x44] // [V03 arg3]
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
@@ -73,9 +72,9 @@ G_M51382_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x21, x2
; byrRegs +[x21]
mov w22, w3
- ;; size=68 bbWeight=1 PerfScore 13.00
-G_M51382_IG02: ; bbWeight=1, gcVars=0000000000400000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
- ; GC ptr vars +{V08 V22}
+ ;; size=64 bbWeight=1 PerfScore 12.00
+G_M51382_IG02: ; bbWeight=1, gcVars=0000000000200000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
+ ; GC ptr vars +{V08}
ldr w0, [x19, #0x40]
cmp w0, #4
cset x0, le
@@ -105,10 +104,10 @@ G_M51382_IG03: ; bbWeight=0.93, gcrefRegs=180000 {x19 x20}, byrefRegs=A00
;; size=12 bbWeight=0.93 PerfScore 4.20
G_M51382_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
; byrRegs -[x23]
- stp xzr, xzr, [fp, #0x18]
- stp xzr, xzr, [fp, #0x28]
- add x23, fp, #24 // [V04 loc0]
- mov w4, wzr
+ stp xzr, xzr, [fp, #0x20]
+ stp xzr, xzr, [fp, #0x30]
+ add x23, fp, #32 // [V04 loc0]
+ mov x4, xzr
b G_M51382_IG07
;; size=20 bbWeight=1 PerfScore 4.00
G_M51382_IG05: ; bbWeight=0.07, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=1A00000 {x21 x23 x24}, byref
@@ -137,7 +136,8 @@ G_M51382_IG06: ; bbWeight=1.83, gcrefRegs=180000 {x19 x20}, byrefRegs=200
; byrRegs -[x23] +[x5]
str x5, [x24]
add w4, w4, #1
- ;; size=8 bbWeight=1.83 PerfScore 2.75
+ mov w4, w4
+ ;; size=12 bbWeight=1.83 PerfScore 3.67
G_M51382_IG07: ; bbWeight=2.83, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
; byrRegs -[x5]
ldr w2, [x19, #0x40]
@@ -155,18 +155,17 @@ G_M51382_IG08: ; bbWeight=1.83, gcrefRegs=180000 {x19 x20}, byrefRegs=200
add x2, x2, #16
; gcrRegs -[x2]
; byrRegs +[x2]
- mov w25, w4
- lsl x0, x25, #2
+ lsl x0, x4, #2
ldr w2, [x2, x0]
; byrRegs -[x2]
tbnz w2, #0, G_M51382_IG14
cmp w4, w22
bhs G_M51382_IG13
- lsl x2, x25, #3
+ lsl x2, x4, #3
add x5, x21, x2
; byrRegs +[x5]
b G_M51382_IG06
- ;; size=64 bbWeight=1.83 PerfScore 34.83
+ ;; size=60 bbWeight=1.83 PerfScore 33.92
G_M51382_IG09: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x5 x21]
ldr x22, [x19, #0x18]
@@ -205,26 +204,25 @@ G_M51382_IG11: ; bbWeight=0.25, gcrefRegs=500000 {x20 x22}, byrefRegs=000
; gcr arg pop 0
;; size=20 bbWeight=0.25 PerfScore 2.00
G_M51382_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
- ; GC ptr vars -{V08 V22}
- ldr x25, [sp, #0x78]
- ldp x23, x24, [sp, #0x68]
- ldp x21, x22, [sp, #0x58]
- ldp x19, x20, [sp, #0x48]
+ ; GC ptr vars -{V08}
+ ldp x23, x24, [sp, #0x70]
+ ldp x21, x22, [sp, #0x60]
+ ldp x19, x20, [sp, #0x50]
ldp fp, lr, [sp], #0x80
ret lr
- ;; size=24 bbWeight=1 PerfScore 7.00
+ ;; size=20 bbWeight=1 PerfScore 5.00
G_M51382_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M51382_IG14: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
+G_M51382_IG14: ; bbWeight=0, gcVars=0000000000200000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
; gcrRegs +[x19-x20]
; byrRegs +[x21]
- ; GC ptr vars +{V08 V22}
+ ; GC ptr vars +{V08}
cmp w4, w22
bhs G_M51382_IG13
- lsl x0, x25, #3
+ lsl x0, x4, #3
ldr x0, [x21, x0]
; gcrRegs +[x0]
ldrsb wzr, [x0]
@@ -236,15 +234,14 @@ G_M51382_IG15: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
; gcrRegs -[x19-x20]
; byrRegs -[x5 x21]
stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- stp x23, x24, [sp, #0x38]
- str x25, [sp, #0x48]
- ldr x1, [x1, #-0x40]
- str x1, [sp, #0x10]
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
+ stp x23, x24, [sp, #0x40]
+ ldr x1, [x1, #-0x38]
+ str x1, [sp, #0x18]
sub fp, x1, #128
- ;; size=32 bbWeight=0 PerfScore 0.00
-G_M51382_IG16: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M51382_IG16: ; bbWeight=0, gcVars=0000000000200000 {V08}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
mov x1, x0
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -262,32 +259,30 @@ G_M51382_IG16: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=000
b G_M51382_IG18
;; size=36 bbWeight=0 PerfScore 0.00
G_M51382_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V08 V22}
- str x1, [fp, #0x10] // [V08 loc4]
+ ; GC ptr vars -{V08}
+ str x1, [fp, #0x18] // [V08 loc4]
; GC ptr vars +{V08}
- ldr w4, [fp, #0x3C] // [V03 arg3]
+ ldr w4, [fp, #0x44] // [V03 arg3]
tst w4, #0xD1FFAB1E
cset x0, eq
;; size=16 bbWeight=0 PerfScore 0.00
-G_M51382_IG18: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet epilog, nogc
+G_M51382_IG18: ; bbWeight=0, gcVars=0000000000200000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet epilog, nogc
; gcrRegs -[x1]
- ldr x25, [sp, #0x48]
- ldp x23, x24, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
+ ldp x23, x24, [sp, #0x40]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x50
ret lr
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M51382_IG19: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M51382_IG19: ; bbWeight=0, gcVars=0000000000200000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- stp x23, x24, [sp, #0x38]
- str x25, [sp, #0x48]
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
+ stp x23, x24, [sp, #0x40]
add x3, fp, #128
- str x3, [sp, #0x10]
...
-20 (-3.21%) : 304065.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
@@ -9,63 +9,62 @@
; 1 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 10, 12.54) ref -> x19 this class-hnd single-def <System.Reflection.MethodBaseInvoker>
-; V01 arg1 [V01,T06] ( 4, 3 ) ref -> x20 class-hnd single-def <System.Object>
+; V00 this [V00,T01] ( 10, 12.54) ref -> x19 this class-hnd single-def <System.Reflection.MethodBaseInvoker>
+; V01 arg1 [V01,T05] ( 4, 3 ) ref -> x20 class-hnd single-def <System.Object>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Object]>
-; V03 arg3 [V03,T10] ( 3, 2 ) int -> [fp+0x3C] EH-live single-def
-; V04 loc0 [V04 ] ( 2, 2.02) struct (32) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.MethodBase+StackAllocatedByRefs>
-; V05 loc1 [V05,T11] ( 4, 3.77) long -> x23
-; V06 loc2 [V06,T01] ( 9, 14.30) int -> x4
+; V03 arg3 [V03,T09] ( 3, 2 ) int -> [fp+0x44] EH-live single-def
+; V04 loc0 [V04 ] ( 2, 2.02) struct (32) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.MethodBase+StackAllocatedByRefs>
+; V05 loc1 [V05,T10] ( 4, 3.77) long -> x23
+;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Object>
-; V08 loc4 [V08,T23] ( 2, 0 ) ref -> [fp+0x10] must-init class-hnd EH-live single-def <<unknown class>>
+; V08 loc4 [V08,T22] ( 2, 0 ) ref -> [fp+0x18] must-init class-hnd EH-live single-def <<unknown class>>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T13] ( 2, 3.51) long -> x24
+; V10 tmp1 [V10,T12] ( 2, 3.51) long -> x24
;* V11 tmp2 [V11 ] ( 0, 0 ) long -> zero-ref
;* V12 tmp3 [V12 ] ( 0, 0 ) struct ( 8) zero-ref <System.ByReference>
-; V13 tmp4 [V13,T24] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
-; V14 tmp5 [V14,T20] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
+; V13 tmp4 [V13,T23] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
+; V14 tmp5 [V14,T19] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
-; V16 tmp7 [V16,T22] ( 3, 0 ) int -> x0
+; V16 tmp7 [V16,T21] ( 3, 0 ) int -> x0
;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
-; V18 tmp9 [V18,T21] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V19 tmp10 [V19,T17] ( 3, 2 ) ref -> x0 "guarded devirt return temp"
+; V18 tmp9 [V18,T20] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V19 tmp10 [V19,T16] ( 3, 2 ) ref -> x0 "guarded devirt return temp"
; V20 tmp11 [V20,T04] ( 5, 6.14) ref -> x22 single-def "guarded devirt arg temp"
;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <System.Reflection.MethodBaseInvoker>
; V22 tmp13 [V22,T03] ( 6, 8.08) byref -> x23 single-def "Inlining Arg"
-; V23 tmp14 [V23,T15] ( 2, 2.16) byref -> x24 single-def "Inlining Arg"
-; V24 tmp15 [V24,T16] ( 2, 2.16) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
+; V23 tmp14 [V23,T14] ( 2, 2.16) byref -> x24 single-def "Inlining Arg"
+; V24 tmp15 [V24,T15] ( 2, 2.16) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
;* V25 tmp16 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V26 tmp17 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ByReference>
;* V27 tmp18 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Object>
;* V28 tmp19 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
;* V29 tmp20 [V29 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V30 tmp21 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ByReference>
-; V31 tmp22 [V31,T07] ( 3, 2.76) byref -> x21 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V32 tmp23 [V32,T08] ( 3, 2.76) int -> x22 single-def "field V02._length (fldOffset=0x8)" P-INDEP
-; V33 tmp24 [V33,T12] ( 3, 3.51) byref -> x5 "field V12.Value (fldOffset=0x0)" P-INDEP
-; V34 tmp25 [V34,T19] ( 2, 0.78) byref -> x5 "field V26.Value (fldOffset=0x0)" P-INDEP
-; V35 tmp26 [V35,T14] ( 2, 2.73) byref -> x5 "field V30.Value (fldOffset=0x0)" P-INDEP
+; V31 tmp22 [V31,T06] ( 3, 2.76) byref -> x21 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V32 tmp23 [V32,T07] ( 3, 2.76) int -> x22 single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V33 tmp24 [V33,T11] ( 3, 3.51) byref -> x5 "field V12.Value (fldOffset=0x0)" P-INDEP
+; V34 tmp25 [V34,T18] ( 2, 0.78) byref -> x5 "field V26.Value (fldOffset=0x0)" P-INDEP
+; V35 tmp26 [V35,T13] ( 2, 2.73) byref -> x5 "field V30.Value (fldOffset=0x0)" P-INDEP
; V36 tmp27 [V36,T02] ( 3, 10.53) ref -> x2 "arr expr"
-; V37 tmp28 [V37,T09] ( 3, 4.10) ref -> x2 "Field obj"
-; V38 PSPSym [V38,T18] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
-; V39 cse0 [V39,T05] ( 4, 5.27) long -> x25 "CSE - aggressive"
+; V37 tmp28 [V37,T08] ( 3, 4.10) ref -> x2 "Field obj"
+; V38 PSPSym [V38,T17] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
+; V39 tmp30 [V39,T00] ( 11, 16.05) long -> x4 "Widened primary induction variable"
;
-; Lcl frame size = 56
+; Lcl frame size = 64
G_M51382_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x80]!
- stp x19, x20, [sp, #0x48]
- stp x21, x22, [sp, #0x58]
- stp x23, x24, [sp, #0x68]
- str x25, [sp, #0x78]
+ stp x19, x20, [sp, #0x50]
+ stp x21, x22, [sp, #0x60]
+ stp x23, x24, [sp, #0x70]
mov fp, sp
- add x9, fp, #16
+ add x9, fp, #24
movi v16.16b, #0
stp q16, q16, [x9]
str xzr, [x9, #0x20]
add x5, sp, #128
- str x5, [fp, #0x40] // [V38 PSPSym]
- str w4, [fp, #0x3C] // [V03 arg3]
+ str x5, [fp, #0x48] // [V38 PSPSym]
+ str w4, [fp, #0x44] // [V03 arg3]
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
@@ -73,9 +72,9 @@ G_M51382_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x21, x2
; byrRegs +[x21]
mov w22, w3
- ;; size=68 bbWeight=1 PerfScore 13.00
-G_M51382_IG02: ; bbWeight=1, gcVars=0000000000800000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
- ; GC ptr vars +{V08 V23}
+ ;; size=64 bbWeight=1 PerfScore 12.00
+G_M51382_IG02: ; bbWeight=1, gcVars=0000000000400000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
+ ; GC ptr vars +{V08 V22}
ldr w0, [x19, #0x40]
cmp w0, #4
cset x0, le
@@ -107,10 +106,10 @@ G_M51382_IG04: ; bbWeight=0.94, gcrefRegs=180000 {x19 x20}, byrefRegs=A00
;; size=12 bbWeight=0.94 PerfScore 4.24
G_M51382_IG05: ; bbWeight=1.01, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
; byrRegs -[x23]
- stp xzr, xzr, [fp, #0x18]
- stp xzr, xzr, [fp, #0x28]
- add x23, fp, #24 // [V04 loc0]
- mov w4, wzr
+ stp xzr, xzr, [fp, #0x20]
+ stp xzr, xzr, [fp, #0x30]
+ add x23, fp, #32 // [V04 loc0]
+ mov x4, xzr
b G_M51382_IG09
;; size=20 bbWeight=1.01 PerfScore 4.04
G_M51382_IG06: ; bbWeight=0.07, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=1A00000 {x21 x23 x24}, byref
@@ -139,7 +138,7 @@ G_M51382_IG07: ; bbWeight=1.37, gcrefRegs=180000 {x19 x20}, byrefRegs=200
; byrRegs -[x23]
cmp w4, w22
bhs G_M51382_IG17
- lsl x2, x25, #3
+ lsl x2, x4, #3
ldr x2, [x21, x2]
; gcrRegs +[x2]
ldrsb wzr, [x2]
@@ -150,7 +149,8 @@ G_M51382_IG08: ; bbWeight=1.76, gcrefRegs=180000 {x19 x20}, byrefRegs=200
; gcrRegs -[x2]
str x5, [x24]
add w4, w4, #1
- ;; size=8 bbWeight=1.76 PerfScore 2.63
+ mov w4, w4
+ ;; size=12 bbWeight=1.76 PerfScore 3.51
G_M51382_IG09: ; bbWeight=2.76, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
; byrRegs -[x5]
ldr w2, [x19, #0x40]
@@ -168,12 +168,11 @@ G_M51382_IG10: ; bbWeight=1.76, gcrefRegs=180000 {x19 x20}, byrefRegs=200
add x2, x2, #16
; gcrRegs -[x2]
; byrRegs +[x2]
- mov w25, w4
- lsl x0, x25, #2
+ lsl x0, x4, #2
ldr w2, [x2, x0]
; byrRegs -[x2]
tbnz w2, #0, G_M51382_IG07
- ;; size=44 bbWeight=1.76 PerfScore 26.33
+ ;; size=40 bbWeight=1.76 PerfScore 25.45
G_M51382_IG11: ; bbWeight=0.39, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
b G_M51382_IG16
;; size=4 bbWeight=0.39 PerfScore 0.39
@@ -215,21 +214,20 @@ G_M51382_IG14: ; bbWeight=0.07, gcrefRegs=500000 {x20 x22}, byrefRegs=000
; gcr arg pop 0
;; size=20 bbWeight=0.07 PerfScore 0.56
G_M51382_IG15: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
- ; GC ptr vars -{V08 V23}
- ldr x25, [sp, #0x78]
- ldp x23, x24, [sp, #0x68]
- ldp x21, x22, [sp, #0x58]
- ldp x19, x20, [sp, #0x48]
+ ; GC ptr vars -{V08 V22}
+ ldp x23, x24, [sp, #0x70]
+ ldp x21, x22, [sp, #0x60]
+ ldp x19, x20, [sp, #0x50]
ldp fp, lr, [sp], #0x80
ret lr
- ;; size=24 bbWeight=1 PerfScore 7.00
-G_M51382_IG16: ; bbWeight=0.39, gcVars=0000000000800000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
+ ;; size=20 bbWeight=1 PerfScore 5.00
+G_M51382_IG16: ; bbWeight=0.39, gcVars=0000000000400000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
; gcrRegs -[x0] +[x19-x20]
; byrRegs +[x21]
- ; GC ptr vars +{V08 V23}
+ ; GC ptr vars +{V08 V22}
cmp w4, w22
bhs G_M51382_IG17
- lsl x0, x25, #3
+ lsl x0, x4, #3
add x5, x21, x0
; byrRegs +[x5]
b G_M51382_IG08
@@ -237,24 +235,23 @@ G_M51382_IG16: ; bbWeight=0.39, gcVars=0000000000800000 {V08}, gcrefRegs=
G_M51382_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19-x20]
; byrRegs -[x5 x21]
- ; GC ptr vars -{V08 V23}
+ ; GC ptr vars -{V08 V22}
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-G_M51382_IG18: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M51382_IG18: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; gcrRegs +[x0]
- ; GC ptr vars +{V08 V23}
+ ; GC ptr vars +{V08 V22}
stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- stp x23, x24, [sp, #0x38]
- str x25, [sp, #0x48]
- ldr x1, [x1, #-0x40]
- str x1, [sp, #0x10]
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
+ stp x23, x24, [sp, #0x40]
+ ldr x1, [x1, #-0x38]
+ str x1, [sp, #0x18]
sub fp, x1, #128
- ;; size=32 bbWeight=0 PerfScore 0.00
-G_M51382_IG19: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M51382_IG19: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
mov x1, x0
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -272,32 +269,30 @@ G_M51382_IG19: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=000
b G_M51382_IG21
;; size=36 bbWeight=0 PerfScore 0.00
G_M51382_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V08 V23}
- str x1, [fp, #0x10] // [V08 loc4]
+ ; GC ptr vars -{V08 V22}
+ str x1, [fp, #0x18] // [V08 loc4]
; GC ptr vars +{V08}
- ldr w4, [fp, #0x3C] // [V03 arg3]
+ ldr w4, [fp, #0x44] // [V03 arg3]
tst w4, #0xD1FFAB1E
cset x0, eq
;; size=16 bbWeight=0 PerfScore 0.00
-G_M51382_IG21: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet epilog, nogc
+G_M51382_IG21: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet epilog, nogc
; gcrRegs -[x1]
- ldr x25, [sp, #0x48]
- ldp x23, x24, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
+ ldp x23, x24, [sp, #0x40]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x50
ret lr
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M51382_IG22: ; bbWeight=0, gcVars=0000000000800000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ;; size=20 bbWeight=0 PerfScore 0.00
...
-20 (-3.21%) : 221418.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
@@ -9,63 +9,62 @@
; 1 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 10, 12.33) ref -> x19 this class-hnd single-def <System.Reflection.MethodBaseInvoker>
+; V00 this [V00,T01] ( 10, 12.33) ref -> x19 this class-hnd single-def <System.Reflection.MethodBaseInvoker>
; V01 arg1 [V01,T05] ( 5, 3.66) ref -> x20 class-hnd single-def <System.Object>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Object]>
-; V03 arg3 [V03,T09] ( 3, 2 ) int -> [fp+0x3C] EH-live single-def
-; V04 loc0 [V04 ] ( 2, 2 ) struct (32) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.MethodBase+StackAllocatedByRefs>
-; V05 loc1 [V05,T10] ( 4, 3.67) long -> x23
-; V06 loc2 [V06,T01] ( 9, 13.67) int -> x4
+; V03 arg3 [V03,T08] ( 3, 2 ) int -> [fp+0x44] EH-live single-def
+; V04 loc0 [V04 ] ( 2, 2 ) struct (32) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.MethodBase+StackAllocatedByRefs>
+; V05 loc1 [V05,T09] ( 4, 3.67) long -> x23
+;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Object>
-; V08 loc4 [V08,T22] ( 2, 0 ) ref -> [fp+0x10] must-init class-hnd EH-live single-def <<unknown class>>
+; V08 loc4 [V08,T21] ( 2, 0 ) ref -> [fp+0x18] must-init class-hnd EH-live single-def <<unknown class>>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T13] ( 2, 3.33) long -> x24
+; V10 tmp1 [V10,T12] ( 2, 3.33) long -> x24
;* V11 tmp2 [V11 ] ( 0, 0 ) long -> zero-ref
;* V12 tmp3 [V12 ] ( 0, 0 ) struct ( 8) zero-ref <System.ByReference>
-; V13 tmp4 [V13,T23] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
-; V14 tmp5 [V14,T18] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
+; V13 tmp4 [V13,T22] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object>
+; V14 tmp5 [V14,T17] ( 3, 0 ) ref -> x1 class-hnd single-def "dup spill" <<unknown class>>
;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
-; V16 tmp7 [V16,T21] ( 3, 0 ) int -> x0
+; V16 tmp7 [V16,T20] ( 3, 0 ) int -> x0
;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
-; V18 tmp9 [V18,T19] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V19 tmp10 [V19,T16] ( 3, 2 ) ref -> x0 "guarded devirt return temp"
+; V18 tmp9 [V18,T18] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V19 tmp10 [V19,T15] ( 3, 2 ) ref -> x0 "guarded devirt return temp"
; V20 tmp11 [V20,T04] ( 5, 6.68) ref -> x22 single-def "guarded devirt arg temp"
;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <System.Reflection.MethodBaseInvoker>
; V22 tmp13 [V22,T03] ( 6, 8 ) byref -> x23 single-def "Inlining Arg"
-; V23 tmp14 [V23,T14] ( 2, 2.08) byref -> x24 single-def "Inlining Arg"
-; V24 tmp15 [V24,T15] ( 2, 2.08) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
+; V23 tmp14 [V23,T13] ( 2, 2.08) byref -> x24 single-def "Inlining Arg"
+; V24 tmp15 [V24,T14] ( 2, 2.08) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
;* V25 tmp16 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V26 tmp17 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ByReference>
;* V27 tmp18 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Object>
;* V28 tmp19 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
;* V29 tmp20 [V29 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V30 tmp21 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ByReference>
-; V31 tmp22 [V31,T07] ( 3, 2.67) byref -> x21 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V32 tmp23 [V32,T08] ( 3, 2.67) int -> x22 single-def "field V02._length (fldOffset=0x8)" P-INDEP
-; V33 tmp24 [V33,T11] ( 3, 3.33) byref -> x5 "field V12.Value (fldOffset=0x0)" P-INDEP
-; V34 tmp25 [V34,T12] ( 2, 3.33) byref -> x5 "field V26.Value (fldOffset=0x0)" P-INDEP
-; V35 tmp26 [V35,T24] ( 2, 0 ) byref -> x5 "field V30.Value (fldOffset=0x0)" P-INDEP
+; V31 tmp22 [V31,T06] ( 3, 2.67) byref -> x21 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V32 tmp23 [V32,T07] ( 3, 2.67) int -> x22 single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V33 tmp24 [V33,T10] ( 3, 3.33) byref -> x5 "field V12.Value (fldOffset=0x0)" P-INDEP
+; V34 tmp25 [V34,T11] ( 2, 3.33) byref -> x5 "field V26.Value (fldOffset=0x0)" P-INDEP
+; V35 tmp26 [V35,T23] ( 2, 0 ) byref -> x5 "field V30.Value (fldOffset=0x0)" P-INDEP
; V36 tmp27 [V36,T02] ( 3, 10.00) ref -> x2 "arr expr"
-; V37 tmp28 [V37,T20] ( 3, 0 ) ref -> x0 "Field obj"
-; V38 PSPSym [V38,T17] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
-; V39 cse0 [V39,T06] ( 4, 5.00) long -> x25 "CSE - aggressive"
+; V37 tmp28 [V37,T19] ( 3, 0 ) ref -> x0 "Field obj"
+; V38 PSPSym [V38,T16] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
+; V39 tmp30 [V39,T00] ( 11, 15.33) long -> x4 "Widened primary induction variable"
;
-; Lcl frame size = 56
+; Lcl frame size = 64
G_M51382_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x80]!
- stp x19, x20, [sp, #0x48]
- stp x21, x22, [sp, #0x58]
- stp x23, x24, [sp, #0x68]
- str x25, [sp, #0x78]
+ stp x19, x20, [sp, #0x50]
+ stp x21, x22, [sp, #0x60]
+ stp x23, x24, [sp, #0x70]
mov fp, sp
- add x9, fp, #16
+ add x9, fp, #24
movi v16.16b, #0
stp q16, q16, [x9]
str xzr, [x9, #0x20]
add x5, sp, #128
- str x5, [fp, #0x40] // [V38 PSPSym]
- str w4, [fp, #0x3C] // [V03 arg3]
+ str x5, [fp, #0x48] // [V38 PSPSym]
+ str w4, [fp, #0x44] // [V03 arg3]
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
@@ -73,9 +72,9 @@ G_M51382_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x21, x2
; byrRegs +[x21]
mov w22, w3
- ;; size=68 bbWeight=1 PerfScore 13.00
-G_M51382_IG02: ; bbWeight=1, gcVars=0000000000400000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
- ; GC ptr vars +{V08 V22}
+ ;; size=64 bbWeight=1 PerfScore 12.00
+G_M51382_IG02: ; bbWeight=1, gcVars=0000000000200000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
+ ; GC ptr vars +{V08}
ldr w0, [x19, #0x40]
cmp w0, #4
cset x0, le
@@ -105,10 +104,10 @@ G_M51382_IG03: ; bbWeight=0.96, gcrefRegs=180000 {x19 x20}, byrefRegs=A00
;; size=12 bbWeight=0.96 PerfScore 4.32
G_M51382_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
; byrRegs -[x23]
- stp xzr, xzr, [fp, #0x18]
- stp xzr, xzr, [fp, #0x28]
- add x23, fp, #24 // [V04 loc0]
- mov w4, wzr
+ stp xzr, xzr, [fp, #0x20]
+ stp xzr, xzr, [fp, #0x30]
+ add x23, fp, #32 // [V04 loc0]
+ mov x4, xzr
b G_M51382_IG07
;; size=20 bbWeight=1 PerfScore 4.00
G_M51382_IG05: ; bbWeight=0.04, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=1A00000 {x21 x23 x24}, byref
@@ -137,7 +136,8 @@ G_M51382_IG06: ; bbWeight=1.67, gcrefRegs=180000 {x19 x20}, byrefRegs=200
; byrRegs -[x23] +[x5]
str x5, [x24]
add w4, w4, #1
- ;; size=8 bbWeight=1.67 PerfScore 2.50
+ mov w4, w4
+ ;; size=12 bbWeight=1.67 PerfScore 3.33
G_M51382_IG07: ; bbWeight=2.67, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
; byrRegs -[x5]
ldr w2, [x19, #0x40]
@@ -155,18 +155,17 @@ G_M51382_IG08: ; bbWeight=1.67, gcrefRegs=180000 {x19 x20}, byrefRegs=200
add x2, x2, #16
; gcrRegs -[x2]
; byrRegs +[x2]
- mov w25, w4
- lsl x3, x25, #2
+ lsl x3, x4, #2
ldr w2, [x2, x3]
; byrRegs -[x2]
tbnz w2, #0, G_M51382_IG14
cmp w4, w22
bhs G_M51382_IG13
- lsl x2, x25, #3
+ lsl x2, x4, #3
add x5, x21, x2
; byrRegs +[x5]
b G_M51382_IG06
- ;; size=64 bbWeight=1.67 PerfScore 31.67
+ ;; size=60 bbWeight=1.67 PerfScore 30.83
G_M51382_IG09: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x5 x21]
ldr x22, [x19, #0x18]
@@ -206,26 +205,25 @@ G_M51382_IG11: ; bbWeight=0.34, gcrefRegs=500000 {x20 x22}, byrefRegs=000
; gcr arg pop 0
;; size=20 bbWeight=0.34 PerfScore 2.72
G_M51382_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
- ; GC ptr vars -{V08 V22}
- ldr x25, [sp, #0x78]
- ldp x23, x24, [sp, #0x68]
- ldp x21, x22, [sp, #0x58]
- ldp x19, x20, [sp, #0x48]
+ ; GC ptr vars -{V08}
+ ldp x23, x24, [sp, #0x70]
+ ldp x21, x22, [sp, #0x60]
+ ldp x19, x20, [sp, #0x50]
ldp fp, lr, [sp], #0x80
ret lr
- ;; size=24 bbWeight=1 PerfScore 7.00
+ ;; size=20 bbWeight=1 PerfScore 5.00
G_M51382_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M51382_IG14: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
+G_M51382_IG14: ; bbWeight=0, gcVars=0000000000200000 {V08}, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
; gcrRegs +[x19-x20]
; byrRegs +[x21]
- ; GC ptr vars +{V08 V22}
+ ; GC ptr vars +{V08}
cmp w4, w22
bhs G_M51382_IG13
- lsl x0, x25, #3
+ lsl x0, x4, #3
ldr x0, [x21, x0]
; gcrRegs +[x0]
ldrsb wzr, [x0]
@@ -237,15 +235,14 @@ G_M51382_IG15: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
; gcrRegs -[x19-x20]
; byrRegs -[x5 x21]
stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- stp x23, x24, [sp, #0x38]
- str x25, [sp, #0x48]
- ldr x1, [x1, #-0x40]
- str x1, [sp, #0x10]
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
+ stp x23, x24, [sp, #0x40]
+ ldr x1, [x1, #-0x38]
+ str x1, [sp, #0x18]
sub fp, x1, #128
- ;; size=32 bbWeight=0 PerfScore 0.00
-G_M51382_IG16: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M51382_IG16: ; bbWeight=0, gcVars=0000000000200000 {V08}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
mov x1, x0
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -263,32 +260,30 @@ G_M51382_IG16: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=000
b G_M51382_IG18
;; size=36 bbWeight=0 PerfScore 0.00
G_M51382_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V08 V22}
- str x1, [fp, #0x10] // [V08 loc4]
+ ; GC ptr vars -{V08}
+ str x1, [fp, #0x18] // [V08 loc4]
; GC ptr vars +{V08}
- ldr w4, [fp, #0x3C] // [V03 arg3]
+ ldr w4, [fp, #0x44] // [V03 arg3]
tst w4, #0xD1FFAB1E
cset x0, eq
;; size=16 bbWeight=0 PerfScore 0.00
-G_M51382_IG18: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet epilog, nogc
+G_M51382_IG18: ; bbWeight=0, gcVars=0000000000200000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet epilog, nogc
; gcrRegs -[x1]
- ldr x25, [sp, #0x48]
- ldp x23, x24, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
+ ldp x23, x24, [sp, #0x40]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x50
ret lr
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M51382_IG19: ; bbWeight=0, gcVars=0000000000400000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M51382_IG19: ; bbWeight=0, gcVars=0000000000200000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- stp x23, x24, [sp, #0x38]
- str x25, [sp, #0x48]
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
+ stp x23, x24, [sp, #0x40]
add x3, fp, #128
...
+24 (+40.00%) : 595447.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
@@ -10,11 +10,12 @@
;
; V00 arg0 [V00,T01] ( 5, 33.70) int -> x0
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 62.40) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 16.35) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 17.35) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V06 cse0 [V06,T04] ( 2, 16.29) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 32.70) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T00] ( 6, 77.69) long -> x3 "Widened primary induction variable"
+; V07 cse0 [V07,T04] ( 2, 16.29) int -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -24,29 +25,38 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0
ble G_M1770_IG05
- ;; size=12 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG03: ; bbWeight=0.94, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
+ mov x3, xzr
movz w4, #0xD1FFAB1E
movk w4, #0xD1FFAB1E LSL #16
- ;; size=8 bbWeight=0.94 PerfScore 0.94
+ ;; size=12 bbWeight=0.94 PerfScore 1.41
G_M1770_IG04: ; bbWeight=15.35, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2
+ bhs G_M1770_IG06
+ lsl x5, x3, #1
+ ldrh w5, [x1, x5]
eor w0, w5, w0
mul w0, w0, w4
add w3, w3, #1
+ mov w3, w3
cmp w3, w2
blt G_M1770_IG04
- ;; size=24 bbWeight=15.35 PerfScore 115.13
+ ;; size=40 bbWeight=15.35 PerfScore 161.18
G_M1770_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 121.57, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
+; Total bytes of code 84, prolog size 8, PerfScore 167.59, instruction count 21, allocated bytes for code 84 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
; ============================================================
Unwind Info:
@@ -57,7 +67,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+40.00%) : 52224.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
@@ -10,11 +10,12 @@
;
; V00 arg0 [V00,T01] ( 5, 26.06) int -> x0
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 47.12) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 12.53) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 13.53) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V06 cse0 [V06,T04] ( 2, 12.45) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 25.06) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T00] ( 6, 58.57) long -> x3 "Widened primary induction variable"
+; V07 cse0 [V07,T04] ( 2, 12.45) int -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -24,29 +25,38 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0
ble G_M1770_IG05
- ;; size=12 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG03: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
+ mov x3, xzr
movz w4, #0xD1FFAB1E
movk w4, #0xD1FFAB1E LSL #16
- ;; size=8 bbWeight=0.92 PerfScore 0.92
+ ;; size=12 bbWeight=0.92 PerfScore 1.38
G_M1770_IG04: ; bbWeight=11.53, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2
+ bhs G_M1770_IG06
+ lsl x5, x3, #1
+ ldrh w5, [x1, x5]
eor w0, w5, w0
mul w0, w0, w4
add w3, w3, #1
+ mov w3, w3
cmp w3, w2
blt G_M1770_IG04
- ;; size=24 bbWeight=11.53 PerfScore 86.48
+ ;; size=40 bbWeight=11.53 PerfScore 121.07
G_M1770_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 92.90, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
+; Total bytes of code 84, prolog size 8, PerfScore 127.45, instruction count 21, allocated bytes for code 84 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
; ============================================================
Unwind Info:
@@ -57,7 +67,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+40.00%) : 86548.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
@@ -10,11 +10,12 @@
;
; V00 arg0 [V00,T01] ( 5, 24.33) int -> x0
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 43.66) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 11.67) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 12.67) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V06 cse0 [V06,T04] ( 2, 11.58) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 23.33) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T00] ( 6, 54.24) long -> x3 "Widened primary induction variable"
+; V07 cse0 [V07,T04] ( 2, 11.58) int -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -24,29 +25,38 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0
ble G_M1770_IG05
- ;; size=12 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG03: ; bbWeight=0.91, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
+ mov x3, xzr
movz w4, #0xD1FFAB1E
movk w4, #0xD1FFAB1E LSL #16
- ;; size=8 bbWeight=0.91 PerfScore 0.91
+ ;; size=12 bbWeight=0.91 PerfScore 1.37
G_M1770_IG04: ; bbWeight=10.67, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2
+ bhs G_M1770_IG06
+ lsl x5, x3, #1
+ ldrh w5, [x1, x5]
eor w0, w5, w0
mul w0, w0, w4
add w3, w3, #1
+ mov w3, w3
cmp w3, w2
blt G_M1770_IG04
- ;; size=24 bbWeight=10.67 PerfScore 79.99
+ ;; size=40 bbWeight=10.67 PerfScore 111.99
G_M1770_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 86.41, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
+; Total bytes of code 84, prolog size 8, PerfScore 118.36, instruction count 21, allocated bytes for code 84 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
; ============================================================
Unwind Info:
@@ -57,7 +67,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
-28 (-12.50%) : 183308.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
@@ -8,28 +8,32 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 5, 4.50) ref -> x0 this class-hnd single-def <System.Xml.XmlSubtreeReader>
-; V01 arg1 [V01,T04] ( 3, 6 ) ref -> x1 class-hnd single-def <System.String>
-; V02 arg2 [V02,T07] ( 3, 4 ) ref -> x2 class-hnd single-def <System.String>
-; V03 loc0 [V03,T01] ( 9, 22.50) int -> x14
-; V04 loc1 [V04,T17] ( 2, 1 ) ref -> x4 class-hnd exact <<unknown class>>
+; V00 this [V00,T07] ( 5, 4.50) ref -> x0 this class-hnd single-def <System.Xml.XmlSubtreeReader>
+; V01 arg1 [V01,T06] ( 3, 6 ) ref -> x1 class-hnd single-def <System.String>
+; V02 arg2 [V02,T09] ( 3, 4 ) ref -> x2 class-hnd single-def <System.String>
+; V03 loc0 [V03,T13] ( 3, 1.50) int -> x15
+; V04 loc1 [V04,T18] ( 2, 1 ) ref -> x2 class-hnd exact <<unknown class>>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T09] ( 3, 3 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
-; V07 tmp2 [V07,T14] ( 2, 2 ) ref -> x12 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
+;* V06 tmp1 [V06,T19] ( 0, 0 ) ref -> zero-ref class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
+; V07 tmp2 [V07,T14] ( 2, 2 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V10 tmp5 [V10,T00] ( 3, 24 ) ref -> x12 "arr expr"
-;* V11 tmp6 [V11,T08] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V12 tmp7 [V12,T18] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V13 tmp8 [V13,T10] ( 3, 3 ) ref -> x12 "arr expr"
-; V14 tmp9 [V14,T12] ( 3, 3 ) int -> xip0 "index expr"
-; V15 tmp10 [V15,T11] ( 3, 3 ) ref -> x3 "arr expr"
+; V10 tmp5 [V10,T00] ( 3, 24 ) ref -> xip0 "arr expr"
+;* V11 tmp6 [V11,T10] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V12 tmp7 [V12,T20] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V13 tmp8 [V13,T21] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V14 tmp9 [V14,T11] ( 3, 3 ) int -> x15 "index expr"
+;* V15 tmp10 [V15,T22] ( 0, 0 ) ref -> zero-ref "arr expr"
; V16 tmp11 [V16,T15] ( 2, 2 ) int -> x14 "index expr"
-; V17 cse0 [V17,T02] ( 4, 10.50) ref -> x4 "CSE - aggressive"
-; V18 cse1 [V18,T13] ( 5, 2.50) int -> x1 "CSE - aggressive"
-; V19 cse2 [V19,T03] ( 5, 6.50) ref -> x3 hoist "CSE - aggressive"
-; V20 cse3 [V20,T06] ( 4, 6.50) int -> x15 "CSE - aggressive"
-; V21 cse4 [V21,T16] ( 3, 1.50) long -> x2 "CSE - moderate"
+; V17 tmp12 [V17,T01] ( 7, 21.50) long -> x15 "Widened primary induction variable"
+; V18 cse0 [V18,T03] ( 3, 10 ) ref -> xip0 "CSE - aggressive"
+; V19 cse1 [V19,T12] ( 5, 2.50) int -> x1 "CSE - aggressive"
+; V20 cse2 [V20,T04] ( 2, 5 ) ref -> x12 hoist "CSE - aggressive"
+; V21 cse3 [V21,T08] ( 4, 6.50) int -> x14 "CSE - aggressive"
+; V22 cse4 [V22,T16] ( 3, 1.50) long -> x14 "CSE - moderate"
+; V23 cse5 [V23,T17] ( 3, 1.50) long -> x5 "CSE - moderate"
+; V24 cse6 [V24,T05] ( 4, 9 ) int -> x3 "CSE - aggressive"
+; V25 cse7 [V25,T02] ( 6, 10 ) byref -> x4 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -39,95 +43,80 @@ G_M23254_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M23254_IG02: ; bbWeight=1, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x2]
- mov w14, wzr
- ldr w15, [x0, #0x58]
- cmp w15, #0
+ ldr w14, [x0, #0x58]
+ cmp w14, #0
ble G_M23254_IG06
- ldr x3, [x0, #0x20]
- ; gcrRegs +[x3]
+ mov x15, xzr
+ ldr x12, [x0, #0x20]
+ ; gcrRegs +[x12]
;; size=20 bbWeight=1 PerfScore 8.00
-G_M23254_IG03: ; bbWeight=4, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz
- mov x12, x3
- ; gcrRegs +[x12]
- ldr wip0, [x12, #0x08]
- cmp w14, wip0
+G_M23254_IG03: ; bbWeight=4, gcrefRegs=1007 {x0 x1 x2 x12}, byrefRegs=0000 {}, byref, isz
+ mov xip0, x12
+ ; gcrRegs +[xip0]
+ ldr w3, [xip0, #0x08]
+ cmp w15, w3
bhs G_M23254_IG10
- add x12, x12, #16
- ; gcrRegs -[x12]
- ; byrRegs +[x12]
- ldr x4, [x12, w14, UXTW #3]
- ; gcrRegs +[x4]
- ldr x12, [x4, #0x10]
- ; gcrRegs +[x12]
- ; byrRegs -[x12]
- cmp x12, x1
+ add x4, xip0, #16
+ ; byrRegs +[x4]
+ lsl xip0, x15, #3
+ ; gcrRegs -[xip0]
+ ldr xip0, [x4, xip0]
+ ; gcrRegs +[xip0]
+ ldr x5, [xip0, #0x10]
+ ; gcrRegs +[x5]
+ cmp x5, x1
bne G_M23254_IG05
- ;; size=36 bbWeight=4 PerfScore 52.00
-G_M23254_IG04: ; bbWeight=2, gcrefRegs=001F {x0 x1 x2 x3 x4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x12]
- ldr x12, [x4, #0x08]
- ; gcrRegs +[x12]
- cmp x12, x2
+ ;; size=40 bbWeight=4 PerfScore 56.00
+G_M23254_IG04: ; bbWeight=2, gcrefRegs=11007 {x0 x1 x2 x12 xip0}, byrefRegs=0010 {x4}, byref, isz
+ ; gcrRegs -[x5]
+ ldr xip0, [xip0, #0x08]
+ cmp xip0, x2
beq G_M23254_IG07
;; size=12 bbWeight=2 PerfScore 9.00
-G_M23254_IG05: ; bbWeight=4, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x4 x12]
- add w14, w14, #1
- cmp w14, w15
+G_M23254_IG05: ; bbWeight=4, gcrefRegs=1007 {x0 x1 x2 x12}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[xip0]
+ ; byrRegs -[x4]
+ add w15, w15, #1
+ mov w15, w15
+ cmp w15, w14
blt G_M23254_IG03
- ;; size=12 bbWeight=4 PerfScore 8.00
+ ;; size=16 bbWeight=4 PerfScore 10.00
G_M23254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x0-x3]
+ ; gcrRegs -[x0-x2 x12]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M23254_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0019 {x0 x3 x4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0 x3-x4]
- sub w1, w15, #1
- cmp w14, w1
+G_M23254_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, gcvars, byref, isz
+ ; gcrRegs +[x0]
+ ; byrRegs +[x4]
+ sub w1, w14, #1
+ cmp w15, w1
bge G_M23254_IG08
- mov x15, x3
+ ubfiz x14, x15, #3, #32
+ ldr x2, [x4, x14]
+ ; gcrRegs +[x2]
+ sxtw w15, w1
+ cmp w15, w3
+ bhs G_M23254_IG10
+ ubfiz x5, x15, #3, #32
+ ldr x15, [x4, x5]
; gcrRegs +[x15]
- mov x12, x3
- ; gcrRegs +[x12]
- sxtw wip0, w1
- ldr w2, [x12, #0x08]
- cmp wip0, w2
- bhs G_M23254_IG10
- add x12, x12, #16
- ; gcrRegs -[x12]
- ; byrRegs +[x12]
- ubfiz x2, xip0, #3, #32
- ldr x12, [x12, x2]
- ; gcrRegs +[x12]
- ; byrRegs -[x12]
- ldr wip0, [x15, #0x08]
- cmp w14, wip0
- bhs G_M23254_IG10
- add x15, x15, #16
- ; gcrRegs -[x15]
- ; byrRegs +[x15]
- add x14, x15, x14, LSL #3
+ add x14, x4, x14
; byrRegs +[x14]
- mov x15, x12
- ; gcrRegs +[x15]
- ; byrRegs -[x15]
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x12 x15]
+ bl CORINFO_HELP_CHECKED_ASSIGN_REF
+ ; gcrRegs -[x15]
; byrRegs -[x14]
sxtw w14, w1
- ldr w15, [x3, #0x08]
- cmp w14, w15
+ cmp w14, w3
bhs G_M23254_IG10
- add x14, x3, #16
+ add x14, x4, x5
; byrRegs +[x14]
- add x14, x14, x2
- mov x15, x4
+ mov x15, x2
; gcrRegs +[x15]
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x3-x4 x15]
- ; byrRegs -[x14]
- ;; size=108 bbWeight=0.50 PerfScore 13.75
+ bl CORINFO_HELP_CHECKED_ASSIGN_REF
+ ; gcrRegs -[x2 x15]
+ ; byrRegs -[x4 x14]
+ ;; size=72 bbWeight=0.50 PerfScore 8.75
G_M23254_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
str w1, [x0, #0x58]
;; size=4 bbWeight=0.50 PerfScore 0.50
@@ -142,7 +131,7 @@ G_M23254_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 224, prolog size 8, PerfScore 94.75, instruction count 56, allocated bytes for code 224 (MethodHash=dfe8a529) for method System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
+; Total bytes of code 196, prolog size 8, PerfScore 95.75, instruction count 49, allocated bytes for code 196 (MethodHash=dfe8a529) for method System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
; ============================================================
Unwind Info:
@@ -153,7 +142,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
+ Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-3.37%) : 178518.dasm - System.Xml.Schema.FacetsChecker+FacetsCompiler:Preprocess(System.String):System.String (FullOpts)
@@ -8,42 +8,43 @@
; 3 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T10] ( 6, 6.50) ref -> x19 class-hnd single-def <System.String>
+; V00 arg0 [V00,T08] ( 6, 9.50) ref -> x19 class-hnd single-def <System.String>
; V01 loc0 [V01,T06] ( 15, 12.41) ref -> x20 class-hnd exact single-def <System.Text.StringBuilder>
-; V02 loc1 [V02,T17] ( 4, 3.50) int -> x22
-; V03 loc2 [V03,T08] ( 8, 11 ) int -> x23
+; V02 loc1 [V02,T18] ( 4, 3.50) int -> x22
+; V03 loc2 [V03,T09] ( 8, 11 ) int -> x23
; V04 loc3 [V04,T03] ( 11, 29 ) int -> x24
-; V05 loc4 [V05,T04] ( 2, 18 ) ushort -> x28
-; V06 loc5 [V06,T01] ( 8, 86 ) int -> [fp+0x1C]
+; V05 loc4 [V05,T04] ( 2, 18 ) ushort -> x27
+; V06 loc5 [V06,T13] ( 3, 6 ) int -> x27
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T11] ( 4, 8 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder>
+; V08 tmp1 [V08,T12] ( 4, 8 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder>
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.StringBuilder>
-; V10 tmp3 [V10,T20] ( 3, 2.46) int -> x0 "Inline stloc first use temp"
-; V11 tmp4 [V11,T18] ( 3, 2.46) ref -> x1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V10 tmp3 [V10,T21] ( 3, 2.46) int -> x0 "Inline stloc first use temp"
+; V11 tmp4 [V11,T19] ( 3, 2.46) ref -> x1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V12 tmp5 [V12,T05] ( 4, 15.98) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.StringBuilder>
-; V14 tmp7 [V14,T21] ( 3, 2.46) int -> x0 "Inline stloc first use temp"
-; V15 tmp8 [V15,T19] ( 3, 2.46) ref -> x1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V14 tmp7 [V14,T22] ( 3, 2.46) int -> x0 "Inline stloc first use temp"
+; V15 tmp8 [V15,T20] ( 3, 2.46) ref -> x1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V16 tmp9 [V16,T00] ( 3, 96 ) ref -> x0 "arr expr"
; V17 tmp10 [V17,T07] ( 3, 12 ) ref -> x2 "arr expr"
-; V18 cse0 [V18,T02] ( 4, 36 ) ref -> x3 "CSE - aggressive"
-; V19 cse1 [V19,T13] ( 3, 6 ) int -> x28 "CSE - aggressive"
-;* V20 cse2 [V20,T22] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
-; V21 cse3 [V21,T14] ( 3, 6 ) long -> [fp+0x10] spill-single-def "CSE - aggressive"
-; V22 cse4 [V22,T09] ( 5, 10 ) int -> x27 "CSE - aggressive"
-; V23 cse5 [V23,T16] ( 3, 4 ) int -> x21 "CSE - aggressive"
-; V24 cse6 [V24,T12] ( 3, 7 ) byref -> x26 hoist "CSE - aggressive"
-; V25 cse7 [V25,T15] ( 3, 6 ) int -> x25 "CSE - moderate"
+; V18 tmp11 [V18,T01] ( 7, 84 ) long -> x4 "Widened primary induction variable"
+; V19 cse0 [V19,T02] ( 4, 36 ) ref -> x3 "CSE - aggressive"
+; V20 cse1 [V20,T14] ( 3, 6 ) int -> x27 "CSE - aggressive"
+;* V21 cse2 [V21,T23] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V22 cse3 [V22,T15] ( 3, 6 ) long -> x28 "CSE - aggressive"
+; V23 cse4 [V23,T10] ( 5, 10 ) int -> x26 "CSE - aggressive"
+; V24 cse5 [V24,T17] ( 3, 4 ) int -> x21 "CSE - aggressive"
+; V25 cse6 [V25,T16] ( 3, 6 ) int -> x25 "CSE - aggressive"
+; V26 cse7 [V26,T11] ( 3, 10 ) byref -> x3 "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 0
G_M19789_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
- stp x25, x26, [sp, #0x50]
- stp x27, x28, [sp, #0x60]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
+ stp x23, x24, [sp, #0x30]
+ stp x25, x26, [sp, #0x40]
+ stp x27, x28, [sp, #0x50]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
@@ -100,26 +101,26 @@ G_M19789_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
sub w25, w22, #2
cmp w25, #0
ble G_M19789_IG17
- add x26, x19, #12
- ; byrRegs +[x26]
- ;; size=32 bbWeight=1 PerfScore 7.00
-G_M19789_IG05: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
- ldrh w3, [x26, w24, UXTW #2]
- cmp w3, #92
+ ;; size=28 bbWeight=1 PerfScore 6.50
+G_M19789_IG05: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ add x3, x19, #12
+ ; byrRegs +[x3]
+ ldrh w0, [x3, w24, UXTW #2]
+ cmp w0, #92
bne G_M19789_IG16
- ;; size=12 bbWeight=4 PerfScore 18.00
-G_M19789_IG06: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
- add w27, w24, #1
- cmp w27, w21
+ ;; size=16 bbWeight=4 PerfScore 20.00
+G_M19789_IG06: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0008 {x3}, byref, isz
+ add w26, w24, #1
+ cmp w26, w21
bhs G_M19789_IG24
- ldrh w28, [x26, w27, UXTW #2]
- cmp w28, #92
+ ldrh w27, [x3, w26, UXTW #2]
+ cmp w27, #92
bne G_M19789_IG08
- sxtw w24, w27
+ sxtw w24, w26
b G_M19789_IG16
;; size=32 bbWeight=2 PerfScore 16.00
G_M19789_IG07: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ; byrRegs -[x26]
+ ; byrRegs -[x3]
mov x0, x20
; gcrRegs +[x0]
mov w1, #94
@@ -132,86 +133,81 @@ G_M19789_IG07: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcr arg pop 0
b G_M19789_IG04
;; size=32 bbWeight=0.04 PerfScore 0.32
-G_M19789_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
- ; byrRegs +[x26]
- mov w4, wzr
+G_M19789_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
movz x3, #0xD1FFAB1E
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr w3, [x3]
tbz w3, #0, G_M19789_IG25
- ;; size=24 bbWeight=2 PerfScore 12.00
-G_M19789_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
- movz x5, #0xD1FFAB1E
- movk x5, #0xD1FFAB1E LSL #16
- movk x5, #0xD1FFAB1E LSL #32
- str x5, [fp, #0x10] // [V21 cse3]
- ldr x3, [x5]
+ ;; size=20 bbWeight=2 PerfScore 11.00
+G_M19789_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ movz x28, #0xD1FFAB1E
+ movk x28, #0xD1FFAB1E LSL #16
+ movk x28, #0xD1FFAB1E LSL #32
+ ldr x3, [x28]
; gcrRegs +[x3]
ldr w0, [x3, #0x08]
cmp w0, #0
ble G_M19789_IG16
- ;; size=32 bbWeight=2 PerfScore 20.00
-G_M19789_IG10: ; bbWeight=16, gcrefRegs=180008 {x3 x19 x20}, byrefRegs=4000000 {x26}, byref, isz
+ mov x4, xzr
+ ;; size=32 bbWeight=2 PerfScore 19.00
+G_M19789_IG10: ; bbWeight=16, gcrefRegs=180008 {x3 x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x3
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w4, w1
bhs G_M19789_IG24
- ubfiz x1, x4, #4, #32
+ lsl x1, x4, #4
add x1, x1, #16
add x0, x0, x1
; gcrRegs -[x0]
; byrRegs +[x0]
ldrh w0, [x0, #0x08]
; byrRegs -[x0]
- cmp w0, w28
+ cmp w0, w27
beq G_M19789_IG12
add w4, w4, #1
+ mov w4, w4
ldr w0, [x3, #0x08]
- str w4, [fp, #0x1C] // [V06 loc5]
cmp w0, w4
- ldr w4, [fp, #0x1C] // [V06 loc5]
bgt G_M19789_IG10
- ;; size=64 bbWeight=16 PerfScore 312.00
-G_M19789_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref
+ ;; size=60 bbWeight=16 PerfScore 272.00
+G_M19789_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x3]
b G_M19789_IG16
;; size=4 bbWeight=4 PerfScore 4.00
-G_M19789_IG12: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
+G_M19789_IG12: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ mov w27, w4
cmp w23, w24
bge G_M19789_IG13
- str w4, [fp, #0x1C] // [V06 loc5]
sub w3, w24, w23
mov x0, x20
; gcrRegs +[x0]
mov x1, x19
; gcrRegs +[x1]
mov w2, w23
- movz x6, #0xD1FFAB1E // code for System.Text.StringBuilder:Append(System.String,int,int):System.Text.StringBuilder:this
- movk x6, #0xD1FFAB1E LSL #16
- movk x6, #0xD1FFAB1E LSL #32
- ldr x6, [x6]
- blr x6
+ movz x4, #0xD1FFAB1E // code for System.Text.StringBuilder:Append(System.String,int,int):System.Text.StringBuilder:this
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #0xD1FFAB1E LSL #32
+ ldr x4, [x4]
+ blr x4
; gcrRegs -[x1]
; gcr arg pop 0
- ldr w4, [fp, #0x1C] // [V06 loc5]
- ;; size=52 bbWeight=2 PerfScore 24.00
-G_M19789_IG13: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
+ ;; size=48 bbWeight=2 PerfScore 19.00
+G_M19789_IG13: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x5, [fp, #0x10] // [V21 cse3]
- ldr x2, [x5]
+ ldr x2, [x28]
; gcrRegs +[x2]
ldr w1, [x2, #0x08]
- cmp w4, w1
+ cmp w27, w1
bhs G_M19789_IG24
- ubfiz x1, x4, #4, #32
+ ubfiz x1, x27, #4, #32
add x1, x1, #16
ldr x1, [x2, x1]
; gcrRegs +[x1]
cbz x1, G_M19789_IG15
- ;; size=36 bbWeight=2 PerfScore 30.00
-G_M19789_IG14: ; bbWeight=2.00, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=4000000 {x26}, byref
+ ;; size=32 bbWeight=2 PerfScore 26.00
+G_M19789_IG14: ; bbWeight=2.00, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
ldr w2, [x1, #0x08]
add x1, x1, #12
@@ -228,17 +224,16 @@ G_M19789_IG14: ; bbWeight=2.00, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=
; byrRegs -[x1]
; gcr arg pop 0
;; size=32 bbWeight=2.00 PerfScore 18.96
-G_M19789_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref
- sxtw w24, w27
+G_M19789_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ sxtw w24, w26
add w23, w24, #1
;; size=8 bbWeight=2 PerfScore 2.00
-G_M19789_IG16: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
+G_M19789_IG16: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w24, w24, #1
cmp w24, w25
blt G_M19789_IG05
;; size=12 bbWeight=4 PerfScore 8.00
G_M19789_IG17: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x26]
cmp w23, w22
bge G_M19789_IG19
;; size=8 bbWeight=1 PerfScore 1.50
@@ -286,12 +281,12 @@ G_M19789_IG21: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ldr x1, [x1]
;; size=20 bbWeight=1 PerfScore 5.00
...
-20 (-3.03%) : 148598.dasm - System.SpanTests.ReadOnlySpanTests:TestMultipleMatchCount_String() (FullOpts)
@@ -9,25 +9,25 @@
; Final local variable assignments
;
; V00 loc0 [V00,T03] ( 9, 39.18) int -> x19
-; V01 loc1 [V01,T10] ( 7, 20.20) ref -> x27 class-hnd exact <<unknown class>>
+; V01 loc1 [V01,T10] ( 7, 20.20) ref -> x26 class-hnd exact <<unknown class>>
;* V02 loc2 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[System.String]>
-; V03 loc3 [V03,T00] ( 11, 68.32) int -> x28
+;* V03 loc3 [V03,T22] ( 0, 0 ) int -> zero-ref
;* V04 loc4 [V04 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V05 loc5 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T01] ( 4, 64 ) ref -> x0 class-hnd exact "Strict ordering of exceptions for Array store" <System.String>
;* V08 tmp2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.String>
; V09 tmp3 [V09,T09] ( 3, 24.36) int -> x3 "impAppendStmt"
-; V10 tmp4 [V10,T16] ( 2, 8.12) int -> x27 "Inline return value spill temp"
+; V10 tmp4 [V10,T16] ( 2, 8.12) int -> x26 "Inline return value spill temp"
;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[System.String]>
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inlining Arg" <System.String>
;* V13 tmp7 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[System.String]>
;* V14 tmp8 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[System.String]>
-; V15 tmp9 [V15,T08] ( 3, 24.36) ref -> x28 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V15 tmp9 [V15,T08] ( 3, 24.36) ref -> x27 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V16 tmp10 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V17 tmp11 [V17,T12] ( 3, 12.18) ref -> [fp+0x30] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V18 tmp12 [V18,T04] ( 4, 32.48) ref -> [fp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V19 tmp13 [V19,T05] ( 4, 32.48) ref -> [fp+0x20] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V17 tmp11 [V17,T12] ( 3, 12.18) ref -> x28 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
+; V18 tmp12 [V18,T04] ( 4, 32.48) ref -> [fp+0x20] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V19 tmp13 [V19,T05] ( 4, 32.48) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V20 tmp14 [V20,T15] ( 2, 8.12) byref -> x1 "field V02._reference (fldOffset=0x0)" P-INDEP
; V21 tmp15 [V21,T17] ( 2, 8.12) int -> x3 "field V02._length (fldOffset=0x8)" P-INDEP
;* V22 tmp16 [V22 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
@@ -36,27 +36,29 @@
;* V25 tmp19 [V25 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
;* V26 tmp20 [V26 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
;* V27 tmp21 [V27 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
-; V28 cse0 [V28,T13] ( 3, 12.18) int -> x14 "CSE - aggressive"
-; V29 cse1 [V29,T07] ( 9, 28.52) int -> [fp+0x3C] multi-def "CSE - aggressive"
-; V30 cse2 [V30,T06] ( 7, 30.20) byref -> [fp+0x18] hoist multi-def "CSE - aggressive"
-; V31 cse3 [V31,T02] ( 3, 47.52) int -> [fp+0x38] spill-single-def "CSE - aggressive"
-; V32 cse4 [V32,T11] ( 4, 13.18) ref -> x21 hoist "CSE - aggressive"
-; V33 cse5 [V33,T14] ( 3, 9.12) long -> x25 hoist "CSE - aggressive"
-; V34 cse6 [V34,T18] ( 2, 5.06) long -> x22 hoist "CSE - moderate"
-; V35 cse7 [V35,T19] ( 2, 5.06) long -> x23 hoist "CSE - moderate"
-; V36 cse8 [V36,T20] ( 2, 5.06) long -> x24 hoist "CSE - moderate"
-; V37 cse9 [V37,T21] ( 2, 5.06) long -> x26 hoist "CSE - moderate"
-; V38 cse10 [V38,T22] ( 2, 5 ) long -> x20 hoist "CSE - moderate"
+; V28 tmp22 [V28,T23] ( 6, 0.82) long -> registers "Widened primary induction variable"
+; V29 tmp23 [V29,T00] ( 5, 65.36) long -> x27 "Widened primary induction variable"
+; V30 cse0 [V30,T02] ( 3, 47.52) int -> [fp+0x2C] spill-single-def "CSE - aggressive"
+; V31 cse1 [V31,T13] ( 3, 12.18) int -> x14 "CSE - aggressive"
+; V32 cse2 [V32,T24] ( 3, 0.48) int -> [fp+0x28] spill-single-def "CSE - conservative"
+; V33 cse3 [V33,T07] ( 9, 28.52) int -> x27 multi-def "CSE - aggressive"
+; V34 cse4 [V34,T06] ( 7, 30.20) byref -> [fp+0x18] hoist multi-def "CSE - aggressive"
+; V35 cse5 [V35,T11] ( 4, 13.18) ref -> x21 hoist "CSE - aggressive"
+; V36 cse6 [V36,T14] ( 3, 9.12) long -> x25 hoist "CSE - aggressive"
+; V37 cse7 [V37,T18] ( 2, 5.06) long -> x22 hoist "CSE - moderate"
+; V38 cse8 [V38,T19] ( 2, 5.06) long -> x23 hoist "CSE - moderate"
+; V39 cse9 [V39,T20] ( 2, 5.06) long -> x24 hoist "CSE - moderate"
+; V40 cse10 [V40,T21] ( 2, 5 ) long -> x20 hoist "CSE - moderate"
;
-; Lcl frame size = 48
+; Lcl frame size = 32
G_M57982_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x90]!
- stp x19, x20, [sp, #0x40]
- stp x21, x22, [sp, #0x50]
- stp x23, x24, [sp, #0x60]
- stp x25, x26, [sp, #0x70]
- stp x27, x28, [sp, #0x80]
+ stp fp, lr, [sp, #-0x80]!
+ stp x19, x20, [sp, #0x30]
+ stp x21, x22, [sp, #0x40]
+ stp x23, x24, [sp, #0x50]
+ stp x25, x26, [sp, #0x60]
+ stp x27, x28, [sp, #0x70]
mov fp, sp
;; size=28 bbWeight=1 PerfScore 6.50
G_M57982_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -79,38 +81,65 @@ G_M57982_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x25, #0xD1FFAB1E
movk x25, #0xD1FFAB1E LSL #16
movk x25, #0xD1FFAB1E LSL #32
- movz x26, #0xD1FFAB1E
- movk x26, #0xD1FFAB1E LSL #16
- movk x26, #0xD1FFAB1E LSL #32
- ;; size=88 bbWeight=1 PerfScore 11.00
+ ;; size=76 bbWeight=1 PerfScore 9.50
G_M57982_IG03: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x21]
sxtw x1, w19
mov x0, x20
bl CORINFO_HELP_NEWARR_1_OBJ
; gcrRegs +[x0]
- mov x27, x0
- ; gcrRegs +[x27]
- mov w28, wzr
+ mov x26, x0
+ ; gcrRegs +[x26]
cmp w19, #0
ble G_M57982_IG09
- ;; size=28 bbWeight=4 PerfScore 18.00
-G_M57982_IG04: ; bbWeight=2, gcrefRegs=8200000 {x21 x27}, byrefRegs=0000 {}, byref, isz
+ ;; size=24 bbWeight=4 PerfScore 16.00
+G_M57982_IG04: ; bbWeight=2, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr w1, [x27, #0x08]
- sxtw w3, w1
- str w3, [fp, #0x3C] // [V29 cse1]
- cmp w3, w19
+ ldr w27, [x26, #0x08]
+ cmp w27, w19
blt G_M57982_IG07
- add x1, x27, #16
- ; byrRegs +[x1]
- str x1, [fp, #0x18] // [V30 cse2]
- ; GC ptr vars +{V30}
- ;; size=28 bbWeight=2 PerfScore 15.00
-G_M57982_IG05: ; bbWeight=15.84, gcVars=0000000000000040 {V30}, gcrefRegs=8200000 {x21 x27}, byrefRegs=0000 {}, gcvars, byref, isz
- ; byrRegs -[x1]
+ mov x27, xzr
+ add x28, x26, #16
+ ; byrRegs +[x28]
+ ;; size=20 bbWeight=2 PerfScore 11.00
+G_M57982_IG05: ; bbWeight=15.84, gcrefRegs=4200000 {x21 x26}, byrefRegs=10000000 {x28}, byref, isz
+ add w1, w27, #1
+ str w1, [fp, #0x2C] // [V30 cse0]
+ mov w0, #10
+ mul w0, w1, w0
+ movz x2, #0xD1FFAB1E // code for System.Number:Int32ToDecStr(int):System.String
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs +[x0]
+ lsl x14, x27, #3
+ add x14, x28, x14
+ ; byrRegs +[x14]
+ mov x15, x0
+ ; gcrRegs +[x15]
+ bl CORINFO_HELP_CHECKED_ASSIGN_REF
+ ; gcrRegs -[x0 x15]
+ ; byrRegs -[x14]
+ ldr w27, [fp, #0x2C] // [V30 cse0]
+ cmp w27, w19
+ blt G_M57982_IG05
+ ;; size=64 bbWeight=15.84 PerfScore 253.44
+G_M57982_IG06: ; bbWeight=4.06, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x28]
+ b G_M57982_IG09
+ ;; size=4 bbWeight=4.06 PerfScore 4.06
+G_M57982_IG07: ; bbWeight=0.02, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000 {}, byref
+ mov x28, xzr
+ add x0, x26, #16
+ ; byrRegs +[x0]
+ str x0, [fp, #0x18] // [V34 cse4]
+ ; GC ptr vars +{V34}
+ ;; size=12 bbWeight=0.02 PerfScore 0.04
+G_M57982_IG08: ; bbWeight=0.16, gcVars=0000000000000040 {V34}, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; byrRegs -[x0]
add w2, w28, #1
- str w2, [fp, #0x38] // [V31 cse3]
+ str w2, [fp, #0x28] // [V32 cse2]
mov w0, #10
mul w0, w2, w0
movz x3, #0xD1FFAB1E // code for System.Number:Int32ToDecStr(int):System.String
@@ -119,94 +148,54 @@ G_M57982_IG05: ; bbWeight=15.84, gcVars=0000000000000040 {V30}, gcrefRegs
ldr x3, [x3]
blr x3
; gcrRegs +[x0]
- ldr x1, [fp, #0x18] // [V30 cse2]
- ; byrRegs +[x1]
- add x14, x1, x28, LSL #3
+ cmp w28, w27
+ bhs G_M57982_IG12
+ lsl x14, x28, #3
+ ldr x28, [fp, #0x18] // [V34 cse4]
+ ; byrRegs +[x28]
+ add x14, x28, x14
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
- ; GC ptr vars -{V30}
+ ; GC ptr vars -{V34}
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ldr w28, [fp, #0x38] // [V31 cse3]
- cmp w28, w19
- str x1, [fp, #0x18] // [V30 cse2]
- ; GC ptr vars +{V30}
- blt G_M57982_IG05
- ;; size=68 bbWeight=15.84 PerfScore 293.04
-G_M57982_IG06: ; bbWeight=4.06, gcrefRegs=8200000 {x21 x27}, byrefRegs=0000 {}, byref
- ; byrRegs -[x1]
- ; GC ptr vars -{V30}
- b G_M57982_IG09
- ;; size=4 bbWeight=4.06 PerfScore 4.06
-G_M57982_IG07: ; bbWeight=0.02, gcrefRegs=8200000 {x21 x27}, byrefRegs=0000 {}, byref
- add x1, x27, #16
- ; byrRegs +[x1]
- str x1, [fp, #0x18] // [V30 cse2]
- ; GC ptr vars +{V30}
- ;; size=8 bbWeight=0.02 PerfScore 0.03
-G_M57982_IG08: ; bbWeight=0.16, gcVars=0000000000000040 {V30}, gcrefRegs=8200000 {x21 x27}, byrefRegs=0000 {}, gcvars, byref, isz
- ; byrRegs -[x1]
- add w0, w28, #1
- mov w2, #10
- mul w0, w0, w2
- movz x2, #0xD1FFAB1E // code for System.Number:Int32ToDecStr(int):System.String
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs +[x0]
- ldr w3, [fp, #0x3C] // [V29 cse1]
- cmp w28, w3
- bhs G_M57982_IG11
- ldr x1, [fp, #0x18] // [V30 cse2]
- ; byrRegs +[x1]
- add x14, x1, x28, LSL #3
- ; byrRegs +[x14]
- mov x15, x0
- ; gcrRegs +[x15]
- ; GC ptr vars -{V30}
- bl CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[x0 x15]
- ; byrRegs -[x14]
- add w28, w28, #1
- cmp w28, w19
- str x1, [fp, #0x18] // [V30 cse2]
- ; GC ptr vars +{V30}
- str w3, [fp, #0x3C] // [V29 cse1]
- blt G_M57982_IG08
+ ldr w14, [fp, #0x28] // [V32 cse2]
+ cmp w14, w19
+ str x28, [fp, #0x18] // [V34 cse4]
+ ; GC ptr vars +{V34}
+ blt G_M57982_IG11
;; size=80 bbWeight=0.16 PerfScore 3.28
-G_M57982_IG09: ; bbWeight=4.06, gcrefRegs=8200000 {x21 x27}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x1]
- ; GC ptr vars -{V30}
- ldr w3, [x27, #0x08]
- sxtw w28, w3
- sub w3, w28, #1
- sub w14, w28, #2
- cmp w14, w28
...
+20 (+41.67%) : 149511.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
@@ -8,10 +8,11 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 loc0 [V01,T00] ( 5, 17 ) int -> x2
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp3 [V05,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -21,24 +22,32 @@ G_M58764_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M58764_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0
ble G_M58764_IG04
+ mov x2, xzr
;; size=12 bbWeight=1 PerfScore 2.00
G_M58764_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w2, w1
+ bhs G_M58764_IG05
mov w3, #204
- strb w3, [x0, w2, UXTW #2]
+ strb w3, [x0, x2]
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
blt G_M58764_IG03
- ;; size=20 bbWeight=4 PerfScore 14.00
+ ;; size=32 bbWeight=4 PerfScore 22.00
G_M58764_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M58764_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 48, prolog size 8, PerfScore 19.50, instruction count 12, allocated bytes for code 48 (MethodHash=de8b1a73) for method System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
+; Total bytes of code 68, prolog size 8, PerfScore 27.50, instruction count 17, allocated bytes for code 68 (MethodHash=de8b1a73) for method System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
; ============================================================
Unwind Info:
@@ -49,7 +58,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+45.45%) : 230495.dasm - System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
@@ -8,10 +8,11 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 loc0 [V01,T00] ( 6, 21 ) int -> x2
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp3 [V05,T00] ( 7, 25 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -21,23 +22,31 @@ G_M39013_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M39013_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0
ble G_M39013_IG04
+ mov x2, xzr
;; size=12 bbWeight=1 PerfScore 2.00
G_M39013_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- strb w2, [x0, w2, UXTW #2]
+ cmp w2, w1
+ bhs G_M39013_IG05
+ strb w2, [x0, x2]
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
blt G_M39013_IG03
- ;; size=16 bbWeight=4 PerfScore 12.00
+ ;; size=28 bbWeight=4 PerfScore 20.00
G_M39013_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M39013_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 44, prolog size 8, PerfScore 17.50, instruction count 11, allocated bytes for code 44 (MethodHash=6c0d679a) for method System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 25.50, instruction count 16, allocated bytes for code 64 (MethodHash=6c0d679a) for method System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
; ============================================================
Unwind Info:
@@ -48,7 +57,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+46.15%) : 139242.dasm - System.Linq.Enumerable:Sumdouble,double:double (FullOpts)
@@ -9,9 +9,9 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[double]>
-; V01 loc0 [V01,T05] ( 4, 10 ) double -> d0
+; V01 loc0 [V01,T06] ( 4, 10 ) double -> d0
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[double]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x2
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) double -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -20,7 +20,8 @@
; V09 tmp4 [V09,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V10 tmp5 [V10,T04] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V11 tmp6 [V11,T02] ( 2, 5 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp7 [V12,T01] ( 3, 6 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V12 tmp7 [V12,T01] ( 4, 10 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V13 tmp8 [V13,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -31,24 +32,33 @@ G_M25021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M25021_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
movi v0.16b, #0
- mov w2, wzr
cmp w1, #0
ble G_M25021_IG04
+ mov x2, xzr
;; size=16 bbWeight=1 PerfScore 2.50
G_M25021_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr d16, [x0, w2, UXTW #3]
+ cmp w2, w1
+ bhs G_M25021_IG05
+ lsl x3, x2, #3
+ ldr d16, [x0, x3]
fadd d0, d16, d0
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
blt G_M25021_IG03
- ;; size=20 bbWeight=4 PerfScore 32.00
+ ;; size=36 bbWeight=4 PerfScore 44.00
G_M25021_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M25021_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 38.00, instruction count 13, allocated bytes for code 52 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 50.00, instruction count 19, allocated bytes for code 76 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
; ============================================================
Unwind Info:
@@ -59,7 +69,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
realworld.run.windows.arm64.checked.mch
-20 (-2.34%) : 211.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (FullOpts)
@@ -11,12 +11,12 @@
; V00 this [V00,T01] ( 14, 14 ) ref -> x19 this class-hnd single-def <System.Collections.Generic.Dictionary`2[int,System.__Canon]>
; V01 arg1 [V01,T08] ( 6, 6 ) int -> x20 single-def
; V02 arg2 [V02,T15] ( 3, 3 ) ubyte -> x2 single-def
-; V03 loc0 [V03,T04] ( 11, 12.04) ref -> x21 class-hnd exact single-def <<unknown class>>
+; V03 loc0 [V03,T04] ( 9, 12 ) ref -> x21 class-hnd exact single-def <<unknown class>>
; V04 loc1 [V04,T09] ( 6, 8 ) int -> x22
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V07 loc4 [V07 ] ( 0, 0 ) int -> zero-ref
-; V08 loc5 [V08,T00] ( 14, 19.08) int -> x20
+;* V08 loc5 [V08,T20] ( 0, 0 ) int -> zero-ref
; V09 loc6 [V09,T12] ( 6, 6 ) byref -> x26
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11,T19] ( 0, 0 ) int -> zero-ref
@@ -35,12 +35,15 @@
;* V24 tmp14 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp15 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V26 tmp16 [V26,T18] ( 2, 4 ) long -> x0 "argument with side effect"
-; V27 cse0 [V27,T05] ( 4, 11.88) long -> x23 "CSE - aggressive"
-; V28 cse1 [V28,T06] ( 14, 10 ) ref -> x1 multi-def "CSE - aggressive"
-; V29 cse2 [V29,T13] ( 3, 5.94) int -> x26 "CSE - aggressive"
-; V30 rat0 [V30,T16] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V31 rat1 [V31,T17] ( 3, 4 ) long -> x0 "runtime lookup"
-; V32 rat2 [V32,T14] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V27 tmp17 [V27,T21] ( 7, 0.23) long -> x20 "Widened primary induction variable"
+; V28 tmp18 [V28,T00] ( 6, 18.82) long -> x20 "Widened primary induction variable"
+; V29 cse0 [V29,T22] ( 4, 0.12) byref -> x23 "CSE - conservative"
+; V30 cse1 [V30,T05] ( 4, 11.88) long -> x23 "CSE - aggressive"
+; V31 cse2 [V31,T06] ( 14, 10 ) ref -> x1 multi-def "CSE - aggressive"
+; V32 cse3 [V32,T13] ( 3, 5.94) int -> x26 "CSE - aggressive"
+; V33 rat0 [V33,T16] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V34 rat1 [V34,T17] ( 3, 4 ) long -> x0 "runtime lookup"
+; V35 rat2 [V35,T14] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
@@ -171,28 +174,28 @@ G_M4165_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
movn x0, #0
mov w1, w20
cmp x1, #0
- beq G_M4165_IG24
+ beq G_M4165_IG25
udiv x0, x0, x1
add x0, x0, #1
str x0, [x19, #0x30]
- mov w20, wzr
cmp w22, #0
- ble G_M4165_IG21
+ ble G_M4165_IG22
ldr w0, [x21, #0x08]
cmp w0, w22
blt G_M4165_IG17
+ mov x20, xzr
;; size=132 bbWeight=1 PerfScore 49.00
G_M4165_IG12: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mov w0, #24
- mov x1, #16
- umaddl x23, w20, w0, x1
+ mov x0, #24
+ mul x0, x20, x0
+ add x23, x0, #16
add x0, x21, x23
; byrRegs +[x0]
ldr w0, [x0, #0x0C]
; byrRegs -[x0]
cmn w0, #1
blt G_M4165_IG15
- ;; size=28 bbWeight=3.96 PerfScore 43.56
+ ;; size=28 bbWeight=3.96 PerfScore 31.68
G_M4165_IG13: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
add x0, x21, x23
; byrRegs +[x0]
@@ -211,7 +214,7 @@ G_M4165_IG13: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
mul x0, x0, x1
lsr x28, x0, #32
cmp w2, #0
- beq G_M4165_IG24
+ beq G_M4165_IG25
udiv w0, w24, w2
msub w0, w0, w2, w24
cmp w0, w28
@@ -231,7 +234,7 @@ G_M4165_IG13: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
;; size=112 bbWeight=1.98 PerfScore 87.12
G_M4165_IG14: ; bbWeight=1.98, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
cmp w28, w26
- bhs G_M4165_IG23
+ bhs G_M4165_IG24
add x0, x25, #16
; byrRegs +[x0]
ubfiz x1, x28, #2, #32
@@ -249,40 +252,37 @@ G_M4165_IG14: ; bbWeight=1.98, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs
G_M4165_IG15: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
; byrRegs -[x26]
- add w20, w20, #1
+ add w0, w20, #1
+ mov w20, w0
cmp w20, w22
blt G_M4165_IG12
- ;; size=12 bbWeight=3.96 PerfScore 7.92
+ ;; size=16 bbWeight=3.96 PerfScore 9.90
G_M4165_IG16: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
- b G_M4165_IG21
+ b G_M4165_IG22
;; size=4 bbWeight=1 PerfScore 1.00
-G_M4165_IG17: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M4165_IG17: ; bbWeight=0.01, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ mov x20, xzr
+ ;; size=4 bbWeight=0.01 PerfScore 0.01
+G_M4165_IG18: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x21, #0x08]
cmp w20, w0
- bhs G_M4165_IG23
- mov w0, #24
- mov x1, #16
- umaddl x0, w20, w0, x1
- add x0, x21, x0
- ; byrRegs +[x0]
- ldr w0, [x0, #0x0C]
- ; byrRegs -[x0]
+ bhs G_M4165_IG24
+ mov x0, #24
+ mul x0, x20, x0
+ add x0, x0, #16
+ add x23, x21, x0
+ ; byrRegs +[x23]
+ ldr w0, [x23, #0x0C]
cmn w0, #1
- blt G_M4165_IG20
- ;; size=40 bbWeight=0.04 PerfScore 0.62
-G_M4165_IG18: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mov w0, #24
- mov x1, #16
- umaddl x0, w20, w0, x1
- add x0, x21, x0
- ; byrRegs +[x0]
- ldr w24, [x0, #0x08]
+ blt G_M4165_IG21
+ ;; size=40 bbWeight=0.04 PerfScore 0.50
+G_M4165_IG19: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=800000 {x23}, byref, isz
+ ldr w24, [x23, #0x08]
ldr x25, [x19, #0x08]
; gcrRegs +[x25]
ldr w2, [x25, #0x08]
ldr x27, [x19, #0x30]
mov w0, w24
- ; byrRegs -[x0]
mul x0, x27, x0
lsr x0, x0, #32
add x0, x0, #1
@@ -290,11 +290,11 @@ G_M4165_IG18: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
mul x0, x0, x1
lsr x28, x0, #32
cmp w2, #0
- beq G_M4165_IG24
+ beq G_M4165_IG25
udiv w0, w24, w2
msub w0, w0, w2, w24
cmp w0, w28
- beq G_M4165_IG19
+ beq G_M4165_IG20
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -307,38 +307,33 @@ G_M4165_IG18: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=120 bbWeight=0.02 PerfScore 0.99
-G_M4165_IG19: ; bbWeight=0.02, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
+ ;; size=104 bbWeight=0.02 PerfScore 0.86
+G_M4165_IG20: ; bbWeight=0.02, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=800000 {x23}, byref, isz
ldr w14, [x25, #0x08]
cmp w28, w14
- bhs G_M4165_IG23
+ bhs G_M4165_IG24
add x14, x25, #16
; byrRegs +[x14]
ubfiz x15, x28, #2, #32
add x26, x14, x15
; byrRegs +[x26]
- mov w14, #24
- ; byrRegs -[x14]
- mov x15, #16
- umaddl x14, w20, w14, x15
- add x14, x21, x14
- ; byrRegs +[x14]
- add x14, x14, #12
+ add x14, x23, #12
ldr w15, [x26]
sub w15, w15, #1
str w15, [x14]
add w14, w20, #1
; byrRegs -[x14]
str w14, [x26]
- ;; size=64 bbWeight=0.02 PerfScore 0.39
-G_M4165_IG20: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=48 bbWeight=0.02 PerfScore 0.26
+G_M4165_IG21: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
- ; byrRegs -[x26]
- add w20, w20, #1
+ ; byrRegs -[x23 x26]
+ add w14, w20, #1
+ mov w20, w14
cmp w20, w22
- blt G_M4165_IG17
- ;; size=12 bbWeight=0.04 PerfScore 0.08
-G_M4165_IG21: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ blt G_M4165_IG18
+ ;; size=16 bbWeight=0.04 PerfScore 0.10
+G_M4165_IG22: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
add x14, x19, #16
; byrRegs +[x14]
mov x15, x21
@@ -347,7 +342,7 @@ G_M4165_IG21: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}
; gcrRegs -[x15 x21]
; byrRegs -[x14]
;; size=12 bbWeight=1 PerfScore 2.00
-G_M4165_IG22: ; bbWeight=1, epilog, nogc, extend
+G_M4165_IG23: ; bbWeight=1, epilog, nogc, extend
ldp x27, x28, [sp, #0x60]
ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40]
@@ -356,17 +351,17 @@ G_M4165_IG22: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x70
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M4165_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M4165_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M4165_IG24: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M4165_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROWDIVZERO
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 856, prolog size 40, PerfScore 268.42, instruction count 214, allocated bytes for code 856 (MethodHash=3669efba) for method System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (FullOpts)
+; Total bytes of code 836, prolog size 40, PerfScore 258.17, instruction count 209, allocated bytes for code 836 (MethodHash=3669efba) for method System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (FullOpts)
; ============================================================
Unwind Info:
@@ -377,7 +372,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
...
-16 (-2.33%) : 13025.dasm - Microsoft.ML.Internal.Utilities.Utils:BuildSubsetMaps(Microsoft.ML.DataViewSchema,System.Func`2[Microsoft.ML.DataViewSchema+Column,ubyte],byref,byref) (FullOpts)
@@ -10,40 +10,39 @@
;
; V00 arg0 [V00,T02] ( 7, 13 ) ref -> x19 class-hnd single-def <Microsoft.ML.DataViewSchema>
; V01 arg1 [V01,T04] ( 5, 11 ) ref -> x20 class-hnd single-def <System.Func`2[Microsoft.ML.DataViewSchema+Column,ubyte]>
-; V02 arg2 [V02,T15] ( 3, 3 ) byref -> x22 single-def
-; V03 arg3 [V03,T09] ( 5, 7 ) byref -> x21 single-def
+; V02 arg2 [V02,T14] ( 3, 3 ) byref -> x22 single-def
+; V03 arg3 [V03,T08] ( 5, 7 ) byref -> x21 single-def
; V04 loc0 [V04,T03] ( 8, 14 ) ref -> x24 class-hnd exact single-def <System.Collections.Generic.List`1[int]>
-; V05 loc1 [V05,T00] ( 12, 37 ) int -> x23
+;* V05 loc1 [V05,T17] ( 0, 0 ) int -> zero-ref
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T12] ( 3, 6 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[int]>
+; V07 tmp1 [V07,T11] ( 3, 6 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[int]>
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[S] "spilled call-like call argument" <Microsoft.ML.DataViewSchema+Column>
-; V09 tmp3 [V09,T06] ( 3, 12 ) ref -> x0 class-hnd "impAppendStmt" <System.Object>
-; V10 tmp4 [V10,T11] ( 2, 8 ) int -> x2 "Strict ordering of exceptions for Array store"
+; V09 tmp3 [V09,T05] ( 3, 12 ) ref -> x0 class-hnd "impAppendStmt" <System.Object>
+; V10 tmp4 [V10,T10] ( 2, 8 ) int -> x2 "Strict ordering of exceptions for Array store"
;* V11 tmp5 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V12 tmp6 [V12,T18] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V13 tmp7 [V13,T13] ( 3, 6 ) ref -> x0 class-hnd "Inline stloc first use temp" <int[]>
-; V14 tmp8 [V14,T10] ( 4, 8 ) int -> x1 "Inline stloc first use temp"
+; V13 tmp7 [V13,T12] ( 3, 6 ) ref -> x0 class-hnd "Inline stloc first use temp" <int[]>
+; V14 tmp8 [V14,T09] ( 4, 8 ) int -> x1 "Inline stloc first use temp"
; V15 tmp9 [V15,T01] ( 3, 24 ) ref -> x1 "arr expr"
-; V16 tmp10 [V16 ] ( 2, 16 ) struct (32) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.ML.DataViewSchema+Column>
-; V17 tmp11 [V17,T07] ( 3, 12 ) ref -> x0 "arr expr"
+; V16 tmp10 [V16 ] ( 2, 16 ) struct (32) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.ML.DataViewSchema+Column>
+; V17 tmp11 [V17,T06] ( 3, 12 ) ref -> x0 "arr expr"
; V18 tmp12 [V18,T19] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V19 cse0 [V19,T08] ( 3, 12 ) ref -> x1 "CSE - aggressive"
-; V20 cse1 [V20,T14] ( 3, 6 ) int -> x1 "CSE - aggressive"
-; V21 cse2 [V21,T17] ( 3, 3 ) ref -> x23 "CSE - aggressive"
-; V22 cse3 [V22,T16] ( 2, 4 ) int -> x2 "CSE - aggressive"
-; V23 cse4 [V23,T05] ( 4, 12 ) long -> x25 "CSE - aggressive"
+; V19 tmp13 [V19,T00] ( 14, 41 ) long -> x23 "Widened primary induction variable"
+; V20 cse0 [V20,T07] ( 3, 12 ) ref -> x1 "CSE - aggressive"
+; V21 cse1 [V21,T13] ( 3, 6 ) int -> x1 "CSE - aggressive"
+; V22 cse2 [V22,T16] ( 3, 3 ) ref -> x23 "CSE - aggressive"
+; V23 cse3 [V23,T15] ( 2, 4 ) int -> x2 "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M15198_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x38]
- stp x21, x22, [sp, #0x48]
- stp x23, x24, [sp, #0x58]
- str x25, [sp, #0x68]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x30]
+ stp x21, x22, [sp, #0x40]
+ stp x23, x24, [sp, #0x50]
mov fp, sp
- stp xzr, xzr, [fp, #0x18] // [V16 tmp10], [V16 tmp10+0x08]
- stp xzr, xzr, [fp, #0x28] // [V16 tmp10+0x10], [V16 tmp10+0x18]
+ stp xzr, xzr, [fp, #0x10] // [V16 tmp10], [V16 tmp10+0x08]
+ stp xzr, xzr, [fp, #0x20] // [V16 tmp10+0x10], [V16 tmp10+0x18]
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
@@ -52,7 +51,7 @@ G_M15198_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; byrRegs +[x22]
mov x21, x3
; byrRegs +[x21]
- ;; size=48 bbWeight=1 PerfScore 9.50
+ ;; size=44 bbWeight=1 PerfScore 8.50
G_M15198_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=600000 {x21 x22}, byref, isz
cbz x19, G_M15198_IG13
ldr x23, [x19, #0x08]
@@ -86,13 +85,13 @@ G_M15198_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=600000
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- mov w23, wzr
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
ldr w1, [x1, #0x08]
; gcrRegs -[x1]
cmp w1, #0
ble G_M15198_IG10
+ mov x23, xzr
;; size=112 bbWeight=1 PerfScore 30.50
G_M15198_IG03: ; bbWeight=4, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=600000 {x21 x22}, byref, isz
tbnz w23, #31, G_M15198_IG16
@@ -104,21 +103,18 @@ G_M15198_IG03: ; bbWeight=4, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=6
ldr w0, [x1, #0x08]
cmp w23, w0
bhs G_M15198_IG12
- mov w25, w23
- lsl x0, x25, #5
+ lsl x0, x23, #5
add x0, x0, #16
add x1, x1, x0
; gcrRegs -[x1]
; byrRegs +[x1]
- ;; size=48 bbWeight=4 PerfScore 62.00
+ ;; size=44 bbWeight=4 PerfScore 60.00
G_M15198_IG04: ; bbWeight=4, nogc, extend
- ldp x0, x2, [x1]
- stp x0, x2, [fp, #0x18]
- ldp x0, x2, [x1, #0x10]
- stp x0, x2, [fp, #0x28]
- ;; size=16 bbWeight=4 PerfScore 40.00
+ ldp q16, q17, [x1]
+ stp q16, q17, [fp, #0x10]
+ ;; size=8 bbWeight=4 PerfScore 16.00
G_M15198_IG05: ; bbWeight=4, isz, extend
- add x1, fp, #24 // [V16 tmp10]
+ add x1, fp, #16 // [V16 tmp10]
; byrRegs -[x1]
ldr x0, [x20, #0x08]
; gcrRegs +[x0]
@@ -136,7 +132,7 @@ G_M15198_IG06: ; bbWeight=2, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=6
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
- lsl x1, x25, #2
+ lsl x1, x23, #2
movn w2, #0
str w2, [x0, x1]
b G_M15198_IG09
@@ -153,7 +149,7 @@ G_M15198_IG07: ; bbWeight=2, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=6
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
- lsl x3, x25, #2
+ lsl x3, x23, #2
str w2, [x0, x3]
ldr w0, [x24, #0x14]
; byrRegs -[x0]
@@ -185,14 +181,15 @@ G_M15198_IG08: ; bbWeight=2, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=6
; gcrRegs -[x0]
;; size=28 bbWeight=2 PerfScore 13.00
G_M15198_IG09: ; bbWeight=4, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=600000 {x21 x22}, byref, isz
- add w23, w23, #1
+ add w0, w23, #1
+ mov w23, w0
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
cmp w0, w23
bgt G_M15198_IG03
- ;; size=20 bbWeight=4 PerfScore 32.00
+ ;; size=24 bbWeight=4 PerfScore 34.00
G_M15198_IG10: ; bbWeight=1, gcrefRegs=1000000 {x24}, byrefRegs=400000 {x22}, byref
; gcrRegs -[x19-x20]
; byrRegs -[x21]
@@ -213,13 +210,12 @@ G_M15198_IG10: ; bbWeight=1, gcrefRegs=1000000 {x24}, byrefRegs=400000 {x
; byrRegs -[x14 x22]
;; size=36 bbWeight=1 PerfScore 8.00
G_M15198_IG11: ; bbWeight=1, epilog, nogc, extend
- ldr x25, [sp, #0x68]
- ldp x23, x24, [sp, #0x58]
- ldp x21, x22, [sp, #0x48]
- ldp x19, x20, [sp, #0x38]
- ldp fp, lr, [sp], #0x70
+ ldp x23, x24, [sp, #0x50]
+ ldp x21, x22, [sp, #0x40]
+ ldp x19, x20, [sp, #0x30]
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=24 bbWeight=1 PerfScore 7.00
+ ;; size=20 bbWeight=1 PerfScore 5.00
G_M15198_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
@@ -299,18 +295,18 @@ G_M15198_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 688, prolog size 32, PerfScore 318.00, instruction count 172, allocated bytes for code 688 (MethodHash=8637c4a1) for method Microsoft.ML.Internal.Utilities.Utils:BuildSubsetMaps(Microsoft.ML.DataViewSchema,System.Func`2[Microsoft.ML.DataViewSchema+Column,ubyte],byref,byref) (FullOpts)
+; Total bytes of code 672, prolog size 28, PerfScore 291.00, instruction count 168, allocated bytes for code 672 (MethodHash=8637c4a1) for method Microsoft.ML.Internal.Utilities.Utils:BuildSubsetMaps(Microsoft.ML.DataViewSchema,System.Func`2[Microsoft.ML.DataViewSchema+Column,ubyte],byref,byref) (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 3
+ Code Words : 2
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 172 (0x000ac) Actual length = 688 (0x0002b0)
+ Function Length : 168 (0x000a8) Actual length = 672 (0x0002a0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -318,13 +314,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D1 8D save_reg X#6 Z#13 (0x0D); str x25, [sp, #104]
E6 save_next
E6 save_next
- C8 07 save_regp X#0 Z#7 (0x07); stp x19, x20, [sp, #56]
- 8D save_fplr_x #13 (0x0D); stp fp, lr, [sp, #-112]!
- E4 end
- E4 end
+ C8 06 save_regp X#0 Z#6 (0x06); stp x19, x20, [sp, #48]
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end
-8 (-1.41%) : 13430.dasm - Microsoft.ML.Transforms.Text.WordTokenizingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
@@ -9,22 +9,22 @@
; Final local variable assignments
;
; V00 this [V00,T03] ( 8, 23 ) ref -> x19 this class-hnd single-def <Microsoft.ML.Transforms.Text.WordTokenizingTransformer+Mapper>
-; V01 loc0 [V01,T11] ( 4, 10 ) ref -> x21 class-hnd exact single-def <Microsoft.ML.DataViewSchema+DetachedColumn[]>
-; V02 loc1 [V02,T01] ( 8, 29 ) int -> x22
-; V03 loc2 [V03 ] ( 1, 4 ) int -> [fp+0x54] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V01 loc0 [V01,T10] ( 4, 10 ) ref -> x21 class-hnd exact single-def <Microsoft.ML.DataViewSchema+DetachedColumn[]>
+;* V02 loc1 [V02,T17] ( 0, 0 ) int -> zero-ref
+; V03 loc2 [V03 ] ( 1, 4 ) int -> [fp+0x5C] do-not-enreg[X] must-init addr-exposed ld-addr-op
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05 ] ( 7, 56 ) struct (24) [fp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.ML.DataViewSchema+DetachedColumn>
+; V05 tmp1 [V05 ] ( 7, 56 ) struct (24) [fp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.ML.DataViewSchema+DetachedColumn>
; V06 tmp2 [V06,T07] ( 2, 16 ) ref -> x0 class-hnd exact "Inlining Arg" <Microsoft.ML.DataViewSchema>
; V07 tmp3 [V07,T08] ( 2, 16 ) ref -> x1 class-hnd "Inlining Arg" <<unknown class>>
-; V08 tmp4 [V08 ] ( 4, 16 ) struct (40) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Nullable`1[Microsoft.ML.DataViewSchema+Column]>
-; V09 tmp5 [V09,T13] ( 2, 8 ) byref -> x14
-; V10 tmp6 [V10,T15] ( 2, 6 ) byref -> x15
+; V08 tmp4 [V08 ] ( 4, 16 ) struct (40) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Nullable`1[Microsoft.ML.DataViewSchema+Column]>
+; V09 tmp5 [V09,T12] ( 2, 8 ) byref -> x14
+; V10 tmp6 [V10,T14] ( 2, 6 ) byref -> x15
;* V11 tmp7 [V11 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "Inline stloc first use temp" <Microsoft.ML.DataViewSchema+Column>
;* V12 tmp8 [V12 ] ( 0, 0 ) byref -> zero-ref
-; V13 tmp9 [V13,T12] ( 3, 8 ) int -> x12
+; V13 tmp9 [V13,T11] ( 3, 8 ) int -> x12
; V14 tmp10 [V14,T02] ( 4, 28 ) ref -> x14 class-hnd "Inlining Arg" <<unknown class>>
; V15 tmp11 [V15,T04] ( 3, 24 ) ref -> x15 class-hnd "Inlining Arg" <Microsoft.ML.Data.DataViewType>
-; V16 tmp12 [V16,T14] ( 2, 8 ) byref -> x14
+; V16 tmp12 [V16,T13] ( 2, 8 ) byref -> x14
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref
;* V18 tmp14 [V18 ] ( 0, 0 ) byref -> zero-ref
;* V19 tmp15 [V19 ] ( 0, 0 ) ref -> zero-ref
@@ -33,35 +33,34 @@
; V22 tmp18 [V22,T18] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V23 tmp19 [V23,T19] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V24 tmp20 [V24,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V25 tmp21 [V25 ] ( 5, 32 ) ref -> [fp+0x38] do-not-enreg[X] addr-exposed "field V05.<Name>k__BackingField (fldOffset=0x0)" P-DEP
-; V26 tmp22 [V26 ] ( 4, 28 ) ref -> [fp+0x40] do-not-enreg[X] addr-exposed "field V05.<Type>k__BackingField (fldOffset=0x8)" P-DEP
-; V27 tmp23 [V27 ] ( 4, 28 ) ref -> [fp+0x48] do-not-enreg[X] addr-exposed "field V05.<Annotations>k__BackingField (fldOffset=0x10)" P-DEP
-; V28 tmp24 [V28,T16] ( 2, 4 ) int -> x12 "V11.[024..028)"
+; V25 tmp21 [V25 ] ( 5, 32 ) ref -> [fp+0x40] do-not-enreg[X] addr-exposed "field V05.<Name>k__BackingField (fldOffset=0x0)" P-DEP
+; V26 tmp22 [V26 ] ( 4, 28 ) ref -> [fp+0x48] do-not-enreg[X] addr-exposed "field V05.<Type>k__BackingField (fldOffset=0x8)" P-DEP
+; V27 tmp23 [V27 ] ( 4, 28 ) ref -> [fp+0x50] do-not-enreg[X] addr-exposed "field V05.<Annotations>k__BackingField (fldOffset=0x10)" P-DEP
+; V28 tmp24 [V28,T15] ( 2, 4 ) int -> x12 "V11.[024..028)"
; V29 tmp25 [V29,T05] ( 3, 24 ) ref -> x8 "arr expr"
; V30 tmp26 [V30,T06] ( 3, 24 ) ref -> x14 "arr expr"
-; V31 tmp27 [V31,T00] ( 4, 32 ) byref -> x0 "BlockOp address local"
+; V31 tmp27 [V31,T01] ( 4, 32 ) byref -> x0 "BlockOp address local"
; V32 tmp28 [V32,T20] ( 2, 0 ) ref -> x1 "argument with side effect"
; V33 tmp29 [V33,T21] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V34 cse0 [V34,T17] ( 3, 3 ) ref -> x20 "CSE - moderate"
-; V35 cse1 [V35,T09] ( 3, 12 ) long -> x23 "CSE - aggressive"
-; V36 cse2 [V36,T10] ( 3, 12 ) long -> x20 "CSE - aggressive"
+; V34 tmp30 [V34,T00] ( 9, 33 ) long -> x20 "Widened primary induction variable"
+; V35 cse0 [V35,T09] ( 3, 12 ) long -> x22 "CSE - aggressive"
+; V36 cse1 [V36,T16] ( 3, 3 ) ref -> x20 "CSE - moderate"
;
-; Lcl frame size = 72
+; Lcl frame size = 80
G_M6166_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x80]!
- stp x19, x20, [sp, #0x58]
- stp x21, x22, [sp, #0x68]
- str x23, [sp, #0x78]
+ stp x19, x20, [sp, #0x60]
+ stp x21, x22, [sp, #0x70]
mov fp, sp
- add x9, fp, #16
+ add x9, fp, #24
movi v16.16b, #0
stp q16, q16, [x9]
stp q16, q16, [x9, #0x20]
str xzr, [x9, #0x40]
mov x19, x0
; gcrRegs +[x19]
- ;; size=44 bbWeight=1 PerfScore 9.00
+ ;; size=40 bbWeight=1 PerfScore 8.00
G_M6166_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x19, #0x40]
; gcrRegs +[x1]
@@ -76,33 +75,33 @@ G_M6166_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
; gcrRegs +[x0]
mov x21, x0
; gcrRegs +[x21]
- mov w22, wzr
ldr w8, [x20, #0x08]
cmp w8, #0
ble G_M6166_IG09
+ mov x20, xzr
+ ; gcrRegs -[x20]
;; size=48 bbWeight=1 PerfScore 17.00
G_M6166_IG03: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0 x20]
+ ; gcrRegs -[x0]
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
ldr x8, [x19, #0x40]
; gcrRegs +[x8]
ldr x8, [x8, #0x10]
ldr w1, [x8, #0x08]
- cmp w22, w1
+ cmp w20, w1
bhs G_M6166_IG11
- mov w20, w22
lsl x1, x20, #4
- add x23, x1, #16
- add x8, x8, x23
+ add x22, x1, #16
+ add x8, x8, x22
; gcrRegs -[x8]
; byrRegs +[x8]
ldr x1, [x8, #0x08]
; gcrRegs +[x1]
- stp xzr, xzr, [fp, #0x10]
- stp xzr, xzr, [fp, #0x20]
- str xzr, [fp, #0x30]
- add x8, fp, #16 // [V08 tmp4]
+ stp xzr, xzr, [fp, #0x18]
+ stp xzr, xzr, [fp, #0x28]
+ str xzr, [fp, #0x38]
+ add x8, fp, #24 // [V08 tmp4]
; byrRegs -[x8]
movz x2, #0xD1FFAB1E // code for Microsoft.ML.DataViewSchema:GetColumnOrNull(System.String):System.Nullable`1[Microsoft.ML.DataViewSchema+Column]:this
movk x2, #0xD1FFAB1E LSL #16
@@ -111,13 +110,13 @@ G_M6166_IG03: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}
ldr wzr, [x0]
blr x2
; gcrRegs -[x0-x1]
- add x14, fp, #84 // [V03 loc2]
+ add x14, fp, #92 // [V03 loc2]
; byrRegs +[x14]
- add x15, fp, #16 // [V08 tmp4]
+ add x15, fp, #24 // [V08 tmp4]
; byrRegs +[x15]
- ldrb w12, [fp, #0x10] // [V08 tmp4]
+ ldrb w12, [fp, #0x18] // [V08 tmp4]
cbnz w12, G_M6166_IG05
- ;; size=100 bbWeight=4 PerfScore 140.00
+ ;; size=96 bbWeight=4 PerfScore 138.00
G_M6166_IG04: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=4000 {x14}, byref
; byrRegs -[x15]
movn w12, #0
@@ -130,16 +129,16 @@ G_M6166_IG05: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=C000 {x
G_M6166_IG06: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=4000 {x14}, byref, isz
; byrRegs -[x15]
str w12, [x14]
- stp xzr, xzr, [fp, #0x38]
- str xzr, [fp, #0x48]
+ stp xzr, xzr, [fp, #0x40]
+ str xzr, [fp, #0x50]
ldr x14, [x19, #0x40]
; gcrRegs +[x14]
; byrRegs -[x14]
ldr x14, [x14, #0x10]
ldr w15, [x14, #0x08]
- cmp w22, w15
+ cmp w20, w15
bhs G_M6166_IG11
- ldr x14, [x14, x23]
+ ldr x14, [x14, x22]
ldr x15, [x19, #0x38]
; gcrRegs +[x15]
cbz x14, G_M6166_IG12
@@ -149,8 +148,8 @@ G_M6166_IG07: ; bbWeight=2, gcrefRegs=28C000 {x14 x15 x19 x21}, byrefRegs
cbz w12, G_M6166_IG12
;; size=8 bbWeight=2 PerfScore 8.00
G_M6166_IG08: ; bbWeight=4, gcrefRegs=28C000 {x14 x15 x19 x21}, byrefRegs=0000 {}, byref, isz
- str x14, [fp, #0x38] // [V25 tmp21]
- add x14, fp, #56 // [V05 tmp1]
+ str x14, [fp, #0x40] // [V25 tmp21]
+ add x14, fp, #64 // [V05 tmp1]
; gcrRegs -[x14]
; byrRegs +[x14]
cbz x15, G_M6166_IG13
@@ -163,17 +162,17 @@ G_M6166_IG08: ; bbWeight=4, gcrefRegs=28C000 {x14 x15 x19 x21}, byrefRegs
movk x14, #0xD1FFAB1E LSL #32
ldr x14, [x14]
; gcrRegs +[x14]
- str x14, [fp, #0x48] // [V05 tmp1+0x10]
+ str x14, [fp, #0x50] // [V05 tmp1+0x10]
ldr w14, [x21, #0x08]
; gcrRegs -[x14]
- cmp w22, w14
+ cmp w20, w14
bhs G_M6166_IG11
mov x14, #24
mul x14, x20, x14
add x14, x14, #16
add x0, x21, x14
; byrRegs +[x0]
- ldr x15, [fp, #0x38] // [V25 tmp21]
+ ldr x15, [fp, #0x40] // [V25 tmp21]
; gcrRegs +[x15]
mov x14, x0
; byrRegs +[x14]
@@ -182,39 +181,39 @@ G_M6166_IG08: ; bbWeight=4, gcrefRegs=28C000 {x14 x15 x19 x21}, byrefRegs
; byrRegs -[x14]
add x14, x0, #8
; byrRegs +[x14]
- ldr x15, [fp, #0x40] // [V26 tmp22]
+ ldr x15, [fp, #0x48] // [V26 tmp22]
; gcrRegs +[x15]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]
add x14, x0, #16
; byrRegs +[x14]
- ldr x15, [fp, #0x48] // [V27 tmp23]
+ ldr x15, [fp, #0x50] // [V27 tmp23]
; gcrRegs +[x15]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x0 x14]
- add w22, w22, #1
+ add w0, w20, #1
+ mov w20, w0
ldr x0, [x19, #0x40]
; gcrRegs +[x0]
ldr x0, [x0, #0x10]
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
- cmp w0, w22
+ cmp w0, w20
bgt G_M6166_IG03
- ;; size=128 bbWeight=4 PerfScore 156.00
+ ;; size=132 bbWeight=4 PerfScore 158.00
G_M6166_IG09: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
mov x0, x21
; gcrRegs +[x0]
;; size=4 bbWeight=1 PerfScore 0.50
G_M6166_IG10: ; bbWeight=1, epilog, nogc, extend
- ldr x23, [sp, #0x78]
- ldp x21, x22, [sp, #0x68]
- ldp x19, x20, [sp, #0x58]
+ ldp x21, x22, [sp, #0x70]
+ ldp x19, x20, [sp, #0x60]
ldp fp, lr, [sp], #0x80
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00
+ ;; size=16 bbWeight=1 PerfScore 4.00
G_M6166_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x21]
bl CORINFO_HELP_RNGCHKFAIL
@@ -279,7 +278,7 @@ G_M6166_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 568, prolog size 40, PerfScore 427.50, instruction count 142, allocated bytes for code 568 (MethodHash=4802e7e9) for method Microsoft.ML.Transforms.Text.WordTokenizingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
...
+24 (+35.29%) : 15263.dasm - Microsoft.CodeAnalysis.CommandLineParser:g_isAllAscii|170(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
@@ -9,33 +9,38 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V02 loc1 [V02,T00] ( 5, 17 ) int -> x2
+;* V02 loc1 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V05 tmp2 [V05,T04] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V06 tmp3 [V06,T02] ( 2, 5 ) byref -> x0 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V07 tmp4 [V07,T01] ( 3, 6 ) int -> x1 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T01] ( 4, 10 ) int -> x1 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp5 [V08,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
-G_M41908_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M41908_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M41908_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0
ble G_M41908_IG04
+ mov x2, xzr
;; size=12 bbWeight=1 PerfScore 2.00
G_M41908_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrh w3, [x0, w2, UXTW #2]
+ cmp w2, w1
+ bhs G_M41908_IG08
+ lsl x3, x2, #1
+ ldrh w3, [x0, x3]
cmp w3, #127
bgt G_M41908_IG06
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
blt G_M41908_IG03
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=40 bbWeight=4 PerfScore 38.00
G_M41908_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov w0, #1
@@ -51,8 +56,13 @@ G_M41908_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M41908_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 68, prolog size 8, PerfScore 32.00, instruction count 17, allocated bytes for code 68 (MethodHash=61d05c4b) for method Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
+; Total bytes of code 92, prolog size 8, PerfScore 44.00, instruction count 23, allocated bytes for code 92 (MethodHash=61d05c4b) for method Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -63,7 +73,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+37.50%) : 12611.dasm - Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)
@@ -8,12 +8,13 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[float]>
-; V01 loc0 [V01,T04] ( 4, 10 ) float -> d16
-; V02 loc1 [V02,T00] ( 5, 17 ) int -> x2
-; V03 loc2 [V03,T03] ( 3, 12 ) float -> d17
+; V01 loc0 [V01,T05] ( 4, 10 ) float -> d16
+;* V02 loc1 [V02,T03] ( 0, 0 ) int -> zero-ref
+; V03 loc2 [V03,T04] ( 3, 12 ) float -> d17
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T02] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T01] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp3 [V07,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -24,18 +25,22 @@ G_M8690_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M8690_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
movi v16.16b, #0
- mov w2, wzr
cmp w1, #0
ble G_M8690_IG04
+ mov x2, xzr
;; size=16 bbWeight=1 PerfScore 2.50
G_M8690_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr s17, [x0, w2, UXTW #2]
+ cmp w2, w1
+ bhs G_M8690_IG06
+ lsl x3, x2, #2
+ ldr s17, [x0, x3]
fsub s17, s17, s17
fadd s16, s17, s16
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
blt G_M8690_IG03
- ;; size=24 bbWeight=4 PerfScore 44.00
+ ;; size=40 bbWeight=4 PerfScore 56.00
G_M8690_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
fcmp s16, #0.0
@@ -45,8 +50,13 @@ G_M8690_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M8690_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 64, prolog size 8, PerfScore 52.50, instruction count 16, allocated bytes for code 64 (MethodHash=2f89de0d) for method Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 64.50, instruction count 22, allocated bytes for code 88 (MethodHash=2f89de0d) for method Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -57,7 +67,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+46.15%) : 914.dasm - System.Linq.Enumerable:Sumdouble,double:double (FullOpts)
@@ -9,9 +9,9 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[double]>
-; V01 loc0 [V01,T05] ( 4, 10 ) double -> d0
+; V01 loc0 [V01,T06] ( 4, 10 ) double -> d0
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[double]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x2
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) double -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -20,7 +20,8 @@
; V09 tmp4 [V09,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V10 tmp5 [V10,T04] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V11 tmp6 [V11,T02] ( 2, 5 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp7 [V12,T01] ( 3, 6 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V12 tmp7 [V12,T01] ( 4, 10 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V13 tmp8 [V13,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -31,24 +32,33 @@ G_M25021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M25021_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
movi v0.16b, #0
- mov w2, wzr
cmp w1, #0
ble G_M25021_IG04
+ mov x2, xzr
;; size=16 bbWeight=1 PerfScore 2.50
G_M25021_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr d16, [x0, w2, UXTW #3]
+ cmp w2, w1
+ bhs G_M25021_IG05
+ lsl x3, x2, #3
+ ldr d16, [x0, x3]
fadd d0, d16, d0
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
blt G_M25021_IG03
- ;; size=20 bbWeight=4 PerfScore 32.00
+ ;; size=36 bbWeight=4 PerfScore 44.00
G_M25021_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M25021_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 38.00, instruction count 13, allocated bytes for code 52 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 50.00, instruction count 19, allocated bytes for code 76 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
; ============================================================
Unwind Info:
@@ -59,7 +69,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
smoke_tests.nativeaot.windows.arm64.checked.mch
-20 (-2.86%) : 1374.dasm - System.Collections.Generic.Dictionary`2[long,System.__Canon]:Resize(int,ubyte):this (FullOpts)
@@ -10,12 +10,12 @@
; V00 this [V00,T01] ( 14, 14 ) ref -> x19 this class-hnd exact single-def <System.Collections.Generic.Dictionary`2[long,System.__Canon]>
; V01 arg1 [V01,T08] ( 6, 6 ) int -> x20 single-def
; V02 arg2 [V02,T14] ( 3, 3 ) ubyte -> x2 single-def
-; V03 loc0 [V03,T04] ( 11, 12.04) ref -> x21 class-hnd exact single-def <<unknown class>>
+; V03 loc0 [V03,T04] ( 9, 12 ) ref -> x21 class-hnd exact single-def <<unknown class>>
; V04 loc1 [V04,T09] ( 6, 8 ) int -> x22
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
;* V07 loc4 [V07 ] ( 0, 0 ) int -> zero-ref
-; V08 loc5 [V08,T00] ( 14, 19.08) int -> x20
+;* V08 loc5 [V08,T16] ( 0, 0 ) int -> zero-ref
; V09 loc6 [V09,T12] ( 6, 6 ) byref -> x26
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11,T15] ( 0, 0 ) int -> zero-ref
@@ -32,9 +32,12 @@
;* V22 tmp12 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp13 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp14 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V25 cse0 [V25,T05] ( 4, 11.88) long -> x23 "CSE - aggressive"
-; V26 cse1 [V26,T13] ( 3, 5.94) int -> x26 "CSE - aggressive"
-; V27 cse2 [V27,T06] ( 14, 10 ) ref -> x1 multi-def "CSE - aggressive"
+; V25 tmp15 [V25,T17] ( 7, 0.23) long -> x20 "Widened primary induction variable"
+; V26 tmp16 [V26,T00] ( 6, 18.82) long -> x20 "Widened primary induction variable"
+; V27 cse0 [V27,T18] ( 4, 0.12) byref -> x23 "CSE - conservative"
+; V28 cse1 [V28,T05] ( 4, 11.88) long -> x23 "CSE - aggressive"
+; V29 cse2 [V29,T13] ( 3, 5.94) int -> x26 "CSE - aggressive"
+; V30 cse3 [V30,T06] ( 14, 10 ) ref -> x1 multi-def "CSE - aggressive"
;
; Lcl frame size = 16
@@ -134,28 +137,28 @@ G_M6780_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
movn x0, #0
mov w1, w20
cmp x1, #0
- beq G_M6780_IG21
+ beq G_M6780_IG22
udiv x0, x0, x1
add x0, x0, #1
str x0, [x19, #0x30]
- mov w20, wzr
cmp w22, #0
- ble G_M6780_IG18
+ ble G_M6780_IG19
ldr w0, [x21, #0x08]
cmp w0, w22
blt G_M6780_IG14
+ mov x20, xzr
;; size=124 bbWeight=1 PerfScore 53.00
G_M6780_IG09: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mov w0, #24
- mov x1, #16
- umaddl x23, w20, w0, x1
+ mov x0, #24
+ mul x0, x20, x0
+ add x23, x0, #16
add x0, x21, x23
; byrRegs +[x0]
ldr w0, [x0, #0x14]
; byrRegs -[x0]
cmn w0, #1
blt G_M6780_IG12
- ;; size=28 bbWeight=3.96 PerfScore 43.56
+ ;; size=28 bbWeight=3.96 PerfScore 31.68
G_M6780_IG10: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
add x0, x21, x23
; byrRegs +[x0]
@@ -174,7 +177,7 @@ G_M6780_IG10: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
mul x0, x0, x1
lsr x28, x0, #32
cmp w2, #0
- beq G_M6780_IG21
+ beq G_M6780_IG22
udiv w0, w24, w2
msub w0, w0, w2, w24
cmp w0, w28
@@ -190,7 +193,7 @@ G_M6780_IG10: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
;; size=92 bbWeight=1.98 PerfScore 77.22
G_M6780_IG11: ; bbWeight=1.98, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
cmp w28, w26
- bhs G_M6780_IG20
+ bhs G_M6780_IG21
add x0, x25, #16
; byrRegs +[x0]
ubfiz x1, x28, #2, #32
@@ -208,40 +211,37 @@ G_M6780_IG11: ; bbWeight=1.98, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs
G_M6780_IG12: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
; byrRegs -[x26]
- add w20, w20, #1
+ add w0, w20, #1
+ mov w20, w0
cmp w20, w22
blt G_M6780_IG09
- ;; size=12 bbWeight=3.96 PerfScore 7.92
+ ;; size=16 bbWeight=3.96 PerfScore 9.90
G_M6780_IG13: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
- b G_M6780_IG18
+ b G_M6780_IG19
;; size=4 bbWeight=1 PerfScore 1.00
-G_M6780_IG14: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M6780_IG14: ; bbWeight=0.01, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ mov x20, xzr
+ ;; size=4 bbWeight=0.01 PerfScore 0.01
+G_M6780_IG15: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x21, #0x08]
cmp w20, w0
- bhs G_M6780_IG20
- mov w0, #24
- mov x1, #16
- umaddl x0, w20, w0, x1
- add x0, x21, x0
- ; byrRegs +[x0]
- ldr w0, [x0, #0x14]
- ; byrRegs -[x0]
+ bhs G_M6780_IG21
+ mov x0, #24
+ mul x0, x20, x0
+ add x0, x0, #16
+ add x23, x21, x0
+ ; byrRegs +[x23]
+ ldr w0, [x23, #0x14]
cmn w0, #1
- blt G_M6780_IG17
- ;; size=40 bbWeight=0.04 PerfScore 0.62
-G_M6780_IG15: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mov w0, #24
- mov x1, #16
- umaddl x0, w20, w0, x1
- add x0, x21, x0
- ; byrRegs +[x0]
- ldr w24, [x0, #0x10]
+ blt G_M6780_IG18
+ ;; size=40 bbWeight=0.04 PerfScore 0.50
+G_M6780_IG16: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=800000 {x23}, byref, isz
+ ldr w24, [x23, #0x10]
ldr x25, [x19, #0x08]
; gcrRegs +[x25]
ldr w2, [x25, #0x08]
ldr x27, [x19, #0x30]
mov w0, w24
- ; byrRegs -[x0]
mul x0, x27, x0
lsr x0, x0, #32
add x0, x0, #1
@@ -249,11 +249,11 @@ G_M6780_IG15: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
mul x0, x0, x1
lsr x28, x0, #32
cmp w2, #0
- beq G_M6780_IG21
+ beq G_M6780_IG22
udiv w0, w24, w2
msub w0, w0, w2, w24
cmp w0, w28
- beq G_M6780_IG16
+ beq G_M6780_IG17
adrp x1, [HIGH RELOC #0xD1FFAB1E]
add x1, x1, [LOW RELOC #0xD1FFAB1E]
; gcrRegs +[x1]
@@ -262,38 +262,33 @@ G_M6780_IG15: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
bl <unknown method>
; gcrRegs -[x0-x1]
; gcr arg pop 0
- ;; size=100 bbWeight=0.02 PerfScore 0.89
-G_M6780_IG16: ; bbWeight=0.02, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
+ ;; size=84 bbWeight=0.02 PerfScore 0.76
+G_M6780_IG17: ; bbWeight=0.02, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=800000 {x23}, byref, isz
ldr w14, [x25, #0x08]
cmp w28, w14
- bhs G_M6780_IG20
+ bhs G_M6780_IG21
add x14, x25, #16
; byrRegs +[x14]
ubfiz x15, x28, #2, #32
add x26, x14, x15
; byrRegs +[x26]
- mov w14, #24
- ; byrRegs -[x14]
- mov x15, #16
- umaddl x14, w20, w14, x15
- add x14, x21, x14
- ; byrRegs +[x14]
- add x14, x14, #20
+ add x14, x23, #20
ldr w15, [x26]
sub w15, w15, #1
str w15, [x14]
add w14, w20, #1
; byrRegs -[x14]
str w14, [x26]
- ;; size=64 bbWeight=0.02 PerfScore 0.39
-G_M6780_IG17: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=48 bbWeight=0.02 PerfScore 0.26
+G_M6780_IG18: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
- ; byrRegs -[x26]
- add w20, w20, #1
+ ; byrRegs -[x23 x26]
+ add w14, w20, #1
+ mov w20, w14
cmp w20, w22
- blt G_M6780_IG14
- ;; size=12 bbWeight=0.04 PerfScore 0.08
-G_M6780_IG18: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ blt G_M6780_IG15
+ ;; size=16 bbWeight=0.04 PerfScore 0.10
+G_M6780_IG19: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
add x14, x19, #16
; byrRegs +[x14]
mov x15, x21
@@ -302,7 +297,7 @@ G_M6780_IG18: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}
; gcrRegs -[x15 x21]
; byrRegs -[x14]
;; size=12 bbWeight=1 PerfScore 2.00
-G_M6780_IG19: ; bbWeight=1, epilog, nogc, extend
+G_M6780_IG20: ; bbWeight=1, epilog, nogc, extend
ldp x27, x28, [sp, #0x60]
ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40]
@@ -311,17 +306,17 @@ G_M6780_IG19: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x70
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M6780_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M6780_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M6780_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M6780_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROWDIVZERO
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 700, prolog size 40, PerfScore 239.97, instruction count 175, allocated bytes for code 700 (MethodHash=a2d7e583) for method System.Collections.Generic.Dictionary`2[long,System.__Canon]:Resize(int,ubyte):this (FullOpts)
+; Total bytes of code 680, prolog size 40, PerfScore 229.72, instruction count 170, allocated bytes for code 680 (MethodHash=a2d7e583) for method System.Collections.Generic.Dictionary`2[long,System.__Canon]:Resize(int,ubyte):this (FullOpts)
; ============================================================
Unwind Info:
@@ -332,7 +327,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 175 (0x000af) Actual length = 700 (0x0002bc)
+ Function Length : 170 (0x000aa) Actual length = 680 (0x0002a8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-2.86%) : 4860.dasm - System.Collections.Generic.Dictionary`2[long,System.__Canon]:Resize(int,ubyte):this (FullOpts)
@@ -11,12 +11,12 @@
; V00 this [V00,T01] ( 14, 14 ) ref -> x19 this class-hnd exact single-def <System.Collections.Generic.Dictionary`2[long,System.__Canon]>
; V01 arg1 [V01,T08] ( 6, 6 ) int -> x20 single-def
; V02 arg2 [V02,T14] ( 3, 3 ) ubyte -> x2 single-def
-; V03 loc0 [V03,T04] ( 11, 12.04) ref -> x21 class-hnd exact single-def <<unknown class>>
+; V03 loc0 [V03,T04] ( 9, 12 ) ref -> x21 class-hnd exact single-def <<unknown class>>
; V04 loc1 [V04,T09] ( 6, 8 ) int -> x22
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
;* V07 loc4 [V07 ] ( 0, 0 ) int -> zero-ref
-; V08 loc5 [V08,T00] ( 14, 19.08) int -> x20
+;* V08 loc5 [V08,T16] ( 0, 0 ) int -> zero-ref
; V09 loc6 [V09,T12] ( 6, 6 ) byref -> x26
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11,T15] ( 0, 0 ) int -> zero-ref
@@ -33,9 +33,12 @@
;* V22 tmp12 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp13 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp14 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V25 cse0 [V25,T05] ( 4, 11.88) long -> x23 "CSE - aggressive"
-; V26 cse1 [V26,T13] ( 3, 5.94) int -> x26 "CSE - aggressive"
-; V27 cse2 [V27,T06] ( 14, 10 ) ref -> x1 multi-def "CSE - aggressive"
+; V25 tmp15 [V25,T17] ( 7, 0.23) long -> x20 "Widened primary induction variable"
+; V26 tmp16 [V26,T00] ( 6, 18.82) long -> x20 "Widened primary induction variable"
+; V27 cse0 [V27,T18] ( 4, 0.12) byref -> x23 "CSE - conservative"
+; V28 cse1 [V28,T05] ( 4, 11.88) long -> x23 "CSE - aggressive"
+; V29 cse2 [V29,T13] ( 3, 5.94) int -> x26 "CSE - aggressive"
+; V30 cse3 [V30,T06] ( 14, 10 ) ref -> x1 multi-def "CSE - aggressive"
;
; Lcl frame size = 16
@@ -135,28 +138,28 @@ G_M6780_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
movn x0, #0
mov w1, w20
cmp x1, #0
- beq G_M6780_IG21
+ beq G_M6780_IG22
udiv x0, x0, x1
add x0, x0, #1
str x0, [x19, #0x30]
- mov w20, wzr
cmp w22, #0
- ble G_M6780_IG18
+ ble G_M6780_IG19
ldr w0, [x21, #0x08]
cmp w0, w22
blt G_M6780_IG14
+ mov x20, xzr
;; size=124 bbWeight=1 PerfScore 53.00
G_M6780_IG09: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mov w0, #24
- mov x1, #16
- umaddl x23, w20, w0, x1
+ mov x0, #24
+ mul x0, x20, x0
+ add x23, x0, #16
add x0, x21, x23
; byrRegs +[x0]
ldr w0, [x0, #0x14]
; byrRegs -[x0]
cmn w0, #1
blt G_M6780_IG12
- ;; size=28 bbWeight=3.96 PerfScore 43.56
+ ;; size=28 bbWeight=3.96 PerfScore 31.68
G_M6780_IG10: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
add x0, x21, x23
; byrRegs +[x0]
@@ -175,7 +178,7 @@ G_M6780_IG10: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
mul x0, x0, x1
lsr x28, x0, #32
cmp w2, #0
- beq G_M6780_IG21
+ beq G_M6780_IG22
udiv w0, w24, w2
msub w0, w0, w2, w24
cmp w0, w28
@@ -191,7 +194,7 @@ G_M6780_IG10: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
;; size=92 bbWeight=1.98 PerfScore 77.22
G_M6780_IG11: ; bbWeight=1.98, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
cmp w28, w26
- bhs G_M6780_IG20
+ bhs G_M6780_IG21
add x0, x25, #16
; byrRegs +[x0]
ubfiz x1, x28, #2, #32
@@ -209,40 +212,37 @@ G_M6780_IG11: ; bbWeight=1.98, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs
G_M6780_IG12: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
; byrRegs -[x26]
- add w20, w20, #1
+ add w0, w20, #1
+ mov w20, w0
cmp w20, w22
blt G_M6780_IG09
- ;; size=12 bbWeight=3.96 PerfScore 7.92
+ ;; size=16 bbWeight=3.96 PerfScore 9.90
G_M6780_IG13: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
- b G_M6780_IG18
+ b G_M6780_IG19
;; size=4 bbWeight=1 PerfScore 1.00
-G_M6780_IG14: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M6780_IG14: ; bbWeight=0.01, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ mov x20, xzr
+ ;; size=4 bbWeight=0.01 PerfScore 0.01
+G_M6780_IG15: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x21, #0x08]
cmp w20, w0
- bhs G_M6780_IG20
- mov w0, #24
- mov x1, #16
- umaddl x0, w20, w0, x1
- add x0, x21, x0
- ; byrRegs +[x0]
- ldr w0, [x0, #0x14]
- ; byrRegs -[x0]
+ bhs G_M6780_IG21
+ mov x0, #24
+ mul x0, x20, x0
+ add x0, x0, #16
+ add x23, x21, x0
+ ; byrRegs +[x23]
+ ldr w0, [x23, #0x14]
cmn w0, #1
- blt G_M6780_IG17
- ;; size=40 bbWeight=0.04 PerfScore 0.62
-G_M6780_IG15: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mov w0, #24
- mov x1, #16
- umaddl x0, w20, w0, x1
- add x0, x21, x0
- ; byrRegs +[x0]
- ldr w24, [x0, #0x10]
+ blt G_M6780_IG18
+ ;; size=40 bbWeight=0.04 PerfScore 0.50
+G_M6780_IG16: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=800000 {x23}, byref, isz
+ ldr w24, [x23, #0x10]
ldr x25, [x19, #0x08]
; gcrRegs +[x25]
ldr w2, [x25, #0x08]
ldr x27, [x19, #0x30]
mov w0, w24
- ; byrRegs -[x0]
mul x0, x27, x0
lsr x0, x0, #32
add x0, x0, #1
@@ -250,11 +250,11 @@ G_M6780_IG15: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
mul x0, x0, x1
lsr x28, x0, #32
cmp w2, #0
- beq G_M6780_IG21
+ beq G_M6780_IG22
udiv w0, w24, w2
msub w0, w0, w2, w24
cmp w0, w28
- beq G_M6780_IG16
+ beq G_M6780_IG17
adrp x1, [HIGH RELOC #0xD1FFAB1E]
add x1, x1, [LOW RELOC #0xD1FFAB1E]
; gcrRegs +[x1]
@@ -263,38 +263,33 @@ G_M6780_IG15: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
bl <unknown method>
; gcrRegs -[x0-x1]
; gcr arg pop 0
- ;; size=100 bbWeight=0.02 PerfScore 0.89
-G_M6780_IG16: ; bbWeight=0.02, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
+ ;; size=84 bbWeight=0.02 PerfScore 0.76
+G_M6780_IG17: ; bbWeight=0.02, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=800000 {x23}, byref, isz
ldr w14, [x25, #0x08]
cmp w28, w14
- bhs G_M6780_IG20
+ bhs G_M6780_IG21
add x14, x25, #16
; byrRegs +[x14]
ubfiz x15, x28, #2, #32
add x26, x14, x15
; byrRegs +[x26]
- mov w14, #24
- ; byrRegs -[x14]
- mov x15, #16
- umaddl x14, w20, w14, x15
- add x14, x21, x14
- ; byrRegs +[x14]
- add x14, x14, #20
+ add x14, x23, #20
ldr w15, [x26]
sub w15, w15, #1
str w15, [x14]
add w14, w20, #1
; byrRegs -[x14]
str w14, [x26]
- ;; size=64 bbWeight=0.02 PerfScore 0.39
-G_M6780_IG17: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=48 bbWeight=0.02 PerfScore 0.26
+G_M6780_IG18: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
- ; byrRegs -[x26]
- add w20, w20, #1
+ ; byrRegs -[x23 x26]
+ add w14, w20, #1
+ mov w20, w14
cmp w20, w22
- blt G_M6780_IG14
- ;; size=12 bbWeight=0.04 PerfScore 0.08
-G_M6780_IG18: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ blt G_M6780_IG15
+ ;; size=16 bbWeight=0.04 PerfScore 0.10
+G_M6780_IG19: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
add x14, x19, #16
; byrRegs +[x14]
mov x15, x21
@@ -303,7 +298,7 @@ G_M6780_IG18: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}
; gcrRegs -[x15 x21]
; byrRegs -[x14]
;; size=12 bbWeight=1 PerfScore 2.00
-G_M6780_IG19: ; bbWeight=1, epilog, nogc, extend
+G_M6780_IG20: ; bbWeight=1, epilog, nogc, extend
ldp x27, x28, [sp, #0x60]
ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40]
@@ -312,17 +307,17 @@ G_M6780_IG19: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x70
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M6780_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M6780_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M6780_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M6780_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROWDIVZERO
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 700, prolog size 40, PerfScore 239.97, instruction count 175, allocated bytes for code 700 (MethodHash=a2d7e583) for method System.Collections.Generic.Dictionary`2[long,System.__Canon]:Resize(int,ubyte):this (FullOpts)
+; Total bytes of code 680, prolog size 40, PerfScore 229.72, instruction count 170, allocated bytes for code 680 (MethodHash=a2d7e583) for method System.Collections.Generic.Dictionary`2[long,System.__Canon]:Resize(int,ubyte):this (FullOpts)
; ============================================================
Unwind Info:
@@ -333,7 +328,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 175 (0x000af) Actual length = 700 (0x0002bc)
+ Function Length : 170 (0x000aa) Actual length = 680 (0x0002a8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-2.70%) : 10705.dasm - System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo+<>cDisplayClass200:<getSyntheticMethods>b1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
@@ -7,37 +7,37 @@
; fully interruptible
; Final local variable assignments
;
-; V00 this [V00,T13] ( 3, 3 ) ref -> x20 this class-hnd exact single-def <System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo+<>c__DisplayClass20_0>
-; V01 arg1 [V01,T12] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
-; V02 arg2 [V02,T04] ( 6, 6 ) ref -> x19 class-hnd single-def <System.Object[]>
+; V00 this [V00,T12] ( 3, 3 ) ref -> x20 this class-hnd exact single-def <System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo+<>c__DisplayClass20_0>
+; V01 arg1 [V01,T11] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T03] ( 6, 6 ) ref -> x19 class-hnd single-def <System.Object[]>
;* V03 arg3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Type>
-; V04 loc0 [V04,T16] ( 2, 2 ) ref -> x21 class-hnd single-def <System.Array>
-; V05 loc1 [V05,T06] ( 4, 7 ) ref -> x22 class-hnd exact single-def <int[]>
+; V04 loc0 [V04,T15] ( 2, 2 ) ref -> x21 class-hnd single-def <System.Array>
+; V05 loc1 [V05,T05] ( 4, 7 ) ref -> x22 class-hnd exact single-def <int[]>
;* V06 loc2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Object>
-; V07 loc3 [V07,T01] ( 7, 25 ) int -> x23
+;* V07 loc3 [V07,T17] ( 0, 0 ) int -> zero-ref
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T17] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
-; V10 tmp2 [V10,T09] ( 5, 6.75) ref -> x21 class-hnd "spilling QMark2" <System.Array>
-; V11 tmp3 [V11,T00] ( 4, 26 ) ref -> [fp+0x18] spill-single-def "inline UNBOX clone1"
+; V09 tmp1 [V09,T16] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
+; V10 tmp2 [V10,T08] ( 5, 6.75) ref -> x21 class-hnd "spilling QMark2" <System.Array>
+; V11 tmp3 [V11,T01] ( 4, 26 ) ref -> x28 "inline UNBOX clone1"
; V12 tmp4 [V12,T02] ( 2, 16 ) int -> x1 "Strict ordering of exceptions for Array store"
-; V13 tmp5 [V13,T10] ( 3, 6 ) int -> x20 "index expr"
-; V14 tmp6 [V14,T15] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V15 cse0 [V15,T05] ( 5, 8 ) int -> x20 "CSE - aggressive"
-; V16 cse1 [V16,T14] ( 2, 5 ) byref -> x27 hoist "CSE - aggressive"
-; V17 cse2 [V17,T08] ( 4, 7 ) int -> x24 hoist multi-def "CSE - aggressive"
-; V18 cse3 [V18,T07] ( 4, 7 ) byref -> x25 hoist multi-def "CSE - aggressive"
-; V19 cse4 [V19,T11] ( 3, 6 ) long -> x26 hoist "CSE - aggressive"
-; V20 cse5 [V20,T03] ( 3, 12 ) long -> x28 "CSE - aggressive"
+; V13 tmp5 [V13,T09] ( 3, 6 ) int -> x20 "index expr"
+; V14 tmp6 [V14,T14] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V15 tmp7 [V15,T00] ( 8, 29 ) long -> x23 "Widened primary induction variable"
+; V16 cse0 [V16,T04] ( 5, 8 ) int -> x20 "CSE - aggressive"
+; V17 cse1 [V17,T13] ( 2, 5 ) byref -> x27 hoist "CSE - aggressive"
+; V18 cse2 [V18,T07] ( 4, 7 ) int -> x24 hoist multi-def "CSE - aggressive"
+; V19 cse3 [V19,T06] ( 4, 7 ) byref -> x25 hoist multi-def "CSE - aggressive"
+; V20 cse4 [V20,T10] ( 3, 6 ) long -> x26 hoist "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 0
G_M56096_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
- stp x25, x26, [sp, #0x50]
- stp x27, x28, [sp, #0x60]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
+ stp x23, x24, [sp, #0x30]
+ stp x25, x26, [sp, #0x40]
+ stp x27, x28, [sp, #0x50]
mov fp, sp
mov x20, x0
; gcrRegs +[x20]
@@ -78,9 +78,9 @@ G_M56096_IG05: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
; gcr arg pop 0
mov x22, x0
; gcrRegs +[x22]
- mov w23, wzr
cmp w20, #0
ble G_M56096_IG09
+ mov x23, xzr
ldr w24, [x19, #0x08]
add x25, x19, #16
; byrRegs +[x25]
@@ -93,41 +93,36 @@ G_M56096_IG06: ; bbWeight=4, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=A0
; gcrRegs -[x0]
cmp w23, w24
bhs G_M56096_IG11
- mov w28, w23
- lsl x1, x28, #3
- ldr x2, [x25, x1]
- ; gcrRegs +[x2]
- str x2, [fp, #0x18] // [V11 tmp3]
- ; GC ptr vars +{V11}
- ldr x1, [x2]
+ lsl x1, x23, #3
+ ldr x28, [x25, x1]
+ ; gcrRegs +[x28]
+ ldr x1, [x28]
cmp x1, x26
beq G_M56096_IG08
- ;; size=36 bbWeight=4 PerfScore 46.00
-G_M56096_IG07: ; bbWeight=1, gcVars=0000000000000001 {V11}, gcrefRegs=680004 {x2 x19 x21 x22}, byrefRegs=A000000 {x25 x27}, gcvars, byref
- mov x1, x2
+ ;; size=28 bbWeight=4 PerfScore 40.00
+G_M56096_IG07: ; bbWeight=1, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefRegs=A000000 {x25 x27}, byref
+ mov x1, x28
; gcrRegs +[x1]
mov x0, x26
bl CORINFO_HELP_UNBOX
- ; gcrRegs -[x1-x2]
+ ; gcrRegs -[x1]
; gcr arg pop 0
- ldr x2, [fp, #0x18] // [V11 tmp3]
- ; gcrRegs +[x2]
- ;; size=16 bbWeight=1 PerfScore 4.00
-G_M56096_IG08: ; bbWeight=4, gcrefRegs=680004 {x2 x19 x21 x22}, byrefRegs=A000000 {x25 x27}, byref, isz
- ldr w1, [x2, #0x08]
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M56096_IG08: ; bbWeight=4, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefRegs=A000000 {x25 x27}, byref, isz
+ ldr w1, [x28, #0x08]
ldr w0, [x22, #0x08]
cmp w23, w0
bhs G_M56096_IG11
- lsl x0, x28, #2
+ lsl x0, x23, #2
str w1, [x27, x0]
- add w23, w23, #1
+ add w1, w23, #1
+ mov w23, w1
cmp w23, w20
blt G_M56096_IG06
- ;; size=36 bbWeight=4 PerfScore 46.00
-G_M56096_IG09: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x2]
+ ;; size=40 bbWeight=4 PerfScore 48.00
+G_M56096_IG09: ; bbWeight=1, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x28]
; byrRegs -[x25 x27]
- ; GC ptr vars -{V11}
ldr w24, [x19, #0x08]
cmp w20, w24
bhs G_M56096_IG11
@@ -148,12 +143,12 @@ G_M56096_IG09: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=680000
; gcrRegs +[x0]
;; size=40 bbWeight=1 PerfScore 13.50
G_M56096_IG10: ; bbWeight=1, epilog, nogc, extend
- ldp x27, x28, [sp, #0x60]
- ldp x25, x26, [sp, #0x50]
- ldp x23, x24, [sp, #0x40]
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x70
+ ldp x27, x28, [sp, #0x50]
+ ldp x25, x26, [sp, #0x40]
+ ldp x23, x24, [sp, #0x30]
+ ldp x21, x22, [sp, #0x20]
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x60
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
G_M56096_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
@@ -163,7 +158,7 @@ G_M56096_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 296, prolog size 36, PerfScore 140.12, instruction count 74, allocated bytes for code 296 (MethodHash=119e24df) for method System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo+<>c__DisplayClass20_0:<get_SyntheticMethods>b__1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
+; Total bytes of code 288, prolog size 36, PerfScore 134.12, instruction count 72, allocated bytes for code 288 (MethodHash=119e24df) for method System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo+<>c__DisplayClass20_0:<get_SyntheticMethods>b__1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -174,7 +169,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 74 (0x0004a) Actual length = 296 (0x000128)
+ Function Length : 72 (0x00048) Actual length = 288 (0x000120)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -186,8 +181,8 @@ Unwind Info:
E6 save_next
E6 save_next
E6 save_next
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
- 8D save_fplr_x #13 (0x0D); stp fp, lr, [sp, #-112]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end
E4 end
+20 (+21.74%) : 7754.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
@@ -9,22 +9,22 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 loc0 [V01,T06] ( 4, 4 ) ref -> x0 class-hnd exact single-def <System.String>
+; V01 loc0 [V01,T05] ( 4, 4 ) ref -> x0 class-hnd exact single-def <System.String>
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x2
+;* V03 loc2 [V03,T09] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-;* V06 tmp2 [V06,T09] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V07 tmp3 [V07,T07] ( 2, 4 ) byref -> x1 single-def "Inlining Arg"
+;* V06 tmp2 [V06,T08] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V07 tmp3 [V07,T06] ( 2, 4 ) byref -> x1 single-def "Inlining Arg"
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp6 [V10,T03] ( 2, 5 ) byref -> x20 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V11 tmp7 [V11,T02] ( 3, 3 ) int -> x19 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V12 tmp8 [V12,T05] ( 2, 5 ) byref -> x1 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp9 [V13,T04] ( 3, 6 ) int -> x19 "field V02._length (fldOffset=0x8)" P-INDEP
-; V14 tmp10 [V14,T08] ( 2, 2 ) byref -> x1 single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp6 [V10,T02] ( 2, 5 ) byref -> x20 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V11 tmp7 [V11,T01] ( 4, 7 ) int -> x19 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V12 tmp8 [V12,T04] ( 2, 5 ) byref -> x1 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp9 [V13,T03] ( 3, 6 ) int -> x2 "field V02._length (fldOffset=0x8)" P-INDEP
+; V14 tmp10 [V14,T07] ( 2, 2 ) byref -> x1 single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V15 tmp11 [V15,T10] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V16 cse0 [V16,T01] ( 3, 12 ) long -> x3 "CSE - aggressive"
+; V16 tmp12 [V16,T00] ( 7, 25 ) long -> x3 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -44,29 +44,38 @@ G_M6504_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, by
ldrsb wzr, [x0]
add x1, x0, #12
; byrRegs +[x1]
- mov w2, wzr
- cmp w19, #0
+ sxtw w2, w19
+ cmp w2, #0
ble G_M6504_IG04
- ;; size=28 bbWeight=1 PerfScore 7.00
+ mov x3, xzr
+ ;; size=32 bbWeight=1 PerfScore 7.50
G_M6504_IG03: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=100002 {x1 x20}, byref, isz
- mov w3, w2
+ cmp w3, w19
+ bhs G_M6504_IG05
lsl x4, x3, #1
add x4, x1, x4
; byrRegs +[x4]
- ldrb w3, [x20, x3]
- strh w3, [x4]
- add w2, w2, #1
- cmp w2, w19
+ ldrb w5, [x20, x3]
+ strh w5, [x4]
+ add w3, w3, #1
+ mov w3, w3
+ cmp w3, w2
blt G_M6504_IG03
- ;; size=32 bbWeight=4 PerfScore 32.00
+ ;; size=40 bbWeight=4 PerfScore 38.00
G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1 x4 x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
+G_M6504_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 92, prolog size 20, PerfScore 45.50, instruction count 23, allocated bytes for code 92 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
+; Total bytes of code 112, prolog size 20, PerfScore 52.00, instruction count 28, allocated bytes for code 112 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -77,7 +86,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+31.58%) : 7143.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
@@ -10,13 +10,14 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V02 loc1 [V02,T00] ( 5, 16.50) int -> x2
+;* V02 loc1 [V02,T05] ( 0, 0 ) int -> zero-ref
;* V03 loc2 [V03 ] ( 0, 0 ) ushort -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T04] ( 2, 1.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V06 tmp2 [V06,T02] ( 3, 2.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V07 tmp3 [V07,T03] ( 2, 4.50) byref -> x0 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp4 [V08,T01] ( 3, 5 ) int -> x1 "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp4 [V08,T01] ( 4, 9 ) int -> x1 "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 tmp5 [V09,T00] ( 6, 20.50) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -38,18 +39,22 @@ G_M8555_IG04: ; bbWeight=0.50, epilog, nogc, extend
;; size=8 bbWeight=0.50 PerfScore 1.00
G_M8555_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0
ble G_M8555_IG03
+ mov x2, xzr
;; size=12 bbWeight=0.50 PerfScore 1.00
G_M8555_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrh w3, [x0, w2, UXTW #2]
+ cmp w2, w1
+ bhs G_M8555_IG10
+ lsl x3, x2, #1
+ ldrh w3, [x0, x3]
cmp w3, #32
bne G_M8555_IG08
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
blt G_M8555_IG06
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=40 bbWeight=4 PerfScore 38.00
G_M8555_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
b G_M8555_IG03
@@ -61,8 +66,13 @@ G_M8555_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M8555_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 32.50, instruction count 19, allocated bytes for code 76 (MethodHash=7167de94) for method System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
+; Total bytes of code 100, prolog size 8, PerfScore 44.50, instruction count 25, allocated bytes for code 100 (MethodHash=7167de94) for method System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -73,7 +83,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 25 (0x00019) Actual length = 100 (0x000064)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+31.58%) : 2548.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
@@ -9,13 +9,14 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V02 loc1 [V02,T00] ( 5, 16.50) int -> x2
+;* V02 loc1 [V02,T05] ( 0, 0 ) int -> zero-ref
;* V03 loc2 [V03 ] ( 0, 0 ) ushort -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T04] ( 2, 1.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V06 tmp2 [V06,T02] ( 3, 2.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V07 tmp3 [V07,T03] ( 2, 4.50) byref -> x0 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp4 [V08,T01] ( 3, 5 ) int -> x1 "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp4 [V08,T01] ( 4, 9 ) int -> x1 "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 tmp5 [V09,T00] ( 6, 20.50) long -> x2 "Widened primary induction variable"
;
; Lcl frame size = 0
@@ -37,18 +38,22 @@ G_M8555_IG04: ; bbWeight=0.50, epilog, nogc, extend
;; size=8 bbWeight=0.50 PerfScore 1.00
G_M8555_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0
ble G_M8555_IG03
+ mov x2, xzr
;; size=12 bbWeight=0.50 PerfScore 1.00
G_M8555_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrh w3, [x0, w2, UXTW #2]
+ cmp w2, w1
+ bhs G_M8555_IG10
+ lsl x3, x2, #1
+ ldrh w3, [x0, x3]
cmp w3, #32
bne G_M8555_IG08
add w2, w2, #1
+ mov w2, w2
cmp w2, w1
blt G_M8555_IG06
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=40 bbWeight=4 PerfScore 38.00
G_M8555_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
b G_M8555_IG03
@@ -60,8 +65,13 @@ G_M8555_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M8555_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 32.50, instruction count 19, allocated bytes for code 76 (MethodHash=7167de94) for method System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
+; Total bytes of code 100, prolog size 8, PerfScore 44.50, instruction count 25, allocated bytes for code 100 (MethodHash=7167de94) for method System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -72,7 +82,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 25 (0x00019) Actual length = 100 (0x000064)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.windows.arm64.checked.mch |
1,650 |
11 |
1,616 |
23 |
-140 |
+27,040 |
| benchmarks.run_pgo.windows.arm64.checked.mch |
7,886 |
32 |
7,644 |
210 |
-284 |
+150,828 |
| benchmarks.run_tiered.windows.arm64.checked.mch |
631 |
5 |
618 |
8 |
-72 |
+14,416 |
| coreclr_tests.run.windows.arm64.checked.mch |
20,671 |
78 |
20,445 |
148 |
-904 |
+324,544 |
| libraries.crossgen2.windows.arm64.checked.mch |
5,443 |
56 |
5,306 |
81 |
-676 |
+83,780 |
| libraries.pmi.windows.arm64.checked.mch |
7,005 |
36 |
6,846 |
123 |
-424 |
+94,832 |
| libraries_tests.run.windows.arm64.Release.mch |
21,489 |
253 |
21,075 |
161 |
-2,136 |
+474,372 |
| librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
8,728 |
72 |
8,524 |
132 |
-1,044 |
+121,064 |
| realworld.run.windows.arm64.checked.mch |
1,480 |
23 |
1,425 |
32 |
-372 |
+21,904 |
| smoke_tests.nativeaot.windows.arm64.checked.mch |
929 |
9 |
903 |
17 |
-104 |
+13,948 |
|
75,912 |
575 |
74,402 |
935 |
-6,156 |
+1,326,728 |
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,121 |
48,079 |
48,042 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_tiered.windows.arm64.checked.mch |
49,360 |
36,713 |
12,647 |
0 (0.00%) |
0 (0.00%) |
| coreclr_tests.run.windows.arm64.checked.mch |
595,376 |
362,592 |
232,784 |
26 (0.00%) |
28 (0.00%) |
| libraries.crossgen2.windows.arm64.checked.mch |
244,148 |
15 |
244,133 |
3 (0.00%) |
4 (0.00%) |
| libraries.pmi.windows.arm64.checked.mch |
305,575 |
6 |
305,569 |
3 (0.00%) |
3 (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,160 |
8 |
24,152 |
2 (0.01%) |
2 (0.01%) |
|
2,341,080 |
938,449 |
1,402,631 |
34 (0.00%) |
37 (0.00%) |
jit-analyze output
benchmarks.run.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 10966144 (overridden on cmd)
Total bytes of diff: 10993044 (overridden on cmd)
Total bytes of delta: 26900 (0.25 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
584 : 19964.dasm (6.48 % of base)
572 : 15855.dasm (16.01 % of base)
372 : 14428.dasm (19.79 % of base)
328 : 16376.dasm (10.51 % of base)
236 : 2818.dasm (2.11 % of base)
196 : 22604.dasm (1.81 % of base)
152 : 24144.dasm (9.82 % of base)
144 : 22022.dasm (7.76 % of base)
128 : 10925.dasm (1.69 % of base)
128 : 22745.dasm (1.62 % of base)
128 : 23782.dasm (1.19 % of base)
128 : 9661.dasm (1.17 % of base)
120 : 4116.dasm (1.79 % of base)
108 : 5431.dasm (3.08 % of base)
100 : 15200.dasm (11.68 % of base)
96 : 7209.dasm (5.14 % of base)
92 : 4095.dasm (4.63 % of base)
88 : 9682.dasm (6.11 % of base)
84 : 23597.dasm (12.80 % of base)
84 : 7034.dasm (4.91 % of base)
Top file improvements (bytes):
-32 : 7354.dasm (-0.88 % of base)
-20 : 211.dasm (-2.34 % of base)
-16 : 20495.dasm (-0.75 % of base)
-16 : 6533.dasm (-2.01 % of base)
-12 : 1235.dasm (-0.89 % of base)
-12 : 7159.dasm (-0.90 % of base)
-8 : 330.dasm (-0.48 % of base)
-8 : 4044.dasm (-0.64 % of base)
-8 : 463.dasm (-0.76 % of base)
-4 : 18747.dasm (-0.27 % of base)
-4 : 2687.dasm (-1.05 % of base)
70 total files with Code Size differences (11 improved, 59 regressed), 21 unchanged.
Top method regressions (bytes):
584 (6.48 % of base) : 19964.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
572 (16.01 % of base) : 15855.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
372 (19.79 % of base) : 14428.dasm - AssignJagged:second_assignments(int[][],short[][]) (FullOpts)
328 (10.51 % of base) : 16376.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
236 (2.11 % of base) : 2818.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
196 (1.81 % of base) : 22604.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
152 (9.82 % of base) : 24144.dasm - SciMark2.LU:factor(double[][],int[]):int (FullOpts)
144 (7.76 % of base) : 22022.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (FullOpts)
128 (1.69 % of base) : 10925.dasm - Jil.Deserialize.Methods:_ReadISO8601Date(System.IO.TextReader,ushort[]):System.DateTime (FullOpts)
128 (1.19 % of base) : 23782.dasm - Jil.Deserialize.Methods:_ReadISO8601DateThunkReader(byref,ushort[]):System.DateTime (FullOpts)
128 (1.62 % of base) : 22745.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffset(System.IO.TextReader,ushort[]):System.DateTimeOffset (FullOpts)
128 (1.17 % of base) : 9661.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffsetThunkReader(byref,ushort[]):System.DateTimeOffset (FullOpts)
120 (1.79 % of base) : 4116.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
108 (3.08 % of base) : 5431.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
100 (11.68 % of base) : 15200.dasm - AssignRect:second_assignments(int[,],short[,]) (FullOpts)
96 (5.14 % of base) : 7209.dasm - ProtoBuf.Meta.MetaType:ResolveTupleConstructor(System.Type,byref):System.Reflection.ConstructorInfo (FullOpts)
92 (4.63 % of base) : 4095.dasm - System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String (FullOpts)
88 (6.11 % of base) : 9682.dasm - BilinearTest:BilinearInterpol_Vector(double[],double[],double,double,double[],double,double,double):double[]:this (FullOpts)
84 (12.80 % of base) : 23597.dasm - SciMark2.SOR:execute(double,double[][],int) (FullOpts)
84 (4.91 % of base) : 7034.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (FullOpts)
Top method improvements (bytes):
-32 (-0.88 % of base) : 7354.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-20 (-2.34 % of base) : 211.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-16 (-0.75 % of base) : 20495.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (FullOpts)
-16 (-2.01 % of base) : 6533.dasm - System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory+ServiceDescriptorCacheItem]:Resize(int,ubyte):this (FullOpts)
-12 (-0.89 % of base) : 1235.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (FullOpts)
-12 (-0.90 % of base) : 7159.dasm - System.Text.Json.JsonHelpers:TryParseDateTimeOffset(System.ReadOnlySpan`1[ubyte],byref):ubyte (FullOpts)
-8 (-0.76 % of base) : 463.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
-8 (-0.48 % of base) : 330.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-8 (-0.64 % of base) : 4044.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-4 (-0.27 % of base) : 18747.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__ensureAllUnderlyingConversionsChecked|210_1(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-4 (-1.05 % of base) : 2687.dasm - System.Number+Grisu3:TryRoundWeedCounted(System.Span`1[ubyte],int,ulong,ulong,ulong,byref):ubyte (FullOpts)
Top method regressions (percentages):
24 (46.15 % of base) : 15506.dasm - Struct.SpanWrapper:SumSpan(System.ReadOnlySpan`1[int]):int:this (FullOpts)
24 (46.15 % of base) : 1839.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
28 (41.18 % of base) : 9422.dasm - System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
24 (40.00 % of base) : 21045.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
24 (40.00 % of base) : 22535.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
20 (35.71 % of base) : 10311.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
76 (33.93 % of base) : 24259.dasm - Benchstone.BenchI.BubbleSort2:Test():ubyte:this (FullOpts)
20 (33.33 % of base) : 21686.dasm - Span.IndexerBench:TestIndexer3(System.Span`1[ubyte]):ubyte (FullOpts)
20 (33.33 % of base) : 9460.dasm - Span.IndexerBench:TestKnownSizeArray(System.Span`1[ubyte]):ubyte (FullOpts)
20 (33.33 % of base) : 22760.dasm - Span.IndexerBench:TestReadOnlyIndexer2(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
24 (31.58 % of base) : 22128.dasm - System.Collections.IndexerSet`1[int]:Span():int:this (FullOpts)
24 (31.58 % of base) : 400.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
20 (31.25 % of base) : 22412.dasm - Span.IndexerBench:TestIndexer6(System.Span`1[ubyte],Span.Sink):ubyte (FullOpts)
24 (30.00 % of base) : 20395.dasm - System.Collections.IterateFor`1[int]:ReadOnlySpan():int:this (FullOpts)
24 (30.00 % of base) : 19936.dasm - System.Collections.IterateFor`1[int]:Span():int:this (FullOpts)
24 (30.00 % of base) : 23793.dasm - System.Collections.IterateForEach`1[int]:ReadOnlySpan():int:this (FullOpts)
24 (30.00 % of base) : 23554.dasm - System.Collections.IterateForEach`1[int]:Span():int:this (FullOpts)
20 (27.78 % of base) : 22160.dasm - Span.IndexerBench:TestIndexer5(System.Span`1[ubyte],byref):ubyte (FullOpts)
20 (27.78 % of base) : 19250.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
24 (27.27 % of base) : 22000.dasm - Span.IndexerBench:TestIndexer4(System.Span`1[ubyte],int):ubyte (FullOpts)
Top method improvements (percentages):
-20 (-2.34 % of base) : 211.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-16 (-2.01 % of base) : 6533.dasm - System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory+ServiceDescriptorCacheItem]:Resize(int,ubyte):this (FullOpts)
-4 (-1.05 % of base) : 2687.dasm - System.Number+Grisu3:TryRoundWeedCounted(System.Span`1[ubyte],int,ulong,ulong,ulong,byref):ubyte (FullOpts)
-12 (-0.90 % of base) : 7159.dasm - System.Text.Json.JsonHelpers:TryParseDateTimeOffset(System.ReadOnlySpan`1[ubyte],byref):ubyte (FullOpts)
-12 (-0.89 % of base) : 1235.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (FullOpts)
-32 (-0.88 % of base) : 7354.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-8 (-0.76 % of base) : 463.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
-16 (-0.75 % of base) : 20495.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (FullOpts)
-8 (-0.64 % of base) : 4044.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-8 (-0.48 % of base) : 330.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-4 (-0.27 % of base) : 18747.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__ensureAllUnderlyingConversionsChecked|210_1(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
benchmarks.run_pgo.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 45576512 (overridden on cmd)
Total bytes of diff: 45727056 (overridden on cmd)
Total bytes of delta: 150544 (0.33 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
684 : 50043.dasm (10.99 % of base)
620 : 51653.dasm (6.54 % of base)
612 : 51644.dasm (6.41 % of base)
592 : 51652.dasm (6.56 % of base)
560 : 47323.dasm (15.77 % of base)
396 : 40714.dasm (19.34 % of base)
352 : 40693.dasm (15.44 % of base)
296 : 50035.dasm (9.14 % of base)
292 : 50042.dasm (11.42 % of base)
256 : 40710.dasm (12.48 % of base)
248 : 47317.dasm (13.84 % of base)
248 : 47322.dasm (13.84 % of base)
232 : 43767.dasm (9.83 % of base)
232 : 51651.dasm (6.95 % of base)
232 : 51641.dasm (6.95 % of base)
224 : 79829.dasm (1.95 % of base)
224 : 79843.dasm (1.98 % of base)
220 : 43786.dasm (9.55 % of base)
216 : 50013.dasm (16.36 % of base)
216 : 50032.dasm (16.36 % of base)
Top file improvements (bytes):
-36 : 67044.dasm (-1.77 % of base)
-36 : 67034.dasm (-1.77 % of base)
-32 : 90726.dasm (-1.70 % of base)
-12 : 10774.dasm (-0.87 % of base)
-12 : 93789.dasm (-1.12 % of base)
-12 : 26499.dasm (-1.12 % of base)
-12 : 12753.dasm (-1.12 % of base)
-12 : 48981.dasm (-1.12 % of base)
-8 : 71741.dasm (-0.18 % of base)
-8 : 73584.dasm (-1.35 % of base)
-8 : 80674.dasm (-1.35 % of base)
-8 : 82964.dasm (-1.35 % of base)
-8 : 84225.dasm (-1.35 % of base)
-8 : 73533.dasm (-1.35 % of base)
-4 : 94414.dasm (-0.81 % of base)
-4 : 95857.dasm (-0.81 % of base)
-4 : 15161.dasm (-0.90 % of base)
-4 : 26233.dasm (-0.81 % of base)
-4 : 91233.dasm (-0.81 % of base)
-4 : 82131.dasm (-0.81 % of base)
82 total files with Code Size differences (23 improved, 59 regressed), 20 unchanged.
Top method regressions (bytes):
684 (10.99 % of base) : 50043.dasm - LUDecomp:Run():double:this (Tier1)
620 (6.54 % of base) : 51653.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
612 (6.41 % of base) : 51644.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
592 (6.56 % of base) : 51652.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
560 (15.77 % of base) : 47323.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
396 (19.34 % of base) : 40714.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
352 (15.44 % of base) : 40693.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
296 (9.14 % of base) : 50035.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
292 (11.42 % of base) : 50042.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
256 (12.48 % of base) : 40710.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
248 (13.84 % of base) : 47317.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
248 (13.84 % of base) : 47322.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
232 (9.83 % of base) : 43767.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
232 (6.95 % of base) : 51651.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
232 (6.95 % of base) : 51641.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
224 (1.95 % of base) : 79829.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
224 (1.98 % of base) : 79843.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
220 (9.55 % of base) : 43786.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
216 (16.36 % of base) : 50013.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
216 (16.36 % of base) : 50032.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
Top method improvements (bytes):
-36 (-1.77 % of base) : 67044.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1-OSR)
-36 (-1.77 % of base) : 67034.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1-OSR)
-32 (-1.70 % of base) : 90726.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
-12 (-0.87 % of base) : 10774.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (Tier0-FullOpts)
-12 (-1.12 % of base) : 93789.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
-12 (-1.12 % of base) : 26499.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
-12 (-1.12 % of base) : 12753.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
-12 (-1.12 % of base) : 48981.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
-8 (-1.35 % of base) : 73584.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-8 (-1.35 % of base) : 80674.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-8 (-1.35 % of base) : 82964.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-8 (-1.35 % of base) : 84225.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-8 (-1.35 % of base) : 73533.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-8 (-0.18 % of base) : 71741.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
-4 (-0.81 % of base) : 94414.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 95857.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 26233.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 91233.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 82131.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 16801.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
Top method regressions (percentages):
28 (35.00 % of base) : 32390.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
28 (35.00 % of base) : 33944.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
28 (33.33 % of base) : 68368.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
28 (33.33 % of base) : 62625.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
20 (26.32 % of base) : 17407.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
20 (26.32 % of base) : 46147.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
20 (26.32 % of base) : 69108.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
20 (26.32 % of base) : 76220.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
20 (26.32 % of base) : 7870.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
20 (20.83 % of base) : 69324.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
20 (20.83 % of base) : 59719.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
24 (20.69 % of base) : 33785.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
24 (20.69 % of base) : 41695.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
48 (19.35 % of base) : 93721.dasm - Benchstone.BenchI.BubbleSort2:Inner(int[]) (Tier1-OSR)
396 (19.34 % of base) : 40714.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
20 (18.52 % of base) : 90400.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
20 (18.52 % of base) : 94264.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
20 (18.52 % of base) : 95944.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
20 (18.52 % of base) : 42676.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
20 (18.52 % of base) : 83184.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
Top method improvements (percentages):
-36 (-1.77 % of base) : 67044.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1-OSR)
-36 (-1.77 % of base) : 67034.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1-OSR)
-32 (-1.70 % of base) : 90726.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
-8 (-1.35 % of base) : 73584.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-8 (-1.35 % of base) : 80674.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-8 (-1.35 % of base) : 82964.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-8 (-1.35 % of base) : 84225.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-8 (-1.35 % of base) : 73533.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
-12 (-1.12 % of base) : 93789.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
-12 (-1.12 % of base) : 26499.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
-12 (-1.12 % of base) : 12753.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
-12 (-1.12 % of base) : 48981.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
-4 (-0.90 % of base) : 15161.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
-12 (-0.87 % of base) : 10774.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (Tier0-FullOpts)
-4 (-0.81 % of base) : 94414.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 91233.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 82131.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 16801.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 66834.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
-4 (-0.81 % of base) : 73513.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
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: 15587900 (overridden on cmd)
Total bytes of diff: 15602244 (overridden on cmd)
Total bytes of delta: 14344 (0.09 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
584 : 40354.dasm (6.48 % of base)
572 : 30795.dasm (16.01 % of base)
432 : 30794.dasm (14.01 % of base)
372 : 29369.dasm (19.79 % of base)
328 : 31909.dasm (10.51 % of base)
328 : 29368.dasm (15.47 % of base)
300 : 31906.dasm (10.30 % of base)
240 : 29606.dasm (11.03 % of base)
224 : 40352.dasm (6.91 % of base)
196 : 46292.dasm (1.81 % of base)
188 : 46290.dasm (4.91 % of base)
152 : 48862.dasm (9.82 % of base)
100 : 29608.dasm (11.68 % of base)
96 : 40662.dasm (5.22 % of base)
92 : 6667.dasm (4.51 % of base)
84 : 46972.dasm (4.91 % of base)
84 : 46976.dasm (5.28 % of base)
80 : 31913.dasm (6.31 % of base)
80 : 9661.dasm (3.88 % of base)
76 : 19762.dasm (13.87 % of base)
Top file improvements (bytes):
-32 : 7563.dasm (-0.86 % of base)
-16 : 42965.dasm (-0.75 % of base)
-12 : 14145.dasm (-0.89 % of base)
-8 : 5185.dasm (-0.81 % of base)
-4 : 2111.dasm (-0.63 % of base)
69 total files with Code Size differences (5 improved, 64 regressed), 8 unchanged.
Top method regressions (bytes):
584 (6.48 % of base) : 40354.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
572 (16.01 % of base) : 30795.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
432 (14.01 % of base) : 30794.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
372 (19.79 % of base) : 29369.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
328 (15.47 % of base) : 29368.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
328 (10.51 % of base) : 31909.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
300 (10.30 % of base) : 31906.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
240 (11.03 % of base) : 29606.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
224 (6.91 % of base) : 40352.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
196 (1.81 % of base) : 46292.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
188 (4.91 % of base) : 46290.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
152 (9.82 % of base) : 48862.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1)
100 (11.68 % of base) : 29608.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1)
96 (5.22 % of base) : 40662.dasm - ProtoBuf.Meta.MetaType:ResolveTupleConstructor(System.Type,byref):System.Reflection.ConstructorInfo (Tier1)
92 (4.51 % of base) : 6667.dasm - System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String (Tier0-FullOpts)
84 (4.91 % of base) : 46972.dasm - System.Numerics.BigInteger:Add(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
84 (5.28 % of base) : 46976.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
80 (6.31 % of base) : 31913.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
80 (3.88 % of base) : 9661.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(long):System.Reflection.MethodInfo:this (Tier1)
76 (13.87 % of base) : 19762.dasm - System.Collections.Frozen.OrdinalStringFrozenDictionary`1[System.__Canon]:.ctor(System.String[],System.__Canon[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int,int,int):this (Tier1-OSR)
Top method improvements (bytes):
-32 (-0.86 % of base) : 7563.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier0-FullOpts)
-16 (-0.75 % of base) : 42965.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1)
-12 (-0.89 % of base) : 14145.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (Tier0-FullOpts)
-8 (-0.81 % of base) : 5185.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-4 (-0.63 % of base) : 2111.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
Top method regressions (percentages):
24 (31.58 % of base) : 8312.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
20 (21.74 % of base) : 37552.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
20 (20.83 % of base) : 37507.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
24 (20.69 % of base) : 24926.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
372 (19.79 % of base) : 29369.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
20 (18.52 % of base) : 10523.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
44 (16.92 % of base) : 48112.dasm - Benchstone.BenchI.BenchE:Strsch(ushort[],ushort[],int,int):int (Tier1)
20 (16.67 % of base) : 22972.dasm - EMFloat:IsMantissaZero(ushort[]):ubyte (Tier1)
16 (16.67 % of base) : 38798.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (Tier1)
32 (16.33 % of base) : 48693.dasm - Benchstone.BenchI.BubbleSort2:Test():ubyte:this (Tier1-OSR)
24 (16.22 % of base) : 29407.dasm - System.Text.RegularExpressions.Symbolic.CharSetSolver:Or(System.ReadOnlySpan`1[System.Text.RegularExpressions.Symbolic.BDD]):System.Text.RegularExpressions.Symbolic.BDD:this (Tier1)
572 (16.01 % of base) : 30795.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
328 (15.47 % of base) : 29368.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
24 (15.00 % of base) : 29550.dasm - Benchstone.BenchI.IniArray:Test():ushort[]:this (Tier1-OSR)
24 (15.00 % of base) : 42546.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(ushort[],int,int):int (Tier1)
32 (14.29 % of base) : 48692.dasm - Benchstone.BenchI.BubbleSort2:Inner(int[]) (Tier1-OSR)
24 (14.29 % of base) : 48000.dasm - IfStatements.IfStatements:AndAnd():this (Tier1-OSR)
24 (14.29 % of base) : 49054.dasm - IfStatements.IfStatements:OrOr():this (Tier1-OSR)
8 (14.29 % of base) : 10552.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1)
16 (14.29 % of base) : 24623.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)
Top method improvements (percentages):
-12 (-0.89 % of base) : 14145.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (Tier0-FullOpts)
-32 (-0.86 % of base) : 7563.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier0-FullOpts)
-8 (-0.81 % of base) : 5185.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-16 (-0.75 % of base) : 42965.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1)
-4 (-0.63 % of base) : 2111.dasm - System.Reflection.MethodBaseInvoker:CheckArguments(System.ReadOnlySpan`1[System.Object],System.Span`1[System.Object],System.Span`1[ubyte],System.Reflection.Binder,System.Globalization.CultureInfo,int):this (Tier1)
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: 495268304 (overridden on cmd)
Total bytes of diff: 495591944 (overridden on cmd)
Total bytes of delta: 323640 (0.07 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
684 : 470783.dasm (10.96 % of base)
584 : 205258.dasm (6.47 % of base)
572 : 205359.dasm (16.01 % of base)
396 : 470514.dasm (19.34 % of base)
372 : 203859.dasm (19.79 % of base)
360 : 187703.dasm (7.96 % of base)
352 : 470508.dasm (15.44 % of base)
344 : 590757.dasm (2.78 % of base)
328 : 203927.dasm (10.51 % of base)
312 : 470513.dasm (13.85 % of base)
296 : 470773.dasm (9.14 % of base)
292 : 470777.dasm (11.42 % of base)
256 : 470511.dasm (12.48 % of base)
236 : 470548.dasm (10.15 % of base)
232 : 470542.dasm (9.83 % of base)
216 : 470545.dasm (10.11 % of base)
216 : 470763.dasm (16.36 % of base)
216 : 470771.dasm (16.36 % of base)
200 : 21134.dasm (12.44 % of base)
196 : 205315.dasm (1.81 % of base)
Top file improvements (bytes):
-80 : 22471.dasm (-4.82 % of base)
-40 : 470249.dasm (-1.95 % of base)
-32 : 591446.dasm (-0.73 % of base)
-24 : 470482.dasm (-0.73 % of base)
-20 : 342153.dasm (-2.46 % of base)
-20 : 505311.dasm (-2.06 % of base)
-20 : 588568.dasm (-2.38 % of base)
-20 : 592108.dasm (-2.38 % of base)
-16 : 107357.dasm (-0.78 % of base)
-16 : 205422.dasm (-0.75 % of base)
-16 : 313875.dasm (-1.63 % of base)
-16 : 588093.dasm (-1.67 % of base)
-16 : 588095.dasm (-4.76 % of base)
-16 : 107252.dasm (-0.78 % of base)
-16 : 591895.dasm (-1.67 % of base)
-16 : 591896.dasm (-4.76 % of base)
-12 : 164453.dasm (-1.60 % of base)
-12 : 250662.dasm (-2.86 % of base)
-12 : 448345.dasm (-1.10 % of base)
-12 : 560030.dasm (-1.12 % of base)
85 total files with Code Size differences (27 improved, 58 regressed), 20 unchanged.
Top method regressions (bytes):
684 (10.96 % of base) : 470783.dasm - LUDecomp:Run():double:this (Tier1)
584 (6.47 % of base) : 205258.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
572 (16.01 % of base) : 205359.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
396 (19.34 % of base) : 470514.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
372 (19.79 % of base) : 203859.dasm - AssignJagged:second_assignments(int[][],short[][]) (FullOpts)
360 (7.96 % of base) : 187703.dasm - VectorTest:TestEntryPoint():int (FullOpts)
352 (15.44 % of base) : 470508.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
344 (2.78 % of base) : 590757.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
328 (10.51 % of base) : 203927.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
312 (13.85 % of base) : 470513.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
296 (9.14 % of base) : 470773.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
292 (11.42 % of base) : 470777.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
256 (12.48 % of base) : 470511.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
236 (10.15 % of base) : 470548.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
232 (9.83 % of base) : 470542.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
216 (10.11 % of base) : 470545.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
216 (16.36 % of base) : 470763.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
216 (16.36 % of base) : 470771.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
200 (12.44 % of base) : 21134.dasm - Complex_Array_Test:TestEntryPoint():int (FullOpts)
196 (1.81 % of base) : 205315.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
Top method improvements (bytes):
-80 (-4.82 % of base) : 22471.dasm - StrAccess1:Run(System.String):int (FullOpts)
-40 (-1.95 % of base) : 470249.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
-32 (-0.73 % of base) : 591446.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1)
-24 (-0.73 % of base) : 470482.dasm - EMFloatClass:SetupCPUEmFloatArrays(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int) (Tier1)
-20 (-2.06 % of base) : 505311.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (Instrumented Tier1)
-20 (-2.38 % of base) : 588568.dasm - System.Collections.Generic.Dictionary`2[Internal.TypeSystem.Instantiation,System.__Canon]:Resize(int,ubyte):this (Tier1)
-20 (-2.38 % of base) : 592108.dasm - System.Collections.Generic.Dictionary`2[Internal.TypeSystem.Instantiation,System.__Canon]:Resize(int,ubyte):this (Tier1)
-20 (-2.46 % of base) : 342153.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Instrumented Tier1)
-16 (-0.75 % of base) : 205422.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (FullOpts)
-16 (-4.76 % of base) : 588095.dasm - ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon],ubyte):this (Tier1)
-16 (-4.76 % of base) : 591896.dasm - ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon],ubyte):this (Tier1)
-16 (-1.67 % of base) : 588093.dasm - ILCompiler.LazyGenericsSupport+GraphBuilder:<.ctor>g__AddEdge|0_2(Internal.TypeSystem.GenericParameterDesc,Internal.TypeSystem.GenericParameterDesc,ubyte):this (Tier1)
-16 (-1.67 % of base) : 591895.dasm - ILCompiler.LazyGenericsSupport+GraphBuilder:<.ctor>g__AddEdge|0_2(Internal.TypeSystem.GenericParameterDesc,Internal.TypeSystem.GenericParameterDesc,ubyte):this (Tier1)
-16 (-0.78 % of base) : 107357.dasm - JIT.HardwareIntrinsics.Arm._AdvSimd.SimpleBinaryOpTest__ShiftLogicalSaturate_Vector128_SByte:ValidateResult(byte[],byte[],byte[],System.String):this (FullOpts)
-16 (-0.78 % of base) : 107252.dasm - JIT.HardwareIntrinsics.Arm._AdvSimd.SimpleBinaryOpTest__ShiftLogicalSaturate_Vector64_SByte:ValidateResult(byte[],byte[],byte[],System.String):this (FullOpts)
-16 (-1.63 % of base) : 313875.dasm - Tracing.Tests.Common.IpcAdvertise:Parse(System.IO.Stream):Tracing.Tests.Common.IpcAdvertise (FullOpts)
-12 (-0.56 % of base) : 106937.dasm - JIT.HardwareIntrinsics.Arm._AdvSimd.SimpleBinaryOpTest__ShiftLogicalRoundedSaturate_Vector64_Byte:ValidateResult(ubyte[],byte[],ubyte[],System.String):this (FullOpts)
-12 (-1.64 % of base) : 150556.dasm - JIT.HardwareIntrinsics.General._Vector256_1.Program:ToStringDouble() (FullOpts)
-12 (-1.59 % of base) : 150554.dasm - JIT.HardwareIntrinsics.General._Vector256_1.Program:ToStringSingle() (FullOpts)
-12 (-1.60 % of base) : 164453.dasm - JIT.HardwareIntrinsics.General._Vector512_1.Program:ToStringDouble() (FullOpts)
Top method regressions (percentages):
24 (46.15 % of base) : 255619.dasm - GitHub_5556:SpanAsParam(System.Span`1[long]):long (FullOpts)
24 (46.15 % of base) : 255620.dasm - GitHub_5556:SpanWithLocalCopy(System.Span`1[long]):long (FullOpts)
20 (45.45 % of base) : 205967.dasm - Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
24 (40.00 % of base) : 218397.dasm - CreateSpanTest:Main():int (FullOpts)
24 (40.00 % of base) : 205094.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
24 (40.00 % of base) : 205113.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
28 (35.00 % of base) : 563164.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
20 (33.33 % of base) : 205097.dasm - Span.IndexerBench:TestIndexer2(System.Span`1[ubyte]):ubyte (FullOpts)
20 (33.33 % of base) : 205100.dasm - Span.IndexerBench:TestIndexer3(System.Span`1[ubyte]):ubyte (FullOpts)
20 (33.33 % of base) : 205116.dasm - Span.IndexerBench:TestReadOnlyIndexer2(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
24 (31.58 % of base) : 314318.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
60 (29.41 % of base) : 203997.dasm - Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)
20 (27.78 % of base) : 205106.dasm - Span.IndexerBench:TestIndexer5(System.Span`1[ubyte],byref):ubyte (FullOpts)
20 (27.78 % of base) : 202621.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
24 (27.27 % of base) : 205103.dasm - Span.IndexerBench:TestIndexer4(System.Span`1[ubyte],int):ubyte (FullOpts)
24 (27.27 % of base) : 592334.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
24 (27.27 % of base) : 588819.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
20 (26.32 % of base) : 482656.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
20 (26.32 % of base) : 502800.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
20 (26.32 % of base) : 560792.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
Top method improvements (percentages):
-80 (-4.82 % of base) : 22471.dasm - StrAccess1:Run(System.String):int (FullOpts)
-16 (-4.76 % of base) : 588095.dasm - ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon],ubyte):this (Tier1)
-16 (-4.76 % of base) : 591896.dasm - ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]:AddEdge(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon],ubyte):this (Tier1)
-12 (-2.86 % of base) : 250662.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-20 (-2.46 % of base) : 342153.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Instrumented Tier1)
-20 (-2.38 % of base) : 588568.dasm - System.Collections.Generic.Dictionary`2[Internal.TypeSystem.Instantiation,System.__Canon]:Resize(int,ubyte):this (Tier1)
-20 (-2.38 % of base) : 592108.dasm - System.Collections.Generic.Dictionary`2[Internal.TypeSystem.Instantiation,System.__Canon]:Resize(int,ubyte):this (Tier1)
-20 (-2.06 % of base) : 505311.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (Instrumented Tier1)
-40 (-1.95 % of base) : 470249.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
-16 (-1.67 % of base) : 588093.dasm - ILCompiler.LazyGenericsSupport+GraphBuilder:<.ctor>g__AddEdge|0_2(Internal.TypeSystem.GenericParameterDesc,Internal.TypeSystem.GenericParameterDesc,ubyte):this (Tier1)
-16 (-1.67 % of base) : 591895.dasm - ILCompiler.LazyGenericsSupport+GraphBuilder:<.ctor>g__AddEdge|0_2(Internal.TypeSystem.GenericParameterDesc,Internal.TypeSystem.GenericParameterDesc,ubyte):this (Tier1)
-12 (-1.64 % of base) : 150556.dasm - JIT.HardwareIntrinsics.General._Vector256_1.Program:ToStringDouble() (FullOpts)
-16 (-1.63 % of base) : 313875.dasm - Tracing.Tests.Common.IpcAdvertise:Parse(System.IO.Stream):Tracing.Tests.Common.IpcAdvertise (FullOpts)
-12 (-1.60 % of base) : 164453.dasm - JIT.HardwareIntrinsics.General._Vector512_1.Program:ToStringDouble() (FullOpts)
-12 (-1.59 % of base) : 150554.dasm - JIT.HardwareIntrinsics.General._Vector256_1.Program:ToStringSingle() (FullOpts)
-12 (-1.51 % of base) : 164450.dasm - JIT.HardwareIntrinsics.General._Vector512_1.Program:ToStringSingle() (FullOpts)
-12 (-1.43 % of base) : 180413.dasm - System.Collections.Generic.Dictionary`2[Microsoft.CSharp.RuntimeBinder.Semantics.SymbolStore+Key,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-8 (-1.23 % of base) : 592524.dasm - ILCompiler.RuntimeDeterminedTypeHelper:GetHashCode(Internal.TypeSystem.TypeDesc):int (Tier1)
-12 (-1.12 % of base) : 560030.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
-12 (-1.12 % of base) : 580165.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
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: 59069380 (overridden on cmd)
Total bytes of diff: 59152484 (overridden on cmd)
Total bytes of delta: 83104 (0.14 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
1188 : 142495.dasm (4.35 % of base)
264 : 143518.dasm (6.13 % of base)
208 : 4467.dasm (1.81 % of base)
156 : 200109.dasm (13.83 % of base)
152 : 117432.dasm (5.11 % of base)
140 : 3318.dasm (8.31 % of base)
120 : 143208.dasm (3.75 % of base)
112 : 22570.dasm (6.90 % of base)
112 : 224076.dasm (13.59 % of base)
108 : 187752.dasm (8.94 % of base)
104 : 124562.dasm (0.74 % of base)
100 : 178459.dasm (3.32 % of base)
100 : 17894.dasm (2.36 % of base)
100 : 214293.dasm (2.59 % of base)
100 : 225983.dasm (6.38 % of base)
100 : 225984.dasm (6.33 % of base)
100 : 117433.dasm (5.17 % of base)
100 : 209664.dasm (3.32 % of base)
96 : 44247.dasm (1.97 % of base)
96 : 113395.dasm (2.08 % of base)
Top file improvements (bytes):
-56 : 122679.dasm (-1.10 % of base)
-48 : 198264.dasm (-5.38 % of base)
-40 : 218090.dasm (-5.38 % of base)
-40 : 142295.dasm (-1.50 % of base)
-36 : 224484.dasm (-2.10 % of base)
-32 : 123653.dasm (-3.29 % of base)
-24 : 172865.dasm (-3.31 % of base)
-24 : 188547.dasm (-10.00 % of base)
-20 : 21063.dasm (-2.23 % of base)
-20 : 72239.dasm (-0.88 % of base)
-20 : 91611.dasm (-1.79 % of base)
-16 : 39839.dasm (-1.44 % of base)
-16 : 62445.dasm (-4.71 % of base)
-12 : 205582.dasm (-0.72 % of base)
-12 : 225962.dasm (-2.42 % of base)
-12 : 172687.dasm (-2.31 % of base)
-12 : 19469.dasm (-0.97 % of base)
-12 : 224195.dasm (-1.04 % of base)
-12 : 225527.dasm (-3.19 % of base)
-12 : 18049.dasm (-0.91 % of base)
84 total files with Code Size differences (26 improved, 58 regressed), 20 unchanged.
Top method regressions (bytes):
1188 (4.35 % of base) : 142495.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
264 (6.13 % of base) : 143518.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
208 (1.81 % of base) : 4467.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
156 (13.83 % of base) : 200109.dasm - System.Diagnostics.EventLog:FindSourceRegistration(System.String,System.String,ubyte,ubyte):Microsoft.Win32.RegistryKey (FullOpts)
152 (5.11 % of base) : 117432.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
140 (8.31 % of base) : 3318.dasm - System.Type:FindMembers(int,int,System.Reflection.MemberFilter,System.Object):System.Reflection.MemberInfo[]:this (FullOpts)
120 (3.75 % of base) : 143208.dasm - Microsoft.VisualBasic.CompilerServices.VB6File:Print(System.Object[]):this (FullOpts)
112 (13.59 % of base) : 224076.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
112 (6.90 % of base) : 22570.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)
108 (8.94 % of base) : 187752.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext:FindBestMethod(System.Reflection.MethodInfo[],ubyte,ubyte,System.String,int[]):System.Reflection.MethodInfo (FullOpts)
104 (0.74 % of base) : 124562.dasm - System.Data.XmlTreeGen:HandleTable(System.Data.DataTable,System.Xml.XmlDocument,System.Xml.XmlElement,ubyte):System.Xml.XmlElement:this (FullOpts)
100 (5.17 % of base) : 117433.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
100 (3.32 % of base) : 178459.dasm - System.Data.Common.MultipartIdentifier:ParseMultipartIdentifier(System.String,System.String,System.String,ushort,int,ubyte,System.String,ubyte):System.String[] (FullOpts)
100 (3.32 % of base) : 209664.dasm - System.Data.Common.MultipartIdentifier:ParseMultipartIdentifier(System.String,System.String,System.String,ushort,int,ubyte,System.String,ubyte):System.String[] (FullOpts)
100 (2.59 % of base) : 214293.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,System.__Canon]:MergeSortCooperatively():this (FullOpts)
100 (6.38 % of base) : 225983.dasm - System.Numerics.BigInteger:Add(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (FullOpts)
100 (6.33 % of base) : 225984.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (FullOpts)
100 (2.36 % of base) : 17894.dasm - System.RuntimeType:WrapArgsForInvokeCall(System.Object[],int[]) (FullOpts)
96 (1.97 % of base) : 44247.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
96 (2.08 % of base) : 113395.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
Top method improvements (bytes):
-56 (-1.10 % of base) : 122679.dasm - System.Data.Common.DbDataAdapter:Update(System.Data.DataRow[],System.Data.Common.DataTableMapping):int:this (FullOpts)
-48 (-5.38 % of base) : 198264.dasm - ILCompiler.Reflection.ReadyToRun.NativeCuckooFilter:ToString():System.String:this (FullOpts)
-40 (-1.50 % of base) : 142295.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexGet(System.Object,System.Object[],System.String[]):System.Object (FullOpts)
-40 (-5.38 % of base) : 218090.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo (FullOpts)
-36 (-2.10 % of base) : 224484.dasm - System.ServiceProcess.ServiceController:Start(System.String[]):this (FullOpts)
-32 (-3.29 % of base) : 123653.dasm - System.Data.DataTable:GetPropertyDescriptorCollection():System.ComponentModel.PropertyDescriptorCollection:this (FullOpts)
-24 (-3.31 % of base) : 172865.dasm - System.Runtime.Serialization.DataContracts.DataContract:ValidatePreviousCollectionTypes(System.Type,System.Type,System.Collections.Generic.HashSet`1[System.Type]) (FullOpts)
-24 (-10.00 % of base) : 188547.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
-20 (-0.88 % of base) : 72239.dasm - Microsoft.Diagnostics.Tracing.ActivityComputer:ResolveWellKnownSymbols():this (FullOpts)
-20 (-1.79 % of base) : 91611.dasm - Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetch:ToStream(FastSerialization.Serializer):this (FullOpts)
-20 (-2.23 % of base) : 21063.dasm - System.Collections.Generic.Dictionary`2[long,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-16 (-1.44 % of base) : 39839.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:GetResults(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:this (FullOpts)
-16 (-4.71 % of base) : 62445.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
-12 (-2.75 % of base) : 67004.dasm - Microsoft.CodeAnalysis.CSharp.UnboundLambdaState+ReturnInferenceCacheKey:Equals(System.Object):ubyte:this (FullOpts)
-12 (-1.04 % of base) : 224195.dasm - System.Diagnostics.Metrics.FixedSizeLabelNameDictionary`3[System.Diagnostics.Metrics.StringSequence1,System.Diagnostics.Metrics.ObjectSequence1,System.__Canon]:Collect(System.Action`1[System.Diagnostics.Metrics.LabeledAggregationStatistics]):this (FullOpts)
-12 (-2.42 % of base) : 225962.dasm - System.Globalization.FormatProvider+Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-12 (-0.91 % of base) : 18049.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (FullOpts)
-12 (-3.19 % of base) : 225527.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-12 (-0.97 % of base) : 19469.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-12 (-0.72 % of base) : 205582.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryFormatterWriter:WriteObject(System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,int,System.String[],System.Type[],System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo[]):this (FullOpts)
Top method regressions (percentages):
36 (60.00 % of base) : 155473.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
36 (60.00 % of base) : 126256.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
32 (57.14 % of base) : 228491.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
36 (56.25 % of base) : 173065.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
32 (53.33 % of base) : 211564.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
32 (53.33 % of base) : 218388.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
36 (52.94 % of base) : 156534.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (52.94 % of base) : 127471.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (52.94 % of base) : 146936.dasm - System.Text.RegularExpressions.Symbolic.UInt64Solver:Or(System.ReadOnlySpan`1[ulong]):ulong:this (FullOpts)
40 (47.62 % of base) : 155561.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
40 (47.62 % of base) : 126344.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
40 (47.62 % of base) : 200702.dasm - System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetStartsWithDistance|11_1(System.String,System.String):int (FullOpts)
36 (47.37 % of base) : 19871.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
32 (44.44 % of base) : 146294.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
44 (42.31 % of base) : 128494.dasm - Microsoft.CodeAnalysis.MemoryExtensions:IndexOfAny(System.ReadOnlySpan`1[ushort],ushort[]):int (FullOpts)
44 (42.31 % of base) : 157533.dasm - Microsoft.CodeAnalysis.MemoryExtensions:IndexOfAny(System.ReadOnlySpan`1[ushort],ushort[]):int (FullOpts)
36 (36.00 % of base) : 224056.dasm - System.Diagnostics.ActivityTraceId:IsLowerCaseHexAndNotAllZeros(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
32 (34.78 % of base) : 204586.dasm - System.Formats.Asn1.AsnDecoder:InterpretNamedBitListReversed(System.ReadOnlySpan`1[ubyte]):long (FullOpts)
32 (33.33 % of base) : 126243.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)
32 (33.33 % of base) : 155462.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)
Top method improvements (percentages):
-24 (-10.00 % of base) : 188547.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
-48 (-5.38 % of base) : 198264.dasm - ILCompiler.Reflection.ReadyToRun.NativeCuckooFilter:ToString():System.String:this (FullOpts)
-40 (-5.38 % of base) : 218090.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo (FullOpts)
-16 (-4.71 % of base) : 62445.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
-24 (-3.31 % of base) : 172865.dasm - System.Runtime.Serialization.DataContracts.DataContract:ValidatePreviousCollectionTypes(System.Type,System.Type,System.Collections.Generic.HashSet`1[System.Type]) (FullOpts)
-32 (-3.29 % of base) : 123653.dasm - System.Data.DataTable:GetPropertyDescriptorCollection():System.ComponentModel.PropertyDescriptorCollection:this (FullOpts)
-12 (-3.19 % of base) : 225527.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-12 (-2.75 % of base) : 67004.dasm - Microsoft.CodeAnalysis.CSharp.UnboundLambdaState+ReturnInferenceCacheKey:Equals(System.Object):ubyte:this (FullOpts)
-12 (-2.42 % of base) : 225962.dasm - System.Globalization.FormatProvider+Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-12 (-2.31 % of base) : 172687.dasm - System.Xml.XmlCanonicalWriter:SortAttributes():this (FullOpts)
-4 (-2.27 % of base) : 123407.dasm - System.Data.DataError:GetColumnsInError():System.Data.DataColumn[]:this (FullOpts)
-20 (-2.23 % of base) : 21063.dasm - System.Collections.Generic.Dictionary`2[long,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-36 (-2.10 % of base) : 224484.dasm - System.ServiceProcess.ServiceController:Start(System.String[]):this (FullOpts)
-4 (-2.08 % of base) : 123542.dasm - System.Data.DataKey:GetIndexDesc():System.Data.IndexField[]:this (FullOpts)
-4 (-1.89 % of base) : 146629.dasm - System.Reflection.Metadata.MetadataReader:ComputeCodedTokenSize(int,int[],ulong):int:this (FullOpts)
-20 (-1.79 % of base) : 91611.dasm - Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetch:ToStream(FastSerialization.Serializer):this (FullOpts)
-8 (-1.61 % of base) : 211820.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities+<>c__DisplayClass18_0:<CreateFactoryReflection>g__GetFactoryParameterContext|3():Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext[]:this (FullOpts)
-8 (-1.52 % of base) : 187526.dasm - System.Xml.Schema.FacetsChecker+FacetsCompiler:Preprocess(System.String):System.String (FullOpts)
-40 (-1.50 % of base) : 142295.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexGet(System.Object,System.Object[],System.String[]):System.Object (FullOpts)
-16 (-1.44 % of base) : 39839.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:GetResults(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:this (FullOpts)
libraries.pmi.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 79846048 (overridden on cmd)
Total bytes of diff: 79940456 (overridden on cmd)
Total bytes of delta: 94408 (0.12 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
832 : 140512.dasm (2.86 % of base)
284 : 140526.dasm (4.67 % of base)
180 : 115428.dasm (3.23 % of base)
144 : 259107.dasm (4.08 % of base)
144 : 257778.dasm (4.08 % of base)
136 : 119540.dasm (2.94 % of base)
136 : 204564.dasm (2.92 % of base)
136 : 235075.dasm (1.81 % of base)
120 : 100798.dasm (3.35 % of base)
120 : 260546.dasm (10.20 % of base)
112 : 259953.dasm (8.62 % of base)
108 : 204565.dasm (2.93 % of base)
100 : 96492.dasm (4.30 % of base)
100 : 202150.dasm (8.56 % of base)
100 : 94869.dasm (3.47 % of base)
100 : 37912.dasm (1.74 % of base)
100 : 304138.dasm (6.33 % of base)
100 : 305569.dasm (6.30 % of base)
96 : 276219.dasm (1.27 % of base)
96 : 60822.dasm (3.39 % of base)
Top file improvements (bytes):
-52 : 139785.dasm (-1.78 % of base)
-36 : 140519.dasm (-1.28 % of base)
-28 : 57926.dasm (-1.17 % of base)
-28 : 195137.dasm (-12.50 % of base)
-24 : 198505.dasm (-3.37 % of base)
-24 : 202486.dasm (-10.71 % of base)
-20 : 69322.dasm (-0.94 % of base)
-16 : 294957.dasm (-0.83 % of base)
-16 : 97053.dasm (-0.22 % of base)
-16 : 13852.dasm (-1.97 % of base)
-12 : 50586.dasm (-0.58 % of base)
-12 : 187529.dasm (-2.36 % of base)
-12 : 215891.dasm (-0.88 % of base)
-12 : 39689.dasm (-0.61 % of base)
-8 : 176207.dasm (-1.55 % of base)
-8 : 213554.dasm (-0.61 % of base)
-8 : 258585.dasm (-0.08 % of base)
-8 : 115179.dasm (-0.16 % of base)
-8 : 236537.dasm (-0.32 % of base)
-8 : 293014.dasm (-1.32 % of base)
84 total files with Code Size differences (27 improved, 57 regressed), 20 unchanged.
Top method regressions (bytes):
832 (2.86 % of base) : 140512.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
284 (4.67 % of base) : 140526.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
180 (3.23 % of base) : 115428.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
144 (4.08 % of base) : 259107.dasm - System.Data.Common.MultipartIdentifier:ParseMultipartIdentifier(System.String,System.String,System.String,ushort,int,ubyte,System.String,ubyte):System.String[] (FullOpts)
144 (4.08 % of base) : 257778.dasm - System.Data.Common.MultipartIdentifier:ParseMultipartIdentifier(System.String,System.String,System.String,ushort,int,ubyte,System.String,ubyte):System.String[] (FullOpts)
136 (1.81 % of base) : 235075.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
136 (2.94 % of base) : 119540.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
136 (2.92 % of base) : 204564.dasm - System.Xml.Serialization.TempAssembly:GenerateSerializerToStream(System.Xml.Serialization.XmlMapping[],System.Type[],System.String,System.Reflection.Assembly,System.Collections.Hashtable,System.IO.Stream):ubyte (FullOpts)
120 (3.35 % of base) : 100798.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbol:GetAttributesToBind(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax]],int,Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax]:this (FullOpts)
120 (10.20 % of base) : 260546.dasm - System.Diagnostics.EventLog:FindSourceRegistration(System.String,System.String,ubyte,ubyte):Microsoft.Win32.RegistryKey (FullOpts)
112 (8.62 % of base) : 259953.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
108 (2.93 % of base) : 204565.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
100 (1.74 % of base) : 37912.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
100 (3.47 % of base) : 94869.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol] (FullOpts)
100 (4.30 % of base) : 96492.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckForOverloadsErrors(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
100 (8.56 % of base) : 202150.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext:FindBestMethod(System.Reflection.MethodInfo[],ubyte,ubyte,System.String,int[]):System.Reflection.MethodInfo (FullOpts)
100 (6.33 % of base) : 304138.dasm - Xunit.Serialization.XunitSerializationInfo+ArraySerializer:Deserialize(Xunit.Abstractions.IXunitSerializationInfo):this (FullOpts)
100 (6.30 % of base) : 305569.dasm - Xunit.Serialization.XunitSerializationInfo+ArraySerializer:Deserialize(Xunit.Abstractions.IXunitSerializationInfo):this (FullOpts)
96 (3.39 % of base) : 60822.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
96 (1.27 % of base) : 276219.dasm - System.Management.PropertyData:MapValueToWmiValue(System.Object,int,ubyte):System.Object (FullOpts)
Top method improvements (bytes):
-52 (-1.78 % of base) : 139785.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexSet(System.Object,System.Object[],System.String[]) (FullOpts)
-36 (-1.28 % of base) : 140519.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-28 (-1.17 % of base) : 57926.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
-28 (-12.50 % of base) : 195137.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
-24 (-3.37 % of base) : 198505.dasm - System.Xml.Schema.FacetsChecker+FacetsCompiler:Preprocess(System.String):System.String (FullOpts)
-24 (-10.71 % of base) : 202486.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
-20 (-0.94 % of base) : 69322.dasm - Microsoft.Diagnostics.Tracing.ActivityComputer:ResolveWellKnownSymbols():this (FullOpts)
-16 (-0.22 % of base) : 97053.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedEventAccessorSymbol:ConstructFieldLikeEventAccessorBody_Regular(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceEventSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundBlock (FullOpts)
-16 (-1.97 % of base) : 13852.dasm - System.Collections.Generic.Dictionary`2[ubyte,System.Nullable`1[int]]:Resize(int,ubyte):this (FullOpts)
-16 (-0.83 % of base) : 294957.dasm - System.ServiceProcess.ServiceController:Start(System.String[]):this (FullOpts)
-12 (-0.61 % of base) : 39689.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:ApplyDeconstructionConversion(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.LocalRewriter+DeconstructionSideEffects,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-12 (-0.58 % of base) : 50586.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__makeContent|428_4(System.ReadOnlySpan`1[ushort],System.Text.StringBuilder,ubyte,ubyte,System.ReadOnlySpan`1[ushort],byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolatedStringContentSyntax:this (FullOpts)
-12 (-0.88 % of base) : 215891.dasm - System.Text.Json.JsonHelpers:TryParseDateTimeOffset(System.ReadOnlySpan`1[ubyte],byref):ubyte (FullOpts)
-12 (-2.36 % of base) : 187529.dasm - System.Xml.XmlCanonicalWriter:SortAttributes():this (FullOpts)
-8 (-0.16 % of base) : 115179.dasm - Microsoft.CodeAnalysis.VisualBasic.AccessCheck:VerifyAccessExposureForMemberType(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.SyntaxNodeOrToken,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte) (FullOpts)
-8 (-0.32 % of base) : 236537.dasm - R2RDump.TextDumper:DumpDisasm(ILCompiler.Reflection.ReadyToRun.RuntimeFunction,int):this (FullOpts)
-8 (-1.55 % of base) : 176207.dasm - System.Data.Index:GetUniqueKeyValues(System.Collections.Generic.List`1[System.Object[]],int):this (FullOpts)
-8 (-0.08 % of base) : 258585.dasm - System.Data.OleDb.OleDbCommandBuilder:DeriveParametersFromStoredProcedure(System.Data.OleDb.OleDbConnection,System.Data.OleDb.OleDbCommand):System.Data.OleDb.OleDbParameter[] (FullOpts)
-8 (-1.32 % of base) : 293014.dasm - System.Security.Cryptography.Pkcs.CmsSigner:BuildAttributes(System.Security.Cryptography.CryptographicAttributeObjectCollection):System.Collections.Generic.List`1[System.Security.Cryptography.Asn1.AttributeAsn] (FullOpts)
-8 (-0.61 % of base) : 213554.dasm - System.Security.Cryptography.X509Certificates.Pkcs10CertificationRequestInfo:ToPkcs10Request(System.Security.Cryptography.X509Certificates.X509SignatureGenerator,System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts)
Top method regressions (percentages):
24 (40.00 % of base) : 122431.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
24 (40.00 % of base) : 153777.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
20 (35.71 % of base) : 267076.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
24 (35.29 % of base) : 155952.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
24 (35.29 % of base) : 124616.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
24 (35.29 % of base) : 188635.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
24 (35.29 % of base) : 296565.dasm - System.Text.RegularExpressions.Symbolic.UInt64Solver:Or(System.ReadOnlySpan`1[ulong]):ulong:this (FullOpts)
32 (33.33 % of base) : 151094.dasm - Microsoft.Build.Shared.FileMatcher:HasDotDot(System.String):ubyte (FullOpts)
24 (33.33 % of base) : 122420.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ushort]):int (FullOpts)
24 (33.33 % of base) : 153768.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ushort]):int (FullOpts)
28 (33.33 % of base) : 154417.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
28 (33.33 % of base) : 122937.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
28 (33.33 % of base) : 237059.dasm - System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetStartsWithDistance|11_1(System.String,System.String):int (FullOpts)
20 (33.33 % of base) : 241646.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
20 (33.33 % of base) : 288510.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
24 (31.58 % of base) : 270118.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
32 (30.77 % of base) : 125660.dasm - Microsoft.CodeAnalysis.MemoryExtensions:IndexOfAny(System.ReadOnlySpan`1[ushort],ushort[]):int (FullOpts)
32 (30.77 % of base) : 156971.dasm - Microsoft.CodeAnalysis.MemoryExtensions:IndexOfAny(System.ReadOnlySpan`1[ushort],ushort[]):int (FullOpts)
20 (27.78 % of base) : 209783.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
56 (26.92 % of base) : 200679.dasm - System.Xml.Xsl.XPathConvert+BigInteger:CompareTo(System.Object):int:this (FullOpts)
Top method improvements (percentages):
-28 (-12.50 % of base) : 195137.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
-24 (-10.71 % of base) : 202486.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
-24 (-3.37 % of base) : 198505.dasm - System.Xml.Schema.FacetsChecker+FacetsCompiler:Preprocess(System.String):System.String (FullOpts)
-4 (-2.63 % of base) : 174240.dasm - System.Data.DataError:GetColumnsInError():System.Data.DataColumn[]:this (FullOpts)
-4 (-2.38 % of base) : 174576.dasm - System.Data.DataKey:GetIndexDesc():System.Data.IndexField[]:this (FullOpts)
-12 (-2.36 % of base) : 187529.dasm - System.Xml.XmlCanonicalWriter:SortAttributes():this (FullOpts)
-16 (-1.97 % of base) : 13852.dasm - System.Collections.Generic.Dictionary`2[ubyte,System.Nullable`1[int]]:Resize(int,ubyte):this (FullOpts)
-52 (-1.78 % of base) : 139785.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexSet(System.Object,System.Object[],System.String[]) (FullOpts)
-4 (-1.75 % of base) : 24226.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel+SortBy@2594-1[ubyte,System.Nullable`1[int]]:Invoke(int):this (FullOpts)
-4 (-1.69 % of base) : 208171.dasm - System.Reflection.Metadata.MetadataReader:ComputeCodedTokenSize(int,int[],ulong):int:this (FullOpts)
-4 (-1.61 % of base) : 249874.dasm - System.Collections.SortedList:ToDebugViewDictionaryItemArray():System.Collections.Generic.DebugViewDictionaryItem`2[System.Object,System.Object][]:this (FullOpts)
-8 (-1.55 % of base) : 176207.dasm - System.Data.Index:GetUniqueKeyValues(System.Collections.Generic.List`1[System.Object[]],int):this (FullOpts)
-8 (-1.32 % of base) : 293014.dasm - System.Security.Cryptography.Pkcs.CmsSigner:BuildAttributes(System.Security.Cryptography.CryptographicAttributeObjectCollection):System.Collections.Generic.List`1[System.Security.Cryptography.Asn1.AttributeAsn] (FullOpts)
-4 (-1.30 % of base) : 232095.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:GetValues(System.Object[]):System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]:this (FullOpts)
-36 (-1.28 % of base) : 140519.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-28 (-1.17 % of base) : 57926.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
-4 (-1.09 % of base) : 244662.dasm - System.Collections.Concurrent.ConcurrentStack`1[ubyte]:PushRange(ubyte[],int,int):this (FullOpts)
-20 (-0.94 % of base) : 69322.dasm - Microsoft.Diagnostics.Tracing.ActivityComputer:ResolveWellKnownSymbols():this (FullOpts)
-12 (-0.88 % of base) : 215891.dasm - System.Text.Json.JsonHelpers:TryParseDateTimeOffset(System.ReadOnlySpan`1[ubyte],byref):ubyte (FullOpts)
-16 (-0.83 % of base) : 294957.dasm - System.ServiceProcess.ServiceController:Start(System.String[]):this (FullOpts)
libraries_tests.run.windows.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 330812748 (overridden on cmd)
Total bytes of diff: 331284984 (overridden on cmd)
Total bytes of delta: 472236 (0.14 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
520 : 85605.dasm (4.36 % of base)
380 : 164687.dasm (6.24 % of base)
364 : 304203.dasm (2.60 % of base)
364 : 155704.dasm (3.06 % of base)
364 : 614286.dasm (5.97 % of base)
360 : 23847.dasm (2.39 % of base)
360 : 281707.dasm (2.39 % of base)
352 : 68333.dasm (2.33 % of base)
348 : 396176.dasm (2.31 % of base)
348 : 594381.dasm (2.91 % of base)
348 : 69552.dasm (2.32 % of base)
348 : 521994.dasm (2.34 % of base)
348 : 72179.dasm (2.32 % of base)
344 : 205742.dasm (2.32 % of base)
340 : 125564.dasm (2.28 % of base)
340 : 297895.dasm (2.77 % of base)
336 : 528910.dasm (2.25 % of base)
336 : 635168.dasm (2.44 % of base)
332 : 520412.dasm (2.20 % of base)
332 : 634448.dasm (2.20 % of base)
Top file improvements (bytes):
-92 : 596274.dasm (-1.42 % of base)
-76 : 158324.dasm (-2.03 % of base)
-52 : 513317.dasm (-1.46 % of base)
-48 : 157203.dasm (-0.80 % of base)
-32 : 31668.dasm (-0.48 % of base)
-28 : 76816.dasm (-0.42 % of base)
-28 : 243651.dasm (-1.27 % of base)
-24 : 58654.dasm (-0.28 % of base)
-24 : 37598.dasm (-0.36 % of base)
-20 : 292414.dasm (-3.21 % of base)
-20 : 304065.dasm (-3.21 % of base)
-20 : 593750.dasm (-2.38 % of base)
-20 : 90825.dasm (-0.38 % of base)
-20 : 154458.dasm (-3.16 % of base)
-20 : 221418.dasm (-3.21 % of base)
-20 : 327123.dasm (-3.21 % of base)
-20 : 451902.dasm (-2.02 % of base)
-20 : 451929.dasm (-3.23 % of base)
-20 : 240381.dasm (-2.02 % of base)
-20 : 243825.dasm (-2.02 % of base)
89 total files with Code Size differences (29 improved, 60 regressed), 20 unchanged.
Top method regressions (bytes):
520 (4.36 % of base) : 85605.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
380 (6.24 % of base) : 164687.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]:IntroSort(System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]],int,System.Comparison`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]) (Tier1)
364 (5.97 % of base) : 614286.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]:IntroSort(System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]],int,System.Comparison`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]) (Tier1)
364 (2.60 % of base) : 304203.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
364 (3.06 % of base) : 155704.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
360 (2.39 % of base) : 23847.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
360 (2.39 % of base) : 281707.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
352 (2.33 % of base) : 68333.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
348 (2.31 % of base) : 396176.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
348 (2.32 % of base) : 69552.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
348 (2.34 % of base) : 521994.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
348 (2.32 % of base) : 72179.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
348 (2.91 % of base) : 594381.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
344 (2.32 % of base) : 205742.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
340 (2.28 % of base) : 125564.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
340 (2.77 % of base) : 297895.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
336 (2.25 % of base) : 528910.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
336 (2.44 % of base) : 635168.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
332 (2.20 % of base) : 520412.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
332 (2.20 % of base) : 634448.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
Top method improvements (bytes):
-92 (-1.42 % of base) : 596274.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArgumentsEvaluate(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]:this (Tier1)
-76 (-2.03 % of base) : 158324.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArgumentsEvaluate(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]:this (Tier1)
-52 (-1.46 % of base) : 513317.dasm - System.Security.Cryptography.Tests.HmacTests`1+<VerifyRepeatingAsync>d__28[System.__Canon]:MoveNext():this (Tier1)
-48 (-0.80 % of base) : 157203.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttributes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Binder],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData[],Microsoft.CodeAnalysis.CSharp.BoundAttribute[],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (Tier1)
-32 (-0.48 % of base) : 31668.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
-28 (-0.42 % of base) : 76816.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
-28 (-1.27 % of base) : 243651.dasm - System.Diagnostics.Tracing.EventSource:DoCommand(System.Diagnostics.Tracing.EventCommandEventArgs):this (Instrumented Tier1)
-24 (-0.36 % of base) : 37598.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
-24 (-0.28 % of base) : 58654.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindIdentifier(Microsoft.CodeAnalysis.CSharp.Syntax.SimpleNameSyntax,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
-20 (-0.38 % of base) : 90825.dasm - Microsoft.Interop.StatefulMarshallerShapeHelper:GetFromUnmanagedMethod(Microsoft.CodeAnalysis.ITypeSymbol,Microsoft.CodeAnalysis.ITypeSymbol):Microsoft.CodeAnalysis.IMethodSymbol (Tier1)
-20 (-2.02 % of base) : 240381.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (Instrumented Tier1)
-20 (-2.02 % of base) : 451902.dasm - System.Collections.Generic.Dictionary`2[long,System.__Canon]:Resize(int,ubyte):this (Instrumented Tier1)
-20 (-2.38 % of base) : 613319.dasm - System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.SyntaxTrivia,System.__Canon]:Resize(int,ubyte):this (Tier1)
-20 (-2.02 % of base) : 243825.dasm - System.Collections.Generic.Dictionary`2[ulong,System.__Canon]:Resize(int,ubyte):this (Instrumented Tier1)
-20 (-2.38 % of base) : 593750.dasm - System.Collections.Generic.Dictionary`2[ulong,System.__Canon]:Resize(int,ubyte):this (Tier1)
-20 (-2.66 % of base) : 4242.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Instrumented Tier1)
-20 (-3.21 % of base) : 292414.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.21 % of base) : 304065.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.16 % of base) : 154458.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.21 % of base) : 221418.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
Top method regressions (percentages):
24 (40.00 % of base) : 52224.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
24 (40.00 % of base) : 595447.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
24 (40.00 % of base) : 86548.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
24 (40.00 % of base) : 162294.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
24 (35.29 % of base) : 597506.dasm - System.Text.RegularExpressions.RegexCharClass:IsAscii(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
28 (35.00 % of base) : 415198.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
24 (30.00 % of base) : 523457.dasm - System.Text.Tests.TranscodingStreamTests+<>c:<GetVeryLongAsciiString>b__40_0(System.Span`1[ushort],System.Object):this (Tier1)
20 (27.78 % of base) : 164032.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
20 (27.78 % of base) : 607560.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
24 (27.27 % of base) : 580412.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
24 (27.27 % of base) : 341641.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
24 (27.27 % of base) : 609267.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
36 (26.47 % of base) : 459046.dasm - System.Numerics.BigIntegerCalculator:AddSelf(System.Span`1[uint],System.ReadOnlySpan`1[uint]) (Tier1)
36 (26.47 % of base) : 495080.dasm - System.Numerics.BigIntegerCalculator:AddSelf(System.Span`1[uint],System.ReadOnlySpan`1[uint]) (Tier1)
36 (26.47 % of base) : 495085.dasm - System.Numerics.BigIntegerCalculator:SubtractSelf(System.Span`1[uint],System.ReadOnlySpan`1[uint]) (Tier1)
20 (26.32 % of base) : 369336.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
20 (26.32 % of base) : 102468.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
20 (26.32 % of base) : 151920.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
20 (26.32 % of base) : 166923.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
20 (26.32 % of base) : 644371.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
Top method improvements (percentages):
-20 (-3.23 % of base) : 451929.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.21 % of base) : 292414.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.21 % of base) : 304065.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.21 % of base) : 221418.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.21 % of base) : 327123.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.21 % of base) : 500824.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-20 (-3.16 % of base) : 154458.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Tier1)
-16 (-2.84 % of base) : 613248.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState](System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult],System.Func`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState] (Tier1)
-20 (-2.66 % of base) : 4242.dasm - System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this (Instrumented Tier1)
-20 (-2.38 % of base) : 613319.dasm - System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.SyntaxTrivia,System.__Canon]:Resize(int,ubyte):this (Tier1)
-20 (-2.38 % of base) : 593750.dasm - System.Collections.Generic.Dictionary`2[ulong,System.__Canon]:Resize(int,ubyte):this (Tier1)
-76 (-2.03 % of base) : 158324.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArgumentsEvaluate(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]:this (Tier1)
-20 (-2.02 % of base) : 240381.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (Instrumented Tier1)
-20 (-2.02 % of base) : 451902.dasm - System.Collections.Generic.Dictionary`2[long,System.__Canon]:Resize(int,ubyte):this (Instrumented Tier1)
-20 (-2.02 % of base) : 243825.dasm - System.Collections.Generic.Dictionary`2[ulong,System.__Canon]:Resize(int,ubyte):this (Instrumented Tier1)
-16 (-2.01 % of base) : 124818.dasm - System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain+ChainItemInfo]:Resize(int,ubyte):this (Tier1)
-16 (-2.01 % of base) : 127874.dasm - System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain+ChainItemInfo]:Resize(int,ubyte):this (Tier1)
-16 (-2.01 % of base) : 124739.dasm - System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory+ServiceDescriptorCacheItem]:Resize(int,ubyte):this (Tier1)
-16 (-2.01 % of base) : 305626.dasm - System.Collections.Generic.Dictionary`2[System.Linq.Parallel.Wrapper`1[int],System.Linq.Parallel.Pair`2[int,int]]:Resize(int,ubyte):this (Tier1)
-16 (-2.01 % of base) : 88826.dasm - System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.TypeDefinitionHandle,System.Collections.Immutable.ImmutableArray`1[System.Reflection.Metadata.TypeDefinitionHandle]]:Resize(int,ubyte):this (Tier1)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 171579600 (overridden on cmd)
Total bytes of diff: 171699620 (overridden on cmd)
Total bytes of delta: 120020 (0.07 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
820 : 59737.dasm (2.83 % of base)
284 : 59736.dasm (4.67 % of base)
260 : 312154.dasm (4.26 % of base)
256 : 18995.dasm (10.29 % of base)
240 : 268689.dasm (2.05 % of base)
188 : 18936.dasm (9.46 % of base)
184 : 19015.dasm (8.63 % of base)
160 : 314416.dasm (3.18 % of base)
156 : 181618.dasm (0.94 % of base)
136 : 77140.dasm (6.44 % of base)
128 : 54508.dasm (2.03 % of base)
120 : 183000.dasm (1.11 % of base)
120 : 50674.dasm (2.08 % of base)
120 : 99291.dasm (10.20 % of base)
120 : 44816.dasm (2.08 % of base)
112 : 36632.dasm (6.17 % of base)
112 : 78028.dasm (2.27 % of base)
112 : 98866.dasm (10.00 % of base)
112 : 182998.dasm (1.24 % of base)
112 : 136075.dasm (2.98 % of base)
Top file improvements (bytes):
-72 : 6908.dasm (-1.23 % of base)
-72 : 10985.dasm (-0.91 % of base)
-56 : 252623.dasm (-1.63 % of base)
-56 : 274219.dasm (-1.63 % of base)
-52 : 60249.dasm (-1.78 % of base)
-36 : 183821.dasm (-1.36 % of base)
-36 : 44745.dasm (-1.23 % of base)
-32 : 50578.dasm (-0.96 % of base)
-32 : 141360.dasm (-0.88 % of base)
-32 : 142315.dasm (-0.88 % of base)
-28 : 183308.dasm (-12.50 % of base)
-28 : 56314.dasm (-1.19 % of base)
-24 : 178518.dasm (-3.37 % of base)
-20 : 147326.dasm (-3.01 % of base)
-20 : 148036.dasm (-3.01 % of base)
-20 : 148598.dasm (-3.03 % of base)
-16 : 6191.dasm (-1.97 % of base)
-16 : 165997.dasm (-0.61 % of base)
-16 : 17319.dasm (-0.58 % of base)
-16 : 40815.dasm (-0.82 % of base)
88 total files with Code Size differences (31 improved, 57 regressed), 20 unchanged.
Top method regressions (bytes):
820 (2.83 % of base) : 59737.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
284 (4.67 % of base) : 59736.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
260 (4.26 % of base) : 312154.dasm - System.Threading.Tasks.Tests.TaskRtTests:RunFromResult() (FullOpts)
256 (10.29 % of base) : 18995.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:NegateBoolsOut2D(SharedTypes.BoolStruct[][],int,int[],byref) (FullOpts)
240 (2.05 % of base) : 268689.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:WriteNumbers(System.Text.Json.JsonWriterOptions,System.String):this (FullOpts)
188 (9.46 % of base) : 18936.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:FillRangeArray2D(SharedTypes.IntStructWrapper[][],int,int[],int):ubyte (FullOpts)
184 (8.63 % of base) : 19015.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:NegateBoolsRef2D_ClearMarshalling(byref,int,int[]) (FullOpts)
160 (3.18 % of base) : 314416.dasm - System.Transactions.Tests.NonMsdtcPromoterTests:TestCase_PSPENonMsdtc(ubyte,ubyte,int,int,int,int,int,int,int) (FullOpts)
156 (0.94 % of base) : 181618.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (FullOpts)
136 (6.44 % of base) : 77140.dasm - System.Collections.Tests.List_Generic_Tests_Insert+Driver`1[System.__Canon]:InsertRangeIEnumerable(System.__Canon[],System.__Canon[],int,int,System.Func`2[System.__Canon,System.__Canon]):this (FullOpts)
128 (2.03 % of base) : 54508.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
120 (2.08 % of base) : 50674.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
120 (2.08 % of base) : 44816.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
120 (10.20 % of base) : 99291.dasm - System.Diagnostics.EventLog:FindSourceRegistration(System.String,System.String,ubyte,ubyte):Microsoft.Win32.RegistryKey (FullOpts)
120 (1.11 % of base) : 183000.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess2():int:this (FullOpts)
112 (6.17 % of base) : 36632.dasm - LamarCodeGeneration.Util.ExpressionCompiler+ClosureInfo:ConstructClosureTypeAndObject(ubyte):System.Object:this (FullOpts)
112 (2.27 % of base) : 78028.dasm - System.Collections.Tests.LinkedList_Generic_Tests`1[int]:AddAfter_LLNode_LLNode():this (FullOpts)
112 (10.00 % of base) : 98866.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
112 (2.98 % of base) : 136075.dasm - System.Linq.Parallel.SortHelper`2[double,int]:MergeSortCooperatively():this (FullOpts)
112 (1.24 % of base) : 182998.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess1():int:this (FullOpts)
Top method improvements (bytes):
-72 (-1.23 % of base) : 6908.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckAndCoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte):this (FullOpts)
-72 (-0.91 % of base) : 10985.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference,Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+FieldInfo]) (FullOpts)
-56 (-1.63 % of base) : 252623.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadArrayOfIImmutableHashSetT>d__309:MoveNext():this (FullOpts)
-56 (-1.63 % of base) : 274219.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadArrayOfIImmutableHashSetT>d__348:MoveNext():this (FullOpts)
-52 (-1.78 % of base) : 60249.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexSet(System.Object,System.Object[],System.String[]) (FullOpts)
-36 (-1.23 % of base) : 44745.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-36 (-1.36 % of base) : 183821.dasm - System.Xml.NameTableTests.TCRecordNameTableAdd:Variation_10():int:this (FullOpts)
-32 (-0.96 % of base) : 50578.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,uint):this (FullOpts)
-32 (-0.88 % of base) : 141360.dasm - System.Linq.Tests.RangeTests:<IListImplementationIsValid>g__Validate|27_0(System.Collections.Generic.IEnumerable`1[int],int[]) (FullOpts)
-32 (-0.88 % of base) : 142315.dasm - System.Linq.Tests.RepeatTests:<ICollectionImplementationIsValid>g__Validate|30_0(System.Collections.Generic.IEnumerable`1[int],int[]) (FullOpts)
-28 (-1.19 % of base) : 56314.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
-28 (-12.50 % of base) : 183308.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
-24 (-3.37 % of base) : 178518.dasm - System.Xml.Schema.FacetsChecker+FacetsCompiler:Preprocess(System.String):System.String (FullOpts)
-20 (-3.03 % of base) : 148598.dasm - System.SpanTests.ReadOnlySpanTests:TestMultipleMatchCount_String() (FullOpts)
-20 (-3.01 % of base) : 148036.dasm - System.SpanTests.ReadOnlySpanTests:TestMultipleMatchIndexOf_String() (FullOpts)
-20 (-3.01 % of base) : 147326.dasm - System.SpanTests.SpanTests:TestMultipleMatchIndexOf_String() (FullOpts)
-16 (-0.58 % of base) : 17319.dasm - System.AssertExtensions:SequenceEqual[ubyte](System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte]) (FullOpts)
-16 (-1.97 % of base) : 6191.dasm - System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.TypeDefinitionHandle,System.Collections.Immutable.ImmutableArray`1[System.Reflection.Metadata.TypeDefinitionHandle]]:Resize(int,ubyte):this (FullOpts)
-16 (-0.61 % of base) : 165997.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertTruncatingImpl[byte,byte]() (FullOpts)
-16 (-0.82 % of base) : 40815.dasm - System.ServiceProcess.ServiceController:Start(System.String[]):this (FullOpts)
Top method regressions (percentages):
24 (46.15 % of base) : 139242.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
20 (45.45 % of base) : 230495.dasm - System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
20 (41.67 % of base) : 149511.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
24 (40.00 % of base) : 208052.dasm - XmlDictionaryWriterTest+<>c:<XmlBaseWriter_WriteString>b__14_1(System.Span`1[ushort],System.Object):this (FullOpts)
24 (40.00 % of base) : 205968.dasm - XmlDictionaryWriterTest+<>c:<XmlBaseWriter_WriteString>b__14_1(System.Span`1[ushort],System.Object):this (FullOpts)
20 (35.71 % of base) : 120305.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
24 (35.29 % of base) : 4437.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
24 (35.29 % of base) : 206346.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
24 (35.29 % of base) : 278042.dasm - System.Text.RegularExpressions.RegexCharClass:IsAscii(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
20 (33.33 % of base) : 185585.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
24 (30.00 % of base) : 242167.dasm - System.Text.Tests.TranscodingStreamTests+<>c:<GetVeryLongAsciiString>b__40_0(System.Span`1[ushort],System.Object):this (FullOpts)
20 (29.41 % of base) : 139234.dasm - System.Linq.Enumerable:Sum[long,long](System.ReadOnlySpan`1[long]):long (FullOpts)
24 (28.57 % of base) : 134717.dasm - System.IO.Tests.BinaryWriter_EncodingTests+<>c:<GenerateLargeUnicodeString>b__16_0(System.Span`1[ushort],System.Object):this (FullOpts)
20 (27.78 % of base) : 47072.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
32 (26.67 % of base) : 245190.dasm - System.Text.Json.ReadStack:GetTopJsonTypeInfoWithParameterizedConstructor():System.Text.Json.Serialization.Metadata.JsonTypeInfo:this (FullOpts)
24 (24.00 % of base) : 98342.dasm - System.Diagnostics.ActivityTraceId:IsLowerCaseHexAndNotAllZeros(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
28 (21.88 % of base) : 201809.dasm - System.Numerics.BigIntegerCalculator:AddSelf(System.Span`1[uint],System.ReadOnlySpan`1[uint]) (FullOpts)
28 (21.88 % of base) : 224104.dasm - System.Numerics.BigIntegerCalculator:SubtractSelf(System.Span`1[uint],System.ReadOnlySpan`1[uint]) (FullOpts)
20 (21.74 % of base) : 43460.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
20 (21.74 % of base) : 17224.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)
Top method improvements (percentages):
-28 (-12.50 % of base) : 183308.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
-24 (-3.37 % of base) : 178518.dasm - System.Xml.Schema.FacetsChecker+FacetsCompiler:Preprocess(System.String):System.String (FullOpts)
-20 (-3.03 % of base) : 148598.dasm - System.SpanTests.ReadOnlySpanTests:TestMultipleMatchCount_String() (FullOpts)
-20 (-3.01 % of base) : 148036.dasm - System.SpanTests.ReadOnlySpanTests:TestMultipleMatchIndexOf_String() (FullOpts)
-20 (-3.01 % of base) : 147326.dasm - System.SpanTests.SpanTests:TestMultipleMatchIndexOf_String() (FullOpts)
-4 (-2.63 % of base) : 92026.dasm - System.Data.DataError:GetColumnsInError():System.Data.DataColumn[]:this (FullOpts)
-4 (-2.38 % of base) : 91301.dasm - System.Data.DataKey:GetIndexDesc():System.Data.IndexField[]:this (FullOpts)
-16 (-1.97 % of base) : 6191.dasm - System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.TypeDefinitionHandle,System.Collections.Immutable.ImmutableArray`1[System.Reflection.Metadata.TypeDefinitionHandle]]:Resize(int,ubyte):this (FullOpts)
-52 (-1.78 % of base) : 60249.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexSet(System.Object,System.Object[],System.String[]) (FullOpts)
-8 (-1.75 % of base) : 194862.dasm - System.Tests.ConvertToStringTests:FromBoolean() (FullOpts)
-8 (-1.64 % of base) : 122386.dasm - System.Globalization.Tests.ConformanceIdnaTestResult:SetSuccess(System.String):this (FullOpts)
-8 (-1.64 % of base) : 122464.dasm - System.Globalization.Tests.ConformanceIdnaTestResult:SetSuccess(System.String):this (FullOpts)
-56 (-1.63 % of base) : 252623.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadArrayOfIImmutableHashSetT>d__309:MoveNext():this (FullOpts)
-56 (-1.63 % of base) : 274219.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadArrayOfIImmutableHashSetT>d__348:MoveNext():this (FullOpts)
-4 (-1.61 % of base) : 66582.dasm - System.Collections.SortedList:ToDebugViewDictionaryItemArray():System.Collections.Generic.DebugViewDictionaryItem`2[System.Object,System.Object][]:this (FullOpts)
-12 (-1.55 % of base) : 147928.dasm - System.SpanTests.ReadOnlySpanTests:SequenceCompareToEqual_Byte() (FullOpts)
-12 (-1.55 % of base) : 148865.dasm - System.SpanTests.SpanTests:SequenceCompareToEqual_Byte() (FullOpts)
-8 (-1.55 % of base) : 91970.dasm - System.Data.Index:GetUniqueKeyValues(System.Collections.Generic.List`1[System.Object[]],int):this (FullOpts)
-8 (-1.52 % of base) : 5395.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyDataForAssemblyBeingBuilt[System.__Canon,System.__Canon]:BindAssemblyReferences(Roslyn.Utilities.MultiDictionary`2[System.__Canon,System.ValueTuple`2[System.__Canon,int]],Microsoft.CodeAnalysis.AssemblyIdentityComparer):Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceBinding[System.__Canon,System.__Canon][]:this (FullOpts)
-8 (-1.38 % of base) : 228608.dasm - System.Security.Cryptography.Pkcs.CmsSigner:BuildAttributes(System.Security.Cryptography.CryptographicAttributeObjectCollection):System.Collections.Generic.List`1[System.Security.Cryptography.Asn1.AttributeAsn] (FullOpts)
realworld.run.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15905252 (overridden on cmd)
Total bytes of diff: 15926784 (overridden on cmd)
Total bytes of delta: 21532 (0.14 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
236 : 31129.dasm (2.11 % of base)
144 : 13171.dasm (2.52 % of base)
140 : 5323.dasm (2.40 % of base)
132 : 13406.dasm (1.49 % of base)
128 : 15064.dasm (2.31 % of base)
124 : 14788.dasm (3.21 % of base)
120 : 29861.dasm (1.82 % of base)
116 : 13152.dasm (5.86 % of base)
116 : 13174.dasm (3.59 % of base)
100 : 18831.dasm (1.77 % of base)
96 : 3154.dasm (1.61 % of base)
92 : 29800.dasm (4.63 % of base)
88 : 2936.dasm (0.84 % of base)
88 : 18670.dasm (3.11 % of base)
84 : 31439.dasm (9.29 % of base)
84 : 19963.dasm (2.99 % of base)
80 : 14898.dasm (4.98 % of base)
80 : 2187.dasm (3.74 % of base)
76 : 6027.dasm (4.82 % of base)
76 : 12325.dasm (1.60 % of base)
Top file improvements (bytes):
-80 : 20509.dasm (-1.03 % of base)
-36 : 18677.dasm (-1.05 % of base)
-32 : 13053.dasm (-0.86 % of base)
-28 : 28073.dasm (-1.19 % of base)
-24 : 12099.dasm (-0.60 % of base)
-20 : 211.dasm (-2.34 % of base)
-16 : 13025.dasm (-2.33 % of base)
-16 : 2170.dasm (-1.20 % of base)
-12 : 27026.dasm (-0.65 % of base)
-12 : 16591.dasm (-0.76 % of base)
-12 : 33177.dasm (-0.89 % of base)
-8 : 330.dasm (-0.48 % of base)
-8 : 7339.dasm (-1.03 % of base)
-8 : 12680.dasm (-0.74 % of base)
-8 : 13418.dasm (-1.35 % of base)
-8 : 13430.dasm (-1.41 % of base)
-8 : 13452.dasm (-1.35 % of base)
-8 : 14781.dasm (-1.08 % of base)
-8 : 20073.dasm (-1.22 % of base)
-8 : 460.dasm (-0.76 % of base)
81 total files with Code Size differences (22 improved, 59 regressed), 20 unchanged.
Top method regressions (bytes):
236 (2.11 % of base) : 31129.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
144 (2.52 % of base) : 13171.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
140 (2.40 % of base) : 5323.dasm - FSharp.Compiler.TypedTreePickle:unpickleObjWithDanglingCcus[System.__Canon](System.String,FSharp.Compiler.AbstractIL.IL+ILScopeRef,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILModuleDef],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],FSharp.Compiler.IO.ReadOnlyByteMemory):FSharp.Compiler.TypedTreePickle+PickledDataWithReferences`1[System.__Canon] (FullOpts)
132 (1.49 % of base) : 13406.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
128 (2.31 % of base) : 15064.dasm - Microsoft.ML.Transforms.Text.NgramExtractingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.Text.NgramExtractingEstimator+ColumnOptions[],System.Collections.Immutable.ImmutableArray`1[Microsoft.ML.Transforms.Text.NgramExtractingTransformer+TransformInfo],Microsoft.ML.IDataView,byref):Microsoft.ML.Internal.Utilities.SequencePool[] (FullOpts)
124 (3.21 % of base) : 14788.dasm - Microsoft.ML.Transforms.NormalizingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.IDataView,Microsoft.ML.Transforms.NormalizingEstimator+ColumnOptionsBase[]):Microsoft.ML.Transforms.NormalizingTransformer (FullOpts)
120 (1.82 % of base) : 29861.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
116 (5.86 % of base) : 13152.dasm - Microsoft.ML.Data.ColumnConcatenatingTransformer+Mapper+BoundColumn+<>c__DisplayClass18_0`1[float]:<MakeGetter>b__0(byref):this (FullOpts)
116 (3.59 % of base) : 13174.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:CheckConvergence(Microsoft.ML.Runtime.IProgressChannel,int,Microsoft.ML.Trainers.FloatLabelCursor+Factory,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],Microsoft.ML.Data.VBuffer`1[float][],Microsoft.ML.Data.VBuffer`1[float][],float[],float[],float[],float[],long,double[],byref,byref):ubyte:this (FullOpts)
100 (1.77 % of base) : 18831.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
96 (1.61 % of base) : 3154.dasm - FSharp.Compiler.CompilerImports:TcConfig.TryResolveLibsUsingMSBuildRules.Static(FSharp.Compiler.CompilerConfig+TcConfig,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerConfig+AssemblyReference],FSharp.Compiler.Text.Range,FSharp.Compiler.CompilerImports+ResolveAssemblyReferenceMode):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerImports+AssemblyResolution],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerConfig+UnresolvedAssemblyReference]] (FullOpts)
92 (4.63 % of base) : 29800.dasm - System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String (FullOpts)
88 (0.84 % of base) : 2936.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:openMetadataReader(System.String,FSharp.Compiler.AbstractIL.ILBinaryReader+BinaryFile,int,System.Tuple`8[ushort,System.Tuple`2[int,int],ubyte,ubyte,ubyte,ubyte,ubyte,System.Tuple`5[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILPlatform],ubyte,int,int,int]],FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader,FSharp.Compiler.IO.ReadOnlyByteMemory,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader],ubyte):System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILModuleDef,System.Lazy`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILAssemblyRef]]] (FullOpts)
88 (3.11 % of base) : 18670.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveWorseMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,byref):this (FullOpts)
84 (2.99 % of base) : 19963.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
84 (9.29 % of base) : 31439.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteTryExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
80 (4.98 % of base) : 14898.dasm - Microsoft.ML.Numeric.VectorUtils:L2DistSquared(byref,byref):float (FullOpts)
80 (3.74 % of base) : 2187.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(long):System.Reflection.MethodInfo:this (FullOpts)
76 (1.60 % of base) : 12325.dasm - Microsoft.ML.Internal.Utilities.StreamUtils:Expand(System.String):System.String[] (FullOpts)
76 (4.82 % of base) : 6027.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
Top method improvements (bytes):
-80 (-1.03 % of base) : 20509.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference,Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+FieldInfo]) (FullOpts)
-36 (-1.05 % of base) : 18677.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression):this (FullOpts)
-32 (-0.86 % of base) : 13053.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-28 (-1.19 % of base) : 28073.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
-24 (-0.60 % of base) : 12099.dasm - SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1+CdfTileData+RowIntervalOperation[SixLabors.ImageSharp.PixelFormats.Rgba32]:Invoke(byref):this (FullOpts)
-20 (-2.34 % of base) : 211.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-16 (-2.33 % of base) : 13025.dasm - Microsoft.ML.Internal.Utilities.Utils:BuildSubsetMaps(Microsoft.ML.DataViewSchema,System.Func`2[Microsoft.ML.DataViewSchema+Column,ubyte],byref,byref) (FullOpts)
-16 (-1.20 % of base) : 2170.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-12 (-0.65 % of base) : 27026.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:ApplyDeconstructionConversion(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.LocalRewriter+DeconstructionSideEffects,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-12 (-0.76 % of base) : 16591.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__makeContent|428_4(System.ReadOnlySpan`1[ushort],System.Text.StringBuilder,ubyte,ubyte,System.ReadOnlySpan`1[ushort],byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolatedStringContentSyntax:this (FullOpts)
-12 (-0.89 % of base) : 33177.dasm - System.Management.Automation.ComInterop.ComBinderHelpers:ProcessArgumentsForCom(System.Management.Automation.ComInterop.ComMethodDesc,byref,System.Collections.Generic.List`1[System.Linq.Expressions.ParameterExpression],System.Collections.Generic.List`1[System.Linq.Expressions.Expression]):ubyte[] (FullOpts)
-8 (-1.22 % of base) : 20073.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.VarianceSafety:IsVarianceUnsafe[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.VarianceSafety+LocationProvider`1[System.__Canon],System.__Canon,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte (FullOpts)
-8 (-0.74 % of base) : 12680.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:CreateMaybeSparseCopy[float](byref,byref,Microsoft.ML.Data.InPredicate`1[float],float) (FullOpts)
-8 (-1.08 % of base) : 14781.dasm - Microsoft.ML.Transforms.KeyToVectorMappingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
-8 (-1.35 % of base) : 13452.dasm - Microsoft.ML.Transforms.Text.StopWordsRemovingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
-8 (-1.35 % of base) : 13418.dasm - Microsoft.ML.Transforms.Text.TextNormalizingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
-8 (-1.41 % of base) : 13430.dasm - Microsoft.ML.Transforms.Text.WordTokenizingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
-8 (-1.03 % of base) : 7339.dasm - System.Collections.Generic.Dictionary`2[FSharp.Compiler.Text.Position,System.ValueTuple`3[int,int,ubyte]]:Resize(int,ubyte):this (FullOpts)
-8 (-0.76 % of base) : 460.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
-8 (-0.48 % of base) : 330.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
Top method regressions (percentages):
24 (46.15 % of base) : 914.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
24 (37.50 % of base) : 12611.dasm - Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)
24 (35.29 % of base) : 15263.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
24 (31.58 % of base) : 397.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
32 (30.77 % of base) : 15367.dasm - Microsoft.CodeAnalysis.MemoryExtensions:IndexOfAny(System.ReadOnlySpan`1[ushort],ushort[]):int (FullOpts)
24 (28.57 % of base) : 13102.dasm - Microsoft.ML.Internal.Utilities.HashArray`1+HashHelpers[float]:GetPrime(int):int (FullOpts)
20 (27.78 % of base) : 27644.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
24 (25.00 % of base) : 13226.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[int]:ReturnArrays(int):this (FullOpts)
20 (21.74 % of base) : 15426.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
20 (21.74 % of base) : 11139.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)
24 (21.43 % of base) : 1130.dasm - DemoBenchmarks.CollisionBatcherTaskBenchmarks:<Setup>g__GetRandomShapeTypeIndex|6_0(System.Span`1[float],byref):BepuPhysics.Collidables.TypedIndex (FullOpts)
24 (21.43 % of base) : 1102.dasm - DemoBenchmarks.Sweeper:<.ctor>g__GetRandomShapeTypeIndex|6_0(System.Span`1[float],byref):BepuPhysics.Collidables.TypedIndex (FullOpts)
20 (20.83 % of base) : 17493.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)
20 (19.23 % of base) : 15088.dasm - System.Linq.Enumerable:Sum[int,int](System.ReadOnlySpan`1[int]):int (FullOpts)
32 (19.05 % of base) : 14542.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
24 (16.67 % of base) : 18190.dasm - Microsoft.CodeAnalysis.MetadataHelpers:<InferTypeArityFromMetadataName>g__tryScanArity|16_0(System.ReadOnlySpan`1[ushort]):System.Nullable`1[short] (FullOpts)
32 (16.67 % of base) : 15609.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList+WithLotsOfChildren:CalculateOffsets(Microsoft.CodeAnalysis.ArrayElement`1[Microsoft.CodeAnalysis.GreenNode][]):int[] (FullOpts)
32 (16.67 % of base) : 5187.dasm - Microsoft.FSharp.Collections.ArrayModule:ForAll[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],System.__Canon[]):ubyte (FullOpts)
16 (16.67 % of base) : 17495.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
20 (15.15 % of base) : 16008.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
Top method improvements (percentages):
-20 (-2.34 % of base) : 211.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-16 (-2.33 % of base) : 13025.dasm - Microsoft.ML.Internal.Utilities.Utils:BuildSubsetMaps(Microsoft.ML.DataViewSchema,System.Func`2[Microsoft.ML.DataViewSchema+Column,ubyte],byref,byref) (FullOpts)
-8 (-1.41 % of base) : 13430.dasm - Microsoft.ML.Transforms.Text.WordTokenizingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
-8 (-1.35 % of base) : 13452.dasm - Microsoft.ML.Transforms.Text.StopWordsRemovingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
-8 (-1.35 % of base) : 13418.dasm - Microsoft.ML.Transforms.Text.TextNormalizingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
-8 (-1.22 % of base) : 20073.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.VarianceSafety:IsVarianceUnsafe[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.VarianceSafety+LocationProvider`1[System.__Canon],System.__Canon,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte (FullOpts)
-16 (-1.20 % of base) : 2170.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-28 (-1.19 % of base) : 28073.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
-8 (-1.08 % of base) : 14781.dasm - Microsoft.ML.Transforms.KeyToVectorMappingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
-4 (-1.05 % of base) : 12879.dasm - Microsoft.ML.Data.TypedCursorable`1+TypedRowBase[System.__Canon]:.ctor(Microsoft.ML.Data.TypedCursorable`1[System.__Canon],Microsoft.ML.DataViewRow,System.String):this (FullOpts)
-4 (-1.05 % of base) : 822.dasm - System.Number+Grisu3:TryRoundWeedCounted(System.Span`1[ubyte],int,ulong,ulong,ulong,byref):ubyte (FullOpts)
-36 (-1.05 % of base) : 18677.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression):this (FullOpts)
-80 (-1.03 % of base) : 20509.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference,Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+FieldInfo]) (FullOpts)
-8 (-1.03 % of base) : 7339.dasm - System.Collections.Generic.Dictionary`2[FSharp.Compiler.Text.Position,System.ValueTuple`3[int,int,ubyte]]:Resize(int,ubyte):this (FullOpts)
-12 (-0.89 % of base) : 33177.dasm - System.Management.Automation.ComInterop.ComBinderHelpers:ProcessArgumentsForCom(System.Management.Automation.ComInterop.ComMethodDesc,byref,System.Collections.Generic.List`1[System.Linq.Expressions.ParameterExpression],System.Collections.Generic.List`1[System.Linq.Expressions.Expression]):ubyte[] (FullOpts)
-32 (-0.86 % of base) : 13053.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-8 (-0.76 % of base) : 460.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
-12 (-0.76 % of base) : 16591.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__makeContent|428_4(System.ReadOnlySpan`1[ushort],System.Text.StringBuilder,ubyte,ubyte,System.ReadOnlySpan`1[ushort],byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolatedStringContentSyntax:this (FullOpts)
-8 (-0.74 % of base) : 12680.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:CreateMaybeSparseCopy[float](byref,byref,Microsoft.ML.Data.InPredicate`1[float],float) (FullOpts)
-12 (-0.65 % of base) : 27026.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:ApplyDeconstructionConversion(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.LocalRewriter+DeconstructionSideEffects,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
smoke_tests.nativeaot.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 3970272 (overridden on cmd)
Total bytes of diff: 3984116 (overridden on cmd)
Total bytes of delta: 13844 (0.35 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
208 : 11394.dasm (2.37 % of base)
132 : 11952.dasm (2.70 % of base)
132 : 14891.dasm (2.70 % of base)
132 : 6144.dasm (2.60 % of base)
112 : 10803.dasm (8.95 % of base)
112 : 5637.dasm (8.95 % of base)
84 : 2566.dasm (8.47 % of base)
84 : 8313.dasm (8.47 % of base)
80 : 23715.dasm (2.42 % of base)
76 : 11783.dasm (7.48 % of base)
76 : 8847.dasm (7.57 % of base)
76 : 8186.dasm (6.81 % of base)
72 : 14146.dasm (4.42 % of base)
72 : 15123.dasm (4.41 % of base)
72 : 8644.dasm (4.42 % of base)
68 : 14720.dasm (4.80 % of base)
68 : 6109.dasm (4.25 % of base)
68 : 11357.dasm (4.83 % of base)
60 : 23717.dasm (3.04 % of base)
60 : 23716.dasm (2.18 % of base)
Top file improvements (bytes):
-20 : 1374.dasm (-2.86 % of base)
-20 : 4860.dasm (-2.86 % of base)
-16 : 2101.dasm (-2.34 % of base)
-12 : 2637.dasm (-1.05 % of base)
-12 : 6318.dasm (-1.05 % of base)
-8 : 5551.dasm (-2.70 % of base)
-8 : 10705.dasm (-2.70 % of base)
-4 : 8519.dasm (-1.10 % of base)
-4 : 12377.dasm (-1.10 % of base)
68 total files with Code Size differences (9 improved, 59 regressed), 17 unchanged.
Top method regressions (bytes):
208 (2.37 % of base) : 11394.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
132 (2.70 % of base) : 11952.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
132 (2.70 % of base) : 14891.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
132 (2.60 % of base) : 6144.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
112 (8.95 % of base) : 10803.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)
112 (8.95 % of base) : 5637.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)
84 (8.47 % of base) : 2566.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
84 (8.47 % of base) : 8313.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
80 (2.42 % of base) : 23715.dasm - WaitSubsystemTests:MutexTest() (FullOpts)
76 (7.57 % of base) : 8847.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
76 (7.48 % of base) : 11783.dasm - System.Type:GetEnumData(byref,byref):this (FullOpts)
76 (6.81 % of base) : 8186.dasm - System.Type:GetEnumData(byref,byref):this (FullOpts)
72 (4.42 % of base) : 14146.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
72 (4.41 % of base) : 15123.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
72 (4.42 % of base) : 8644.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
68 (4.80 % of base) : 14720.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
68 (4.25 % of base) : 6109.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
68 (4.83 % of base) : 11357.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
60 (3.04 % of base) : 23717.dasm - WaitSubsystemTests:AutoResetEventTest() (FullOpts)
60 (2.18 % of base) : 23716.dasm - WaitSubsystemTests:SemaphoreTest() (FullOpts)
Top method improvements (bytes):
-20 (-2.86 % of base) : 1374.dasm - System.Collections.Generic.Dictionary`2[long,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-20 (-2.86 % of base) : 4860.dasm - System.Collections.Generic.Dictionary`2[long,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-16 (-2.34 % of base) : 2101.dasm - System.Collections.Generic.Dictionary`2[long,System.Runtime.InteropServices.GCHandle]:Resize(int,ubyte):this (FullOpts)
-12 (-1.05 % of base) : 2637.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (FullOpts)
-12 (-1.05 % of base) : 6318.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (FullOpts)
-8 (-2.70 % of base) : 5551.dasm - System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo+<>c__DisplayClass20_0:<get_SyntheticMethods>b__1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
-8 (-2.70 % of base) : 10705.dasm - System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo+<>c__DisplayClass20_0:<get_SyntheticMethods>b__1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
-4 (-1.10 % of base) : 8519.dasm - System.Number+Grisu3:TryRoundWeedCounted(System.Span`1[ubyte],int,ulong,ulong,ulong,byref):ubyte (FullOpts)
-4 (-1.10 % of base) : 12377.dasm - System.Number+Grisu3:TryRoundWeedCounted(System.Span`1[ubyte],int,ulong,ulong,ulong,byref):ubyte (FullOpts)
Top method regressions (percentages):
24 (31.58 % of base) : 2548.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
24 (31.58 % of base) : 7143.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
20 (21.74 % of base) : 2362.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
20 (21.74 % of base) : 7754.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
12 (21.43 % of base) : 20159.dasm - System.DateTimeFormat:ParseRepeatPattern(System.ReadOnlySpan`1[ushort],int,ushort):int (FullOpts)
56 (20.59 % of base) : 1936.dasm - Internal.NativeFormat.TypeHashingAlgorithms+HashCodeBuilder:Append(System.String):this (FullOpts)
56 (20.59 % of base) : 6702.dasm - Internal.NativeFormat.TypeHashingAlgorithms+HashCodeBuilder:Append(System.String):this (FullOpts)
24 (20.00 % of base) : 16923.dasm - System.Buffers.IndexOfAnyAsciiSearcher:TryComputeBitmap(System.ReadOnlySpan`1[ushort],ulong,byref):ubyte (FullOpts)
20 (20.00 % of base) : 19843.dasm - System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (FullOpts)
24 (19.35 % of base) : 11636.dasm - Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int (FullOpts)
24 (19.35 % of base) : 6345.dasm - Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int (FullOpts)
16 (19.05 % of base) : 8433.dasm - System.Globalization.CalendricalCalculationsHelper:PolynomialSum(System.ReadOnlySpan`1[double],double):double (FullOpts)
16 (19.05 % of base) : 14075.dasm - System.Globalization.CalendricalCalculationsHelper:PolynomialSum(System.ReadOnlySpan`1[double],double):double (FullOpts)
32 (19.05 % of base) : 17336.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
32 (19.05 % of base) : 5688.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
24 (13.64 % of base) : 5358.dasm - System.Buffers.SharedArrayPoolStatics:TryGetInt32EnvironmentVariable(System.String,byref):ubyte (FullOpts)
24 (13.64 % of base) : 1609.dasm - System.Buffers.SharedArrayPoolStatics:TryGetInt32EnvironmentVariable(System.String,byref):ubyte (FullOpts)
20 (13.51 % of base) : 8355.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon]:ReleaseLocks(int):this (FullOpts)
20 (13.51 % of base) : 14272.dasm - System.Linq.Enumerable+SelectIListIterator`2[System.__Canon,System.__Canon]:Fill(System.Collections.Generic.IList`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (FullOpts)
28 (13.46 % of base) : 6399.dasm - System.Globalization.CultureData:DeriveShortTimesFromLong():System.String[]:this (FullOpts)
Top method improvements (percentages):
-20 (-2.86 % of base) : 1374.dasm - System.Collections.Generic.Dictionary`2[long,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-20 (-2.86 % of base) : 4860.dasm - System.Collections.Generic.Dictionary`2[long,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-8 (-2.70 % of base) : 5551.dasm - System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo+<>c__DisplayClass20_0:<get_SyntheticMethods>b__1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
-8 (-2.70 % of base) : 10705.dasm - System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo+<>c__DisplayClass20_0:<get_SyntheticMethods>b__1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
-16 (-2.34 % of base) : 2101.dasm - System.Collections.Generic.Dictionary`2[long,System.Runtime.InteropServices.GCHandle]:Resize(int,ubyte):this (FullOpts)
-4 (-1.10 % of base) : 8519.dasm - System.Number+Grisu3:TryRoundWeedCounted(System.Span`1[ubyte],int,ulong,ulong,ulong,byref):ubyte (FullOpts)
-4 (-1.10 % of base) : 12377.dasm - System.Number+Grisu3:TryRoundWeedCounted(System.Span`1[ubyte],int,ulong,ulong,ulong,byref):ubyte (FullOpts)
-12 (-1.05 % of base) : 2637.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (FullOpts)
-12 (-1.05 % of base) : 6318.dasm - System.MemoryExtensions:SplitCore(System.ReadOnlySpan`1[ushort],System.Span`1[System.Range],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],ubyte,int):int (FullOpts)
windows x64
Diffs are based on 2,512,182 contexts (997,391 MinOpts, 1,514,791 FullOpts).
MISSED contexts: base: 29 (0.00%), diff: 30 (0.00%)
Overall (-18,030 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| aspnet.run.windows.x64.checked.mch |
47,040,393 |
+5,552 |
| benchmarks.run.windows.x64.checked.mch |
8,742,476 |
-2,838 |
| benchmarks.run_pgo.windows.x64.checked.mch |
36,233,314 |
-2,927 |
| benchmarks.run_tiered.windows.x64.checked.mch |
12,416,932 |
-4,780 |
| coreclr_tests.run.windows.x64.checked.mch |
393,194,802 |
-71,902 |
| libraries.crossgen2.windows.x64.checked.mch |
39,486,541 |
-1,798 |
| libraries.pmi.windows.x64.checked.mch |
61,663,361 |
-2,020 |
| libraries_tests.run.windows.x64.Release.mch |
282,135,537 |
+68,806 |
| librariestestsnotieredcompilation.run.windows.x64.Release.mch |
137,061,874 |
-5,098 |
| realworld.run.windows.x64.checked.mch |
14,130,826 |
+1,095 |
| smoke_tests.nativeaot.windows.x64.checked.mch |
5,083,179 |
-2,120 |
FullOpts (-18,030 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| aspnet.run.windows.x64.checked.mch |
28,549,344 |
+5,552 |
| benchmarks.run.windows.x64.checked.mch |
8,742,113 |
-2,838 |
| benchmarks.run_pgo.windows.x64.checked.mch |
22,062,658 |
-2,927 |
| benchmarks.run_tiered.windows.x64.checked.mch |
3,317,693 |
-4,780 |
| coreclr_tests.run.windows.x64.checked.mch |
120,406,222 |
-71,902 |
| libraries.crossgen2.windows.x64.checked.mch |
39,485,354 |
-1,798 |
| libraries.pmi.windows.x64.checked.mch |
61,549,840 |
-2,020 |
| libraries_tests.run.windows.x64.Release.mch |
106,277,303 |
+68,806 |
| librariestestsnotieredcompilation.run.windows.x64.Release.mch |
126,442,768 |
-5,098 |
| realworld.run.windows.x64.checked.mch |
13,744,217 |
+1,095 |
| smoke_tests.nativeaot.windows.x64.checked.mch |
5,082,232 |
-2,120 |
Example diffs
aspnet.run.windows.x64.checked.mch
-12 (-12.90%) : 35709.dasm - System.Xml.ValidateNames:ParseNCName(System.String,int):int (Tier1-OSR)
@@ -11,8 +11,8 @@
; Final local variable assignments
;
; V00 arg0 [V00,T03] ( 4, 92.74) ref -> rcx class-hnd single-def <System.String>
-; V01 arg1 [V01,T04] ( 3, 10.97) int -> rdx single-def
-; V02 loc0 [V02,T00] ( 6,467.95) int -> [rsp+0x64] tier0-frame
+; V01 arg1 [V01,T05] ( 3, 10.97) int -> rdx single-def
+; V02 loc0 [V02,T04] ( 3, 18.95) int -> [rsp+0x64] tier0-frame
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
@@ -34,7 +34,8 @@
;* V21 tmp18 [V21 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;* V22 tmp19 [V22 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp20 [V23 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-; V24 cse0 [V24,T02] ( 3,190.74) int -> rax hoist "CSE - aggressive"
+; V24 tmp21 [V24,T00] ( 7,468.95) long -> rax "Widened primary induction variable"
+; V25 cse0 [V25,T02] ( 3,190.74) int -> r8 hoist "CSE - aggressive"
;
; Lcl frame size = 40
@@ -45,30 +46,27 @@ G_M49336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov edx, dword ptr [rsp+0xB8]
;; size=19 bbWeight=1 PerfScore 4.25
G_M49336_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov eax, dword ptr [rcx+0x08]
+ mov eax, dword ptr [rsp+0x64]
+ mov r8d, dword ptr [rcx+0x08]
jmp SHORT G_M49336_IG04
- ;; size=5 bbWeight=1 PerfScore 4.00
+ ;; size=10 bbWeight=1 PerfScore 5.00
G_M49336_IG03: ; bbWeight=89.74, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- cmp r8d, eax
+ cmp eax, r8d
jae SHORT G_M49336_IG07
- mov r10d, r8d
- movzx r10, word ptr [rcx+2*r10+0x0C]
+ movzx r10, word ptr [rcx+2*rax+0x0C]
mov r9, 0xD1FFAB1E ; static handle
test byte ptr [r10+r9], 8
je SHORT G_M49336_IG05
- inc r8d
- mov dword ptr [rsp+0x64], r8d
- ;; size=39 bbWeight=89.74 PerfScore 807.69
+ inc eax
+ ;; size=30 bbWeight=89.74 PerfScore 695.51
G_M49336_IG04: ; bbWeight=100, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r8d, dword ptr [rsp+0x64]
- cmp eax, r8d
+ cmp r8d, eax
jg SHORT G_M49336_IG03
- ;; size=10 bbWeight=100 PerfScore 225.00
+ ;; size=5 bbWeight=100 PerfScore 125.00
G_M49336_IG05: ; bbWeight=8.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
- mov eax, r8d
sub eax, edx
- ;; size=5 bbWeight=8.97 PerfScore 4.49
+ ;; size=2 bbWeight=8.97 PerfScore 2.24
G_M49336_IG06: ; bbWeight=8.97, epilog, nogc, extend
add rsp, 160
pop rbp
@@ -80,7 +78,7 @@ G_M49336_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 93, prolog size 19, PerfScore 1061.13, instruction count 24, allocated bytes for code 93 (MethodHash=3f483f47) for method System.Xml.ValidateNames:ParseNCName(System.String,int):int (Tier1-OSR)
+; Total bytes of code 81, prolog size 19, PerfScore 847.71, instruction count 21, allocated bytes for code 81 (MethodHash=3f483f47) for method System.Xml.ValidateNames:ParseNCName(System.String,int):int (Tier1-OSR)
; ============================================================
Unwind Info:
-27 (-10.93%) : 34958.dasm - System.Linq.OrderedEnumerable1[System.__Canon]:Fill(System.__Canon[],System.Span1[System.__Canon]):this (Tier1-OSR)
@@ -11,10 +11,10 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Linq.OrderedEnumerable`1[System.__Canon]>
-; V01 arg1 [V01,T04] ( 6,173.43) ref -> rbx class-hnd single-def <System.__Canon[]>
+; V01 arg1 [V01,T03] ( 6,173.43) ref -> rbx class-hnd single-def <System.__Canon[]>
; V02 arg2 [V02,T07] ( 5, 9 ) byref -> r8 ld-addr-op single-def
-; V03 loc0 [V03,T05] ( 5,111.06) ref -> rsi class-hnd exact <int[]>
-; V04 loc1 [V04,T01] ( 13,455.96) int -> [rsp+0xA4] tier0-frame
+; V03 loc0 [V03,T04] ( 5,111.06) ref -> rsi class-hnd exact <int[]>
+; V04 loc1 [V04,T06] ( 4, 38.90) int -> [rsp+0x94] tier0-frame
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <int[]>
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Linq.EnumerableSorter`1[System.__Canon]>
@@ -23,57 +23,55 @@
;* V10 tmp5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <int[]>
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <int[]>
;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V13 tmp8 [V13,T06] ( 3, 86.71) byref -> rdi single-def "V02.[000..008)"
-; V14 tmp9 [V14,T03] ( 8,211.20) int -> rbp "V02.[008..012)"
-; V15 tmp10 [V15,T00] ( 6,514.29) int -> r15 "index expr"
-; V16 cse0 [V16,T02] ( 3,254.57) long -> [rsp+0x30] spill-single-def "CSE - aggressive"
-; V17 cse1 [V17,T08] ( 3, 2.57) long -> [rsp+0x28] spill-single-def "CSE - aggressive"
+; V13 tmp8 [V13,T05] ( 3, 86.71) byref -> rdi single-def "V02.[000..008)"
+; V14 tmp9 [V14,T02] ( 8,211.20) int -> rbp "V02.[008..012)"
+; V15 tmp10 [V15,T01] ( 6,514.29) int -> r15 "index expr"
+; V16 tmp11 [V16,T08] ( 8, 6.12) long -> r14 "Widened primary induction variable"
+; V17 tmp12 [V17,T00] ( 7,521.39) long -> r14 "Widened primary induction variable"
;
-; Lcl frame size = 56
+; Lcl frame size = 40
G_M30087_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 104
- mov qword ptr [rsp+0xE8], r15
- mov qword ptr [rsp+0xE0], r14
- mov qword ptr [rsp+0xD8], rdi
- mov qword ptr [rsp+0xD0], rsi
- mov qword ptr [rsp+0xC8], rbx
- mov rbx, gword ptr [rsp+0x108]
+ sub rsp, 88
+ mov qword ptr [rsp+0xD8], r15
+ mov qword ptr [rsp+0xD0], r14
+ mov qword ptr [rsp+0xC8], rdi
+ mov qword ptr [rsp+0xC0], rsi
+ mov qword ptr [rsp+0xB8], rbx
+ mov rbx, gword ptr [rsp+0xF8]
; gcrRegs +[rbx]
- mov r8, bword ptr [rsp+0x110]
+ mov r8, bword ptr [rsp+0x100]
; byrRegs +[r8]
- mov rsi, gword ptr [rsp+0xA8]
+ mov rsi, gword ptr [rsp+0x98]
; gcrRegs +[rsi]
;; size=68 bbWeight=1 PerfScore 11.25
G_M30087_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0100 {r8}, byref, isz
mov rdi, bword ptr [r8]
; byrRegs +[rdi]
mov ebp, dword ptr [r8+0x08]
- mov r14d, dword ptr [rsp+0xA4]
- cmp r14d, ebp
- jge SHORT G_M30087_IG05
- ;; size=20 bbWeight=1 PerfScore 6.25
+ mov eax, dword ptr [rsp+0x94]
+ cmp eax, ebp
+ jge SHORT G_M30087_IG08
+ ;; size=18 bbWeight=1 PerfScore 6.25
G_M30087_IG03: ; bbWeight=12.24, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref, isz
; byrRegs -[r8]
test rsi, rsi
je SHORT G_M30087_IG06
- mov ecx, r14d
+ mov ecx, eax
or ecx, ebp
jl SHORT G_M30087_IG06
cmp dword ptr [rsi+0x08], ebp
jl SHORT G_M30087_IG06
- ;; size=17 bbWeight=12.24 PerfScore 82.65
+ mov r14d, eax
+ ;; size=19 bbWeight=12.24 PerfScore 85.71
G_M30087_IG04: ; bbWeight=84.86, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref, isz
cmp r14d, ebp
- jae G_M30087_IG08
- mov ecx, r14d
- mov qword ptr [rsp+0x30], rcx
- lea rcx, bword ptr [rdi+8*rcx]
+ jae SHORT G_M30087_IG09
+ lea rcx, bword ptr [rdi+8*r14]
; byrRegs +[rcx]
- mov rdx, qword ptr [rsp+0x30]
- mov r15d, dword ptr [rsi+4*rdx+0x10]
+ mov r15d, dword ptr [rsi+4*r14+0x10]
cmp r15d, dword ptr [rbx+0x08]
- jae SHORT G_M30087_IG08
+ jae SHORT G_M30087_IG09
mov edx, r15d
mov rdx, gword ptr [rbx+8*rdx+0x10]
; gcrRegs +[rdx]
@@ -83,34 +81,27 @@ G_M30087_IG04: ; bbWeight=84.86, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080
inc r14d
cmp r14d, ebp
jl SHORT G_M30087_IG04
- ;; size=58 bbWeight=84.86 PerfScore 1251.64
-G_M30087_IG05: ; bbWeight=12.24, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=41 bbWeight=84.86 PerfScore 1060.71
+G_M30087_IG05: ; bbWeight=12.24, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rsi]
; byrRegs -[rdi]
- add rsp, 200
- pop rbx
- pop rsi
- pop rdi
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=16 bbWeight=12.24 PerfScore 52.04
-G_M30087_IG06: ; bbWeight=0.86, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, gcvars, byref, isz
+ jmp SHORT G_M30087_IG08
+ ;; size=2 bbWeight=12.24 PerfScore 24.49
+G_M30087_IG06: ; bbWeight=0.12, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref
; gcrRegs +[rbx rsi]
; byrRegs +[rdi]
+ mov r14d, eax
+ ;; size=3 bbWeight=0.12 PerfScore 0.03
+G_M30087_IG07: ; bbWeight=0.86, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref, isz
cmp r14d, ebp
- jae SHORT G_M30087_IG08
- mov ecx, r14d
- mov qword ptr [rsp+0x28], rcx
- lea rcx, bword ptr [rdi+8*rcx]
+ jae SHORT G_M30087_IG09
+ lea rcx, bword ptr [rdi+8*r14]
; byrRegs +[rcx]
cmp r14d, dword ptr [rsi+0x08]
- jae SHORT G_M30087_IG08
- mov rdx, qword ptr [rsp+0x28]
- mov r15d, dword ptr [rsi+4*rdx+0x10]
+ jae SHORT G_M30087_IG09
+ mov r15d, dword ptr [rsi+4*r14+0x10]
cmp r15d, dword ptr [rbx+0x08]
- jae SHORT G_M30087_IG08
+ jae SHORT G_M30087_IG09
mov edx, r15d
mov rdx, gword ptr [rbx+8*rdx+0x10]
; gcrRegs +[rdx]
@@ -119,20 +110,27 @@ G_M30087_IG06: ; bbWeight=0.86, gcVars=0000000000000000 {}, gcrefRegs=004
; byrRegs -[rcx]
inc r14d
cmp r14d, ebp
- jl SHORT G_M30087_IG06
- ;; size=60 bbWeight=0.86 PerfScore 16.07
-G_M30087_IG07: ; bbWeight=0.43, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jl SHORT G_M30087_IG07
+ ;; size=47 bbWeight=0.86 PerfScore 14.14
+G_M30087_IG08: ; bbWeight=10.71, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx rsi]
; byrRegs -[rdi]
- jmp SHORT G_M30087_IG05
- ;; size=2 bbWeight=0.43 PerfScore 0.86
-G_M30087_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add rsp, 184
+ pop rbx
+ pop rsi
+ pop rdi
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=16 bbWeight=10.71 PerfScore 45.54
+G_M30087_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 247, prolog size 68, PerfScore 1420.77, instruction count 64, allocated bytes for code 247 (MethodHash=67d28a78) for method System.Linq.OrderedEnumerable`1[System.__Canon]:Fill(System.__Canon[],System.Span`1[System.__Canon]):this (Tier1-OSR)
+; Total bytes of code 220, prolog size 68, PerfScore 1248.13, instruction count 60, allocated bytes for code 220 (MethodHash=67d28a78) for method System.Linq.OrderedEnumerable`1[System.__Canon]:Fill(System.__Canon[],System.Span`1[System.__Canon]):this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -146,16 +144,16 @@ Unwind Info:
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
CodeOffset: 0x2C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
- Scaled Small Offset: 25 * 8 = 200 = 0x000C8
+ Scaled Small Offset: 23 * 8 = 184 = 0x000B8
CodeOffset: 0x24 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rsi (6)
- Scaled Small Offset: 26 * 8 = 208 = 0x000D0
+ Scaled Small Offset: 24 * 8 = 192 = 0x000C0
CodeOffset: 0x1C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rdi (7)
- Scaled Small Offset: 27 * 8 = 216 = 0x000D8
+ Scaled Small Offset: 25 * 8 = 200 = 0x000C8
CodeOffset: 0x14 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r14 (14)
- Scaled Small Offset: 28 * 8 = 224 = 0x000E0
+ Scaled Small Offset: 26 * 8 = 208 = 0x000D0
CodeOffset: 0x0C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r15 (15)
- Scaled Small Offset: 29 * 8 = 232 = 0x000E8
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 12 * 8 + 8 = 104 = 0x68
+ Scaled Small Offset: 27 * 8 = 216 = 0x000D8
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 10 * 8 + 8 = 88 = 0x58
CodeOffset: 0x00 UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small
Size: 17 * 8 = 136 = 0x00088
CodeOffset: 0x00 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-27 (-10.93%) : 69155.dasm - System.Linq.OrderedEnumerable1[System.__Canon]:Fill(System.__Canon[],System.Span1[System.__Canon]):this (Tier1-OSR)
@@ -11,10 +11,10 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Linq.OrderedEnumerable`1[System.__Canon]>
-; V01 arg1 [V01,T04] ( 6,170 ) ref -> rbx class-hnd single-def <System.__Canon[]>
+; V01 arg1 [V01,T03] ( 6,170 ) ref -> rbx class-hnd single-def <System.__Canon[]>
; V02 arg2 [V02,T07] ( 5, 9 ) byref -> r8 ld-addr-op single-def
-; V03 loc0 [V03,T05] ( 5,111.72) ref -> rsi class-hnd exact <int[]>
-; V04 loc1 [V04,T01] ( 13,450.28) int -> [rsp+0xA4] tier0-frame
+; V03 loc0 [V03,T04] ( 5,111.72) ref -> rsi class-hnd exact <int[]>
+; V04 loc1 [V04,T06] ( 4, 43.01) int -> [rsp+0x94] tier0-frame
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <int[]>
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Linq.EnumerableSorter`1[System.__Canon]>
@@ -23,57 +23,55 @@
;* V10 tmp5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <int[]>
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <int[]>
;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V13 tmp8 [V13,T06] ( 3, 85 ) byref -> rdi single-def "V02.[000..008)"
-; V14 tmp9 [V14,T03] ( 8,211.88) int -> rbp "V02.[008..012)"
-; V15 tmp10 [V15,T00] ( 6,504 ) int -> r15 "index expr"
-; V16 cse0 [V16,T02] ( 3,249.48) long -> [rsp+0x30] spill-single-def "CSE - aggressive"
-; V17 cse1 [V17,T08] ( 3, 2.52) long -> [rsp+0x28] spill-single-def "CSE - aggressive"
+; V13 tmp8 [V13,T05] ( 3, 85 ) byref -> rdi single-def "V02.[000..008)"
+; V14 tmp9 [V14,T02] ( 8,211.88) int -> rbp "V02.[008..012)"
+; V15 tmp10 [V15,T01] ( 6,504 ) int -> r15 "index expr"
+; V16 tmp11 [V16,T08] ( 8, 6.01) long -> r14 "Widened primary induction variable"
+; V17 tmp12 [V17,T00] ( 7,512.40) long -> r14 "Widened primary induction variable"
;
-; Lcl frame size = 56
+; Lcl frame size = 40
G_M30087_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 104
- mov qword ptr [rsp+0xE8], r15
- mov qword ptr [rsp+0xE0], r14
- mov qword ptr [rsp+0xD8], rdi
- mov qword ptr [rsp+0xD0], rsi
- mov qword ptr [rsp+0xC8], rbx
- mov rbx, gword ptr [rsp+0x108]
+ sub rsp, 88
+ mov qword ptr [rsp+0xD8], r15
+ mov qword ptr [rsp+0xD0], r14
+ mov qword ptr [rsp+0xC8], rdi
+ mov qword ptr [rsp+0xC0], rsi
+ mov qword ptr [rsp+0xB8], rbx
+ mov rbx, gword ptr [rsp+0xF8]
; gcrRegs +[rbx]
- mov r8, bword ptr [rsp+0x110]
+ mov r8, bword ptr [rsp+0x100]
; byrRegs +[r8]
- mov rsi, gword ptr [rsp+0xA8]
+ mov rsi, gword ptr [rsp+0x98]
; gcrRegs +[rsi]
;; size=68 bbWeight=1 PerfScore 11.25
G_M30087_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0100 {r8}, byref, isz
mov rdi, bword ptr [r8]
; byrRegs +[rdi]
mov ebp, dword ptr [r8+0x08]
- mov r14d, dword ptr [rsp+0xA4]
- cmp r14d, ebp
- jge SHORT G_M30087_IG05
- ;; size=20 bbWeight=1 PerfScore 6.25
+ mov eax, dword ptr [rsp+0x94]
+ cmp eax, ebp
+ jge SHORT G_M30087_IG08
+ ;; size=18 bbWeight=1 PerfScore 6.25
G_M30087_IG03: ; bbWeight=13.44, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref, isz
; byrRegs -[r8]
test rsi, rsi
je SHORT G_M30087_IG06
- mov ecx, r14d
+ mov ecx, eax
or ecx, ebp
jl SHORT G_M30087_IG06
cmp dword ptr [rsi+0x08], ebp
jl SHORT G_M30087_IG06
- ;; size=17 bbWeight=13.44 PerfScore 90.72
+ mov r14d, eax
+ ;; size=19 bbWeight=13.44 PerfScore 94.08
G_M30087_IG04: ; bbWeight=83.16, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref, isz
cmp r14d, ebp
- jae G_M30087_IG08
- mov ecx, r14d
- mov qword ptr [rsp+0x30], rcx
- lea rcx, bword ptr [rdi+8*rcx]
+ jae SHORT G_M30087_IG09
+ lea rcx, bword ptr [rdi+8*r14]
; byrRegs +[rcx]
- mov rdx, qword ptr [rsp+0x30]
- mov r15d, dword ptr [rsi+4*rdx+0x10]
+ mov r15d, dword ptr [rsi+4*r14+0x10]
cmp r15d, dword ptr [rbx+0x08]
- jae SHORT G_M30087_IG08
+ jae SHORT G_M30087_IG09
mov edx, r15d
mov rdx, gword ptr [rbx+8*rdx+0x10]
; gcrRegs +[rdx]
@@ -83,34 +81,27 @@ G_M30087_IG04: ; bbWeight=83.16, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080
inc r14d
cmp r14d, ebp
jl SHORT G_M30087_IG04
- ;; size=58 bbWeight=83.16 PerfScore 1226.61
-G_M30087_IG05: ; bbWeight=13.44, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=41 bbWeight=83.16 PerfScore 1039.50
+G_M30087_IG05: ; bbWeight=13.44, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rsi]
; byrRegs -[rdi]
- add rsp, 200
- pop rbx
- pop rsi
- pop rdi
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=16 bbWeight=13.44 PerfScore 57.12
-G_M30087_IG06: ; bbWeight=0.84, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, gcvars, byref, isz
+ jmp SHORT G_M30087_IG08
+ ;; size=2 bbWeight=13.44 PerfScore 26.88
+G_M30087_IG06: ; bbWeight=0.13, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref
; gcrRegs +[rbx rsi]
; byrRegs +[rdi]
+ mov r14d, eax
+ ;; size=3 bbWeight=0.13 PerfScore 0.03
+G_M30087_IG07: ; bbWeight=0.84, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref, isz
cmp r14d, ebp
- jae SHORT G_M30087_IG08
- mov ecx, r14d
- mov qword ptr [rsp+0x28], rcx
- lea rcx, bword ptr [rdi+8*rcx]
+ jae SHORT G_M30087_IG09
+ lea rcx, bword ptr [rdi+8*r14]
; byrRegs +[rcx]
cmp r14d, dword ptr [rsi+0x08]
- jae SHORT G_M30087_IG08
- mov rdx, qword ptr [rsp+0x28]
- mov r15d, dword ptr [rsi+4*rdx+0x10]
+ jae SHORT G_M30087_IG09
+ mov r15d, dword ptr [rsi+4*r14+0x10]
cmp r15d, dword ptr [rbx+0x08]
- jae SHORT G_M30087_IG08
+ jae SHORT G_M30087_IG09
mov edx, r15d
mov rdx, gword ptr [rbx+8*rdx+0x10]
; gcrRegs +[rdx]
@@ -119,20 +110,27 @@ G_M30087_IG06: ; bbWeight=0.84, gcVars=0000000000000000 {}, gcrefRegs=004
; byrRegs -[rcx]
inc r14d
cmp r14d, ebp
- jl SHORT G_M30087_IG06
- ;; size=60 bbWeight=0.84 PerfScore 15.75
-G_M30087_IG07: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jl SHORT G_M30087_IG07
+ ;; size=47 bbWeight=0.84 PerfScore 13.86
+G_M30087_IG08: ; bbWeight=12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx rsi]
; byrRegs -[rdi]
- jmp SHORT G_M30087_IG05
- ;; size=2 bbWeight=0.42 PerfScore 0.84
-G_M30087_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add rsp, 184
+ pop rbx
+ pop rsi
+ pop rdi
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=16 bbWeight=12 PerfScore 51.00
+G_M30087_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 247, prolog size 68, PerfScore 1408.54, instruction count 64, allocated bytes for code 247 (MethodHash=67d28a78) for method System.Linq.OrderedEnumerable`1[System.__Canon]:Fill(System.__Canon[],System.Span`1[System.__Canon]):this (Tier1-OSR)
+; Total bytes of code 220, prolog size 68, PerfScore 1242.85, instruction count 60, allocated bytes for code 220 (MethodHash=67d28a78) for method System.Linq.OrderedEnumerable`1[System.__Canon]:Fill(System.__Canon[],System.Span`1[System.__Canon]):this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -146,16 +144,16 @@ Unwind Info:
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
CodeOffset: 0x2C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
- Scaled Small Offset: 25 * 8 = 200 = 0x000C8
+ Scaled Small Offset: 23 * 8 = 184 = 0x000B8
CodeOffset: 0x24 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rsi (6)
- Scaled Small Offset: 26 * 8 = 208 = 0x000D0
+ Scaled Small Offset: 24 * 8 = 192 = 0x000C0
CodeOffset: 0x1C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rdi (7)
- Scaled Small Offset: 27 * 8 = 216 = 0x000D8
+ Scaled Small Offset: 25 * 8 = 200 = 0x000C8
CodeOffset: 0x14 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r14 (14)
- Scaled Small Offset: 28 * 8 = 224 = 0x000E0
+ Scaled Small Offset: 26 * 8 = 208 = 0x000D0
CodeOffset: 0x0C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r15 (15)
- Scaled Small Offset: 29 * 8 = 232 = 0x000E8
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 12 * 8 + 8 = 104 = 0x68
+ Scaled Small Offset: 27 * 8 = 216 = 0x000D8
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 10 * 8 + 8 = 88 = 0x58
CodeOffset: 0x00 UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small
Size: 17 * 8 = 136 = 0x00088
CodeOffset: 0x00 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+9 (+15.00%) : 114077.dasm - OrchardCore.DisplayManagement.ObjectPool`1[System.Canon]:FreeSlow(System.Canon):this (Tier1)
@@ -10,39 +10,41 @@
; V00 this [V00,T03] ( 3, 3 ) ref -> rcx this class-hnd single-def <OrchardCore.DisplayManagement.ObjectPool`1[System.__Canon]>
; V01 arg1 [V01,T04] ( 3, 2.50) ref -> rdx class-hnd single-def <System.__Canon>
; V02 loc0 [V02,T01] ( 4, 6.50) ref -> rcx class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 6, 17.50) int -> rax
+; V03 loc1 [V03,T05] ( 3, 1.50) int -> r8
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T02] ( 3, 6 ) int -> r8 "CSE - aggressive"
+; V05 tmp1 [V05,T00] ( 6, 17.50) long -> r8 "Widened primary induction variable"
+; V06 cse0 [V06,T02] ( 4, 6.50) int -> rax "CSE - aggressive"
;
; Lcl frame size = 40
-G_M16195_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M16195_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 40
;; size=4 bbWeight=1 PerfScore 0.25
G_M16195_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx rdx]
mov rcx, gword ptr [rcx+0x10]
- xor eax, eax
- mov r8d, dword ptr [rcx+0x08]
- test r8d, r8d
+ mov eax, dword ptr [rcx+0x08]
+ test eax, eax
jle SHORT G_M16195_IG04
- ;; size=15 bbWeight=1 PerfScore 5.50
+ xor r8d, r8d
+ ;; size=14 bbWeight=1 PerfScore 5.50
G_M16195_IG03: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
- mov r10d, eax
- cmp gword ptr [rcx+8*r10+0x10], 0
+ cmp gword ptr [rcx+8*r8+0x10], 0
je SHORT G_M16195_IG05
- inc eax
- cmp r8d, eax
+ inc r8d
+ cmp eax, r8d
jg SHORT G_M16195_IG03
- ;; size=18 bbWeight=4 PerfScore 23.00
+ ;; size=16 bbWeight=4 PerfScore 22.00
G_M16195_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx rdx]
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M16195_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref
+G_M16195_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx rdx]
- mov eax, eax
+ cmp r8d, eax
+ jae SHORT G_M16195_IG07
+ mov eax, r8d
lea rcx, bword ptr [rcx+8*rax+0x10]
; gcrRegs -[rcx]
; byrRegs +[rcx]
@@ -50,13 +52,18 @@ G_M16195_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs -[rdx]
; byrRegs -[rcx]
nop
- ;; size=13 bbWeight=0.50 PerfScore 1.25
+ ;; size=19 bbWeight=0.50 PerfScore 1.88
G_M16195_IG06: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M16195_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 4, PerfScore 31.25, instruction count 20, allocated bytes for code 60 (MethodHash=a920c0bc) for method OrchardCore.DisplayManagement.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
+; Total bytes of code 69, prolog size 4, PerfScore 30.88, instruction count 23, allocated bytes for code 69 (MethodHash=a920c0bc) for method OrchardCore.DisplayManagement.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
; ============================================================
Unwind Info:
+9 (+15.00%) : 127141.dasm - OrchardCore.DisplayManagement.ObjectPool`1[System.Canon]:FreeSlow(System.Canon):this (FullOpts)
@@ -10,39 +10,41 @@
; V00 this [V00,T03] ( 3, 3 ) ref -> rcx this class-hnd single-def <OrchardCore.DisplayManagement.ObjectPool`1[System.__Canon]>
; V01 arg1 [V01,T04] ( 3, 2.50) ref -> rdx class-hnd single-def <System.__Canon>
; V02 loc0 [V02,T01] ( 4, 6.50) ref -> rcx class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 6, 17.50) int -> rax
+; V03 loc1 [V03,T05] ( 3, 1.50) int -> r8
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T02] ( 3, 6 ) int -> r8 "CSE - aggressive"
+; V05 tmp1 [V05,T00] ( 6, 17.50) long -> r8 "Widened primary induction variable"
+; V06 cse0 [V06,T02] ( 4, 6.50) int -> rax "CSE - aggressive"
;
; Lcl frame size = 40
-G_M16195_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M16195_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 40
;; size=4 bbWeight=1 PerfScore 0.25
G_M16195_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx rdx]
mov rcx, gword ptr [rcx+0x10]
- xor eax, eax
- mov r8d, dword ptr [rcx+0x08]
- test r8d, r8d
+ mov eax, dword ptr [rcx+0x08]
+ test eax, eax
jle SHORT G_M16195_IG04
- ;; size=15 bbWeight=1 PerfScore 5.50
+ xor r8d, r8d
+ ;; size=14 bbWeight=1 PerfScore 5.50
G_M16195_IG03: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
- mov r10d, eax
- cmp gword ptr [rcx+8*r10+0x10], 0
+ cmp gword ptr [rcx+8*r8+0x10], 0
je SHORT G_M16195_IG05
- inc eax
- cmp r8d, eax
+ inc r8d
+ cmp eax, r8d
jg SHORT G_M16195_IG03
- ;; size=18 bbWeight=4 PerfScore 23.00
+ ;; size=16 bbWeight=4 PerfScore 22.00
G_M16195_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx rdx]
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M16195_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref
+G_M16195_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx rdx]
- mov eax, eax
+ cmp r8d, eax
+ jae SHORT G_M16195_IG07
+ mov eax, r8d
lea rcx, bword ptr [rcx+8*rax+0x10]
; gcrRegs -[rcx]
; byrRegs +[rcx]
@@ -50,13 +52,18 @@ G_M16195_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs -[rdx]
; byrRegs -[rcx]
nop
- ;; size=13 bbWeight=0.50 PerfScore 1.25
+ ;; size=19 bbWeight=0.50 PerfScore 1.88
G_M16195_IG06: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M16195_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 4, PerfScore 31.25, instruction count 20, allocated bytes for code 60 (MethodHash=a920c0bc) for method OrchardCore.DisplayManagement.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
+; Total bytes of code 69, prolog size 4, PerfScore 30.88, instruction count 23, allocated bytes for code 69 (MethodHash=a920c0bc) for method OrchardCore.DisplayManagement.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
; ============================================================
Unwind Info:
+10 (+15.38%) : 127877.dasm - System.Reflection.Internal.ObjectPool`1[System.Canon]:Free(System.Canon):this (Tier1)
@@ -11,10 +11,10 @@
; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Reflection.Internal.ObjectPool`1[System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdx class-hnd single-def <System.__Canon>
; V02 loc0 [V02,T03] ( 4, 4.01) ref -> rbx class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 5, 5.03) int -> rsi
+; V03 loc1 [V03,T05] ( 3, 3 ) int -> rcx
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T05] ( 3, 3.01) int -> rdi "CSE - aggressive"
-; V06 cse1 [V06,T04] ( 3, 3.02) long -> rcx "CSE - aggressive"
+; V05 tmp1 [V05,T00] ( 6, 6.03) long -> rdi "Widened primary induction variable"
+; V06 cse0 [V06,T04] ( 4, 4.01) int -> rsi "CSE - aggressive"
;
; Lcl frame size = 32
@@ -28,25 +28,27 @@ G_M19580_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {},
; gcrRegs +[rcx rdx]
mov rbx, gword ptr [rcx+0x08]
; gcrRegs +[rbx]
- xor esi, esi
- mov edi, dword ptr [rbx+0x08]
- test edi, edi
+ mov esi, dword ptr [rbx+0x08]
+ test esi, esi
jle SHORT G_M19580_IG08
+ xor edi, edi
;; size=13 bbWeight=1 PerfScore 5.50
G_M19580_IG03: ; bbWeight=1.01, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
- mov ecx, esi
- cmp gword ptr [rbx+8*rcx+0x10], 0
+ cmp gword ptr [rbx+8*rdi+0x10], 0
jne SHORT G_M19580_IG06
- ;; size=10 bbWeight=1.01 PerfScore 4.28
-G_M19580_IG04: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=1.01 PerfScore 4.03
+G_M19580_IG04: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
+ mov ecx, edi
+ cmp ecx, esi
+ jae SHORT G_M19580_IG07
lea rcx, bword ptr [rbx+8*rcx+0x10]
; byrRegs +[rcx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rdx rbx]
; byrRegs -[rcx]
nop
- ;; size=11 bbWeight=1 PerfScore 2.25
+ ;; size=17 bbWeight=1 PerfScore 3.75
G_M19580_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
@@ -56,15 +58,20 @@ G_M19580_IG05: ; bbWeight=1, epilog, nogc, extend
;; size=8 bbWeight=1 PerfScore 2.75
G_M19580_IG06: ; bbWeight=1.01, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rdx rbx]
- inc esi
- cmp edi, esi
+ inc edi
+ cmp esi, edi
jle SHORT G_M19580_IG08
- ;; size=6 bbWeight=1.01 PerfScore 1.51
-G_M19580_IG07: ; bbWeight=0.50, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M19580_IG03
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M19580_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=8 bbWeight=1.01 PerfScore 3.53
+G_M19580_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx rbx]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M19580_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ nop
+ ;; size=1 bbWeight=0 PerfScore 0.00
+G_M19580_IG09: ; bbWeight=0, epilog, nogc, extend
add rsp, 32
pop rbx
pop rsi
@@ -72,7 +79,7 @@ G_M19580_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 65, prolog size 7, PerfScore 20.55, instruction count 29, allocated bytes for code 65 (MethodHash=881eb383) for method System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
+; Total bytes of code 75, prolog size 7, PerfScore 22.81, instruction count 33, allocated bytes for code 75 (MethodHash=881eb383) for method System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
; ============================================================
Unwind Info:
benchmarks.run.windows.x64.checked.mch
-26 (-14.77%) : 15892.dasm - Span.Sorting:TestBubbleSortArray(int[]) (FullOpts)
@@ -10,110 +10,107 @@
; V00 arg0 [V00,T02] ( 11, 51 ) ref -> rcx class-hnd single-def <int[]>
; V01 loc0 [V01,T08] ( 4, 24 ) ubyte -> r8
; V02 loc1 [V02,T10] ( 4, 16 ) int -> r9
-; V03 loc2 [V03,T03] ( 7, 45 ) int -> rdx
-; V04 loc3 [V04,T00] ( 12, 80.16) int -> r10
+; V03 loc2 [V03,T04] ( 7, 45 ) int -> rdx
+;* V04 loc3 [V04,T11] ( 0, 0 ) int -> zero-ref
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T07] ( 4, 32 ) int -> rsi "Strict ordering of exceptions for Array store"
-; V07 cse0 [V07,T04] ( 3, 39.60) int -> rsi "CSE - aggressive"
-; V08 cse1 [V08,T12] ( 3, 0.40) int -> rsi "CSE - conservative"
-; V09 cse2 [V09,T13] ( 3, 0.40) int -> r9 "CSE - conservative"
-; V10 cse3 [V10,T05] ( 3, 39.60) int -> r9 "CSE - aggressive"
-; V11 cse4 [V11,T06] ( 3, 39.60) long -> rbx "CSE - aggressive"
-; V12 cse5 [V12,T01] ( 4, 63.36) int -> r11 "CSE - aggressive"
-; V13 cse6 [V13,T09] ( 6, 22.16) int -> rax "CSE - aggressive"
-; V14 cse7 [V14,T11] ( 5, 0.72) int -> r11 "CSE - conservative"
+; V06 tmp1 [V06,T07] ( 4, 32 ) int -> rbx "Strict ordering of exceptions for Array store"
+; V07 tmp2 [V07,T12] ( 7, 0.92) long -> r10 "Widened primary induction variable"
+; V08 tmp3 [V08,T00] ( 6, 75.28) long -> r10 "Widened primary induction variable"
+; V09 cse0 [V09,T05] ( 3, 39.60) int -> rbx "CSE - aggressive"
+; V10 cse1 [V10,T15] ( 3, 0.40) int -> rbx "CSE - conservative"
+; V11 cse2 [V11,T16] ( 3, 0.40) int -> r9 "CSE - conservative"
+; V12 cse3 [V12,T06] ( 3, 39.60) int -> r9 "CSE - aggressive"
+; V13 cse4 [V13,T01] ( 4, 55.44) long -> r11 "CSE - aggressive"
+; V14 cse5 [V14,T13] ( 4, 0.56) long -> r11 "CSE - conservative"
+; V15 cse6 [V15,T03] ( 3, 47.52) int -> r11 "CSE - aggressive"
+; V16 cse7 [V16,T14] ( 3, 0.48) int -> r11 "CSE - conservative"
+; V17 cse8 [V17,T09] ( 6, 22.16) int -> rax "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M37703_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rsi
push rbx
- sub rsp, 40
- ;; size=6 bbWeight=1 PerfScore 2.25
+ sub rsp, 32
+ ;; size=5 bbWeight=1 PerfScore 1.25
G_M37703_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
mov eax, dword ptr [rcx+0x08]
lea edx, [rax-0x01]
;; size=6 bbWeight=1 PerfScore 2.50
-G_M37703_IG03: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M37703_IG03: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
xor r8d, r8d
- xor r10d, r10d
test edx, edx
- jle G_M37703_IG12
- ;; size=14 bbWeight=8 PerfScore 14.00
+ jle SHORT G_M37703_IG13
+ ;; size=7 bbWeight=8 PerfScore 12.00
G_M37703_IG04: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp eax, edx
jl SHORT G_M37703_IG09
- ;; size=4 bbWeight=4 PerfScore 5.00
+ xor r10d, r10d
+ ;; size=7 bbWeight=4 PerfScore 6.00
G_M37703_IG05: ; bbWeight=15.84, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r9d, r10d
- mov r9d, dword ptr [rcx+4*r9+0x10]
+ mov r9d, dword ptr [rcx+4*r10+0x10]
lea r11d, [r10+0x01]
cmp r11d, eax
- jae SHORT G_M37703_IG14
- mov ebx, r11d
- mov esi, dword ptr [rcx+4*rbx+0x10]
- cmp r9d, esi
+ jae SHORT G_M37703_IG15
+ mov ebx, dword ptr [rcx+4*r11+0x10]
+ cmp r9d, ebx
jle SHORT G_M37703_IG07
- ;; size=29 bbWeight=15.84 PerfScore 118.80
+ ;; size=24 bbWeight=15.84 PerfScore 110.88
G_M37703_IG06: ; bbWeight=7.92, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov r8d, r10d
- mov dword ptr [rcx+4*r8+0x10], esi
- mov dword ptr [rcx+4*rbx+0x10], r9d
+ mov dword ptr [rcx+4*r10+0x10], ebx
+ mov dword ptr [rcx+4*r11+0x10], r9d
mov r8d, 1
- ;; size=19 bbWeight=7.92 PerfScore 19.80
+ ;; size=16 bbWeight=7.92 PerfScore 17.82
G_M37703_IG07: ; bbWeight=15.84, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r10d, r11d
+ mov r10, r11
cmp r10d, edx
jl SHORT G_M37703_IG05
;; size=8 bbWeight=15.84 PerfScore 23.76
G_M37703_IG08: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M37703_IG12
+ jmp SHORT G_M37703_IG13
;; size=2 bbWeight=8 PerfScore 16.00
-G_M37703_IG09: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M37703_IG09: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ xor r10d, r10d
+ ;; size=3 bbWeight=0.04 PerfScore 0.01
+G_M37703_IG10: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp r10d, eax
- jae SHORT G_M37703_IG14
- mov r9d, r10d
- mov r9d, dword ptr [rcx+4*r9+0x10]
+ jae SHORT G_M37703_IG15
+ mov r9d, dword ptr [rcx+4*r10+0x10]
lea r11d, [r10+0x01]
cmp r11d, eax
- jae SHORT G_M37703_IG14
- mov esi, r11d
- mov esi, dword ptr [rcx+4*rsi+0x10]
- cmp r9d, esi
- jle SHORT G_M37703_IG11
- ;; size=34 bbWeight=0.16 PerfScore 1.40
-G_M37703_IG10: ; bbWeight=0.08, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov r8d, r10d
- mov dword ptr [rcx+4*r8+0x10], esi
- mov r10d, r11d
- mov dword ptr [rcx+4*r10+0x10], r9d
+ jae SHORT G_M37703_IG15
+ mov ebx, dword ptr [rcx+4*r11+0x10]
+ cmp r9d, ebx
+ jle SHORT G_M37703_IG12
+ ;; size=29 bbWeight=0.16 PerfScore 1.32
+G_M37703_IG11: ; bbWeight=0.08, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ mov dword ptr [rcx+4*r10+0x10], ebx
+ mov dword ptr [rcx+4*r11+0x10], r9d
mov r8d, 1
- ;; size=22 bbWeight=0.08 PerfScore 0.22
-G_M37703_IG11: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r10d, r11d
+ ;; size=16 bbWeight=0.08 PerfScore 0.18
+G_M37703_IG12: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ mov r10, r11
cmp r10d, edx
- jl SHORT G_M37703_IG09
+ jl SHORT G_M37703_IG10
;; size=8 bbWeight=0.16 PerfScore 0.24
-G_M37703_IG12: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M37703_IG13: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
dec edx
test r8d, r8d
- jne G_M37703_IG03
- ;; size=11 bbWeight=8 PerfScore 12.00
-G_M37703_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jne SHORT G_M37703_IG03
+ ;; size=7 bbWeight=8 PerfScore 12.00
+G_M37703_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx]
- add rsp, 40
+ add rsp, 32
pop rbx
- pop rsi
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M37703_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=6 bbWeight=1 PerfScore 1.75
+G_M37703_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 6, PerfScore 218.22, instruction count 56, allocated bytes for code 176 (MethodHash=e4a36cb8) for method Span.Sorting:TestBubbleSortArray(int[]) (FullOpts)
+; Total bytes of code 150, prolog size 5, PerfScore 205.71, instruction count 48, allocated bytes for code 150 (MethodHash=e4a36cb8) for method Span.Sorting:TestBubbleSortArray(int[]) (FullOpts)
; ============================================================
Unwind Info:
@@ -121,11 +118,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x06
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-24 (-11.82%) : 19209.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
@@ -11,7 +11,7 @@
; V00 this [V00,T06] ( 5, 11 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer>
; V01 arg1 [V01,T11] ( 4, 6.50) int -> rsi single-def
; V02 loc0 [V02,T10] ( 4, 9 ) ref -> rbp class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]>
-; V03 loc1 [V03,T00] ( 9, 32.50) int -> r14
+;* V03 loc1 [V03,T16] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T03] ( 2, 16 ) ref -> rcx class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo>
; V06 tmp2 [V06,T04] ( 2, 16 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo>
@@ -22,25 +22,25 @@
; V11 tmp7 [V11,T02] ( 3, 24 ) ref -> rdx "arr expr"
;* V12 tmp8 [V12,T13] ( 0, 0 ) ref -> zero-ref "arr expr"
; V13 tmp9 [V13,T05] ( 2, 16 ) int -> rdx "argument with side effect"
-; V14 cse0 [V14,T07] ( 3, 12 ) ref -> rdx "CSE - aggressive"
-; V15 cse1 [V15,T15] ( 3, 1.50) int -> rdi "CSE - moderate"
-; V16 cse2 [V16,T08] ( 2, 8 ) ref -> rdx "CSE - aggressive"
-; V17 cse3 [V17,T09] ( 2, 8 ) ref -> rdx "CSE - aggressive"
-; V18 cse4 [V18,T14] ( 4, 3 ) ref -> rcx "CSE - aggressive"
+; V14 tmp10 [V14,T00] ( 9, 32.50) long -> rdi "Widened primary induction variable"
+; V15 cse0 [V15,T07] ( 3, 12 ) ref -> rdx "CSE - aggressive"
+; V16 cse1 [V16,T15] ( 3, 1.50) int -> rdi "CSE - moderate"
+; V17 cse2 [V17,T08] ( 2, 8 ) ref -> rdx "CSE - aggressive"
+; V18 cse3 [V18,T09] ( 2, 8 ) ref -> rdx "CSE - aggressive"
+; V19 cse4 [V19,T14] ( 4, 3 ) ref -> rcx "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M22286_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx
; gcrRegs +[rbx]
mov esi, edx
- ;; size=15 bbWeight=1 PerfScore 5.75
+ ;; size=13 bbWeight=1 PerfScore 4.75
G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0x10]
; gcrRegs +[rcx]
@@ -49,7 +49,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=13 bbWeight=1 PerfScore 3.25
G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
test esi, esi
- jle G_M22286_IG07
+ jle SHORT G_M22286_IG07
mov edi, dword ptr [rcx+0x10]
movsxd rdx, edi
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]
@@ -59,21 +59,20 @@ G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000
; gcr arg pop 0
mov rbp, rax
; gcrRegs +[rbp]
- xor r14d, r14d
test edi, edi
jle SHORT G_M22286_IG05
- ;; size=39 bbWeight=0.50 PerfScore 3.25
+ xor edi, edi
+ ;; size=34 bbWeight=0.50 PerfScore 3.25
G_M22286_IG04: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rdx, gword ptr [rbx+0x10]
; gcrRegs +[rdx]
- cmp r14d, dword ptr [rdx+0x10]
+ cmp edi, dword ptr [rdx+0x10]
jae SHORT G_M22286_IG12
mov rdx, gword ptr [rdx+0x08]
- cmp r14d, dword ptr [rdx+0x08]
+ cmp edi, dword ptr [rdx+0x08]
jae SHORT G_M22286_IG11
- mov ecx, r14d
- mov rdx, gword ptr [rdx+8*rcx+0x10]
+ mov rdx, gword ptr [rdx+8*rdi+0x10]
mov rcx, rdx
; gcrRegs +[rcx]
mov eax, esi
@@ -83,64 +82,60 @@ G_M22286_IG04: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {},
call [Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:WithOffset(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:this]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- cmp r14d, dword ptr [rbp+0x08]
+ cmp edi, dword ptr [rbp+0x08]
jae SHORT G_M22286_IG11
- mov ecx, r14d
- lea rcx, bword ptr [rbp+8*rcx+0x10]
+ lea rcx, bword ptr [rbp+8*rdi+0x10]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- inc r14d
+ inc edi
mov rax, gword ptr [rbx+0x10]
; gcrRegs +[rax]
- cmp r14d, dword ptr [rax+0x10]
+ cmp edi, dword ptr [rax+0x10]
jl SHORT G_M22286_IG04
- ;; size=79 bbWeight=4 PerfScore 139.00
+ ;; size=68 bbWeight=4 PerfScore 137.00
G_M22286_IG05: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx]
mov rax, rbp
; gcrRegs +[rax]
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M22286_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
- pop r14
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M22286_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rbp] +[rcx]
cmp dword ptr [rcx], ecx
;; size=2 bbWeight=0.50 PerfScore 1.50
G_M22286_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
- pop r14
tail.jmp [System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this]
; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.38
+ ;; size=14 bbWeight=0.50 PerfScore 2.12
G_M22286_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M22286_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
- pop r14
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
call CORINFO_HELP_RNGCHKFAIL
@@ -152,7 +147,7 @@ G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 203, prolog size 15, PerfScore 159.12, instruction count 71, allocated bytes for code 203 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
+; Total bytes of code 179, prolog size 13, PerfScore 155.38, instruction count 65, allocated bytes for code 179 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -160,14 +155,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0A
- CountOfUnwindCodes: 6
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
-6 (-10.00%) : 17145.dasm - System.Linq.SingleLinkedNode1[int]:FillReversed(System.Span1[int]):this (FullOpts)
@@ -8,15 +8,16 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 4, 4 ) ref -> rcx this class-hnd single-def <System.Linq.SingleLinkedNode`1[int]>
+; V00 this [V00,T04] ( 4, 4 ) ref -> rcx this class-hnd single-def <System.Linq.SingleLinkedNode`1[int]>
; V01 arg1 [V01,T02] ( 4, 8 ) byref -> rdx ld-addr-op single-def
-; V02 loc0 [V02,T01] ( 5, 17 ) int -> r8
-; V03 loc1 [V03,T00] ( 5, 17 ) ref -> r10 class-hnd <System.Linq.SingleLinkedNode`1[int]>
+;* V02 loc0 [V02,T06] ( 0, 0 ) int -> zero-ref
+; V03 loc1 [V03,T00] ( 5, 17 ) ref -> r8 class-hnd <System.Linq.SingleLinkedNode`1[int]>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
; V06 tmp2 [V06,T05] ( 2, 5 ) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V07 tmp3 [V07,T04] ( 3, 6 ) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
+; V07 tmp3 [V07,T03] ( 3, 6 ) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[int]>
+; V09 tmp5 [V09,T01] ( 5, 17 ) long -> rcx "Widened primary induction variable"
;
; Lcl frame size = 40
@@ -30,26 +31,25 @@ G_M40341_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx},
; byrRegs +[rax]
mov edx, dword ptr [rdx+0x08]
; byrRegs -[rdx]
- mov r8d, edx
- mov r10, rcx
- ; gcrRegs +[r10]
+ mov r8, rcx
+ ; gcrRegs +[r8]
test rcx, rcx
je SHORT G_M40341_IG04
- ;; size=17 bbWeight=1 PerfScore 5.75
-G_M40341_IG03: ; bbWeight=4, gcrefRegs=0400 {r10}, byrefRegs=0001 {rax}, byref, isz
+ mov ecx, edx
; gcrRegs -[rcx]
- dec r8d
- cmp r8d, edx
+ ;; size=16 bbWeight=1 PerfScore 5.75
+G_M40341_IG03: ; bbWeight=4, gcrefRegs=0100 {r8}, byrefRegs=0001 {rax}, byref, isz
+ dec ecx
+ cmp ecx, edx
jae SHORT G_M40341_IG05
- mov ecx, r8d
- mov r9d, dword ptr [r10+0x10]
- mov dword ptr [rax+4*rcx], r9d
- mov r10, gword ptr [r10+0x08]
- test r10, r10
+ mov r10d, dword ptr [r8+0x10]
+ mov dword ptr [rax+4*rcx], r10d
+ mov r8, gword ptr [r8+0x08]
+ test r8, r8
jne SHORT G_M40341_IG03
- ;; size=28 bbWeight=4 PerfScore 32.00
+ ;; size=23 bbWeight=4 PerfScore 31.00
G_M40341_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[r10]
+ ; gcrRegs -[r8]
; byrRegs -[rax]
add rsp, 40
ret
@@ -60,7 +60,7 @@ G_M40341_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 4, PerfScore 39.25, instruction count 20, allocated bytes for code 60 (MethodHash=2db3626a) for method System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (FullOpts)
+; Total bytes of code 54, prolog size 4, PerfScore 38.25, instruction count 19, allocated bytes for code 54 (MethodHash=2db3626a) for method System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (FullOpts)
; ============================================================
Unwind Info:
+11 (+25.58%) : 25750.dasm - System.Collections.IterateFor`1[System.Canon]:ImmutableArray():System.Canon:this (FullOpts)
@@ -8,52 +8,63 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Collections.IterateFor`1[System.__Canon]>
-; V01 loc0 [V01,T02] ( 3, 6 ) ref -> rax ld-addr-op class-hnd <System.__Canon>
+; V00 this [V00,T02] ( 3, 3 ) ref -> rbx this class-hnd single-def <System.Collections.IterateFor`1[System.__Canon]>
+; V01 loc0 [V01,T03] ( 3, 6 ) ref -> rax ld-addr-op class-hnd <System.__Canon>
;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> r8
+;* V03 loc2 [V03,T08] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 tmp3 [V07,T03] ( 3, 6 ) ref -> rdx single-def "field V02.array (fldOffset=0x0)" P-INDEP
-;* V08 cse0 [V08,T08] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
-; V09 cse1 [V09,T04] ( 3, 6 ) int -> r10 "CSE - aggressive"
-;* V10 rat0 [V10,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V11 rat1 [V11,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V12 rat2 [V12,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T04] ( 3, 6 ) ref -> rcx single-def "field V02.array (fldOffset=0x0)" P-INDEP
+; V08 tmp4 [V08,T00] ( 6, 21 ) long -> r8 "Widened primary induction variable"
+;* V09 cse0 [V09,T09] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V10 cse1 [V10,T01] ( 4, 10 ) int -> rdx "CSE - aggressive"
+;* V11 rat0 [V11,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V12 rat1 [V12,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V13 rat2 [V13,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M3722_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 40
- ;; size=4 bbWeight=1 PerfScore 0.25
-G_M3722_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rcx]
+ push rbx
+ sub rsp, 32
+ mov rbx, rcx
+ ; gcrRegs +[rbx]
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M3722_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
xor rax, rax
; gcrRegs +[rax]
- mov rdx, gword ptr [rcx+0x38]
- ; gcrRegs +[rdx]
- xor r8d, r8d
- mov r10d, dword ptr [rdx+0x08]
- test r10d, r10d
+ mov rcx, gword ptr [rbx+0x38]
+ ; gcrRegs +[rcx]
+ mov edx, dword ptr [rcx+0x08]
+ test edx, edx
jle SHORT G_M3722_IG04
- ;; size=18 bbWeight=1 PerfScore 5.75
-G_M3722_IG03: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
+ xor r8d, r8d
+ ;; size=16 bbWeight=1 PerfScore 5.75
+G_M3722_IG03: ; bbWeight=4, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- mov eax, r8d
- mov rax, gword ptr [rdx+8*rax+0x10]
+ cmp r8d, edx
+ jae SHORT G_M3722_IG05
+ mov rax, gword ptr [rcx+8*r8+0x10]
; gcrRegs +[rax]
inc r8d
- cmp r10d, r8d
+ cmp edx, r8d
jg SHORT G_M3722_IG03
- ;; size=16 bbWeight=4 PerfScore 15.00
-G_M3722_IG04: ; bbWeight=1, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rdx]
- add rsp, 40
+ ;; size=18 bbWeight=4 PerfScore 19.00
+G_M3722_IG04: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rcx]
+ add rsp, 32
+ pop rbx
ret
- ;; size=5 bbWeight=1 PerfScore 1.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
+G_M3722_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 43, prolog size 4, PerfScore 22.25, instruction count 14, allocated bytes for code 43 (MethodHash=877ef175) for method System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
+; Total bytes of code 54, prolog size 8, PerfScore 28.00, instruction count 20, allocated bytes for code 54 (MethodHash=877ef175) for method System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -61,9 +72,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+13 (+27.08%) : 23431.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
@@ -8,13 +8,14 @@
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-;* V01 loc0 [V01,T05] ( 0, 0 ) int -> zero-ref single-def
-; V02 loc1 [V02,T02] ( 4, 10 ) ubyte -> rdx
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> r8
+; V01 loc0 [V01,T05] ( 2, 5 ) int -> rdx single-def
+; V02 loc1 [V02,T02] ( 4, 10 ) ubyte -> r8
+;* V03 loc2 [V03,T06] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T04] ( 2, 5 ) byref -> rax single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T03] ( 3, 6 ) int -> rcx single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T03] ( 4, 7 ) int -> rcx single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[ubyte]>
+; V08 tmp4 [V08,T00] ( 6, 21 ) long -> r10 "Widened primary induction variable"
;
; Lcl frame size = 40
@@ -27,30 +28,37 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
; byrRegs +[rax]
mov ecx, dword ptr [rcx+0x08]
; byrRegs -[rcx]
- xor edx, edx
+ mov edx, ecx
xor r8d, r8d
test ecx, ecx
jle SHORT G_M44428_IG04
- ;; size=15 bbWeight=1 PerfScore 5.75
+ xor r10d, r10d
+ ;; size=18 bbWeight=1 PerfScore 6.00
G_M44428_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
- mov r10d, r8d
- movzx r10, byte ptr [rax+r10]
- xor edx, r10d
- movzx rdx, dl
- inc r8d
- cmp r8d, ecx
+ cmp r10d, edx
+ jae SHORT G_M44428_IG06
+ movzx r9, byte ptr [rax+r10]
+ xor r8d, r9d
+ movzx r8, r8b
+ inc r10d
+ cmp r10d, ecx
jl SHORT G_M44428_IG03
- ;; size=22 bbWeight=4 PerfScore 17.00
+ ;; size=25 bbWeight=4 PerfScore 21.00
G_M44428_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rax]
- mov eax, edx
- ;; size=2 bbWeight=1 PerfScore 0.25
+ mov eax, r8d
+ ;; size=3 bbWeight=1 PerfScore 0.25
G_M44428_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
+G_M44428_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 48, prolog size 4, PerfScore 24.50, instruction count 17, allocated bytes for code 48 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 61, prolog size 4, PerfScore 28.75, instruction count 21, allocated bytes for code 61 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
; ============================================================
Unwind Info:
+13 (+27.08%) : 25567.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
@@ -8,13 +8,14 @@
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-;* V01 loc0 [V01,T05] ( 0, 0 ) int -> zero-ref single-def
-; V02 loc1 [V02,T02] ( 4, 10 ) ubyte -> rdx
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> r8
+; V01 loc0 [V01,T05] ( 2, 5 ) int -> rdx single-def
+; V02 loc1 [V02,T02] ( 4, 10 ) ubyte -> r8
+;* V03 loc2 [V03,T06] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T04] ( 2, 5 ) byref -> rax single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T03] ( 3, 6 ) int -> rcx single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T03] ( 4, 7 ) int -> rcx single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
+; V08 tmp4 [V08,T00] ( 6, 21 ) long -> r10 "Widened primary induction variable"
;
; Lcl frame size = 40
@@ -27,30 +28,37 @@ G_M31628_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
; byrRegs +[rax]
mov ecx, dword ptr [rcx+0x08]
; byrRegs -[rcx]
- xor edx, edx
+ mov edx, ecx
xor r8d, r8d
test ecx, ecx
jle SHORT G_M31628_IG04
- ;; size=15 bbWeight=1 PerfScore 5.75
+ xor r10d, r10d
+ ;; size=18 bbWeight=1 PerfScore 6.00
G_M31628_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
- mov r10d, r8d
- movzx r10, byte ptr [rax+r10]
- xor edx, r10d
- movzx rdx, dl
- inc r8d
- cmp r8d, ecx
+ cmp r10d, edx
+ jae SHORT G_M31628_IG06
+ movzx r9, byte ptr [rax+r10]
+ xor r8d, r9d
+ movzx r8, r8b
+ inc r10d
+ cmp r10d, ecx
jl SHORT G_M31628_IG03
- ;; size=22 bbWeight=4 PerfScore 17.00
+ ;; size=25 bbWeight=4 PerfScore 21.00
G_M31628_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rax]
- mov eax, edx
- ;; size=2 bbWeight=1 PerfScore 0.25
+ mov eax, r8d
+ ;; size=3 bbWeight=1 PerfScore 0.25
G_M31628_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
+G_M31628_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 48, prolog size 4, PerfScore 24.50, instruction count 17, allocated bytes for code 48 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 61, prolog size 4, PerfScore 28.75, instruction count 21, allocated bytes for code 61 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
; ============================================================
Unwind Info:
benchmarks.run_pgo.windows.x64.checked.mch
-41 (-16.94%) : 102719.dasm - Benchstone.BenchI.BubbleSort2:Inner(int[]) (Tier1-OSR)
@@ -10,108 +10,103 @@
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 17,202.32) ref -> rcx class-hnd single-def <int[]>
-; V01 loc0 [V01,T07] ( 1, 0.02) int -> r8
-; V02 loc1 [V02,T04] ( 8,100.14) int -> rdx
-; V03 loc2 [V03,T00] ( 16,401.14) int -> rax
-; V04 loc3 [V04,T06] ( 4, 0.16) int -> r11
+; V01 loc0 [V01,T09] ( 1, 0.02) int -> r8
+; V02 loc1 [V02,T05] ( 1, 1 ) int -> rax
+; V03 loc2 [V03,T08] ( 5, 0.14) int -> rdx
+; V04 loc3 [V04,T07] ( 4, 0.16) int -> r9
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T05] ( 4, 0.32) int -> rbx "Strict ordering of exceptions for Array store"
-; V07 cse0 [V07,T02] ( 6,101.02) int -> r10 hoist multi-def "CSE - aggressive"
-; V08 cse1 [V08,T03] ( 8,100.22) long -> r9 hoist multi-def "CSE - aggressive"
+; V06 tmp1 [V06,T06] ( 4, 0.32) int -> r11 "Strict ordering of exceptions for Array store"
+; V07 tmp2 [V07,T02] ( 13,201.20) long -> rax "Widened primary induction variable"
+; V08 tmp3 [V08,T04] ( 8, 5.00) long -> rdx "Widened primary induction variable"
+; V09 tmp4 [V09,T00] ( 7,396.16) long -> rdx "Widened primary induction variable"
+; V10 cse0 [V10,T03] ( 6,101.02) int -> r10 hoist multi-def "CSE - aggressive"
;
; Lcl frame size = 40
G_M35926_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 56
- mov qword ptr [rsp+0xB8], rsi
- mov qword ptr [rsp+0xB0], rbx
- mov rcx, gword ptr [rsp+0xD0]
+ sub rsp, 40
+ mov rcx, gword ptr [rsp+0xC0]
; gcrRegs +[rcx]
- mov r8d, dword ptr [rsp+0x84]
- mov edx, dword ptr [rsp+0x80]
- mov eax, dword ptr [rsp+0x7C]
- ;; size=47 bbWeight=1 PerfScore 10.25
+ mov r8d, dword ptr [rsp+0x74]
+ mov eax, dword ptr [rsp+0x70]
+ mov edx, dword ptr [rsp+0x6C]
+ ;; size=25 bbWeight=1 PerfScore 8.25
G_M35926_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ mov eax, eax
jmp SHORT G_M35926_IG04
- ;; size=2 bbWeight=1 PerfScore 2.00
+ ;; size=4 bbWeight=1 PerfScore 2.25
G_M35926_IG03: ; bbWeight=0.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov eax, edx
+ mov edx, eax
;; size=2 bbWeight=0.02 PerfScore 0.00
-G_M35926_IG04: ; bbWeight=0.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- cmp eax, 0x1D4C
- jg G_M35926_IG14
- ;; size=11 bbWeight=0.02 PerfScore 0.02
+G_M35926_IG04: ; bbWeight=0.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ cmp edx, 0x1D4C
+ jg SHORT G_M35926_IG14
+ ;; size=8 bbWeight=0.02 PerfScore 0.02
G_M35926_IG05: ; bbWeight=0.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
test rcx, rcx
je SHORT G_M35926_IG11
- test eax, eax
+ test edx, edx
jl SHORT G_M35926_IG11
mov r10d, dword ptr [rcx+0x08]
cmp r10d, 0x1D4C
jle SHORT G_M35926_IG11
;; size=22 bbWeight=0.02 PerfScore 0.11
G_M35926_IG06: ; bbWeight=0.08, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov r9d, edx
- ;; size=3 bbWeight=0.08 PerfScore 0.02
+ mov edx, edx
+ ;; size=2 bbWeight=0.08 PerfScore 0.02
G_M35926_IG07: ; bbWeight=98.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- cmp edx, r10d
- jae G_M35926_IG16
- mov r11d, dword ptr [rcx+4*r9+0x10]
- mov ebx, eax
- cmp r11d, dword ptr [rcx+4*rbx+0x10]
+ cmp eax, r10d
+ jae SHORT G_M35926_IG16
+ mov r9d, dword ptr [rcx+4*rax+0x10]
+ cmp r9d, dword ptr [rcx+4*rdx+0x10]
jg SHORT G_M35926_IG10
- ;; size=23 bbWeight=98.98 PerfScore 742.35
+ ;; size=17 bbWeight=98.98 PerfScore 717.61
G_M35926_IG08: ; bbWeight=98.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- inc eax
- cmp eax, 0x1D4C
+ inc edx
+ cmp edx, 0x1D4C
jle SHORT G_M35926_IG07
- ;; size=9 bbWeight=98.98 PerfScore 148.47
+ ;; size=10 bbWeight=98.98 PerfScore 148.47
G_M35926_IG09: ; bbWeight=0.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M35926_IG14
;; size=2 bbWeight=0.02 PerfScore 0.04
G_M35926_IG10: ; bbWeight=0.08, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r11d, eax
- mov r11d, dword ptr [rcx+4*r11+0x10]
- mov ebx, dword ptr [rcx+4*r9+0x10]
- mov esi, eax
- mov dword ptr [rcx+4*rsi+0x10], ebx
- mov dword ptr [rcx+4*r9+0x10], r11d
+ mov r9d, dword ptr [rcx+4*rdx+0x10]
+ mov r11d, dword ptr [rcx+4*rax+0x10]
+ mov dword ptr [rcx+4*rdx+0x10], r11d
+ mov dword ptr [rcx+4*rax+0x10], r9d
jmp SHORT G_M35926_IG08
- ;; size=26 bbWeight=0.08 PerfScore 0.67
+ ;; size=22 bbWeight=0.08 PerfScore 0.63
G_M35926_IG11: ; bbWeight=0.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ mov edx, edx
mov r10d, dword ptr [rcx+0x08]
- mov r9d, edx
- ;; size=7 bbWeight=0.00 PerfScore 0.00
+ ;; size=6 bbWeight=0.00 PerfScore 0.00
G_M35926_IG12: ; bbWeight=1.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- cmp edx, r10d
- jae SHORT G_M35926_IG16
- mov r11d, dword ptr [rcx+4*r9+0x10]
cmp eax, r10d
jae SHORT G_M35926_IG16
- mov ebx, eax
- cmp r11d, dword ptr [rcx+4*rbx+0x10]
+ mov r9d, dword ptr [rcx+4*rax+0x10]
+ cmp edx, r10d
+ jae SHORT G_M35926_IG16
+ cmp r9d, dword ptr [rcx+4*rdx+0x10]
jg SHORT G_M35926_IG15
- ;; size=24 bbWeight=1.00 PerfScore 8.75
+ ;; size=22 bbWeight=1.00 PerfScore 8.50
G_M35926_IG13: ; bbWeight=1.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- inc eax
- cmp eax, 0x1D4C
- jle SHORT G_M35926_IG12
- ;; size=9 bbWeight=1.00 PerfScore 1.50
-G_M35926_IG14: ; bbWeight=0.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
inc edx
- cmp edx, r8d
+ cmp edx, 0x1D4C
+ jle SHORT G_M35926_IG12
+ ;; size=10 bbWeight=1.00 PerfScore 1.50
+G_M35926_IG14: ; bbWeight=0.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ inc eax
+ cmp eax, r8d
jg SHORT G_M35926_IG17
jmp G_M35926_IG03
;; size=12 bbWeight=0.02 PerfScore 0.07
G_M35926_IG15: ; bbWeight=0.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r11d, eax
- mov r11d, dword ptr [rcx+4*r11+0x10]
- mov ebx, dword ptr [rcx+4*r9+0x10]
- mov esi, eax
- mov dword ptr [rcx+4*rsi+0x10], ebx
- mov dword ptr [rcx+4*r9+0x10], r11d
+ mov r9d, dword ptr [rcx+4*rdx+0x10]
+ mov r11d, dword ptr [rcx+4*rax+0x10]
+ mov dword ptr [rcx+4*rdx+0x10], r11d
+ mov dword ptr [rcx+4*rax+0x10], r9d
jmp SHORT G_M35926_IG13
- ;; size=26 bbWeight=0.00 PerfScore 0.01
+ ;; size=22 bbWeight=0.00 PerfScore 0.01
G_M35926_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
call CORINFO_HELP_RNGCHKFAIL
@@ -122,13 +117,11 @@ G_M35926_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
;; size=1 bbWeight=0 PerfScore 0.00
G_M35926_IG18: ; bbWeight=0, epilog, nogc, extend
add rsp, 176
- pop rbx
- pop rsi
pop rbp
ret
- ;; size=11 bbWeight=0 PerfScore 0.00
+ ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 242, prolog size 47, PerfScore 914.27, instruction count 67, allocated bytes for code 242 (MethodHash=0def73a9) for method Benchstone.BenchI.BubbleSort2:Inner(int[]) (Tier1-OSR)
+; Total bytes of code 201, prolog size 25, PerfScore 887.49, instruction count 58, allocated bytes for code 201 (MethodHash=0def73a9) for method Benchstone.BenchI.BubbleSort2:Inner(int[]) (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -136,16 +129,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x14
- CountOfUnwindCodes: 8
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 4
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x14 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
- Scaled Small Offset: 22 * 8 = 176 = 0x000B0
- CodeOffset: 0x0C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rsi (6)
- Scaled Small Offset: 23 * 8 = 184 = 0x000B8
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
CodeOffset: 0x00 UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small
Size: 17 * 8 = 136 = 0x00088
CodeOffset: 0x00 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-27 (-11.54%) : 100092.dasm - Benchstone.BenchI.BubbleSort:SortArray(int[],int) (Tier1-OSR)
@@ -11,130 +11,128 @@
;
; V00 arg0 [V00,T02] ( 13,307.86) ref -> rcx class-hnd single-def <int[]>
; V01 arg1 [V01,T07] ( 7,103.97) int -> rdx single-def
-; V02 loc0 [V02,T10] ( 4, 54.91) ubyte -> r8
+; V02 loc0 [V02,T10] ( 4, 54.91) ubyte -> rax
; V03 loc1 [V03,T08] ( 4,105.87) int -> r9
-; V04 loc2 [V04,T00] ( 14,452.92) int -> rax
+; V04 loc2 [V04,T12] ( 5, 3.97) int -> r8
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T06] ( 4,211.73) int -> rsi "Strict ordering of exceptions for Array store"
-; V07 cse0 [V07,T03] ( 3,248.44) int -> rsi "CSE - aggressive"
-; V08 cse1 [V08,T12] ( 3, 2.51) int -> rsi "CSE - aggressive"
-; V09 cse2 [V09,T13] ( 3, 2.51) int -> r9 "CSE - aggressive"
-; V10 cse3 [V10,T04] ( 3,248.44) int -> r9 "CSE - aggressive"
-; V11 cse4 [V11,T05] ( 3,248.44) long -> rbx "CSE - aggressive"
-; V12 cse5 [V12,T14] ( 3, 2.51) long -> rbx "CSE - aggressive"
-; V13 cse6 [V13,T01] ( 4,392.06) int -> r11 "CSE - aggressive"
-; V14 cse7 [V14,T09] ( 6,101.97) int -> r10 hoist multi-def "CSE - aggressive"
-; V15 cse8 [V15,T11] ( 4, 3.96) int -> r11 "CSE - aggressive"
+; V06 tmp1 [V06,T06] ( 4,211.73) int -> rbx "Strict ordering of exceptions for Array store"
+; V07 tmp2 [V07,T11] ( 7, 5.49) long -> r8 "Widened primary induction variable"
+; V08 tmp3 [V08,T00] ( 6,445.45) long -> r8 "Widened primary induction variable"
+; V09 cse0 [V09,T04] ( 3,248.44) int -> rbx "CSE - aggressive"
+; V10 cse1 [V10,T15] ( 3, 2.51) int -> rbx "CSE - aggressive"
+; V11 cse2 [V11,T16] ( 3, 2.51) int -> r9 "CSE - aggressive"
+; V12 cse3 [V12,T05] ( 3,248.44) int -> r9 "CSE - aggressive"
+; V13 cse4 [V13,T01] ( 4,346.45) long -> r11 "CSE - aggressive"
+; V14 cse5 [V14,T13] ( 4, 3.50) long -> r11 "CSE - aggressive"
+; V15 cse6 [V15,T03] ( 3,294.05) int -> r11 "CSE - aggressive"
+; V16 cse7 [V16,T14] ( 3, 2.97) int -> r11 "CSE - aggressive"
+; V17 cse8 [V17,T09] ( 6,101.97) int -> r10 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M070_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 56
- mov qword ptr [rsp+0xA8], rsi
- mov qword ptr [rsp+0xA0], rbx
- mov rcx, gword ptr [rsp+0xC0]
+ sub rsp, 40
+ mov qword ptr [rsp+0x98], rbx
+ mov rcx, gword ptr [rsp+0xB0]
; gcrRegs +[rcx]
- mov edx, dword ptr [rsp+0xC8]
- mov r8d, dword ptr [rsp+0x74]
- mov eax, dword ptr [rsp+0x6C]
- ;; size=44 bbWeight=1 PerfScore 10.25
+ mov edx, dword ptr [rsp+0xB8]
+ mov eax, dword ptr [rsp+0x64]
+ mov r8d, dword ptr [rsp+0x5C]
+ ;; size=36 bbWeight=1 PerfScore 9.25
G_M070_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M070_IG04
;; size=2 bbWeight=1 PerfScore 2.00
G_M070_IG03: ; bbWeight=0.99, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- xor r8d, r8d
xor eax, eax
+ xor r8d, r8d
;; size=5 bbWeight=0.99 PerfScore 0.50
-G_M070_IG04: ; bbWeight=0.99, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- cmp eax, edx
- jge G_M070_IG14
- ;; size=8 bbWeight=0.99 PerfScore 1.24
+G_M070_IG04: ; bbWeight=0.99, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ cmp r8d, edx
+ jge SHORT G_M070_IG15
+ ;; size=5 bbWeight=0.99 PerfScore 1.24
G_M070_IG05: ; bbWeight=0.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
test rcx, rcx
- je SHORT G_M070_IG11
+ je SHORT G_M070_IG12
;; size=5 bbWeight=0.98 PerfScore 1.23
G_M070_IG06: ; bbWeight=0.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r10d, eax
+ mov r10d, r8d
or r10d, edx
- jl SHORT G_M070_IG11
+ jl SHORT G_M070_IG12
mov r10d, dword ptr [rcx+0x08]
cmp r10d, edx
- jl SHORT G_M070_IG11
- ;; size=17 bbWeight=0.98 PerfScore 4.67
-G_M070_IG07: ; bbWeight=98.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r9d, eax
- mov r9d, dword ptr [rcx+4*r9+0x10]
- lea r11d, [rax+0x01]
- cmp r11d, r10d
- jae G_M070_IG17
- mov ebx, r11d
- mov esi, dword ptr [rcx+4*rbx+0x10]
- cmp r9d, esi
- jle SHORT G_M070_IG09
- ;; size=33 bbWeight=98.02 PerfScore 735.12
-G_M070_IG08: ; bbWeight=52.40, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov r8d, eax
- mov dword ptr [rcx+4*r8+0x10], esi
- mov dword ptr [rcx+4*rbx+0x10], r9d
- mov r8d, 1
- ;; size=19 bbWeight=52.40 PerfScore 131.01
-G_M070_IG09: ; bbWeight=98.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov eax, r11d
- cmp eax, edx
- jl SHORT G_M070_IG07
- ;; size=7 bbWeight=98.02 PerfScore 147.02
-G_M070_IG10: ; bbWeight=0.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M070_IG14
- ;; size=2 bbWeight=0.98 PerfScore 1.97
-G_M070_IG11: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov r10d, dword ptr [rcx+0x08]
- ;; size=4 bbWeight=0.01 PerfScore 0.02
-G_M070_IG12: ; bbWeight=0.99, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- cmp eax, r10d
- jae SHORT G_M070_IG17
- mov r9d, eax
- mov r9d, dword ptr [rcx+4*r9+0x10]
- lea r11d, [rax+0x01]
- cmp r11d, r10d
- jae SHORT G_M070_IG17
- mov ebx, r11d
- mov esi, dword ptr [rcx+4*rbx+0x10]
- cmp r9d, esi
- jg SHORT G_M070_IG16
- ;; size=34 bbWeight=0.99 PerfScore 8.66
-G_M070_IG13: ; bbWeight=0.99, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov eax, r11d
- cmp eax, edx
jl SHORT G_M070_IG12
- ;; size=7 bbWeight=0.99 PerfScore 1.49
-G_M070_IG14: ; bbWeight=0.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- test r8d, r8d
+ ;; size=17 bbWeight=0.98 PerfScore 4.67
+G_M070_IG07: ; bbWeight=0.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ mov r8d, r8d
+ ;; size=3 bbWeight=0.98 PerfScore 0.25
+G_M070_IG08: ; bbWeight=98.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ mov r9d, dword ptr [rcx+4*r8+0x10]
+ lea r11d, [r8+0x01]
+ cmp r11d, r10d
+ jae SHORT G_M070_IG18
+ mov ebx, dword ptr [rcx+4*r11+0x10]
+ cmp r9d, ebx
+ jle SHORT G_M070_IG10
+ ;; size=24 bbWeight=98.02 PerfScore 686.11
+G_M070_IG09: ; bbWeight=52.40, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ mov dword ptr [rcx+4*r8+0x10], ebx
+ mov dword ptr [rcx+4*r11+0x10], r9d
+ mov eax, 1
+ ;; size=15 bbWeight=52.40 PerfScore 117.91
+G_M070_IG10: ; bbWeight=98.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ mov r8, r11
+ cmp r8d, edx
+ jl SHORT G_M070_IG08
+ ;; size=8 bbWeight=98.02 PerfScore 147.02
+G_M070_IG11: ; bbWeight=0.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M070_IG15
+ ;; size=2 bbWeight=0.98 PerfScore 1.97
+G_M070_IG12: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ mov r8d, r8d
+ mov r10d, dword ptr [rcx+0x08]
+ ;; size=7 bbWeight=0.01 PerfScore 0.02
+G_M070_IG13: ; bbWeight=0.99, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ cmp r8d, r10d
+ jae SHORT G_M070_IG18
+ mov r9d, dword ptr [rcx+4*r8+0x10]
+ lea r11d, [r8+0x01]
+ cmp r11d, r10d
+ jae SHORT G_M070_IG18
+ mov ebx, dword ptr [rcx+4*r11+0x10]
+ cmp r9d, ebx
+ jg SHORT G_M070_IG17
+ ;; size=29 bbWeight=0.99 PerfScore 8.17
+G_M070_IG14: ; bbWeight=0.99, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ mov r8, r11
+ cmp r8d, edx
+ jl SHORT G_M070_IG13
+ ;; size=8 bbWeight=0.99 PerfScore 1.49
+G_M070_IG15: ; bbWeight=0.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ test eax, eax
jne G_M070_IG03
- ;; size=9 bbWeight=0.98 PerfScore 1.23
-G_M070_IG15: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=8 bbWeight=0.98 PerfScore 1.23
+G_M070_IG16: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx]
- add rsp, 160
+ add rsp, 152
pop rbx
- pop rsi
pop rbp
ret
- ;; size=11 bbWeight=0.01 PerfScore 0.03
-G_M070_IG16: ; bbWeight=0.53, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=10 bbWeight=0.01 PerfScore 0.02
+G_M070_IG17: ; bbWeight=0.53, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx]
- mov r8d, eax
- mov dword ptr [rcx+4*r8+0x10], esi
- mov dword ptr [rcx+4*rbx+0x10], r9d
- mov r8d, 1
- jmp SHORT G_M070_IG13
- ;; size=21 bbWeight=0.53 PerfScore 2.38
-G_M070_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov dword ptr [rcx+4*r8+0x10], ebx
+ mov dword ptr [rcx+4*r11+0x10], r9d
+ mov eax, 1
+ jmp SHORT G_M070_IG14
+ ;; size=17 bbWeight=0.53 PerfScore 2.25
+G_M070_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 234, prolog size 44, PerfScore 1048.82, instruction count 66, allocated bytes for code 234 (MethodHash=4d30ffb9) for method Benchstone.BenchI.BubbleSort:SortArray(int[],int) (Tier1-OSR)
+; Total bytes of code 207, prolog size 36, PerfScore 985.33, instruction count 60, allocated bytes for code 207 (MethodHash=4d30ffb9) for method Benchstone.BenchI.BubbleSort:SortArray(int[],int) (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -142,15 +140,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x14
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x14 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
- Scaled Small Offset: 20 * 8 = 160 = 0x000A0
- CodeOffset: 0x0C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rsi (6)
- Scaled Small Offset: 21 * 8 = 168 = 0x000A8
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x0C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ Scaled Small Offset: 19 * 8 = 152 = 0x00098
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
CodeOffset: 0x00 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 14 * 8 + 8 = 120 = 0x78
CodeOffset: 0x00 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-19 (-11.24%) : 44085.dasm - Span.Sorting:TestBubbleSortArray(int[]) (Tier1)
@@ -8,30 +8,31 @@
; with Blended PGO: edge weights are invalid, and fgCalledCount is 100
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 11,1960222.45) ref -> rcx class-hnd single-def <int[]>
+; V00 arg0 [V00,T01] ( 11,1960222.45) ref -> rcx class-hnd single-def <int[]>
; V01 loc0 [V01,T10] ( 4, 483891.96) ubyte -> r8
; V02 loc1 [V02,T07] ( 4, 963783.91) int -> r9
; V03 loc2 [V03,T09] ( 7, 502216.76) int -> rdx
-; V04 loc3 [V04,T00] ( 12,2480745.21) int -> r10
+;* V04 loc3 [V04,T16] ( 0, 0 ) int -> zero-ref
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T03] ( 4,1927567.83) int -> rsi "Strict ordering of exceptions for Array store"
-; V07 cse0 [V07,T04] ( 3,1463544.22) int -> rsi "CSE - aggressive"
-; V08 cse1 [V08,T12] ( 3, 14783.27) int -> rsi "CSE - aggressive"
-; V09 cse2 [V09,T13] ( 3, 14783.27) int -> r9 "CSE - aggressive"
-; V10 cse3 [V10,T05] ( 3,1463544.22) int -> r9 "CSE - aggressive"
-; V11 cse4 [V11,T06] ( 3,1463544.22) long -> rbx "CSE - aggressive"
-; V12 cse5 [V12,T14] ( 3, 14783.27) long -> rbx "CSE - aggressive"
-; V13 cse6 [V13,T01] ( 4,1972942.36) int -> r11 "CSE - aggressive"
-; V14 cse7 [V14,T08] ( 6, 504199.94) int -> rax "CSE - aggressive"
-; V15 cse8 [V15,T11] ( 4, 19928.71) int -> r11 "CSE - aggressive"
+; V06 tmp1 [V06,T03] ( 4,1927567.83) int -> rbx "Strict ordering of exceptions for Array store"
+; V07 tmp2 [V07,T11] ( 7, 29739.79) long -> r10 "Widened primary induction variable"
+; V08 tmp3 [V08,T00] ( 6,2451013.39) long -> r10 "Widened primary induction variable"
+; V09 cse0 [V09,T05] ( 3,1463544.22) int -> rbx "CSE - aggressive"
+; V10 cse1 [V10,T14] ( 3, 14783.27) int -> rbx "CSE - aggressive"
+; V11 cse2 [V11,T15] ( 3, 14783.27) int -> r9 "CSE - aggressive"
+; V12 cse3 [V12,T06] ( 3,1463544.22) int -> r9 "CSE - aggressive"
+; V13 cse4 [V13,T02] ( 4,1956779.81) long -> r11 "CSE - aggressive"
+; V14 cse5 [V14,T12] ( 4, 19765.45) long -> r11 "CSE - aggressive"
+; V15 cse6 [V15,T04] ( 3,1479706.77) int -> r11 "CSE - aggressive"
+; V16 cse7 [V16,T13] ( 3, 14946.53) int -> r11 "CSE - aggressive"
+; V17 cse8 [V17,T08] ( 6, 504199.94) int -> rax "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M37703_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rsi
push rbx
- sub rsp, 40
- ;; size=6 bbWeight=1 PerfScore 2.25
+ sub rsp, 32
+ ;; size=5 bbWeight=1 PerfScore 1.25
G_M37703_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
mov eax, dword ptr [rcx+0x08]
@@ -39,82 +40,80 @@ G_M37703_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
;; size=6 bbWeight=1 PerfScore 2.50
G_M37703_IG03: ; bbWeight=1000, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
xor r8d, r8d
- xor r10d, r10d
test edx, edx
- jle SHORT G_M37703_IG12
- ;; size=10 bbWeight=1000 PerfScore 1750.00
+ jle SHORT G_M37703_IG14
+ ;; size=7 bbWeight=1000 PerfScore 1500.00
G_M37703_IG04: ; bbWeight=998.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp eax, edx
- jl SHORT G_M37703_IG09
+ jl SHORT G_M37703_IG10
;; size=4 bbWeight=998.00 PerfScore 1247.50
-G_M37703_IG05: ; bbWeight=493235.59, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r9d, r10d
- mov r9d, dword ptr [rcx+4*r9+0x10]
+G_M37703_IG05: ; bbWeight=998.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ xor r10d, r10d
+ ;; size=3 bbWeight=998.00 PerfScore 249.50
+G_M37703_IG06: ; bbWeight=493235.59, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ mov r9d, dword ptr [rcx+4*r10+0x10]
lea r11d, [r10+0x01]
cmp r11d, eax
- jae SHORT G_M37703_IG14
- mov ebx, r11d
- mov esi, dword ptr [rcx+4*rbx+0x10]
- cmp r9d, esi
- jle SHORT G_M37703_IG07
- ;; size=29 bbWeight=493235.59 PerfScore 3699266.93
-G_M37703_IG06: ; bbWeight=477073.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov r8d, r10d
- mov dword ptr [rcx+4*r8+0x10], esi
- mov dword ptr [rcx+4*rbx+0x10], r9d
+ jae SHORT G_M37703_IG16
+ mov ebx, dword ptr [rcx+4*r11+0x10]
+ cmp r9d, ebx
+ jle SHORT G_M37703_IG08
+ ;; size=24 bbWeight=493235.59 PerfScore 3452649.13
+G_M37703_IG07: ; bbWeight=477073.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ mov dword ptr [rcx+4*r10+0x10], ebx
+ mov dword ptr [rcx+4*r11+0x10], r9d
mov r8d, 1
- ;; size=19 bbWeight=477073.04 PerfScore 1192682.59
-G_M37703_IG07: ; bbWeight=493235.59, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r10d, r11d
+ ;; size=16 bbWeight=477073.04 PerfScore 1073414.33
+G_M37703_IG08: ; bbWeight=493235.59, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ mov r10, r11
cmp r10d, edx
- jl SHORT G_M37703_IG05
+ jl SHORT G_M37703_IG06
;; size=8 bbWeight=493235.59 PerfScore 739853.39
-G_M37703_IG08: ; bbWeight=1000.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M37703_IG12
+G_M37703_IG09: ; bbWeight=1000.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M37703_IG14
;; size=2 bbWeight=1000.00 PerfScore 2000.00
-G_M37703_IG09: ; bbWeight=4982.18, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M37703_IG10: ; bbWeight=9.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ xor r10d, r10d
+ ;; size=3 bbWeight=9.98 PerfScore 2.49
+G_M37703_IG11: ; bbWeight=4982.18, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp r10d, eax
- jae SHORT G_M37703_IG14
- mov r9d, r10d
- mov r9d, dword ptr [rcx+4*r9+0x10]
+ jae SHORT G_M37703_IG16
+ mov r9d, dword ptr [rcx+4*r10+0x10]
lea r11d, [r10+0x01]
cmp r11d, eax
- jae SHORT G_M37703_IG14
- mov ebx, r11d
- mov esi, dword ptr [rcx+4*rbx+0x10]
- cmp r9d, esi
- jle SHORT G_M37703_IG11
- ;; size=34 bbWeight=4982.18 PerfScore 43594.05
-G_M37703_IG10: ; bbWeight=4818.92, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov r8d, r10d
- mov dword ptr [rcx+4*r8+0x10], esi
- mov dword ptr [rcx+4*rbx+0x10], r9d
+ jae SHORT G_M37703_IG16
+ mov ebx, dword ptr [rcx+4*r11+0x10]
+ cmp r9d, ebx
+ jle SHORT G_M37703_IG13
+ ;; size=29 bbWeight=4982.18 PerfScore 41102.97
+G_M37703_IG12: ; bbWeight=4818.92, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ mov dword ptr [rcx+4*r10+0x10], ebx
+ mov dword ptr [rcx+4*r11+0x10], r9d
mov r8d, 1
- ;; size=19 bbWeight=4818.92 PerfScore 12047.30
-G_M37703_IG11: ; bbWeight=4982.18, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r10d, r11d
+ ;; size=16 bbWeight=4818.92 PerfScore 10842.57
+G_M37703_IG13: ; bbWeight=4982.18, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ mov r10, r11
cmp r10d, edx
- jl SHORT G_M37703_IG09
+ jl SHORT G_M37703_IG11
;; size=8 bbWeight=4982.18 PerfScore 7473.27
-G_M37703_IG12: ; bbWeight=1000.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M37703_IG14: ; bbWeight=1000.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
dec edx
test r8d, r8d
- jne G_M37703_IG03
- ;; size=11 bbWeight=1000.00 PerfScore 1500.00
-G_M37703_IG13: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jne SHORT G_M37703_IG03
+ ;; size=7 bbWeight=1000.00 PerfScore 1500.00
+G_M37703_IG15: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx]
- add rsp, 40
+ add rsp, 32
pop rbx
- pop rsi
ret
- ;; size=7 bbWeight=1.00 PerfScore 2.25
-G_M37703_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=6 bbWeight=1.00 PerfScore 1.75
+G_M37703_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 169, prolog size 6, PerfScore 5701422.02, instruction count 55, allocated bytes for code 169 (MethodHash=e4a36cb8) for method Span.Sorting:TestBubbleSortArray(int[]) (Tier1)
+; Total bytes of code 150, prolog size 5, PerfScore 5331840.64, instruction count 48, allocated bytes for code 150 (MethodHash=e4a36cb8) for method Span.Sorting:TestBubbleSortArray(int[]) (Tier1)
; ============================================================
Unwind Info:
@@ -122,11 +121,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x06
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+8 (+17.39%) : 101490.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
@@ -9,11 +9,12 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 5, 3 ) ref -> rcx class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
+; V00 arg0 [V00,T00] ( 6, 3 ) ref -> rcx class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
; V01 loc0 [V01,T01] ( 4, 1 ) int -> rax
-; V02 loc1 [V02,T02] ( 5, 0 ) int -> rdx
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
+; V05 tmp2 [V05,T02] ( 6, 0 ) long -> rdx "Widened primary induction variable"
;
; Lcl frame size = 40
@@ -35,13 +36,14 @@ G_M16110_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {
xor edx, edx
jmp SHORT G_M16110_IG06
;; size=4 bbWeight=0 PerfScore 0.00
-G_M16110_IG05: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov r8d, edx
- mov r8, gword ptr [rcx+8*r8+0x10]
+G_M16110_IG05: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ cmp edx, dword ptr [rcx+0x08]
+ jae SHORT G_M16110_IG08
+ mov r8, gword ptr [rcx+8*rdx+0x10]
; gcrRegs +[r8]
add eax, dword ptr [r8+0x3C]
inc edx
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M16110_IG06: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r8]
cmp dword ptr [rcx+0x08], edx
@@ -51,8 +53,14 @@ G_M16110_IG07: ; bbWeight=0, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0 PerfScore 0.00
+G_M16110_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rcx]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 46, prolog size 4, PerfScore 3.25, instruction count 17, allocated bytes for code 46 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
+; Total bytes of code 54, prolog size 4, PerfScore 3.25, instruction count 20, allocated bytes for code 54 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
; ============================================================
Unwind Info:
+8 (+17.39%) : 27384.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
@@ -9,11 +9,12 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 5, 3 ) ref -> rcx class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
+; V00 arg0 [V00,T00] ( 6, 3 ) ref -> rcx class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
; V01 loc0 [V01,T01] ( 4, 1 ) int -> rax
-; V02 loc1 [V02,T02] ( 5, 0 ) int -> rdx
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
+; V05 tmp2 [V05,T02] ( 6, 0 ) long -> rdx "Widened primary induction variable"
;
; Lcl frame size = 40
@@ -35,13 +36,14 @@ G_M16110_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {
xor edx, edx
jmp SHORT G_M16110_IG06
;; size=4 bbWeight=0 PerfScore 0.00
-G_M16110_IG05: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov r8d, edx
- mov r8, gword ptr [rcx+8*r8+0x10]
+G_M16110_IG05: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ cmp edx, dword ptr [rcx+0x08]
+ jae SHORT G_M16110_IG08
+ mov r8, gword ptr [rcx+8*rdx+0x10]
; gcrRegs +[r8]
add eax, dword ptr [r8+0x3C]
inc edx
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M16110_IG06: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r8]
cmp dword ptr [rcx+0x08], edx
@@ -51,8 +53,14 @@ G_M16110_IG07: ; bbWeight=0, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0 PerfScore 0.00
+G_M16110_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rcx]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 46, prolog size 4, PerfScore 3.25, instruction count 17, allocated bytes for code 46 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
+; Total bytes of code 54, prolog size 4, PerfScore 3.25, instruction count 20, allocated bytes for code 54 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
; ============================================================
Unwind Info:
+8 (+18.60%) : 42090.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (Tier1)
@@ -11,14 +11,15 @@
; V00 arg0 [V00,T03] ( 4, 8 ) byref -> rcx single-def
; V01 loc0 [V01,T01] ( 4, 19.08) int -> rax
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V03 loc2 [V03,T00] ( 5, 35.15) int -> r8
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) ubyte -> zero-ref
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) byref -> zero-ref "field V00._reference (fldOffset=0x0)" P-INDEP
;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref "field V00._length (fldOffset=0x8)" P-INDEP
; V08 tmp3 [V08,T04] ( 2, 9.54) byref -> rdx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V09 tmp4 [V09,T02] ( 3, 10.54) int -> rcx "field V02._length (fldOffset=0x8)" P-INDEP
+; V09 tmp4 [V09,T02] ( 4, 19.08) int -> rcx "field V02._length (fldOffset=0x8)" P-INDEP
;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
+; V11 tmp6 [V11,T00] ( 6, 43.59) long -> r8 "Widened primary induction variable"
;
; Lcl frame size = 40
@@ -32,25 +33,33 @@ G_M59336_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
; byrRegs +[rdx]
mov ecx, dword ptr [rcx+0x08]
; byrRegs -[rcx]
- xor r8d, r8d
test ecx, ecx
- jle SHORT G_M59336_IG04
- ;; size=15 bbWeight=1 PerfScore 5.75
-G_M59336_IG03: ; bbWeight=8.54, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref, isz
- mov r10d, r8d
- movzx r10, byte ptr [rdx+r10]
+ jle SHORT G_M59336_IG05
+ ;; size=12 bbWeight=1 PerfScore 5.50
+G_M59336_IG03: ; bbWeight=0.90, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref
+ xor r8d, r8d
+ ;; size=3 bbWeight=0.90 PerfScore 0.22
+G_M59336_IG04: ; bbWeight=8.54, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref, isz
+ cmp r8d, ecx
+ jae SHORT G_M59336_IG06
+ movzx r10, byte ptr [rdx+r8]
add eax, r10d
inc r8d
cmp r8d, ecx
- jl SHORT G_M59336_IG03
- ;; size=19 bbWeight=8.54 PerfScore 34.15
-G_M59336_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jl SHORT G_M59336_IG04
+ ;; size=21 bbWeight=8.54 PerfScore 42.69
+G_M59336_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rdx]
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
+G_M59336_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 43, prolog size 4, PerfScore 41.40, instruction count 15, allocated bytes for code 43 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (Tier1)
+; Total bytes of code 51, prolog size 4, PerfScore 49.92, instruction count 18, allocated bytes for code 51 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (Tier1)
; ============================================================
Unwind Info:
benchmarks.run_tiered.windows.x64.checked.mch
-26 (-14.77%) : 29738.dasm - Span.Sorting:TestBubbleSortArray(int[]) (Tier1)
@@ -10,110 +10,107 @@
; V00 arg0 [V00,T02] ( 11, 51 ) ref -> rcx class-hnd single-def <int[]>
; V01 loc0 [V01,T08] ( 4, 24 ) ubyte -> r8
; V02 loc1 [V02,T10] ( 4, 16 ) int -> r9
-; V03 loc2 [V03,T03] ( 7, 45 ) int -> rdx
-; V04 loc3 [V04,T00] ( 12, 80.16) int -> r10
+; V03 loc2 [V03,T04] ( 7, 45 ) int -> rdx
+;* V04 loc3 [V04,T11] ( 0, 0 ) int -> zero-ref
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T07] ( 4, 32 ) int -> rsi "Strict ordering of exceptions for Array store"
-; V07 cse0 [V07,T04] ( 3, 39.60) int -> rsi "CSE - aggressive"
-; V08 cse1 [V08,T12] ( 3, 0.40) int -> rsi "CSE - conservative"
-; V09 cse2 [V09,T13] ( 3, 0.40) int -> r9 "CSE - conservative"
-; V10 cse3 [V10,T05] ( 3, 39.60) int -> r9 "CSE - aggressive"
-; V11 cse4 [V11,T06] ( 3, 39.60) long -> rbx "CSE - aggressive"
-; V12 cse5 [V12,T01] ( 4, 63.36) int -> r11 "CSE - aggressive"
-; V13 cse6 [V13,T09] ( 6, 22.16) int -> rax "CSE - aggressive"
-; V14 cse7 [V14,T11] ( 5, 0.72) int -> r11 "CSE - conservative"
+; V06 tmp1 [V06,T07] ( 4, 32 ) int -> rbx "Strict ordering of exceptions for Array store"
+; V07 tmp2 [V07,T12] ( 7, 0.92) long -> r10 "Widened primary induction variable"
+; V08 tmp3 [V08,T00] ( 6, 75.28) long -> r10 "Widened primary induction variable"
+; V09 cse0 [V09,T05] ( 3, 39.60) int -> rbx "CSE - aggressive"
+; V10 cse1 [V10,T15] ( 3, 0.40) int -> rbx "CSE - conservative"
+; V11 cse2 [V11,T16] ( 3, 0.40) int -> r9 "CSE - conservative"
+; V12 cse3 [V12,T06] ( 3, 39.60) int -> r9 "CSE - aggressive"
+; V13 cse4 [V13,T01] ( 4, 55.44) long -> r11 "CSE - aggressive"
+; V14 cse5 [V14,T13] ( 4, 0.56) long -> r11 "CSE - conservative"
+; V15 cse6 [V15,T03] ( 3, 47.52) int -> r11 "CSE - aggressive"
+; V16 cse7 [V16,T14] ( 3, 0.48) int -> r11 "CSE - conservative"
+; V17 cse8 [V17,T09] ( 6, 22.16) int -> rax "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M37703_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rsi
push rbx
- sub rsp, 40
- ;; size=6 bbWeight=1 PerfScore 2.25
+ sub rsp, 32
+ ;; size=5 bbWeight=1 PerfScore 1.25
G_M37703_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
mov eax, dword ptr [rcx+0x08]
lea edx, [rax-0x01]
;; size=6 bbWeight=1 PerfScore 2.50
-G_M37703_IG03: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M37703_IG03: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
xor r8d, r8d
- xor r10d, r10d
test edx, edx
- jle G_M37703_IG12
- ;; size=14 bbWeight=8 PerfScore 14.00
+ jle SHORT G_M37703_IG13
+ ;; size=7 bbWeight=8 PerfScore 12.00
G_M37703_IG04: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp eax, edx
jl SHORT G_M37703_IG09
- ;; size=4 bbWeight=4 PerfScore 5.00
+ xor r10d, r10d
+ ;; size=7 bbWeight=4 PerfScore 6.00
G_M37703_IG05: ; bbWeight=15.84, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r9d, r10d
- mov r9d, dword ptr [rcx+4*r9+0x10]
+ mov r9d, dword ptr [rcx+4*r10+0x10]
lea r11d, [r10+0x01]
cmp r11d, eax
- jae SHORT G_M37703_IG14
- mov ebx, r11d
- mov esi, dword ptr [rcx+4*rbx+0x10]
- cmp r9d, esi
+ jae SHORT G_M37703_IG15
+ mov ebx, dword ptr [rcx+4*r11+0x10]
+ cmp r9d, ebx
jle SHORT G_M37703_IG07
- ;; size=29 bbWeight=15.84 PerfScore 118.80
+ ;; size=24 bbWeight=15.84 PerfScore 110.88
G_M37703_IG06: ; bbWeight=7.92, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov r8d, r10d
- mov dword ptr [rcx+4*r8+0x10], esi
- mov dword ptr [rcx+4*rbx+0x10], r9d
+ mov dword ptr [rcx+4*r10+0x10], ebx
+ mov dword ptr [rcx+4*r11+0x10], r9d
mov r8d, 1
- ;; size=19 bbWeight=7.92 PerfScore 19.80
+ ;; size=16 bbWeight=7.92 PerfScore 17.82
G_M37703_IG07: ; bbWeight=15.84, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r10d, r11d
+ mov r10, r11
cmp r10d, edx
jl SHORT G_M37703_IG05
;; size=8 bbWeight=15.84 PerfScore 23.76
G_M37703_IG08: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M37703_IG12
+ jmp SHORT G_M37703_IG13
;; size=2 bbWeight=8 PerfScore 16.00
-G_M37703_IG09: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M37703_IG09: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ xor r10d, r10d
+ ;; size=3 bbWeight=0.04 PerfScore 0.01
+G_M37703_IG10: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp r10d, eax
- jae SHORT G_M37703_IG14
- mov r9d, r10d
- mov r9d, dword ptr [rcx+4*r9+0x10]
+ jae SHORT G_M37703_IG15
+ mov r9d, dword ptr [rcx+4*r10+0x10]
lea r11d, [r10+0x01]
cmp r11d, eax
- jae SHORT G_M37703_IG14
- mov esi, r11d
- mov esi, dword ptr [rcx+4*rsi+0x10]
- cmp r9d, esi
- jle SHORT G_M37703_IG11
- ;; size=34 bbWeight=0.16 PerfScore 1.40
-G_M37703_IG10: ; bbWeight=0.08, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov r8d, r10d
- mov dword ptr [rcx+4*r8+0x10], esi
- mov r10d, r11d
- mov dword ptr [rcx+4*r10+0x10], r9d
+ jae SHORT G_M37703_IG15
+ mov ebx, dword ptr [rcx+4*r11+0x10]
+ cmp r9d, ebx
+ jle SHORT G_M37703_IG12
+ ;; size=29 bbWeight=0.16 PerfScore 1.32
+G_M37703_IG11: ; bbWeight=0.08, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ mov dword ptr [rcx+4*r10+0x10], ebx
+ mov dword ptr [rcx+4*r11+0x10], r9d
mov r8d, 1
- ;; size=22 bbWeight=0.08 PerfScore 0.22
-G_M37703_IG11: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r10d, r11d
+ ;; size=16 bbWeight=0.08 PerfScore 0.18
+G_M37703_IG12: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ mov r10, r11
cmp r10d, edx
- jl SHORT G_M37703_IG09
+ jl SHORT G_M37703_IG10
;; size=8 bbWeight=0.16 PerfScore 0.24
-G_M37703_IG12: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M37703_IG13: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
dec edx
test r8d, r8d
- jne G_M37703_IG03
- ;; size=11 bbWeight=8 PerfScore 12.00
-G_M37703_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jne SHORT G_M37703_IG03
+ ;; size=7 bbWeight=8 PerfScore 12.00
+G_M37703_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx]
- add rsp, 40
+ add rsp, 32
pop rbx
- pop rsi
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M37703_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=6 bbWeight=1 PerfScore 1.75
+G_M37703_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 6, PerfScore 218.22, instruction count 56, allocated bytes for code 176 (MethodHash=e4a36cb8) for method Span.Sorting:TestBubbleSortArray(int[]) (Tier1)
+; Total bytes of code 150, prolog size 5, PerfScore 205.71, instruction count 48, allocated bytes for code 150 (MethodHash=e4a36cb8) for method Span.Sorting:TestBubbleSortArray(int[]) (Tier1)
; ============================================================
Unwind Info:
@@ -121,11 +118,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x06
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-33 (-13.92%) : 29736.dasm - Span.Sorting:TestBubbleSortArray(int[]) (Tier1-OSR)
@@ -8,128 +8,124 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 13, 58.04) ref -> rcx class-hnd single-def <int[]>
-; V01 loc0 [V01,T09] ( 4, 18 ) ubyte -> r8
-; V02 loc1 [V02,T10] ( 4, 16 ) int -> r9
-; V03 loc2 [V03,T03] ( 7, 48 ) int -> rdx
-; V04 loc3 [V04,T00] ( 14, 86.16) int -> rax
+; V00 arg0 [V00,T01] ( 13, 58.04) ref -> rcx class-hnd single-def <int[]>
+; V01 loc0 [V01,T10] ( 4, 18 ) ubyte -> r8
+; V02 loc1 [V02,T11] ( 4, 16 ) int -> r9
+; V03 loc2 [V03,T03] ( 7, 48 ) int -> rax
+; V04 loc3 [V04,T09] ( 5, 18.04) int -> rdx
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T07] ( 4, 32 ) int -> rsi "Strict ordering of exceptions for Array store"
-; V07 cse0 [V07,T04] ( 3, 39.60) int -> rsi "CSE - aggressive"
-; V08 cse1 [V08,T12] ( 3, 0.40) int -> rsi "CSE - conservative"
-; V09 cse2 [V09,T13] ( 3, 0.40) int -> r9 "CSE - conservative"
-; V10 cse3 [V10,T05] ( 3, 39.60) int -> r9 "CSE - aggressive"
-; V11 cse4 [V11,T06] ( 3, 39.60) long -> rbx "CSE - aggressive"
-; V12 cse5 [V12,T01] ( 4, 63.36) int -> r11 "CSE - aggressive"
-; V13 cse6 [V13,T08] ( 6, 24.20) int -> r10 hoist multi-def "CSE - aggressive"
-; V14 cse7 [V14,T11] ( 5, 0.72) int -> r11 "CSE - conservative"
+; V06 tmp1 [V06,T07] ( 4, 32 ) int -> rbx "Strict ordering of exceptions for Array store"
+; V07 tmp2 [V07,T12] ( 7, 0.92) long -> rdx "Widened primary induction variable"
+; V08 tmp3 [V08,T00] ( 6, 75.28) long -> rdx "Widened primary induction variable"
+; V09 cse0 [V09,T05] ( 3, 39.60) int -> rbx "CSE - aggressive"
+; V10 cse1 [V10,T15] ( 3, 0.40) int -> rbx "CSE - conservative"
+; V11 cse2 [V11,T16] ( 3, 0.40) int -> r9 "CSE - conservative"
+; V12 cse3 [V12,T06] ( 3, 39.60) int -> r9 "CSE - aggressive"
+; V13 cse4 [V13,T02] ( 4, 55.44) long -> r11 "CSE - aggressive"
+; V14 cse5 [V14,T13] ( 4, 0.56) long -> r11 "CSE - conservative"
+; V15 cse6 [V15,T04] ( 3, 47.52) int -> r11 "CSE - aggressive"
+; V16 cse7 [V16,T14] ( 3, 0.48) int -> r11 "CSE - conservative"
+; V17 cse8 [V17,T08] ( 6, 24.20) int -> r10 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M37703_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 56
- mov qword ptr [rsp+0xB8], rsi
- mov qword ptr [rsp+0xB0], rbx
- mov rcx, gword ptr [rsp+0xD0]
+ sub rsp, 40
+ mov qword ptr [rsp+0xA8], rbx
+ mov rcx, gword ptr [rsp+0xC0]
; gcrRegs +[rcx]
- mov r8d, dword ptr [rsp+0x84]
- mov edx, dword ptr [rsp+0x7C]
- mov eax, dword ptr [rsp+0x78]
- ;; size=44 bbWeight=0.01 PerfScore 0.10
+ mov r8d, dword ptr [rsp+0x74]
+ mov eax, dword ptr [rsp+0x6C]
+ mov edx, dword ptr [rsp+0x68]
+ ;; size=33 bbWeight=0.01 PerfScore 0.09
G_M37703_IG02: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M37703_IG04
;; size=2 bbWeight=0.01 PerfScore 0.02
G_M37703_IG03: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
xor r8d, r8d
- xor eax, eax
+ xor edx, edx
;; size=5 bbWeight=2 PerfScore 1.00
G_M37703_IG04: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- cmp eax, edx
+ cmp edx, eax
jge G_M37703_IG14
;; size=8 bbWeight=8 PerfScore 10.00
G_M37703_IG05: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
test rcx, rcx
je SHORT G_M37703_IG10
- mov r10d, eax
- or r10d, edx
+ mov r10d, edx
+ or r10d, eax
jl SHORT G_M37703_IG10
mov r10d, dword ptr [rcx+0x08]
- cmp r10d, edx
+ cmp r10d, eax
jl SHORT G_M37703_IG10
- ;; size=22 bbWeight=4 PerfScore 24.00
+ mov edx, edx
+ ;; size=24 bbWeight=4 PerfScore 25.00
G_M37703_IG06: ; bbWeight=15.84, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r9d, eax
- mov r9d, dword ptr [rcx+4*r9+0x10]
- lea r11d, [rax+0x01]
+ mov r9d, dword ptr [rcx+4*rdx+0x10]
+ lea r11d, [rdx+0x01]
cmp r11d, r10d
- jae G_M37703_IG16
- mov ebx, r11d
- mov esi, dword ptr [rcx+4*rbx+0x10]
- cmp r9d, esi
+ jae SHORT G_M37703_IG16
+ mov ebx, dword ptr [rcx+4*r11+0x10]
+ cmp r9d, ebx
jle SHORT G_M37703_IG08
- ;; size=33 bbWeight=15.84 PerfScore 118.80
+ ;; size=24 bbWeight=15.84 PerfScore 110.88
G_M37703_IG07: ; bbWeight=7.92, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov r8d, eax
- mov dword ptr [rcx+4*r8+0x10], esi
- mov dword ptr [rcx+4*rbx+0x10], r9d
+ mov dword ptr [rcx+4*rdx+0x10], ebx
+ mov dword ptr [rcx+4*r11+0x10], r9d
mov r8d, 1
- ;; size=19 bbWeight=7.92 PerfScore 19.80
+ ;; size=15 bbWeight=7.92 PerfScore 17.82
G_M37703_IG08: ; bbWeight=15.84, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov eax, r11d
- cmp eax, edx
+ mov rdx, r11
+ cmp edx, eax
jl SHORT G_M37703_IG06
;; size=7 bbWeight=15.84 PerfScore 23.76
G_M37703_IG09: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M37703_IG14
;; size=2 bbWeight=8 PerfScore 16.00
G_M37703_IG10: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ mov edx, edx
mov r10d, dword ptr [rcx+0x08]
- ;; size=4 bbWeight=0.04 PerfScore 0.08
+ ;; size=6 bbWeight=0.04 PerfScore 0.09
G_M37703_IG11: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- cmp eax, r10d
+ cmp edx, r10d
jae SHORT G_M37703_IG16
- mov r9d, eax
- mov r9d, dword ptr [rcx+4*r9+0x10]
- lea r11d, [rax+0x01]
+ mov r9d, dword ptr [rcx+4*rdx+0x10]
+ lea r11d, [rdx+0x01]
cmp r11d, r10d
jae SHORT G_M37703_IG16
- mov esi, r11d
- mov esi, dword ptr [rcx+4*rsi+0x10]
- cmp r9d, esi
+ mov ebx, dword ptr [rcx+4*r11+0x10]
+ cmp r9d, ebx
jle SHORT G_M37703_IG13
- ;; size=34 bbWeight=0.16 PerfScore 1.40
+ ;; size=29 bbWeight=0.16 PerfScore 1.32
G_M37703_IG12: ; bbWeight=0.08, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov r8d, eax
- mov dword ptr [rcx+4*r8+0x10], esi
- mov eax, r11d
- mov dword ptr [rcx+4*rax+0x10], r9d
+ mov dword ptr [rcx+4*rdx+0x10], ebx
+ mov dword ptr [rcx+4*r11+0x10], r9d
mov r8d, 1
- ;; size=22 bbWeight=0.08 PerfScore 0.22
+ ;; size=15 bbWeight=0.08 PerfScore 0.18
G_M37703_IG13: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov eax, r11d
- cmp eax, edx
+ mov rdx, r11
+ cmp edx, eax
jl SHORT G_M37703_IG11
;; size=7 bbWeight=0.16 PerfScore 0.24
G_M37703_IG14: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- dec edx
+ dec eax
test r8d, r8d
jne G_M37703_IG03
;; size=11 bbWeight=8 PerfScore 12.00
G_M37703_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx]
- add rsp, 176
+ add rsp, 168
pop rbx
- pop rsi
pop rbp
ret
- ;; size=11 bbWeight=1 PerfScore 2.75
+ ;; size=10 bbWeight=1 PerfScore 2.25
G_M37703_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 237, prolog size 44, PerfScore 230.17, instruction count 67, allocated bytes for code 237 (MethodHash=e4a36cb8) for method Span.Sorting:TestBubbleSortArray(int[]) (Tier1-OSR)
+; Total bytes of code 204, prolog size 33, PerfScore 220.65, instruction count 60, allocated bytes for code 204 (MethodHash=e4a36cb8) for method Span.Sorting:TestBubbleSortArray(int[]) (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -137,16 +133,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x14
- CountOfUnwindCodes: 8
+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 6
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x14 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
- Scaled Small Offset: 22 * 8 = 176 = 0x000B0
- CodeOffset: 0x0C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rsi (6)
- Scaled Small Offset: 23 * 8 = 184 = 0x000B8
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x0C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ Scaled Small Offset: 21 * 8 = 168 = 0x000A8
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
CodeOffset: 0x00 UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small
Size: 17 * 8 = 136 = 0x00088
CodeOffset: 0x00 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-27 (-12.92%) : 53142.dasm - Benchstone.BenchI.BubbleSort2:Inner(int[]) (Tier1-OSR)
@@ -8,38 +8,39 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 13, 58.04) ref -> rcx class-hnd single-def <int[]>
-; V01 loc0 [V01,T09] ( 1, 8 ) int -> r8
-; V02 loc1 [V02,T02] ( 8, 46.04) int -> rdx
-; V03 loc2 [V03,T00] ( 14, 86.16) int -> rax
-; V04 loc3 [V04,T08] ( 4, 16 ) int -> rbx
+; V00 arg0 [V00,T02] ( 13, 58.04) ref -> rcx class-hnd single-def <int[]>
+; V01 loc0 [V01,T09] ( 1, 8 ) int -> rdx
+; V02 loc1 [V02,T13] ( 1, 0.01) int -> r8
+; V03 loc2 [V03,T07] ( 5, 18.04) int -> rax
+; V04 loc3 [V04,T08] ( 4, 16 ) int -> r11
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T05] ( 4, 32 ) int -> r11 "Strict ordering of exceptions for Array store"
-; V07 cse0 [V07,T03] ( 3, 39.60) int -> r11 "CSE - aggressive"
-; V08 cse1 [V08,T10] ( 3, 0.40) int -> rbx "CSE - conservative"
-; V09 cse2 [V09,T11] ( 3, 0.40) int -> r11 "CSE - conservative"
-; V10 cse3 [V10,T04] ( 3, 39.60) int -> rbx "CSE - aggressive"
-; V11 cse4 [V11,T07] ( 6, 24.20) int -> r10 hoist multi-def "CSE - aggressive"
-; V12 cse5 [V12,T06] ( 6, 28.04) long -> r9 hoist multi-def "CSE - aggressive"
+; V06 tmp1 [V06,T05] ( 4, 32 ) int -> r9 "Strict ordering of exceptions for Array store"
+; V07 tmp2 [V07,T01] ( 11, 66.01) long -> r8 "Widened primary induction variable"
+; V08 tmp3 [V08,T10] ( 7, 0.92) long -> rax "Widened primary induction variable"
+; V09 tmp4 [V09,T00] ( 6, 75.28) long -> rax "Widened primary induction variable"
+; V10 cse0 [V10,T03] ( 3, 39.60) int -> r9 "CSE - aggressive"
+; V11 cse1 [V11,T11] ( 3, 0.40) int -> r11 "CSE - conservative"
+; V12 cse2 [V12,T12] ( 3, 0.40) int -> r9 "CSE - conservative"
+; V13 cse3 [V13,T04] ( 3, 39.60) int -> r11 "CSE - aggressive"
+; V14 cse4 [V14,T06] ( 6, 24.20) int -> r10 hoist multi-def "CSE - aggressive"
;
; Lcl frame size = 40
G_M35926_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 56
- mov qword ptr [rsp+0xB8], rsi
- mov qword ptr [rsp+0xB0], rbx
- mov rcx, gword ptr [rsp+0xD0]
+ sub rsp, 40
+ mov rcx, gword ptr [rsp+0xC0]
; gcrRegs +[rcx]
- mov r8d, dword ptr [rsp+0x84]
- mov edx, dword ptr [rsp+0x80]
- mov eax, dword ptr [rsp+0x7C]
- ;; size=47 bbWeight=0.01 PerfScore 0.10
+ mov edx, dword ptr [rsp+0x74]
+ mov r8d, dword ptr [rsp+0x70]
+ mov eax, dword ptr [rsp+0x6C]
+ ;; size=25 bbWeight=0.01 PerfScore 0.08
G_M35926_IG02: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ mov r8d, r8d
jmp SHORT G_M35926_IG04
- ;; size=2 bbWeight=0.01 PerfScore 0.02
+ ;; size=5 bbWeight=0.01 PerfScore 0.02
G_M35926_IG03: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov eax, edx
- ;; size=2 bbWeight=2 PerfScore 0.50
+ mov eax, r8d
+ ;; size=3 bbWeight=2 PerfScore 0.50
G_M35926_IG04: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp eax, 0x1D4C
jg SHORT G_M35926_IG14
@@ -52,22 +53,20 @@ G_M35926_IG05: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
mov r10d, dword ptr [rcx+0x08]
cmp r10d, 0x1D4C
jle SHORT G_M35926_IG10
- mov r9d, edx
- ;; size=25 bbWeight=4 PerfScore 24.00
+ mov eax, eax
+ ;; size=24 bbWeight=4 PerfScore 24.00
G_M35926_IG06: ; bbWeight=15.84, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- cmp edx, r10d
+ cmp r8d, r10d
jae SHORT G_M35926_IG16
- mov r11d, dword ptr [rcx+4*r9+0x10]
- mov ebx, eax
- mov ebx, dword ptr [rcx+4*rbx+0x10]
- cmp r11d, ebx
+ mov r9d, dword ptr [rcx+4*r8+0x10]
+ mov r11d, dword ptr [rcx+4*rax+0x10]
+ cmp r9d, r11d
jle SHORT G_M35926_IG08
- ;; size=21 bbWeight=15.84 PerfScore 106.92
+ ;; size=20 bbWeight=15.84 PerfScore 102.96
G_M35926_IG07: ; bbWeight=7.92, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov esi, eax
- mov dword ptr [rcx+4*rsi+0x10], r11d
- mov dword ptr [rcx+4*r9+0x10], ebx
- ;; size=12 bbWeight=7.92 PerfScore 17.82
+ mov dword ptr [rcx+4*rax+0x10], r9d
+ mov dword ptr [rcx+4*r8+0x10], r11d
+ ;; size=10 bbWeight=7.92 PerfScore 15.84
G_M35926_IG08: ; bbWeight=15.84, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
inc eax
cmp eax, 0x1D4C
@@ -77,50 +76,46 @@ G_M35926_IG09: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
jmp SHORT G_M35926_IG14
;; size=2 bbWeight=8 PerfScore 16.00
G_M35926_IG10: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ mov eax, eax
mov r10d, dword ptr [rcx+0x08]
- mov r9d, edx
- ;; size=7 bbWeight=0.04 PerfScore 0.09
+ ;; size=6 bbWeight=0.04 PerfScore 0.09
G_M35926_IG11: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- cmp edx, r10d
+ cmp r8d, r10d
jae SHORT G_M35926_IG16
- mov r11d, dword ptr [rcx+4*r9+0x10]
+ mov r9d, dword ptr [rcx+4*r8+0x10]
cmp eax, r10d
jae SHORT G_M35926_IG16
- mov ebx, eax
- mov ebx, dword ptr [rcx+4*rbx+0x10]
- cmp r11d, ebx
+ mov r11d, dword ptr [rcx+4*rax+0x10]
+ cmp r9d, r11d
jle SHORT G_M35926_IG13
- ;; size=26 bbWeight=0.16 PerfScore 1.28
+ ;; size=25 bbWeight=0.16 PerfScore 1.24
G_M35926_IG12: ; bbWeight=0.08, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov esi, eax
- mov dword ptr [rcx+4*rsi+0x10], r11d
- mov dword ptr [rcx+4*r9+0x10], ebx
- ;; size=12 bbWeight=0.08 PerfScore 0.18
+ mov dword ptr [rcx+4*rax+0x10], r9d
+ mov dword ptr [rcx+4*r8+0x10], r11d
+ ;; size=10 bbWeight=0.08 PerfScore 0.16
G_M35926_IG13: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
inc eax
cmp eax, 0x1D4C
jle SHORT G_M35926_IG11
;; size=9 bbWeight=0.16 PerfScore 0.24
G_M35926_IG14: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- inc edx
- cmp edx, r8d
+ inc r8d
+ cmp r8d, edx
jle G_M35926_IG03
- ;; size=11 bbWeight=8 PerfScore 12.00
+ ;; size=12 bbWeight=8 PerfScore 12.00
G_M35926_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx]
add rsp, 176
- pop rbx
- pop rsi
pop rbp
ret
- ;; size=11 bbWeight=1 PerfScore 2.75
+ ;; size=9 bbWeight=1 PerfScore 1.75
G_M35926_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 209, prolog size 47, PerfScore 215.66, instruction count 60, allocated bytes for code 209 (MethodHash=0def73a9) for method Benchstone.BenchI.BubbleSort2:Inner(int[]) (Tier1-OSR)
+; Total bytes of code 182, prolog size 25, PerfScore 208.64, instruction count 53, allocated bytes for code 182 (MethodHash=0def73a9) for method Benchstone.BenchI.BubbleSort2:Inner(int[]) (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -128,16 +123,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x14
- CountOfUnwindCodes: 8
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 4
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x14 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
- Scaled Small Offset: 22 * 8 = 176 = 0x000B0
- CodeOffset: 0x0C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rsi (6)
- Scaled Small Offset: 23 * 8 = 184 = 0x000B8
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
CodeOffset: 0x00 UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small
Size: 17 * 8 = 136 = 0x00088
CodeOffset: 0x00 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+8 (+12.50%) : 20613.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
@@ -9,18 +9,19 @@
;
; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx single-def
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V02 loc1 [V02,T00] ( 5, 17 ) int -> rdi
+;* V02 loc1 [V02,T04] ( 0, 0 ) int -> zero-ref
;* V03 loc2 [V03 ] ( 0, 0 ) ushort -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "field V00._reference (fldOffset=0x0)" P-INDEP
;* V06 tmp2 [V06 ] ( 0, 0 ) int -> zero-ref "field V00._length (fldOffset=0x8)" P-INDEP
; V07 tmp3 [V07,T03] ( 2, 5 ) byref -> rbx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp4 [V08,T02] ( 3, 6 ) int -> rsi "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp4 [V08,T02] ( 4, 10 ) int -> rsi "field V01._length (fldOffset=0x8)" P-INDEP
;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
+; V10 tmp6 [V10,T00] ( 6, 21 ) long -> rdi "Widened primary induction variable"
;
; Lcl frame size = 32
-G_M29423_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M29423_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbx
@@ -31,14 +32,15 @@ G_M29423_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
mov rbx, bword ptr [rcx]
; byrRegs +[rbx]
mov esi, dword ptr [rcx+0x08]
- xor edi, edi
test esi, esi
jle SHORT G_M29423_IG04
+ xor edi, edi
;; size=12 bbWeight=1 PerfScore 5.50
G_M29423_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
; byrRegs -[rcx]
- mov ecx, edi
- movzx rcx, word ptr [rbx+2*rcx]
+ cmp edi, esi
+ jae SHORT G_M29423_IG08
+ movzx rcx, word ptr [rbx+2*rdi]
call [System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(int):ubyte]
; gcr arg pop 0
test eax, eax
@@ -46,7 +48,7 @@ G_M29423_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
inc edi
cmp edi, esi
jl SHORT G_M29423_IG03
- ;; size=22 bbWeight=4 PerfScore 32.00
+ ;; size=24 bbWeight=4 PerfScore 36.00
G_M29423_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
xor eax, eax
@@ -68,8 +70,13 @@ G_M29423_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rdi
ret
;; size=8 bbWeight=0.50 PerfScore 1.38
+G_M29423_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 64, prolog size 7, PerfScore 43.75, instruction count 29, allocated bytes for code 64 (MethodHash=018f8d10) for method System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
+; Total bytes of code 72, prolog size 7, PerfScore 47.75, instruction count 32, allocated bytes for code 72 (MethodHash=018f8d10) for method System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
; ============================================================
Unwind Info:
+8 (+14.81%) : 42770.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
@@ -9,11 +9,12 @@
;
; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx ld-addr-op single-def
; V01 loc0 [V01,T02] ( 4, 10 ) int -> rdx
-; V02 loc1 [V02,T00] ( 5, 17 ) int -> r8
+;* V02 loc1 [V02,T05] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T04] ( 2, 5 ) byref -> rax single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T03] ( 3, 6 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp2 [V05,T03] ( 4, 10 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
+; V07 tmp4 [V07,T00] ( 6, 21 ) long -> r8 "Widened primary induction variable"
;
; Lcl frame size = 40
@@ -27,19 +28,20 @@ G_M53167_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
mov ecx, dword ptr [rcx+0x08]
; byrRegs -[rcx]
mov edx, 0xD1FFAB1E
- xor r8d, r8d
test ecx, ecx
jle SHORT G_M53167_IG04
+ xor r8d, r8d
;; size=18 bbWeight=1 PerfScore 5.75
G_M53167_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
- mov r10d, r8d
- movzx r10, byte ptr [rax+r10]
+ cmp r8d, ecx
+ jae SHORT G_M53167_IG06
+ movzx r10, byte ptr [rax+r8]
xor edx, r10d
imul edx, edx, 0xD1FFAB1E
inc r8d
cmp r8d, ecx
jl SHORT G_M53167_IG03
- ;; size=25 bbWeight=4 PerfScore 24.00
+ ;; size=27 bbWeight=4 PerfScore 28.00
G_M53167_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rax]
mov eax, edx
@@ -48,8 +50,13 @@ G_M53167_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
+G_M53167_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 54, prolog size 4, PerfScore 31.50, instruction count 17, allocated bytes for code 54 (MethodHash=48b13050) for method System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
+; Total bytes of code 62, prolog size 4, PerfScore 35.50, instruction count 20, allocated bytes for code 62 (MethodHash=48b13050) for method System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
; ============================================================
Unwind Info:
+9 (+15.00%) : 39133.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.Canon]:FreeSlow(System.Canon):this (Tier1)
@@ -10,39 +10,41 @@
; V00 this [V00,T03] ( 3, 3 ) ref -> rcx this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]>
; V01 arg1 [V01,T04] ( 3, 2.50) ref -> rdx class-hnd single-def <System.__Canon>
; V02 loc0 [V02,T01] ( 4, 6.50) ref -> rcx class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 6, 17.50) int -> rax
+; V03 loc1 [V03,T05] ( 3, 1.50) int -> r8
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T02] ( 3, 6 ) int -> r8 "CSE - aggressive"
+; V05 tmp1 [V05,T00] ( 6, 17.50) long -> r8 "Widened primary induction variable"
+; V06 cse0 [V06,T02] ( 4, 6.50) int -> rax "CSE - aggressive"
;
; Lcl frame size = 40
-G_M50542_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M50542_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 40
;; size=4 bbWeight=1 PerfScore 0.25
G_M50542_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx rdx]
mov rcx, gword ptr [rcx+0x10]
- xor eax, eax
- mov r8d, dword ptr [rcx+0x08]
- test r8d, r8d
+ mov eax, dword ptr [rcx+0x08]
+ test eax, eax
jle SHORT G_M50542_IG04
- ;; size=15 bbWeight=1 PerfScore 5.50
+ xor r8d, r8d
+ ;; size=14 bbWeight=1 PerfScore 5.50
G_M50542_IG03: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
- mov r10d, eax
- cmp gword ptr [rcx+8*r10+0x10], 0
+ cmp gword ptr [rcx+8*r8+0x10], 0
je SHORT G_M50542_IG05
- inc eax
- cmp r8d, eax
+ inc r8d
+ cmp eax, r8d
jg SHORT G_M50542_IG03
- ;; size=18 bbWeight=4 PerfScore 23.00
+ ;; size=16 bbWeight=4 PerfScore 22.00
G_M50542_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx rdx]
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M50542_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref
+G_M50542_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx rdx]
- mov eax, eax
+ cmp r8d, eax
+ jae SHORT G_M50542_IG07
+ mov eax, r8d
lea rcx, bword ptr [rcx+8*rax+0x10]
; gcrRegs -[rcx]
; byrRegs +[rcx]
@@ -50,13 +52,18 @@ G_M50542_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs -[rdx]
; byrRegs -[rcx]
nop
- ;; size=13 bbWeight=0.50 PerfScore 1.25
+ ;; size=19 bbWeight=0.50 PerfScore 1.88
G_M50542_IG06: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M50542_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 4, PerfScore 31.25, instruction count 20, allocated bytes for code 60 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
+; Total bytes of code 69, prolog size 4, PerfScore 30.88, instruction count 23, allocated bytes for code 69 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
; ============================================================
Unwind Info:
coreclr_tests.run.windows.x64.checked.mch
-26 (-14.77%) : 481453.dasm - Span.SpanBench:TestBubbleSortArray(int[]) (FullOpts)
@@ -10,110 +10,107 @@
; V00 arg0 [V00,T02] ( 11, 51 ) ref -> rcx class-hnd single-def <int[]>
; V01 loc0 [V01,T08] ( 4, 24 ) ubyte -> r8
; V02 loc1 [V02,T10] ( 4, 16 ) int -> r9
-; V03 loc2 [V03,T03] ( 7, 45 ) int -> rdx
-; V04 loc3 [V04,T00] ( 12, 80.16) int -> r10
+; V03 loc2 [V03,T04] ( 7, 45 ) int -> rdx
+;* V04 loc3 [V04,T11] ( 0, 0 ) int -> zero-ref
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T07] ( 4, 32 ) int -> rsi "Strict ordering of exceptions for Array store"
-; V07 cse0 [V07,T04] ( 3, 39.60) int -> rsi "CSE - aggressive"
-; V08 cse1 [V08,T12] ( 3, 0.40) int -> rsi "CSE - conservative"
-; V09 cse2 [V09,T13] ( 3, 0.40) int -> r9 "CSE - conservative"
-; V10 cse3 [V10,T05] ( 3, 39.60) int -> r9 "CSE - aggressive"
-; V11 cse4 [V11,T06] ( 3, 39.60) long -> rbx "CSE - aggressive"
-; V12 cse5 [V12,T01] ( 4, 63.36) int -> r11 "CSE - aggressive"
-; V13 cse6 [V13,T09] ( 6, 22.16) int -> rax "CSE - aggressive"
-; V14 cse7 [V14,T11] ( 5, 0.72) int -> r11 "CSE - conservative"
+; V06 tmp1 [V06,T07] ( 4, 32 ) int -> rbx "Strict ordering of exceptions for Array store"
+; V07 tmp2 [V07,T12] ( 7, 0.92) long -> r10 "Widened primary induction variable"
+; V08 tmp3 [V08,T00] ( 6, 75.28) long -> r10 "Widened primary induction variable"
+; V09 cse0 [V09,T05] ( 3, 39.60) int -> rbx "CSE - aggressive"
+; V10 cse1 [V10,T15] ( 3, 0.40) int -> rbx "CSE - conservative"
+; V11 cse2 [V11,T16] ( 3, 0.40) int -> r9 "CSE - conservative"
+; V12 cse3 [V12,T06] ( 3, 39.60) int -> r9 "CSE - aggressive"
+; V13 cse4 [V13,T01] ( 4, 55.44) long -> r11 "CSE - aggressive"
+; V14 cse5 [V14,T13] ( 4, 0.56) long -> r11 "CSE - conservative"
+; V15 cse6 [V15,T03] ( 3, 47.52) int -> r11 "CSE - aggressive"
+; V16 cse7 [V16,T14] ( 3, 0.48) int -> r11 "CSE - conservative"
+; V17 cse8 [V17,T09] ( 6, 22.16) int -> rax "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M43155_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rsi
push rbx
- sub rsp, 40
- ;; size=6 bbWeight=1 PerfScore 2.25
+ sub rsp, 32
+ ;; size=5 bbWeight=1 PerfScore 1.25
G_M43155_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
mov eax, dword ptr [rcx+0x08]
lea edx, [rax-0x01]
;; size=6 bbWeight=1 PerfScore 2.50
-G_M43155_IG03: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M43155_IG03: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
xor r8d, r8d
- xor r10d, r10d
test edx, edx
- jle G_M43155_IG12
- ;; size=14 bbWeight=8 PerfScore 14.00
+ jle SHORT G_M43155_IG13
+ ;; size=7 bbWeight=8 PerfScore 12.00
G_M43155_IG04: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp eax, edx
jl SHORT G_M43155_IG09
- ;; size=4 bbWeight=4 PerfScore 5.00
+ xor r10d, r10d
+ ;; size=7 bbWeight=4 PerfScore 6.00
G_M43155_IG05: ; bbWeight=15.84, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r9d, r10d
- mov r9d, dword ptr [rcx+4*r9+0x10]
+ mov r9d, dword ptr [rcx+4*r10+0x10]
lea r11d, [r10+0x01]
cmp r11d, eax
- jae SHORT G_M43155_IG14
- mov ebx, r11d
- mov esi, dword ptr [rcx+4*rbx+0x10]
- cmp r9d, esi
+ jae SHORT G_M43155_IG15
+ mov ebx, dword ptr [rcx+4*r11+0x10]
+ cmp r9d, ebx
jle SHORT G_M43155_IG07
- ;; size=29 bbWeight=15.84 PerfScore 118.80
+ ;; size=24 bbWeight=15.84 PerfScore 110.88
G_M43155_IG06: ; bbWeight=7.92, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov r8d, r10d
- mov dword ptr [rcx+4*r8+0x10], esi
- mov dword ptr [rcx+4*rbx+0x10], r9d
+ mov dword ptr [rcx+4*r10+0x10], ebx
+ mov dword ptr [rcx+4*r11+0x10], r9d
mov r8d, 1
- ;; size=19 bbWeight=7.92 PerfScore 19.80
+ ;; size=16 bbWeight=7.92 PerfScore 17.82
G_M43155_IG07: ; bbWeight=15.84, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r10d, r11d
+ mov r10, r11
cmp r10d, edx
jl SHORT G_M43155_IG05
;; size=8 bbWeight=15.84 PerfScore 23.76
G_M43155_IG08: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M43155_IG12
+ jmp SHORT G_M43155_IG13
;; size=2 bbWeight=8 PerfScore 16.00
-G_M43155_IG09: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M43155_IG09: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ xor r10d, r10d
+ ;; size=3 bbWeight=0.04 PerfScore 0.01
+G_M43155_IG10: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp r10d, eax
- jae SHORT G_M43155_IG14
- mov r9d, r10d
- mov r9d, dword ptr [rcx+4*r9+0x10]
+ jae SHORT G_M43155_IG15
+ mov r9d, dword ptr [rcx+4*r10+0x10]
lea r11d, [r10+0x01]
cmp r11d, eax
- jae SHORT G_M43155_IG14
- mov esi, r11d
- mov esi, dword ptr [rcx+4*rsi+0x10]
- cmp r9d, esi
- jle SHORT G_M43155_IG11
- ;; size=34 bbWeight=0.16 PerfScore 1.40
-G_M43155_IG10: ; bbWeight=0.08, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov r8d, r10d
- mov dword ptr [rcx+4*r8+0x10], esi
- mov r10d, r11d
- mov dword ptr [rcx+4*r10+0x10], r9d
+ jae SHORT G_M43155_IG15
+ mov ebx, dword ptr [rcx+4*r11+0x10]
+ cmp r9d, ebx
+ jle SHORT G_M43155_IG12
+ ;; size=29 bbWeight=0.16 PerfScore 1.32
+G_M43155_IG11: ; bbWeight=0.08, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ mov dword ptr [rcx+4*r10+0x10], ebx
+ mov dword ptr [rcx+4*r11+0x10], r9d
mov r8d, 1
- ;; size=22 bbWeight=0.08 PerfScore 0.22
-G_M43155_IG11: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r10d, r11d
+ ;; size=16 bbWeight=0.08 PerfScore 0.18
+G_M43155_IG12: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ mov r10, r11
cmp r10d, edx
- jl SHORT G_M43155_IG09
+ jl SHORT G_M43155_IG10
;; size=8 bbWeight=0.16 PerfScore 0.24
-G_M43155_IG12: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M43155_IG13: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
dec edx
test r8d, r8d
- jne G_M43155_IG03
- ;; size=11 bbWeight=8 PerfScore 12.00
-G_M43155_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jne SHORT G_M43155_IG03
+ ;; size=7 bbWeight=8 PerfScore 12.00
+G_M43155_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx]
- add rsp, 40
+ add rsp, 32
pop rbx
- pop rsi
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M43155_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=6 bbWeight=1 PerfScore 1.75
+G_M43155_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 6, PerfScore 218.22, instruction count 56, allocated bytes for code 176 (MethodHash=fdaf576c) for method Span.SpanBench:TestBubbleSortArray(int[]) (FullOpts)
+; Total bytes of code 150, prolog size 5, PerfScore 205.71, instruction count 48, allocated bytes for code 150 (MethodHash=fdaf576c) for method Span.SpanBench:TestBubbleSortArray(int[]) (FullOpts)
; ============================================================
Unwind Info:
@@ -121,11 +118,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x06
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-4 (-12.50%) : 481434.dasm - Span.SpanBench:TestFillAllArray(ubyte[]) (FullOpts)
@@ -8,9 +8,10 @@
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 4, 7 ) ref -> rcx class-hnd single-def <ubyte[]>
-; V01 loc0 [V01,T00] ( 6, 21 ) int -> rax
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T02] ( 3, 6 ) int -> rdx "CSE - aggressive"
+; V03 tmp1 [V03,T00] ( 6, 21 ) long -> rdx "Widened primary induction variable"
+; V04 cse0 [V04,T02] ( 3, 6 ) int -> rax "CSE - aggressive"
;
; Lcl frame size = 40
@@ -19,25 +20,24 @@ G_M36181_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=4 bbWeight=1 PerfScore 0.25
G_M36181_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
- xor eax, eax
- mov edx, dword ptr [rcx+0x08]
- test edx, edx
+ mov eax, dword ptr [rcx+0x08]
+ test eax, eax
jle SHORT G_M36181_IG04
+ xor edx, edx
;; size=9 bbWeight=1 PerfScore 3.50
G_M36181_IG03: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r8d, eax
- mov byte ptr [rcx+r8+0x10], al
- inc eax
- cmp edx, eax
+ mov byte ptr [rcx+rdx+0x10], dl
+ inc edx
+ cmp eax, edx
jg SHORT G_M36181_IG03
- ;; size=14 bbWeight=4 PerfScore 11.00
+ ;; size=10 bbWeight=4 PerfScore 10.00
G_M36181_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx]
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 32, prolog size 4, PerfScore 16.00, instruction count 12, allocated bytes for code 32 (MethodHash=50d172aa) for method Span.SpanBench:TestFillAllArray(ubyte[]) (FullOpts)
+; Total bytes of code 28, prolog size 4, PerfScore 15.00, instruction count 11, allocated bytes for code 28 (MethodHash=50d172aa) for method Span.SpanBench:TestFillAllArray(ubyte[]) (FullOpts)
; ============================================================
Unwind Info:
-8 (-11.94%) : 465347.dasm - MarshalArrayAsParam.Default.ArrayMarshal:InitBoolArray(int):ubyte
@@ -9,9 +9,10 @@
;
; V00 arg0 [V00,T03] ( 3, 3 ) int -> rcx single-def
; V01 loc0 [V01,T01] ( 5, 7 ) ref -> rax class-hnd exact single-def <ubyte[]>
-; V02 loc1 [V02,T00] ( 7, 21 ) int -> rcx
+;* V02 loc1 [V02,T04] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T02] ( 3, 6 ) int -> rdx "CSE - aggressive"
+; V04 tmp1 [V04,T00] ( 7, 21 ) long -> rdx "Widened primary induction variable"
+; V05 cse0 [V05,T02] ( 3, 6 ) int -> rcx "CSE - aggressive"
;
; Lcl frame size = 40
@@ -24,27 +25,25 @@ G_M5002_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
call CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[rax]
; gcr arg pop 0
- xor ecx, ecx
- mov edx, dword ptr [rax+0x08]
- test edx, edx
+ mov ecx, dword ptr [rax+0x08]
+ test ecx, ecx
jle SHORT G_M5002_IG07
+ xor edx, edx
;; size=27 bbWeight=1 PerfScore 5.00
G_M5002_IG03: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- test cl, 1
+ test dl, 1
jne SHORT G_M5002_IG05
;; size=5 bbWeight=4 PerfScore 5.00
G_M5002_IG04: ; bbWeight=2, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- mov r8d, ecx
- mov byte ptr [rax+r8+0x10], 1
+ mov byte ptr [rax+rdx+0x10], 1
jmp SHORT G_M5002_IG06
- ;; size=11 bbWeight=2 PerfScore 6.50
+ ;; size=7 bbWeight=2 PerfScore 6.00
G_M5002_IG05: ; bbWeight=2, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- mov r8d, ecx
- mov byte ptr [rax+r8+0x10], 0
- ;; size=9 bbWeight=2 PerfScore 2.50
+ mov byte ptr [rax+rdx+0x10], 0
+ ;; size=5 bbWeight=2 PerfScore 2.00
G_M5002_IG06: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- inc ecx
- cmp edx, ecx
+ inc edx
+ cmp ecx, edx
jg SHORT G_M5002_IG03
;; size=6 bbWeight=4 PerfScore 6.00
G_M5002_IG07: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
@@ -52,7 +51,7 @@ G_M5002_IG07: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byre
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 67, prolog size 4, PerfScore 26.50, instruction count 20, allocated bytes for code 67 (MethodHash=c661ec75) for method MarshalArrayAsParam.Default.ArrayMarshal:InitBoolArray(int):ubyte[] (FullOpts)
+; Total bytes of code 59, prolog size 4, PerfScore 25.50, instruction count 18, allocated bytes for code 59 (MethodHash=c661ec75) for method MarshalArrayAsParam.Default.ArrayMarshal:InitBoolArray(int):ubyte[] (FullOpts)
; ============================================================
Unwind Info:
+8 (+19.05%) : 518238.dasm - GitHub_5556:SpanWithLocalCopy(System.Span`1[long]):long (FullOpts)
@@ -9,14 +9,15 @@
;
; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx single-def
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[long]>
-; V02 loc1 [V02,T02] ( 3, 6 ) long -> rdx
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> r8
+; V02 loc1 [V02,T03] ( 3, 6 ) long -> rdx
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "field V00._reference (fldOffset=0x0)" P-INDEP
;* V06 tmp2 [V06 ] ( 0, 0 ) int -> zero-ref "field V00._length (fldOffset=0x8)" P-INDEP
; V07 tmp3 [V07,T04] ( 2, 5 ) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp4 [V08,T03] ( 3, 6 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp4 [V08,T02] ( 4, 10 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[long]>
+; V10 tmp6 [V10,T00] ( 6, 21 ) long -> r8 "Widened primary induction variable"
;
; Lcl frame size = 40
@@ -30,17 +31,18 @@ G_M40372_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
mov ecx, dword ptr [rcx+0x08]
; byrRegs -[rcx]
xor edx, edx
- xor r8d, r8d
test ecx, ecx
jle SHORT G_M40372_IG04
+ xor r8d, r8d
;; size=15 bbWeight=1 PerfScore 5.75
G_M40372_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
- mov edx, r8d
- mov rdx, qword ptr [rax+8*rdx]
+ cmp r8d, ecx
+ jae SHORT G_M40372_IG06
+ mov rdx, qword ptr [rax+8*r8]
inc r8d
cmp r8d, ecx
jl SHORT G_M40372_IG03
- ;; size=15 bbWeight=4 PerfScore 15.00
+ ;; size=17 bbWeight=4 PerfScore 19.00
G_M40372_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rax]
mov rax, rdx
@@ -49,8 +51,13 @@ G_M40372_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
+G_M40372_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 42, prolog size 4, PerfScore 22.50, instruction count 15, allocated bytes for code 42 (MethodHash=e720624b) for method GitHub_5556:SpanWithLocalCopy(System.Span`1[long]):long (FullOpts)
+; Total bytes of code 50, prolog size 4, PerfScore 26.50, instruction count 18, allocated bytes for code 50 (MethodHash=e720624b) for method GitHub_5556:SpanWithLocalCopy(System.Span`1[long]):long (FullOpts)
; ============================================================
Unwind Info:
+13 (+27.08%) : 480573.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
@@ -8,13 +8,14 @@
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-;* V01 loc0 [V01,T05] ( 0, 0 ) int -> zero-ref single-def
-; V02 loc1 [V02,T02] ( 4, 10 ) ubyte -> rdx
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> r8
+; V01 loc0 [V01,T05] ( 2, 5 ) int -> rdx single-def
+; V02 loc1 [V02,T02] ( 4, 10 ) ubyte -> r8
+;* V03 loc2 [V03,T06] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T04] ( 2, 5 ) byref -> rax single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T03] ( 3, 6 ) int -> rcx single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T03] ( 4, 7 ) int -> rcx single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
+; V08 tmp4 [V08,T00] ( 6, 21 ) long -> r10 "Widened primary induction variable"
;
; Lcl frame size = 40
@@ -27,30 +28,37 @@ G_M31628_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
; byrRegs +[rax]
mov ecx, dword ptr [rcx+0x08]
; byrRegs -[rcx]
- xor edx, edx
+ mov edx, ecx
xor r8d, r8d
test ecx, ecx
jle SHORT G_M31628_IG04
- ;; size=15 bbWeight=1 PerfScore 5.75
+ xor r10d, r10d
+ ;; size=18 bbWeight=1 PerfScore 6.00
G_M31628_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
- mov r10d, r8d
- movzx r10, byte ptr [rax+r10]
- xor edx, r10d
- movzx rdx, dl
- inc r8d
- cmp r8d, ecx
+ cmp r10d, edx
+ jae SHORT G_M31628_IG06
+ movzx r9, byte ptr [rax+r10]
+ xor r8d, r9d
+ movzx r8, r8b
+ inc r10d
+ cmp r10d, ecx
jl SHORT G_M31628_IG03
- ;; size=22 bbWeight=4 PerfScore 17.00
+ ;; size=25 bbWeight=4 PerfScore 21.00
G_M31628_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rax]
- mov eax, edx
- ;; size=2 bbWeight=1 PerfScore 0.25
+ mov eax, r8d
+ ;; size=3 bbWeight=1 PerfScore 0.25
G_M31628_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
+G_M31628_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 48, prolog size 4, PerfScore 24.50, instruction count 17, allocated bytes for code 48 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 61, prolog size 4, PerfScore 28.75, instruction count 21, allocated bytes for code 61 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
; ============================================================
Unwind Info:
+13 (+27.08%) : 480554.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
@@ -8,13 +8,14 @@
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-;* V01 loc0 [V01,T05] ( 0, 0 ) int -> zero-ref single-def
-; V02 loc1 [V02,T02] ( 4, 10 ) ubyte -> rdx
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> r8
+; V01 loc0 [V01,T05] ( 2, 5 ) int -> rdx single-def
+; V02 loc1 [V02,T02] ( 4, 10 ) ubyte -> r8
+;* V03 loc2 [V03,T06] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T04] ( 2, 5 ) byref -> rax single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T03] ( 3, 6 ) int -> rcx single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T03] ( 4, 7 ) int -> rcx single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[ubyte]>
+; V08 tmp4 [V08,T00] ( 6, 21 ) long -> r10 "Widened primary induction variable"
;
; Lcl frame size = 40
@@ -27,30 +28,37 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
; byrRegs +[rax]
mov ecx, dword ptr [rcx+0x08]
; byrRegs -[rcx]
- xor edx, edx
+ mov edx, ecx
xor r8d, r8d
test ecx, ecx
jle SHORT G_M44428_IG04
- ;; size=15 bbWeight=1 PerfScore 5.75
+ xor r10d, r10d
+ ;; size=18 bbWeight=1 PerfScore 6.00
G_M44428_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
- mov r10d, r8d
- movzx r10, byte ptr [rax+r10]
- xor edx, r10d
- movzx rdx, dl
- inc r8d
- cmp r8d, ecx
+ cmp r10d, edx
+ jae SHORT G_M44428_IG06
+ movzx r9, byte ptr [rax+r10]
+ xor r8d, r9d
+ movzx r8, r8b
+ inc r10d
+ cmp r10d, ecx
jl SHORT G_M44428_IG03
- ;; size=22 bbWeight=4 PerfScore 17.00
+ ;; size=25 bbWeight=4 PerfScore 21.00
G_M44428_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rax]
- mov eax, edx
- ;; size=2 bbWeight=1 PerfScore 0.25
+ mov eax, r8d
+ ;; size=3 bbWeight=1 PerfScore 0.25
G_M44428_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
+G_M44428_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 48, prolog size 4, PerfScore 24.50, instruction count 17, allocated bytes for code 48 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 61, prolog size 4, PerfScore 28.75, instruction count 21, allocated bytes for code 61 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
; ============================================================
Unwind Info:
libraries.crossgen2.windows.x64.checked.mch
-31 (-18.34%) : 176304.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
@@ -9,36 +9,35 @@
; Final local variable assignments
;
; V00 arg0 [V00,T03] ( 3, 4 ) ref -> rbx class-hnd single-def <System.Text.StringBuilder>
-; V01 arg1 [V01,T13] ( 3, 3 ) double -> mm1 single-def
-; V02 arg2 [V02,T05] ( 3, 3 ) ubyte -> r8 single-def
+; V01 arg1 [V01,T12] ( 3, 3 ) double -> mm1 single-def
+; V02 arg2 [V02,T04] ( 3, 3 ) ubyte -> r8 single-def
; V03 loc0 [V03,T02] ( 4, 9 ) int -> rsi
-; V04 loc1 [V04,T08] ( 2, 3 ) ref -> rdi class-hnd single-def <<unknown class>>
+; V04 loc1 [V04,T07] ( 2, 3 ) ref -> rdi class-hnd single-def <<unknown class>>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
-; V06 loc3 [V06,T00] ( 7, 12 ) int -> registers
+;* V06 loc3 [V06 ] ( 0, 0 ) int -> zero-ref
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T09] ( 3, 2 ) ref -> rdi
+; V08 tmp1 [V08,T08] ( 3, 2 ) ref -> rdi
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
-; V10 tmp3 [V10,T04] ( 3, 6 ) int -> r14 "impSpillLclRefs"
-; V11 tmp4 [V11,T06] ( 2, 5 ) byref -> rbp single-def "field V05._reference (fldOffset=0x0)" P-INDEP
-;* V12 tmp5 [V12,T11] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V13 tmp6 [V13,T10] ( 2, 2 ) byref -> rbp single-def "field V09._reference (fldOffset=0x0)" P-INDEP
-;* V14 tmp7 [V14,T12] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V15 cse0 [V15,T01] ( 3, 10 ) int -> r9 "CSE - aggressive"
-; V16 cse1 [V16,T07] ( 2, 5 ) long -> registers hoist "CSE - aggressive"
+; V10 tmp3 [V10,T06] ( 2, 4 ) int -> r9 "impSpillLclRefs"
+; V11 tmp4 [V11,T05] ( 2, 5 ) byref -> rbp single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+;* V12 tmp5 [V12,T10] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
+; V13 tmp6 [V13,T09] ( 2, 2 ) byref -> rbp single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V14 tmp7 [V14,T11] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
+; V15 tmp8 [V15,T00] ( 8, 16 ) long -> r14 "Widened primary induction variable"
+; V16 cse0 [V16,T01] ( 3, 10 ) int -> r9 "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M10117_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r15
push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 40
+ sub rsp, 32
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 6.50
+ ;; size=13 bbWeight=1 PerfScore 5.50
G_M10117_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cvttsd2si esi, xmm1
test r8b, r8b
@@ -59,17 +58,10 @@ G_M10117_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
G_M10117_IG05: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
lea rbp, [(reloc)]
mov r14d, 13
- jmp SHORT G_M10117_IG10
- ;; size=15 bbWeight=1 PerfScore 2.75
-G_M10117_IG06: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
- ; byrRegs +[rbp]
- mov r14d, r15d
jmp SHORT G_M10117_IG08
- ;; size=5 bbWeight=1 PerfScore 2.25
-G_M10117_IG07: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref
- mov rax, r14
- mov r14d, r15d
- mov r15, rax
+ ;; size=15 bbWeight=1 PerfScore 2.75
+G_M10117_IG06: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref
+ ; byrRegs +[rbp]
sub esi, r9d
mov r9d, r14d
and r9d, 1
@@ -84,38 +76,31 @@ G_M10117_IG07: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rb
call [r11]<unknown method>
; gcrRegs -[rcx rdx] +[rax]
; gcr arg pop 0
- mov eax, r14d
+ ;; size=34 bbWeight=2 PerfScore 16.50
+G_M10117_IG07: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
; gcrRegs -[rax]
- mov r14, r15
- mov r15d, eax
- ;; size=52 bbWeight=2 PerfScore 19.50
-G_M10117_IG08: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
- cmp r15d, 13
- jae SHORT G_M10117_IG12
+ cmp r14d, 13
+ jae SHORT G_M10117_IG10
mov r9d, dword ptr [rbp+4*r14]
cmp r9d, esi
- jle SHORT G_M10117_IG07
+ jle SHORT G_M10117_IG06
;; size=16 bbWeight=4 PerfScore 18.00
-G_M10117_IG09: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref
- mov r14d, r15d
- ;; size=3 bbWeight=2 PerfScore 0.50
-G_M10117_IG10: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
- lea r9d, [r14-0x01]
- mov r15d, r9d
- test r14d, r14d
- jne SHORT G_M10117_IG06
- ;; size=12 bbWeight=1 PerfScore 2.00
-G_M10117_IG11: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
+G_M10117_IG08: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
+ mov r9d, r14d
+ dec r14d
+ test r9d, r9d
+ jne SHORT G_M10117_IG07
+ ;; size=11 bbWeight=1 PerfScore 1.75
+G_M10117_IG09: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 32
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
- pop r15
ret
- ;; size=13 bbWeight=1 PerfScore 4.25
-G_M10117_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=11 bbWeight=1 PerfScore 3.75
+G_M10117_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx rdi]
; byrRegs -[rbp]
call [CORINFO_HELP_RNGCHKFAIL]
@@ -123,7 +108,7 @@ G_M10117_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 169, prolog size 15, PerfScore 68.00, instruction count 57, allocated bytes for code 169 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
+; Total bytes of code 138, prolog size 13, PerfScore 60.50, instruction count 46, allocated bytes for code 138 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
; ============================================================
Unwind Info:
@@ -131,15 +116,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0C
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x0A
+ CountOfUnwindCodes: 6
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
-15 (-12.50%) : 1002.dasm - System.Data.FillErrorEventArgs:get_Values():System.Object[]:this (FullOpts)
@@ -9,27 +9,26 @@
; Final local variable assignments
;
; V00 this [V00,T03] ( 5, 11 ) ref -> rbx this class-hnd single-def <System.Data.FillErrorEventArgs>
-; V01 loc0 [V01,T05] ( 4, 10 ) ref -> rbp class-hnd exact single-def <System.Object[]>
-; V02 loc1 [V02,T00] ( 7, 25 ) int -> r14
+; V01 loc0 [V01,T04] ( 4, 10 ) ref -> rbp class-hnd exact single-def <System.Object[]>
+;* V02 loc1 [V02,T07] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T02] ( 2, 16 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" <System.Object>
+; V04 tmp1 [V04,T02] ( 2, 16 ) ref -> rdx class-hnd "Strict ordering of exceptions for Array store" <System.Object>
; V05 tmp2 [V05,T01] ( 3, 24 ) ref -> rcx "arr expr"
-; V06 cse0 [V06,T07] ( 3, 3 ) ref -> rdi "CSE - aggressive"
-; V07 cse1 [V07,T06] ( 4, 10 ) long -> rsi "CSE - aggressive"
-; V08 cse2 [V08,T04] ( 3, 12 ) long -> rdx "CSE - aggressive"
+; V06 tmp3 [V06,T00] ( 8, 29 ) long -> rdi "Widened primary induction variable"
+; V07 cse0 [V07,T06] ( 3, 3 ) ref -> rdi "CSE - aggressive"
+; V08 cse1 [V08,T05] ( 4, 10 ) long -> rsi "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M18599_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=13 bbWeight=1 PerfScore 5.50
+ ;; size=11 bbWeight=1 PerfScore 4.50
G_M18599_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rsi, qword ptr [(reloc)] ; const ptr
mov rdi, gword ptr [rbx+rsi+0x10]
@@ -40,49 +39,46 @@ G_M18599_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcr arg pop 0
mov rbp, rax
; gcrRegs +[rbp]
- xor r14d, r14d
cmp dword ptr [rdi+0x08], 0
jle SHORT G_M18599_IG04
- ;; size=33 bbWeight=1 PerfScore 13.50
+ xor edi, edi
+ ; gcrRegs -[rdi]
+ ;; size=32 bbWeight=1 PerfScore 13.50
G_M18599_IG03: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax rdi]
+ ; gcrRegs -[rax]
mov rcx, gword ptr [rbx+rsi+0x10]
; gcrRegs +[rcx]
- cmp r14d, dword ptr [rcx+0x08]
+ cmp edi, dword ptr [rcx+0x08]
jae SHORT G_M18599_IG06
- mov edx, r14d
- mov rax, gword ptr [rcx+8*rdx+0x10]
- ; gcrRegs +[rax]
- cmp r14d, dword ptr [rbp+0x08]
+ mov rdx, gword ptr [rcx+8*rdi+0x10]
+ ; gcrRegs +[rdx]
+ cmp edi, dword ptr [rbp+0x08]
jae SHORT G_M18599_IG06
- lea rcx, bword ptr [rbp+8*rdx+0x10]
+ lea rcx, bword ptr [rbp+8*rdi+0x10]
; gcrRegs -[rcx]
; byrRegs +[rcx]
- mov rdx, rax
- ; gcrRegs +[rdx]
call [CORINFO_HELP_ASSIGN_REF]
- ; gcrRegs -[rax rdx]
+ ; gcrRegs -[rdx]
; byrRegs -[rcx]
- inc r14d
+ inc edi
mov rax, gword ptr [rbx+rsi+0x10]
; gcrRegs +[rax]
- cmp dword ptr [rax+0x08], r14d
+ cmp dword ptr [rax+0x08], edi
jg SHORT G_M18599_IG03
- ;; size=53 bbWeight=4 PerfScore 95.00
+ ;; size=43 bbWeight=4 PerfScore 93.00
G_M18599_IG04: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx]
mov rax, rbp
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
G_M18599_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
- pop r14
ret
- ;; size=11 bbWeight=1 PerfScore 3.75
+ ;; size=9 bbWeight=1 PerfScore 3.25
G_M18599_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rbp]
call [CORINFO_HELP_RNGCHKFAIL]
@@ -90,7 +86,7 @@ G_M18599_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 120, prolog size 13, PerfScore 118.00, instruction count 39, allocated bytes for code 120 (MethodHash=957bb758) for method System.Data.FillErrorEventArgs:get_Values():System.Object[]:this (FullOpts)
+; Total bytes of code 105, prolog size 11, PerfScore 114.50, instruction count 35, allocated bytes for code 105 (MethodHash=957bb758) for method System.Data.FillErrorEventArgs:get_Values():System.Object[]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -98,14 +94,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0A
- CountOfUnwindCodes: 6
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
-9 (-10.34%) : 3973.dasm - System.Data.ConstraintCollection:CompareArrays(System.Data.DataColumn[],System.Data.DataColumn[]):ubyte (FullOpts)
@@ -10,21 +10,21 @@
;
; V00 arg0 [V00,T06] ( 4, 5 ) ref -> rcx class-hnd single-def <System.Data.DataColumn[]>
; V01 arg1 [V01,T02] ( 4, 19 ) ref -> rdx class-hnd single-def <System.Data.DataColumn[]>
-; V02 loc0 [V02,T04] ( 5, 14.50) int -> rax
-; V03 loc1 [V03,T00] ( 5, 68 ) int -> r9
+;* V02 loc0 [V02,T09] ( 0, 0 ) int -> zero-ref
+;* V03 loc1 [V03,T08] ( 0, 0 ) int -> zero-ref
;* V04 loc2 [V04,T05] ( 0, 0 ) ubyte -> zero-ref
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 cse0 [V06,T03] ( 2, 18 ) ref -> r11 hoist "CSE - aggressive"
-; V07 cse1 [V07,T01] ( 4, 22 ) int -> r10 "CSE - aggressive"
-; V08 cse2 [V08,T07] ( 4, 6.50) int -> r8 "CSE - aggressive"
-; V09 cse3 [V09,T08] ( 2, 4 ) long -> r11 hoist "CSE - aggressive"
+; V06 tmp1 [V06,T04] ( 5, 14.50) long -> rax "Widened primary induction variable"
+; V07 tmp2 [V07,T00] ( 5, 66 ) long -> r9 "Widened primary induction variable"
+; V08 cse0 [V08,T03] ( 2, 18 ) ref -> r11 hoist "CSE - aggressive"
+; V09 cse1 [V09,T01] ( 4, 22 ) int -> r10 "CSE - aggressive"
+; V10 cse2 [V10,T07] ( 4, 6.50) int -> r8 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M51459_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbx
- sub rsp, 32
- ;; size=5 bbWeight=1 PerfScore 1.25
+ sub rsp, 40
+ ;; size=4 bbWeight=1 PerfScore 0.25
G_M51459_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx rdx]
mov r8d, dword ptr [rcx+0x08]
@@ -37,34 +37,31 @@ G_M51459_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M51459_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
+ add rsp, 40
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
G_M51459_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx rdx]
- xor eax, eax
test r8d, r8d
jle SHORT G_M51459_IG11
+ xor eax, eax
;; size=7 bbWeight=0.50 PerfScore 0.75
G_M51459_IG06: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
- xor r9d, r9d
test r10d, r10d
jle SHORT G_M51459_IG03
- ;; size=8 bbWeight=4 PerfScore 6.00
+ ;; size=5 bbWeight=4 PerfScore 5.00
G_M51459_IG07: ; bbWeight=2, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref
- mov r11d, eax
- mov r11, gword ptr [rcx+8*r11+0x10]
+ xor r9d, r9d
+ mov r11, gword ptr [rcx+8*rax+0x10]
; gcrRegs +[r11]
;; size=8 bbWeight=2 PerfScore 4.50
G_M51459_IG08: ; bbWeight=16, gcrefRegs=0806 {rcx rdx r11}, byrefRegs=0000 {}, byref, isz
- mov ebx, r9d
- cmp r11, gword ptr [rdx+8*rbx+0x10]
+ cmp r11, gword ptr [rdx+8*r9+0x10]
je SHORT G_M51459_IG10
inc r9d
cmp r10d, r9d
jg SHORT G_M51459_IG08
- ;; size=18 bbWeight=16 PerfScore 92.00
+ ;; size=15 bbWeight=16 PerfScore 88.00
G_M51459_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx rdx r11]
jmp SHORT G_M51459_IG03
@@ -80,12 +77,11 @@ G_M51459_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M51459_IG12: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
+ add rsp, 40
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
-; Total bytes of code 87, prolog size 5, PerfScore 121.75, instruction count 32, allocated bytes for code 87 (MethodHash=14d336fc) for method System.Data.ConstraintCollection:CompareArrays(System.Data.DataColumn[],System.Data.DataColumn[]):ubyte (FullOpts)
+; Total bytes of code 78, prolog size 4, PerfScore 115.25, instruction count 27, allocated bytes for code 78 (MethodHash=14d336fc) for method System.Data.ConstraintCollection:CompareArrays(System.Data.DataColumn[],System.Data.DataColumn[]):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -93,10 +89,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+14 (+28.00%) : 220145.dasm - System.CommandLine.Invocation.ParseErrorAction:g_GetStartsWithDistance|111(System.String,System.String):int (FullOpts)
@@ -8,13 +8,13 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String>
-; V01 arg1 [V01,T01] ( 4, 10 ) ref -> rdx class-hnd single-def <System.String>
-; V02 loc0 [V02,T00] ( 7, 22 ) int -> rax
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String>
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rdx class-hnd single-def <System.String>
+; V02 loc0 [V02,T05] ( 2, 2 ) int -> rax
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T04] ( 2, 9 ) int -> r8 hoist "CSE - aggressive"
-; V05 cse1 [V05,T05] ( 2, 8 ) int -> r10 "CSE - aggressive"
-; V06 cse2 [V06,T02] ( 3, 12 ) long -> r10 "CSE - aggressive"
+; V04 tmp1 [V04,T00] ( 10, 34 ) long -> rax "Widened primary induction variable"
+; V05 cse0 [V05,T01] ( 3, 13 ) int -> r8 hoist "CSE - aggressive"
+; V06 cse1 [V06,T03] ( 3, 12 ) int -> r10 "CSE - aggressive"
;
; Lcl frame size = 40
@@ -38,18 +38,26 @@ G_M8352_IG05: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {},
mov r10d, dword ptr [rdx+0x08]
cmp r10d, eax
jle SHORT G_M8352_IG06
- mov r10d, eax
- movzx r9, word ptr [rcx+2*r10+0x0C]
- cmp r9w, word ptr [rdx+2*r10+0x0C]
+ cmp eax, r8d
+ jae SHORT G_M8352_IG07
+ movzx r9, word ptr [rcx+2*rax+0x0C]
+ cmp eax, r10d
+ jae SHORT G_M8352_IG07
+ cmp r9w, word ptr [rdx+2*rax+0x0C]
je SHORT G_M8352_IG03
- ;; size=26 bbWeight=4 PerfScore 38.00
+ ;; size=33 bbWeight=4 PerfScore 47.00
G_M8352_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx rdx]
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
+G_M8352_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call [CORINFO_HELP_RNGCHKFAIL]
+ ; gcr arg pop 0
+ int3
+ ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 50, prolog size 4, PerfScore 54.25, instruction count 16, allocated bytes for code 50 (MethodHash=aa3edf5f) for method System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetStartsWithDistance|11_1(System.String,System.String):int (FullOpts)
+; Total bytes of code 64, prolog size 4, PerfScore 63.25, instruction count 21, allocated bytes for code 64 (MethodHash=aa3edf5f) for method System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetStartsWithDistance|11_1(System.String,System.String):int (FullOpts)
; ============================================================
Unwind Info:
+14 (+28.00%) : 178190.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
@@ -8,13 +8,13 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String>
-; V01 arg1 [V01,T01] ( 4, 10 ) ref -> rdx class-hnd single-def <System.String>
-; V02 loc0 [V02,T00] ( 7, 22 ) int -> rax
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String>
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rdx class-hnd single-def <System.String>
+; V02 loc0 [V02,T05] ( 2, 2 ) int -> rax
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T04] ( 2, 9 ) int -> r8 hoist "CSE - aggressive"
-; V05 cse1 [V05,T05] ( 2, 8 ) int -> r10 "CSE - aggressive"
-; V06 cse2 [V06,T02] ( 3, 12 ) long -> r10 "CSE - aggressive"
+; V04 tmp1 [V04,T00] ( 10, 34 ) long -> rax "Widened primary induction variable"
+; V05 cse0 [V05,T01] ( 3, 13 ) int -> r8 hoist "CSE - aggressive"
+; V06 cse1 [V06,T03] ( 3, 12 ) int -> r10 "CSE - aggressive"
;
; Lcl frame size = 40
@@ -38,18 +38,26 @@ G_M16586_IG05: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {},
mov r10d, dword ptr [rdx+0x08]
cmp r10d, eax
jle SHORT G_M16586_IG06
- mov r10d, eax
- movzx r9, word ptr [rcx+2*r10+0x0C]
- cmp r9w, word ptr [rdx+2*r10+0x0C]
+ cmp eax, r8d
+ jae SHORT G_M16586_IG07
+ movzx r9, word ptr [rcx+2*rax+0x0C]
+ cmp eax, r10d
+ jae SHORT G_M16586_IG07
+ cmp r9w, word ptr [rdx+2*rax+0x0C]
je SHORT G_M16586_IG03
- ;; size=26 bbWeight=4 PerfScore 38.00
+ ;; size=33 bbWeight=4 PerfScore 47.00
G_M16586_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx rdx]
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
+G_M16586_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call [CORINFO_HELP_RNGCHKFAIL]
+ ; gcr arg pop 0
+ int3
+ ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 50, prolog size 4, PerfScore 54.25, instruction count 16, allocated bytes for code 50 (MethodHash=6acbbf35) for method Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
+; Total bytes of code 64, prolog size 4, PerfScore 63.25, instruction count 21, allocated bytes for code 64 (MethodHash=6acbbf35) for method Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
; ============================================================
Unwind Info:
+14 (+28.00%) : 153152.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
@@ -8,13 +8,13 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String>
-; V01 arg1 [V01,T01] ( 4, 10 ) ref -> rdx class-hnd single-def <System.String>
-; V02 loc0 [V02,T00] ( 7, 22 ) int -> rax
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String>
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rdx class-hnd single-def <System.String>
+; V02 loc0 [V02,T05] ( 2, 2 ) int -> rax
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T04] ( 2, 9 ) int -> r8 hoist "CSE - aggressive"
-; V05 cse1 [V05,T05] ( 2, 8 ) int -> r10 "CSE - aggressive"
-; V06 cse2 [V06,T02] ( 3, 12 ) long -> r10 "CSE - aggressive"
+; V04 tmp1 [V04,T00] ( 10, 34 ) long -> rax "Widened primary induction variable"
+; V05 cse0 [V05,T01] ( 3, 13 ) int -> r8 hoist "CSE - aggressive"
+; V06 cse1 [V06,T03] ( 3, 12 ) int -> r10 "CSE - aggressive"
;
; Lcl frame size = 40
@@ -38,18 +38,26 @@ G_M16586_IG05: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {},
mov r10d, dword ptr [rdx+0x08]
cmp r10d, eax
jle SHORT G_M16586_IG06
- mov r10d, eax
- movzx r9, word ptr [rcx+2*r10+0x0C]
- cmp r9w, word ptr [rdx+2*r10+0x0C]
+ cmp eax, r8d
+ jae SHORT G_M16586_IG07
+ movzx r9, word ptr [rcx+2*rax+0x0C]
+ cmp eax, r10d
+ jae SHORT G_M16586_IG07
+ cmp r9w, word ptr [rdx+2*rax+0x0C]
je SHORT G_M16586_IG03
- ;; size=26 bbWeight=4 PerfScore 38.00
+ ;; size=33 bbWeight=4 PerfScore 47.00
G_M16586_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx rdx]
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
+G_M16586_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call [CORINFO_HELP_RNGCHKFAIL]
+ ; gcr arg pop 0
+ int3
+ ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 50, prolog size 4, PerfScore 54.25, instruction count 16, allocated bytes for code 50 (MethodHash=6acbbf35) for method Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
+; Total bytes of code 64, prolog size 4, PerfScore 63.25, instruction count 21, allocated bytes for code 64 (MethodHash=6acbbf35) for method Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
; ============================================================
Unwind Info:
libraries.pmi.windows.x64.checked.mch
-31 (-18.24%) : 216873.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
@@ -8,37 +8,36 @@
; Final local variable assignments
;
; V00 arg0 [V00,T03] ( 3, 4 ) ref -> rbx class-hnd single-def <System.Text.StringBuilder>
-; V01 arg1 [V01,T13] ( 3, 3 ) double -> mm1 single-def
-; V02 arg2 [V02,T05] ( 3, 3 ) ubyte -> r8 single-def
+; V01 arg1 [V01,T12] ( 3, 3 ) double -> mm1 single-def
+; V02 arg2 [V02,T04] ( 3, 3 ) ubyte -> r8 single-def
; V03 loc0 [V03,T02] ( 4, 9 ) int -> rsi
-; V04 loc1 [V04,T08] ( 2, 3 ) ref -> rdi class-hnd single-def <System.String>
+; V04 loc1 [V04,T07] ( 2, 3 ) ref -> rdi class-hnd single-def <System.String>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
-; V06 loc3 [V06,T00] ( 7, 12 ) int -> registers
+;* V06 loc3 [V06 ] ( 0, 0 ) int -> zero-ref
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T09] ( 2, 2 ) ref -> rdi
+; V08 tmp1 [V08,T08] ( 2, 2 ) ref -> rdi
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
-; V10 tmp3 [V10,T04] ( 3, 6 ) int -> r14 "impSpillLclRefs"
-; V11 tmp4 [V11,T06] ( 2, 5 ) byref -> rbp single-def "field V05._reference (fldOffset=0x0)" P-INDEP
-;* V12 tmp5 [V12,T11] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V13 tmp6 [V13,T10] ( 2, 2 ) byref -> rbp single-def "field V09._reference (fldOffset=0x0)" P-INDEP
-;* V14 tmp7 [V14,T12] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V15 cse0 [V15,T01] ( 3, 10 ) int -> r9 "CSE - aggressive"
-; V16 cse1 [V16,T07] ( 2, 5 ) long -> registers hoist "CSE - aggressive"
+; V10 tmp3 [V10,T06] ( 2, 4 ) int -> r9 "impSpillLclRefs"
+; V11 tmp4 [V11,T05] ( 2, 5 ) byref -> rbp single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+;* V12 tmp5 [V12,T10] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
+; V13 tmp6 [V13,T09] ( 2, 2 ) byref -> rbp single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V14 tmp7 [V14,T11] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
+; V15 tmp8 [V15,T00] ( 8, 16 ) long -> r14 "Widened primary induction variable"
+; V16 cse0 [V16,T01] ( 3, 10 ) int -> r9 "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M10117_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r15
push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 40
+ sub rsp, 32
vzeroupper
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=18 bbWeight=1 PerfScore 7.50
+ ;; size=16 bbWeight=1 PerfScore 6.50
G_M10117_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
vcvttsd2si esi, xmm1
mov rdi, 0xD1FFAB1E
@@ -49,18 +48,11 @@ G_M10117_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
cmove rdi, r9
mov rbp, 0xD1FFAB1E ; static handle
mov r14d, 13
- jmp SHORT G_M10117_IG07
+ jmp SHORT G_M10117_IG05
;; size=49 bbWeight=1 PerfScore 9.50
-G_M10117_IG03: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
+G_M10117_IG03: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref
; gcrRegs -[r9]
; byrRegs +[rbp]
- mov r14d, r15d
- jmp SHORT G_M10117_IG05
- ;; size=5 bbWeight=1 PerfScore 2.25
-G_M10117_IG04: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref
- mov rax, r14
- mov r14d, r15d
- mov r15, rax
sub esi, r9d
mov r9d, r14d
and r9d, 1
@@ -74,38 +66,31 @@ G_M10117_IG04: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rb
call [System.Text.StringBuilder:Append(System.String,int,int):System.Text.StringBuilder:this]
; gcrRegs -[rcx rdx] +[rax]
; gcr arg pop 0
- mov eax, r14d
+ ;; size=30 bbWeight=2 PerfScore 15.50
+G_M10117_IG04: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
; gcrRegs -[rax]
- mov r14, r15
- mov r15d, eax
- ;; size=48 bbWeight=2 PerfScore 18.50
-G_M10117_IG05: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
- cmp r15d, 13
- jae SHORT G_M10117_IG09
+ cmp r14d, 13
+ jae SHORT G_M10117_IG07
mov r9d, dword ptr [rbp+4*r14]
cmp r9d, esi
- jle SHORT G_M10117_IG04
+ jle SHORT G_M10117_IG03
;; size=16 bbWeight=4 PerfScore 18.00
-G_M10117_IG06: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref
- mov r14d, r15d
- ;; size=3 bbWeight=2 PerfScore 0.50
-G_M10117_IG07: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
- lea r9d, [r14-0x01]
- mov r15d, r9d
- test r14d, r14d
- jne SHORT G_M10117_IG03
- ;; size=12 bbWeight=1 PerfScore 2.00
-G_M10117_IG08: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
+G_M10117_IG05: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
+ mov r9d, r14d
+ dec r14d
+ test r9d, r9d
+ jne SHORT G_M10117_IG04
+ ;; size=11 bbWeight=1 PerfScore 1.75
+G_M10117_IG06: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 32
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
- pop r15
ret
- ;; size=13 bbWeight=1 PerfScore 4.25
-G_M10117_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=11 bbWeight=1 PerfScore 3.75
+G_M10117_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx rdi]
; byrRegs -[rbp]
call CORINFO_HELP_RNGCHKFAIL
@@ -113,7 +98,7 @@ G_M10117_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 170, prolog size 18, PerfScore 62.50, instruction count 54, allocated bytes for code 170 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
+; Total bytes of code 139, prolog size 16, PerfScore 55.00, instruction count 43, allocated bytes for code 139 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
; ============================================================
Unwind Info:
@@ -121,15 +106,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0C
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x0A
+ CountOfUnwindCodes: 6
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
-24 (-11.82%) : 77822.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
@@ -11,7 +11,7 @@
; V00 this [V00,T06] ( 5, 11 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer>
; V01 arg1 [V01,T11] ( 4, 6.50) int -> rsi single-def
; V02 loc0 [V02,T10] ( 4, 9 ) ref -> rbp class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]>
-; V03 loc1 [V03,T00] ( 9, 32.50) int -> r14
+;* V03 loc1 [V03,T16] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T03] ( 2, 16 ) ref -> rcx class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo>
; V06 tmp2 [V06,T04] ( 2, 16 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo>
@@ -22,25 +22,25 @@
; V11 tmp7 [V11,T02] ( 3, 24 ) ref -> rdx "arr expr"
;* V12 tmp8 [V12,T13] ( 0, 0 ) ref -> zero-ref "arr expr"
; V13 tmp9 [V13,T05] ( 2, 16 ) int -> rdx "argument with side effect"
-; V14 cse0 [V14,T07] ( 3, 12 ) ref -> rdx "CSE - aggressive"
-; V15 cse1 [V15,T15] ( 3, 1.50) int -> rdi "CSE - moderate"
-; V16 cse2 [V16,T08] ( 2, 8 ) ref -> rdx "CSE - aggressive"
-; V17 cse3 [V17,T09] ( 2, 8 ) ref -> rdx "CSE - aggressive"
-; V18 cse4 [V18,T14] ( 4, 3 ) ref -> rcx "CSE - aggressive"
+; V14 tmp10 [V14,T00] ( 9, 32.50) long -> rdi "Widened primary induction variable"
+; V15 cse0 [V15,T07] ( 3, 12 ) ref -> rdx "CSE - aggressive"
+; V16 cse1 [V16,T15] ( 3, 1.50) int -> rdi "CSE - moderate"
+; V17 cse2 [V17,T08] ( 2, 8 ) ref -> rdx "CSE - aggressive"
+; V18 cse3 [V18,T09] ( 2, 8 ) ref -> rdx "CSE - aggressive"
+; V19 cse4 [V19,T14] ( 4, 3 ) ref -> rcx "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M22286_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx
; gcrRegs +[rbx]
mov esi, edx
- ;; size=15 bbWeight=1 PerfScore 5.75
+ ;; size=13 bbWeight=1 PerfScore 4.75
G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0x10]
; gcrRegs +[rcx]
@@ -49,7 +49,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=13 bbWeight=1 PerfScore 3.25
G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
test esi, esi
- jle G_M22286_IG07
+ jle SHORT G_M22286_IG07
mov edi, dword ptr [rcx+0x10]
movsxd rdx, edi
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]
@@ -59,21 +59,20 @@ G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000
; gcr arg pop 0
mov rbp, rax
; gcrRegs +[rbp]
- xor r14d, r14d
test edi, edi
jle SHORT G_M22286_IG05
- ;; size=39 bbWeight=0.50 PerfScore 3.25
+ xor edi, edi
+ ;; size=34 bbWeight=0.50 PerfScore 3.25
G_M22286_IG04: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rdx, gword ptr [rbx+0x10]
; gcrRegs +[rdx]
- cmp r14d, dword ptr [rdx+0x10]
+ cmp edi, dword ptr [rdx+0x10]
jae SHORT G_M22286_IG12
mov rdx, gword ptr [rdx+0x08]
- cmp r14d, dword ptr [rdx+0x08]
+ cmp edi, dword ptr [rdx+0x08]
jae SHORT G_M22286_IG11
- mov ecx, r14d
- mov rdx, gword ptr [rdx+8*rcx+0x10]
+ mov rdx, gword ptr [rdx+8*rdi+0x10]
mov rcx, rdx
; gcrRegs +[rcx]
mov eax, esi
@@ -83,64 +82,60 @@ G_M22286_IG04: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {},
call [Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:WithOffset(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:this]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- cmp r14d, dword ptr [rbp+0x08]
+ cmp edi, dword ptr [rbp+0x08]
jae SHORT G_M22286_IG11
- mov ecx, r14d
- lea rcx, bword ptr [rbp+8*rcx+0x10]
+ lea rcx, bword ptr [rbp+8*rdi+0x10]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- inc r14d
+ inc edi
mov rax, gword ptr [rbx+0x10]
; gcrRegs +[rax]
- cmp r14d, dword ptr [rax+0x10]
+ cmp edi, dword ptr [rax+0x10]
jl SHORT G_M22286_IG04
- ;; size=79 bbWeight=4 PerfScore 139.00
+ ;; size=68 bbWeight=4 PerfScore 137.00
G_M22286_IG05: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx]
mov rax, rbp
; gcrRegs +[rax]
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M22286_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
- pop r14
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M22286_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rbp] +[rcx]
cmp dword ptr [rcx], ecx
;; size=2 bbWeight=0.50 PerfScore 1.50
G_M22286_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
- pop r14
tail.jmp [System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this]
; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.38
+ ;; size=14 bbWeight=0.50 PerfScore 2.12
G_M22286_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M22286_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
- pop r14
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
call CORINFO_HELP_RNGCHKFAIL
@@ -152,7 +147,7 @@ G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 203, prolog size 15, PerfScore 159.12, instruction count 71, allocated bytes for code 203 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
+; Total bytes of code 179, prolog size 13, PerfScore 155.38, instruction count 65, allocated bytes for code 179 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -160,14 +155,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0A
- CountOfUnwindCodes: 6
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
-15 (-11.11%) : 17976.dasm - System.Data.DataKey:GetKeyValues(int):System.Object[]:this (FullOpts)
@@ -11,27 +11,27 @@
; V00 this [V00,T04] ( 5, 11 ) byref -> rbx this single-def
; V01 arg1 [V01,T06] ( 3, 6 ) int -> rsi single-def
; V02 loc0 [V02,T05] ( 4, 10 ) ref -> rbp class-hnd exact single-def <System.Object[]>
-; V03 loc1 [V03,T00] ( 8, 29 ) int -> r14
+;* V03 loc1 [V03,T08] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T03] ( 2, 16 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" <System.Object>
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Data.DataColumn>
; V07 tmp3 [V07,T01] ( 3, 24 ) ref -> rcx "arr expr"
; V08 tmp4 [V08,T02] ( 3, 24 ) ref -> rcx "argument with side effect"
-; V09 cse0 [V09,T07] ( 3, 3 ) ref -> rdi "CSE - aggressive"
+; V09 tmp5 [V09,T00] ( 8, 29 ) long -> rdi "Widened primary induction variable"
+; V10 cse0 [V10,T07] ( 3, 3 ) ref -> rdi "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M15143_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx
; byrRegs +[rbx]
mov esi, edx
- ;; size=15 bbWeight=1 PerfScore 5.75
+ ;; size=13 bbWeight=1 PerfScore 4.75
G_M15143_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov rdi, gword ptr [rbx]
; gcrRegs +[rdi]
@@ -42,18 +42,18 @@ G_M15143_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
; gcr arg pop 0
mov rbp, rax
; gcrRegs +[rbp]
- xor r14d, r14d
cmp dword ptr [rdi+0x08], 0
jle SHORT G_M15143_IG04
- ;; size=33 bbWeight=1 PerfScore 9.75
+ xor edi, edi
+ ; gcrRegs -[rdi]
+ ;; size=32 bbWeight=1 PerfScore 9.75
G_M15143_IG03: ; bbWeight=4, gcrefRegs=0020 {rbp}, byrefRegs=0008 {rbx}, byref, isz
- ; gcrRegs -[rax rdi]
+ ; gcrRegs -[rax]
mov rcx, gword ptr [rbx]
; gcrRegs +[rcx]
- cmp r14d, dword ptr [rcx+0x08]
+ cmp edi, dword ptr [rcx+0x08]
jae SHORT G_M15143_IG06
- mov edx, r14d
- mov rcx, gword ptr [rcx+8*rdx+0x10]
+ mov rcx, gword ptr [rcx+8*rdi+0x10]
mov rcx, gword ptr [rcx+0x60]
mov edx, esi
mov rax, qword ptr [rcx]
@@ -61,22 +61,21 @@ G_M15143_IG03: ; bbWeight=4, gcrefRegs=0020 {rbp}, byrefRegs=0008 {rbx},
call [rax+0x08]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- cmp r14d, dword ptr [rbp+0x08]
+ cmp edi, dword ptr [rbp+0x08]
jae SHORT G_M15143_IG06
- mov ecx, r14d
- lea rcx, bword ptr [rbp+8*rcx+0x10]
+ lea rcx, bword ptr [rbp+8*rdi+0x10]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- inc r14d
+ inc edi
mov rax, gword ptr [rbx]
; gcrRegs +[rax]
- cmp dword ptr [rax+0x08], r14d
+ cmp dword ptr [rax+0x08], edi
jg SHORT G_M15143_IG03
- ;; size=67 bbWeight=4 PerfScore 125.00
+ ;; size=57 bbWeight=4 PerfScore 123.00
G_M15143_IG04: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
; byrRegs -[rbx]
@@ -84,14 +83,13 @@ G_M15143_IG04: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byr
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
G_M15143_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
- pop r14
ret
- ;; size=11 bbWeight=1 PerfScore 3.75
+ ;; size=9 bbWeight=1 PerfScore 3.25
G_M15143_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rbp]
call CORINFO_HELP_RNGCHKFAIL
@@ -99,7 +97,7 @@ G_M15143_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 135, prolog size 10, PerfScore 144.50, instruction count 46, allocated bytes for code 135 (MethodHash=84b4c4d8) for method System.Data.DataKey:GetKeyValues(int):System.Object[]:this (FullOpts)
+; Total bytes of code 120, prolog size 8, PerfScore 141.00, instruction count 42, allocated bytes for code 120 (MethodHash=84b4c4d8) for method System.Data.DataKey:GetKeyValues(int):System.Object[]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -107,14 +105,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0A
- CountOfUnwindCodes: 6
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+13 (+26.00%) : 132688.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
@@ -7,13 +7,13 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String>
-; V01 arg1 [V01,T01] ( 4, 10 ) ref -> rdx class-hnd single-def <System.String>
-; V02 loc0 [V02,T00] ( 7, 22 ) int -> rax
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String>
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rdx class-hnd single-def <System.String>
+; V02 loc0 [V02,T05] ( 2, 2 ) int -> rax
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T04] ( 2, 9 ) int -> r8 hoist "CSE - aggressive"
-; V05 cse1 [V05,T05] ( 2, 8 ) int -> r10 "CSE - aggressive"
-; V06 cse2 [V06,T02] ( 3, 12 ) long -> r10 "CSE - aggressive"
+; V04 tmp1 [V04,T00] ( 10, 34 ) long -> rax "Widened primary induction variable"
+; V05 cse0 [V05,T01] ( 3, 13 ) int -> r8 hoist "CSE - aggressive"
+; V06 cse1 [V06,T03] ( 3, 12 ) int -> r10 "CSE - aggressive"
;
; Lcl frame size = 40
@@ -37,18 +37,26 @@ G_M16586_IG05: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {},
mov r10d, dword ptr [rdx+0x08]
cmp r10d, eax
jle SHORT G_M16586_IG06
- mov r10d, eax
- movzx r9, word ptr [rcx+2*r10+0x0C]
- cmp r9w, word ptr [rdx+2*r10+0x0C]
+ cmp eax, r8d
+ jae SHORT G_M16586_IG07
+ movzx r9, word ptr [rcx+2*rax+0x0C]
+ cmp eax, r10d
+ jae SHORT G_M16586_IG07
+ cmp r9w, word ptr [rdx+2*rax+0x0C]
je SHORT G_M16586_IG03
- ;; size=26 bbWeight=4 PerfScore 38.00
+ ;; size=33 bbWeight=4 PerfScore 47.00
G_M16586_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx rdx]
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
+G_M16586_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 50, prolog size 4, PerfScore 54.25, instruction count 16, allocated bytes for code 50 (MethodHash=6acbbf35) for method Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
+; Total bytes of code 63, prolog size 4, PerfScore 63.25, instruction count 21, allocated bytes for code 63 (MethodHash=6acbbf35) for method Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
; ============================================================
Unwind Info:
+13 (+26.00%) : 250744.dasm - System.CommandLine.Invocation.ParseErrorAction:g_GetStartsWithDistance|111(System.String,System.String):int (FullOpts)
@@ -7,13 +7,13 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String>
-; V01 arg1 [V01,T01] ( 4, 10 ) ref -> rdx class-hnd single-def <System.String>
-; V02 loc0 [V02,T00] ( 7, 22 ) int -> rax
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String>
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rdx class-hnd single-def <System.String>
+; V02 loc0 [V02,T05] ( 2, 2 ) int -> rax
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T04] ( 2, 9 ) int -> r8 hoist "CSE - aggressive"
-; V05 cse1 [V05,T05] ( 2, 8 ) int -> r10 "CSE - aggressive"
-; V06 cse2 [V06,T02] ( 3, 12 ) long -> r10 "CSE - aggressive"
+; V04 tmp1 [V04,T00] ( 10, 34 ) long -> rax "Widened primary induction variable"
+; V05 cse0 [V05,T01] ( 3, 13 ) int -> r8 hoist "CSE - aggressive"
+; V06 cse1 [V06,T03] ( 3, 12 ) int -> r10 "CSE - aggressive"
;
; Lcl frame size = 40
@@ -37,18 +37,26 @@ G_M8352_IG05: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {},
mov r10d, dword ptr [rdx+0x08]
cmp r10d, eax
jle SHORT G_M8352_IG06
- mov r10d, eax
- movzx r9, word ptr [rcx+2*r10+0x0C]
- cmp r9w, word ptr [rdx+2*r10+0x0C]
+ cmp eax, r8d
+ jae SHORT G_M8352_IG07
+ movzx r9, word ptr [rcx+2*rax+0x0C]
+ cmp eax, r10d
+ jae SHORT G_M8352_IG07
+ cmp r9w, word ptr [rdx+2*rax+0x0C]
je SHORT G_M8352_IG03
- ;; size=26 bbWeight=4 PerfScore 38.00
+ ;; size=33 bbWeight=4 PerfScore 47.00
G_M8352_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx rdx]
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
+G_M8352_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 50, prolog size 4, PerfScore 54.25, instruction count 16, allocated bytes for code 50 (MethodHash=aa3edf5f) for method System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetStartsWithDistance|11_1(System.String,System.String):int (FullOpts)
+; Total bytes of code 63, prolog size 4, PerfScore 63.25, instruction count 21, allocated bytes for code 63 (MethodHash=aa3edf5f) for method System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetStartsWithDistance|11_1(System.String,System.String):int (FullOpts)
; ============================================================
Unwind Info:
+21 (+33.33%) : 161240.dasm - Microsoft.Build.Shared.FileMatcher:HasDotDot(System.String):ubyte (FullOpts)
@@ -7,40 +7,46 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 5, 9 ) ref -> rcx class-hnd single-def <System.String>
-; V01 loc0 [V01,T00] ( 6, 19 ) int -> rax
+; V00 arg0 [V00,T02] ( 5, 9 ) ref -> rcx class-hnd single-def <System.String>
+;* V01 loc0 [V01,T05] ( 0, 0 ) int -> zero-ref
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T02] ( 3, 6 ) int -> rdx "CSE - aggressive"
-; V04 cse1 [V04,T03] ( 2, 2 ) int -> rdx "CSE - aggressive"
+; V03 tmp1 [V03,T00] ( 7, 23 ) long -> r8 "Widened primary induction variable"
+; V04 cse0 [V04,T04] ( 3, 6 ) int -> rdx "CSE - aggressive"
+; V05 cse1 [V05,T01] ( 5, 14 ) int -> r10 multi-def "CSE - aggressive"
+; V06 cse2 [V06,T03] ( 4, 8 ) int -> rax "CSE - aggressive"
;
; Lcl frame size = 40
-G_M53831_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M53831_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 40
;; size=4 bbWeight=1 PerfScore 0.25
G_M53831_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
- xor eax, eax
- mov edx, dword ptr [rcx+0x08]
- dec edx
+ mov eax, dword ptr [rcx+0x08]
+ lea edx, [rax-0x01]
test edx, edx
jle SHORT G_M53831_IG06
- ;; size=11 bbWeight=1 PerfScore 3.75
+ xor r8d, r8d
+ ;; size=13 bbWeight=1 PerfScore 4.00
G_M53831_IG03: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r8d, eax
+ cmp r8d, eax
+ jae SHORT G_M53831_IG10
cmp word ptr [rcx+2*r8+0x0C], 46
jne SHORT G_M53831_IG05
- ;; size=12 bbWeight=4 PerfScore 17.00
+ ;; size=14 bbWeight=4 PerfScore 21.00
G_M53831_IG04: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- lea r8d, [rax+0x01]
- cmp word ptr [rcx+2*r8+0x0C], 46
+ lea r10d, [r8+0x01]
+ cmp r10d, eax
+ jae SHORT G_M53831_IG10
+ cmp word ptr [rcx+2*r10+0x0C], 46
je SHORT G_M53831_IG08
- ;; size=13 bbWeight=2 PerfScore 9.00
+ ;; size=18 bbWeight=2 PerfScore 11.50
G_M53831_IG05: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- inc eax
- cmp edx, eax
+ lea r10d, [r8+0x01]
+ mov r8d, r10d
+ cmp edx, r8d
jg SHORT G_M53831_IG03
- ;; size=6 bbWeight=4 PerfScore 6.00
+ ;; size=12 bbWeight=4 PerfScore 8.00
G_M53831_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
xor eax, eax
@@ -56,8 +62,13 @@ G_M53831_IG09: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M53831_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 63, prolog size 4, PerfScore 37.50, instruction count 21, allocated bytes for code 63 (MethodHash=36dc2db8) for method Microsoft.Build.Shared.FileMatcher:HasDotDot(System.String):ubyte (FullOpts)
+; Total bytes of code 84, prolog size 4, PerfScore 46.25, instruction count 27, allocated bytes for code 84 (MethodHash=36dc2db8) for method Microsoft.Build.Shared.FileMatcher:HasDotDot(System.String):ubyte (FullOpts)
; ============================================================
Unwind Info:
libraries_tests.run.windows.x64.Release.mch
-6 (-10.00%) : 342068.dasm - System.Linq.SingleLinkedNode1[int]:FillReversed(System.Span1[int]):this (Tier1)
@@ -11,13 +11,14 @@
;
; V00 this [V00,T03] ( 4, 4 ) ref -> rcx this class-hnd single-def <System.Linq.SingleLinkedNode`1[int]>
; V01 arg1 [V01,T00] ( 4, 8 ) byref -> rdx ld-addr-op single-def
-; V02 loc0 [V02,T02] ( 5, 6.70) int -> r8
-; V03 loc1 [V03,T01] ( 5, 6.70) ref -> r10 class-hnd <System.Linq.SingleLinkedNode`1[int]>
+;* V02 loc0 [V02,T06] ( 0, 0 ) int -> zero-ref
+; V03 loc1 [V03,T01] ( 5, 6.70) ref -> r8 class-hnd <System.Linq.SingleLinkedNode`1[int]>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
; V06 tmp2 [V06,T05] ( 2, 2.43) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V07 tmp3 [V07,T04] ( 3, 3.43) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
+; V07 tmp3 [V07,T04] ( 3, 3.01) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[int]>
+; V09 tmp5 [V09,T02] ( 5, 6.29) long -> rcx "Widened primary induction variable"
;
; Lcl frame size = 40
@@ -31,37 +32,38 @@ G_M40341_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx},
; byrRegs +[rax]
mov edx, dword ptr [rdx+0x08]
; byrRegs -[rdx]
- mov r8d, edx
- mov r10, rcx
- ; gcrRegs +[r10]
+ mov r8, rcx
+ ; gcrRegs +[r8]
test rcx, rcx
- je SHORT G_M40341_IG04
- ;; size=17 bbWeight=1 PerfScore 5.75
-G_M40341_IG03: ; bbWeight=1.43, gcrefRegs=0400 {r10}, byrefRegs=0001 {rax}, byref, isz
+ je SHORT G_M40341_IG05
+ ;; size=14 bbWeight=1 PerfScore 5.50
+G_M40341_IG03: ; bbWeight=0.59, gcrefRegs=0100 {r8}, byrefRegs=0001 {rax}, byref
; gcrRegs -[rcx]
- dec r8d
- cmp r8d, edx
- jae SHORT G_M40341_IG05
- mov ecx, r8d
- mov r9d, dword ptr [r10+0x10]
- mov dword ptr [rax+4*rcx], r9d
- mov r10, gword ptr [r10+0x08]
- test r10, r10
- jne SHORT G_M40341_IG03
- ;; size=28 bbWeight=1.43 PerfScore 11.41
-G_M40341_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[r10]
+ mov ecx, edx
+ ;; size=2 bbWeight=0.59 PerfScore 0.15
+G_M40341_IG04: ; bbWeight=1.43, gcrefRegs=0100 {r8}, byrefRegs=0001 {rax}, byref, isz
+ dec ecx
+ cmp ecx, edx
+ jae SHORT G_M40341_IG06
+ mov r10d, dword ptr [r8+0x10]
+ mov dword ptr [rax+4*rcx], r10d
+ mov r8, gword ptr [r8+0x08]
+ test r8, r8
+ jne SHORT G_M40341_IG04
+ ;; size=23 bbWeight=1.43 PerfScore 11.05
+G_M40341_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[r8]
; byrRegs -[rax]
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-G_M40341_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M40341_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 4, PerfScore 18.66, instruction count 20, allocated bytes for code 60 (MethodHash=2db3626a) for method System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (Tier1)
+; Total bytes of code 54, prolog size 4, PerfScore 18.20, instruction count 19, allocated bytes for code 54 (MethodHash=2db3626a) for method System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (Tier1)
; ============================================================
Unwind Info:
-33 (-9.09%) : 335254.dasm - System.Linq.Parallel.SortHelper2[int,System.Linq.Parallel.ConcatKey2[int,int]]:Dispose():this (Tier1)
@@ -10,179 +10,183 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 8, 6.50) ref -> rbx this class-hnd single-def <System.Linq.Parallel.SortHelper`2[int,System.Linq.Parallel.ConcatKey`2[int,int]]>
-; V01 loc0 [V01,T08] ( 8, 5 ) int -> rsi
-; V02 loc1 [V02,T07] ( 6, 5.50) int -> rdi
+;* V01 loc0 [V01,T09] ( 0, 0 ) int -> zero-ref
+;* V02 loc1 [V02,T10] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 12, 22.07) ref -> r15 class-hnd "dup spill" <System.Threading.Barrier>
+; V04 tmp1 [V04,T00] ( 12, 22.07) ref -> rbp class-hnd "dup spill" <System.Threading.Barrier>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref
-; V06 tmp3 [V06,T10] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V06 tmp3 [V06,T11] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Threading.Barrier>
-; V08 tmp5 [V08,T03] ( 4, 8.10) ref -> rbp class-hnd "Inlining Arg" <System.Threading.ManualResetEventSlim>
-; V09 tmp6 [V09,T04] ( 4, 8.10) ref -> rbp class-hnd "Inlining Arg" <System.Threading.ManualResetEventSlim>
-; V10 tmp7 [V10,T01] ( 6, 9 ) ref -> rbp "arr expr"
-; V11 tmp8 [V11,T05] ( 3, 6 ) ref -> rcx "arr expr"
-; V12 tmp9 [V12,T06] ( 3, 6 ) ref -> rcx "arr expr"
-; V13 tmp10 [V13,T11] ( 2, 0 ) ref -> rdx "argument with side effect"
-; V14 cse0 [V14,T09] ( 4, 3 ) long -> r14 "CSE - aggressive"
+; V08 tmp5 [V08,T03] ( 4, 8.10) ref -> r14 class-hnd "Inlining Arg" <System.Threading.ManualResetEventSlim>
+; V09 tmp6 [V09,T04] ( 4, 8.10) ref -> r14 class-hnd "Inlining Arg" <System.Threading.ManualResetEventSlim>
+; V10 tmp7 [V10,T01] ( 6, 9 ) ref -> rcx "arr expr"
+; V11 tmp8 [V11,T06] ( 3, 6 ) ref -> rcx "arr expr"
+; V12 tmp9 [V12,T07] ( 3, 6 ) ref -> rcx "arr expr"
+; V13 tmp10 [V13,T12] ( 2, 0 ) ref -> rdx "argument with side effect"
+; V14 tmp11 [V14,T05] ( 10, 6.67) long -> rsi "Widened primary induction variable"
+; V15 tmp12 [V15,T08] ( 6, 5.33) long -> rdi "Widened primary induction variable"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M52710_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r15
push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 40
+ sub rsp, 32
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 6.50
-G_M52710_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=13 bbWeight=1 PerfScore 5.50
+G_M52710_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x44], 0
- jne G_M52710_IG11
- ;; size=10 bbWeight=1 PerfScore 4.00
+ jne SHORT G_M52710_IG04
+ ;; size=6 bbWeight=1 PerfScore 4.00
G_M52710_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- xor esi, esi
mov rcx, gword ptr [rbx+0x30]
; gcrRegs +[rcx]
cmp dword ptr [rcx+0x08], 0
- jle G_M52710_IG11
- ;; size=16 bbWeight=0.50 PerfScore 3.12
-G_M52710_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx]
- xor edi, edi
- mov rbp, gword ptr [rbx+0x30]
- ; gcrRegs +[rbp]
- cmp esi, dword ptr [rbp+0x08]
- jae G_M52710_IG13
- mov r14d, esi
- mov rcx, gword ptr [rbp+8*r14+0x10]
- ; gcrRegs +[rcx]
- cmp dword ptr [rcx+0x08], 0
- jle G_M52710_IG10
- ;; size=33 bbWeight=0.50 PerfScore 6.25
-G_M52710_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx rbp]
- mov rcx, gword ptr [rbx+0x30]
- ; gcrRegs +[rcx]
- cmp esi, dword ptr [rcx+0x08]
- jae G_M52710_IG13
- mov rcx, gword ptr [rcx+8*r14+0x10]
- cmp edi, dword ptr [rcx+0x08]
- jae G_M52710_IG13
- mov edx, edi
- mov r15, gword ptr [rcx+8*rdx+0x10]
- ; gcrRegs +[r15]
- test r15, r15
- je SHORT G_M52710_IG09
- cmp dword ptr [r15+0x3C], 0
- jne G_M52710_IG14
- ;; size=50 bbWeight=1 PerfScore 19.50
-G_M52710_IG06: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- mov rcx, 0xD1FFAB1E ; System.Threading.Barrier
- cmp qword ptr [r15], rcx
- jne G_M52710_IG12
- cmp byte ptr [r15+0x40], 0
- jne SHORT G_M52710_IG08
- ;; size=26 bbWeight=1 PerfScore 8.25
-G_M52710_IG07: ; bbWeight=1.01, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- mov rbp, gword ptr [r15+0x08]
- ; gcrRegs +[rbp]
- mov rcx, rbp
- ; gcrRegs +[rcx]
- mov edx, 1
- mov rax, qword ptr [rbp]
- mov rax, qword ptr [rax+0x48]
- call [rax+0x28]<unknown method>
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- mov rcx, rbp
- ; gcrRegs +[rcx]
- call <unknown method>
- ; gcrRegs -[rcx rbp]
- ; gcr arg pop 0
- mov rbp, gword ptr [r15+0x10]
- ; gcrRegs +[rbp]
- mov rcx, rbp
- ; gcrRegs +[rcx]
- mov edx, 1
- mov rax, qword ptr [rbp]
- mov rax, qword ptr [rax+0x48]
- call [rax+0x28]<unknown method>
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- mov rcx, rbp
- ; gcrRegs +[rcx]
- call <unknown method>
- ; gcrRegs -[rcx rbp]
- ; gcr arg pop 0
- mov byte ptr [r15+0x40], 1
- ;; size=67 bbWeight=1.01 PerfScore 22.77
-G_M52710_IG08: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- mov rcx, r15
- ; gcrRegs +[rcx]
- call <unknown method>
- ; gcrRegs -[rcx r15]
- ; gcr arg pop 0
- ;; size=8 bbWeight=1 PerfScore 1.25
-G_M52710_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- inc edi
- mov rbp, gword ptr [rbx+0x30]
- ; gcrRegs +[rbp]
- cmp esi, dword ptr [rbp+0x08]
- jae SHORT G_M52710_IG13
- mov rax, gword ptr [rbp+8*r14+0x10]
- ; gcrRegs +[rax]
- cmp dword ptr [rax+0x08], edi
- jg G_M52710_IG05
- ;; size=25 bbWeight=1 PerfScore 12.25
-G_M52710_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbp]
- inc esi
- mov rax, gword ptr [rbx+0x30]
- ; gcrRegs +[rax]
- cmp dword ptr [rax+0x08], esi
- jg G_M52710_IG04
- ;; size=15 bbWeight=0.50 PerfScore 3.12
-G_M52710_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rax rbx]
- add rsp, 40
+ jg G_M52710_IG10
+ ;; size=14 bbWeight=0.50 PerfScore 3.00
+G_M52710_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rcx rbx]
+ add rsp, 32
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
- pop r15
ret
- ;; size=13 bbWeight=1 PerfScore 4.25
-G_M52710_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx r15]
- mov rcx, r15
+ ;; size=11 bbWeight=1 PerfScore 3.75
+G_M52710_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rbx rbp]
+ mov rcx, 0xD1FFAB1E ; System.Threading.Barrier
+ cmp qword ptr [rbp], rcx
+ jne G_M52710_IG14
+ cmp byte ptr [rbp+0x40], 0
+ jne SHORT G_M52710_IG07
+ ;; size=26 bbWeight=1 PerfScore 8.25
+G_M52710_IG06: ; bbWeight=1.01, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
+ mov r14, gword ptr [rbp+0x08]
+ ; gcrRegs +[r14]
+ mov rcx, r14
; gcrRegs +[rcx]
mov edx, 1
- mov rax, qword ptr [r15]
+ mov rax, qword ptr [r14]
+ mov rax, qword ptr [rax+0x48]
+ call [rax+0x28]<unknown method>
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
+ mov rcx, r14
+ ; gcrRegs +[rcx]
+ call <unknown method>
+ ; gcrRegs -[rcx r14]
+ ; gcr arg pop 0
+ mov r14, gword ptr [rbp+0x10]
+ ; gcrRegs +[r14]
+ mov rcx, r14
+ ; gcrRegs +[rcx]
+ mov edx, 1
+ mov rax, qword ptr [r14]
+ mov rax, qword ptr [rax+0x48]
+ call [rax+0x28]<unknown method>
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
+ mov rcx, r14
+ ; gcrRegs +[rcx]
+ call <unknown method>
+ ; gcrRegs -[rcx r14]
+ ; gcr arg pop 0
+ mov byte ptr [rbp+0x40], 1
+ ;; size=64 bbWeight=1.01 PerfScore 22.77
+G_M52710_IG07: ; bbWeight=1, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
+ mov rcx, rbp
+ ; gcrRegs +[rcx]
+ call <unknown method>
+ ; gcrRegs -[rcx rbp]
+ ; gcr arg pop 0
+ ;; size=8 bbWeight=1 PerfScore 1.25
+G_M52710_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ inc edi
+ mov rcx, gword ptr [rbx+0x30]
+ ; gcrRegs +[rcx]
+ cmp esi, dword ptr [rcx+0x08]
+ jae SHORT G_M52710_IG16
+ mov rcx, gword ptr [rcx+8*rsi+0x10]
+ cmp dword ptr [rcx+0x08], edi
+ jg SHORT G_M52710_IG13
+ ;; size=21 bbWeight=1 PerfScore 12.25
+G_M52710_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
+ jmp SHORT G_M52710_IG15
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M52710_IG10: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ xor esi, esi
+ ;; size=2 bbWeight=0.17 PerfScore 0.04
+G_M52710_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rcx, gword ptr [rbx+0x30]
+ ; gcrRegs +[rcx]
+ cmp esi, dword ptr [rcx+0x08]
+ jae SHORT G_M52710_IG16
+ mov rcx, gword ptr [rcx+8*rsi+0x10]
...
-33 (-9.09%) : 333823.dasm - System.Linq.Parallel.SortHelper2[int,System.Linq.Parallel.Pair2[int,int]]:Dispose():this (Tier1)
@@ -10,179 +10,183 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 8, 6.50) ref -> rbx this class-hnd single-def <System.Linq.Parallel.SortHelper`2[int,System.Linq.Parallel.Pair`2[int,int]]>
-; V01 loc0 [V01,T08] ( 8, 5 ) int -> rsi
-; V02 loc1 [V02,T07] ( 6, 5.50) int -> rdi
+;* V01 loc0 [V01,T09] ( 0, 0 ) int -> zero-ref
+;* V02 loc1 [V02,T10] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 12, 22.07) ref -> r15 class-hnd "dup spill" <System.Threading.Barrier>
+; V04 tmp1 [V04,T00] ( 12, 22.07) ref -> rbp class-hnd "dup spill" <System.Threading.Barrier>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref
-; V06 tmp3 [V06,T10] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V06 tmp3 [V06,T11] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Threading.Barrier>
-; V08 tmp5 [V08,T03] ( 4, 8.10) ref -> rbp class-hnd "Inlining Arg" <System.Threading.ManualResetEventSlim>
-; V09 tmp6 [V09,T04] ( 4, 8.10) ref -> rbp class-hnd "Inlining Arg" <System.Threading.ManualResetEventSlim>
-; V10 tmp7 [V10,T01] ( 6, 9 ) ref -> rbp "arr expr"
-; V11 tmp8 [V11,T05] ( 3, 6 ) ref -> rcx "arr expr"
-; V12 tmp9 [V12,T06] ( 3, 6 ) ref -> rcx "arr expr"
-; V13 tmp10 [V13,T11] ( 2, 0 ) ref -> rdx "argument with side effect"
-; V14 cse0 [V14,T09] ( 4, 3 ) long -> r14 "CSE - aggressive"
+; V08 tmp5 [V08,T03] ( 4, 8.10) ref -> r14 class-hnd "Inlining Arg" <System.Threading.ManualResetEventSlim>
+; V09 tmp6 [V09,T04] ( 4, 8.10) ref -> r14 class-hnd "Inlining Arg" <System.Threading.ManualResetEventSlim>
+; V10 tmp7 [V10,T01] ( 6, 9 ) ref -> rcx "arr expr"
+; V11 tmp8 [V11,T06] ( 3, 6 ) ref -> rcx "arr expr"
+; V12 tmp9 [V12,T07] ( 3, 6 ) ref -> rcx "arr expr"
+; V13 tmp10 [V13,T12] ( 2, 0 ) ref -> rdx "argument with side effect"
+; V14 tmp11 [V14,T05] ( 10, 6.67) long -> rsi "Widened primary induction variable"
+; V15 tmp12 [V15,T08] ( 6, 5.33) long -> rdi "Widened primary induction variable"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M38639_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r15
push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 40
+ sub rsp, 32
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 6.50
-G_M38639_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=13 bbWeight=1 PerfScore 5.50
+G_M38639_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x44], 0
- jne G_M38639_IG11
- ;; size=10 bbWeight=1 PerfScore 4.00
+ jne SHORT G_M38639_IG04
+ ;; size=6 bbWeight=1 PerfScore 4.00
G_M38639_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- xor esi, esi
mov rcx, gword ptr [rbx+0x30]
; gcrRegs +[rcx]
cmp dword ptr [rcx+0x08], 0
- jle G_M38639_IG11
- ;; size=16 bbWeight=0.50 PerfScore 3.12
-G_M38639_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx]
- xor edi, edi
- mov rbp, gword ptr [rbx+0x30]
- ; gcrRegs +[rbp]
- cmp esi, dword ptr [rbp+0x08]
- jae G_M38639_IG13
- mov r14d, esi
- mov rcx, gword ptr [rbp+8*r14+0x10]
- ; gcrRegs +[rcx]
- cmp dword ptr [rcx+0x08], 0
- jle G_M38639_IG10
- ;; size=33 bbWeight=0.50 PerfScore 6.25
-G_M38639_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx rbp]
- mov rcx, gword ptr [rbx+0x30]
- ; gcrRegs +[rcx]
- cmp esi, dword ptr [rcx+0x08]
- jae G_M38639_IG13
- mov rcx, gword ptr [rcx+8*r14+0x10]
- cmp edi, dword ptr [rcx+0x08]
- jae G_M38639_IG13
- mov edx, edi
- mov r15, gword ptr [rcx+8*rdx+0x10]
- ; gcrRegs +[r15]
- test r15, r15
- je SHORT G_M38639_IG09
- cmp dword ptr [r15+0x3C], 0
- jne G_M38639_IG14
- ;; size=50 bbWeight=1 PerfScore 19.50
-G_M38639_IG06: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- mov rcx, 0xD1FFAB1E ; System.Threading.Barrier
- cmp qword ptr [r15], rcx
- jne G_M38639_IG12
- cmp byte ptr [r15+0x40], 0
- jne SHORT G_M38639_IG08
- ;; size=26 bbWeight=1 PerfScore 8.25
-G_M38639_IG07: ; bbWeight=1.01, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- mov rbp, gword ptr [r15+0x08]
- ; gcrRegs +[rbp]
- mov rcx, rbp
- ; gcrRegs +[rcx]
- mov edx, 1
- mov rax, qword ptr [rbp]
- mov rax, qword ptr [rax+0x48]
- call [rax+0x28]<unknown method>
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- mov rcx, rbp
- ; gcrRegs +[rcx]
- call <unknown method>
- ; gcrRegs -[rcx rbp]
- ; gcr arg pop 0
- mov rbp, gword ptr [r15+0x10]
- ; gcrRegs +[rbp]
- mov rcx, rbp
- ; gcrRegs +[rcx]
- mov edx, 1
- mov rax, qword ptr [rbp]
- mov rax, qword ptr [rax+0x48]
- call [rax+0x28]<unknown method>
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- mov rcx, rbp
- ; gcrRegs +[rcx]
- call <unknown method>
- ; gcrRegs -[rcx rbp]
- ; gcr arg pop 0
- mov byte ptr [r15+0x40], 1
- ;; size=67 bbWeight=1.01 PerfScore 22.77
-G_M38639_IG08: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- mov rcx, r15
- ; gcrRegs +[rcx]
- call <unknown method>
- ; gcrRegs -[rcx r15]
- ; gcr arg pop 0
- ;; size=8 bbWeight=1 PerfScore 1.25
-G_M38639_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- inc edi
- mov rbp, gword ptr [rbx+0x30]
- ; gcrRegs +[rbp]
- cmp esi, dword ptr [rbp+0x08]
- jae SHORT G_M38639_IG13
- mov rax, gword ptr [rbp+8*r14+0x10]
- ; gcrRegs +[rax]
- cmp dword ptr [rax+0x08], edi
- jg G_M38639_IG05
- ;; size=25 bbWeight=1 PerfScore 12.25
-G_M38639_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbp]
- inc esi
- mov rax, gword ptr [rbx+0x30]
- ; gcrRegs +[rax]
- cmp dword ptr [rax+0x08], esi
- jg G_M38639_IG04
- ;; size=15 bbWeight=0.50 PerfScore 3.12
-G_M38639_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rax rbx]
- add rsp, 40
+ jg G_M38639_IG10
+ ;; size=14 bbWeight=0.50 PerfScore 3.00
+G_M38639_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rcx rbx]
+ add rsp, 32
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
- pop r15
ret
- ;; size=13 bbWeight=1 PerfScore 4.25
-G_M38639_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx r15]
- mov rcx, r15
+ ;; size=11 bbWeight=1 PerfScore 3.75
+G_M38639_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rbx rbp]
+ mov rcx, 0xD1FFAB1E ; System.Threading.Barrier
+ cmp qword ptr [rbp], rcx
+ jne G_M38639_IG14
+ cmp byte ptr [rbp+0x40], 0
+ jne SHORT G_M38639_IG07
+ ;; size=26 bbWeight=1 PerfScore 8.25
+G_M38639_IG06: ; bbWeight=1.01, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
+ mov r14, gword ptr [rbp+0x08]
+ ; gcrRegs +[r14]
+ mov rcx, r14
; gcrRegs +[rcx]
mov edx, 1
- mov rax, qword ptr [r15]
+ mov rax, qword ptr [r14]
+ mov rax, qword ptr [rax+0x48]
+ call [rax+0x28]<unknown method>
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
+ mov rcx, r14
+ ; gcrRegs +[rcx]
+ call <unknown method>
+ ; gcrRegs -[rcx r14]
+ ; gcr arg pop 0
+ mov r14, gword ptr [rbp+0x10]
+ ; gcrRegs +[r14]
+ mov rcx, r14
+ ; gcrRegs +[rcx]
+ mov edx, 1
+ mov rax, qword ptr [r14]
+ mov rax, qword ptr [rax+0x48]
+ call [rax+0x28]<unknown method>
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
+ mov rcx, r14
+ ; gcrRegs +[rcx]
+ call <unknown method>
+ ; gcrRegs -[rcx r14]
+ ; gcr arg pop 0
+ mov byte ptr [rbp+0x40], 1
+ ;; size=64 bbWeight=1.01 PerfScore 22.77
+G_M38639_IG07: ; bbWeight=1, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
+ mov rcx, rbp
+ ; gcrRegs +[rcx]
+ call <unknown method>
+ ; gcrRegs -[rcx rbp]
+ ; gcr arg pop 0
+ ;; size=8 bbWeight=1 PerfScore 1.25
+G_M38639_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ inc edi
+ mov rcx, gword ptr [rbx+0x30]
+ ; gcrRegs +[rcx]
+ cmp esi, dword ptr [rcx+0x08]
+ jae SHORT G_M38639_IG16
+ mov rcx, gword ptr [rcx+8*rsi+0x10]
+ cmp dword ptr [rcx+0x08], edi
+ jg SHORT G_M38639_IG13
+ ;; size=21 bbWeight=1 PerfScore 12.25
+G_M38639_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
+ jmp SHORT G_M38639_IG15
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M38639_IG10: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ xor esi, esi
+ ;; size=2 bbWeight=0.17 PerfScore 0.04
+G_M38639_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rcx, gword ptr [rbx+0x30]
+ ; gcrRegs +[rcx]
+ cmp esi, dword ptr [rcx+0x08]
+ jae SHORT G_M38639_IG16
+ mov rcx, gword ptr [rcx+8*rsi+0x10]
...
+8 (+16.33%) : 172392.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
@@ -10,11 +10,12 @@
;
; V00 arg0 [V00,T01] ( 5, 40.29) int -> rcx
; V01 arg1 [V01,T04] ( 4, 8 ) byref -> rdx ld-addr-op single-def
-; V02 loc0 [V02,T00] ( 5, 75.58) int -> r8
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 19.64) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 20.64) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V05 tmp2 [V05,T02] ( 4, 39.29) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
+; V07 tmp4 [V07,T00] ( 6, 94.17) long -> r8 "Widened primary induction variable"
;
; Lcl frame size = 40
@@ -27,29 +28,37 @@ G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byre
; byrRegs +[rax]
mov edx, dword ptr [rdx+0x08]
; byrRegs -[rdx]
- xor r8d, r8d
test edx, edx
- jle SHORT G_M1770_IG04
- ;; size=13 bbWeight=1 PerfScore 5.50
-G_M1770_IG03: ; bbWeight=18.64, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
- mov r10d, r8d
- movzx r10, word ptr [rax+2*r10]
+ jle SHORT G_M1770_IG05
+ ;; size=10 bbWeight=1 PerfScore 5.25
+G_M1770_IG03: ; bbWeight=0.95, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref
+ xor r8d, r8d
+ ;; size=3 bbWeight=0.95 PerfScore 0.24
+G_M1770_IG04: ; bbWeight=18.64, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
+ cmp r8d, edx
+ jae SHORT G_M1770_IG07
+ movzx r10, word ptr [rax+2*r8]
xor ecx, r10d
imul ecx, ecx, 0xD1FFAB1E
inc r8d
cmp r8d, edx
- jl SHORT G_M1770_IG03
- ;; size=25 bbWeight=18.64 PerfScore 111.87
-G_M1770_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jl SHORT G_M1770_IG04
+ ;; size=27 bbWeight=18.64 PerfScore 130.51
+G_M1770_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rax]
mov eax, ecx
;; size=2 bbWeight=1 PerfScore 0.25
-G_M1770_IG05: ; bbWeight=1, epilog, nogc, extend
+G_M1770_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
+G_M1770_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 49, prolog size 4, PerfScore 119.12, instruction count 16, allocated bytes for code 49 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
+; Total bytes of code 57, prolog size 4, PerfScore 137.75, instruction count 19, allocated bytes for code 57 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
; ============================================================
Unwind Info:
+6 (+17.14%) : 357620.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (Tier1)
@@ -9,11 +9,12 @@
; Final local variable assignments
;
; V00 arg0 [V00,T03] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-; V01 loc0 [V01,T00] ( 5,555.53) int -> rdx
+;* V01 loc0 [V01,T04] ( 0, 0 ) int -> zero-ref
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 2,139.63) byref -> rax single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3,140.63) int -> rcx single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4,279.27) int -> rcx single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[ubyte]>
+; V06 tmp4 [V06,T00] ( 6,694.16) long -> rdx "Widened primary induction variable"
;
; Lcl frame size = 40
@@ -26,24 +27,32 @@ G_M58764_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
; byrRegs +[rax]
mov ecx, dword ptr [rcx+0x08]
; byrRegs -[rcx]
- xor edx, edx
test ecx, ecx
- jle SHORT G_M58764_IG04
- ;; size=12 bbWeight=1 PerfScore 5.50
-G_M58764_IG03: ; bbWeight=138.63, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
- mov r8d, edx
- mov byte ptr [rax+r8], 204
+ jle SHORT G_M58764_IG05
+ ;; size=10 bbWeight=1 PerfScore 5.25
+G_M58764_IG03: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref
+ xor edx, edx
+ ;; size=2 bbWeight=0.99 PerfScore 0.25
+G_M58764_IG04: ; bbWeight=138.63, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
+ cmp edx, ecx
+ jae SHORT G_M58764_IG06
+ mov byte ptr [rax+rdx], 204
inc edx
cmp edx, ecx
- jl SHORT G_M58764_IG03
- ;; size=14 bbWeight=138.63 PerfScore 381.24
-G_M58764_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jl SHORT G_M58764_IG04
+ ;; size=14 bbWeight=138.63 PerfScore 519.88
+G_M58764_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rax]
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
+G_M58764_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 35, prolog size 4, PerfScore 388.24, instruction count 13, allocated bytes for code 35 (MethodHash=de8b1a73) for method System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (Tier1)
+; Total bytes of code 41, prolog size 4, PerfScore 526.87, instruction count 16, allocated bytes for code 41 (MethodHash=de8b1a73) for method System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (Tier1)
; ============================================================
Unwind Info:
+16 (+21.05%) : 198786.dasm - System.Collections.Concurrent.BlockingCollection1[int]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection1[int][],int):int (Tier1)
@@ -11,52 +11,57 @@
;
; V00 arg0 [V00,T01] ( 5, 12.37) ref -> rcx class-hnd single-def <System.Collections.Concurrent.BlockingCollection`1[int][]>
; V01 arg1 [V01,T03] ( 3, 2.21) int -> rdx single-def
-; V02 loc0 [V02,T00] ( 7, 40.42) int -> rbx
+; V02 loc0 [V02,T04] ( 4, 0.84) int -> rbx
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T04] ( 3, 1.26) ref -> rcx class-hnd single-def "Inlining Arg" <System.Collections.Concurrent.BlockingCollection`1[int]>
+; V04 tmp1 [V04,T05] ( 3, 1.26) ref -> rcx class-hnd single-def "Inlining Arg" <System.Collections.Concurrent.BlockingCollection`1[int]>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Threading.CancellationToken>
;* V06 tmp3 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref "field V05._source (fldOffset=0x0)" P-INDEP
-;* V08 tmp5 [V08,T05] ( 0, 0 ) ref -> zero-ref single-def "field V06._source (fldOffset=0x0)" P-INDEP
-; V09 cse0 [V09,T02] ( 3, 11.95) int -> rax "CSE - aggressive"
+;* V08 tmp5 [V08,T06] ( 0, 0 ) ref -> zero-ref single-def "field V06._source (fldOffset=0x0)" P-INDEP
+; V09 tmp6 [V09,T00] ( 6, 39.77) long -> r8 "Widened primary induction variable"
+; V10 cse0 [V10,T02] ( 4, 12.16) int -> r9 "CSE - aggressive"
;
; Lcl frame size = 32
-G_M41602_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M41602_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbx
sub rsp, 32
;; size=5 bbWeight=1 PerfScore 1.25
G_M41602_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
- xor ebx, ebx
- mov eax, dword ptr [rcx+0x08]
- test eax, eax
- jle SHORT G_M41602_IG05
- ;; size=9 bbWeight=1 PerfScore 3.50
-G_M41602_IG03: ; bbWeight=9.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r9d, ebx
- mov r9, gword ptr [rcx+8*r9+0x10]
- ; gcrRegs +[r9]
- cmp gword ptr [r9+0x10], 0
- je SHORT G_M41602_IG07
- ;; size=15 bbWeight=9.16 PerfScore 57.24
-G_M41602_IG04: ; bbWeight=9.95, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r9]
- inc ebx
- cmp eax, ebx
- jg SHORT G_M41602_IG03
- ;; size=6 bbWeight=9.95 PerfScore 14.92
-G_M41602_IG05: ; bbWeight=0.79, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r9d, dword ptr [rcx+0x08]
+ test r9d, r9d
+ jle SHORT G_M41602_IG06
+ ;; size=9 bbWeight=1 PerfScore 3.25
+G_M41602_IG03: ; bbWeight=0.56, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ xor r8d, r8d
+ ;; size=3 bbWeight=0.56 PerfScore 0.14
+G_M41602_IG04: ; bbWeight=9.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ mov rax, gword ptr [rcx+8*r8+0x10]
+ ; gcrRegs +[rax]
+ cmp gword ptr [rax+0x10], 0
+ je SHORT G_M41602_IG08
+ ;; size=12 bbWeight=9.16 PerfScore 54.95
+G_M41602_IG05: ; bbWeight=9.95, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ inc r8d
+ cmp r9d, r8d
+ jg SHORT G_M41602_IG04
+ ;; size=8 bbWeight=9.95 PerfScore 14.92
+G_M41602_IG06: ; bbWeight=0.79, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
mov eax, -1
;; size=5 bbWeight=0.79 PerfScore 0.20
-G_M41602_IG06: ; bbWeight=0.79, epilog, nogc, extend
+G_M41602_IG07: ; bbWeight=0.79, epilog, nogc, extend
add rsp, 32
pop rbx
ret
;; size=6 bbWeight=0.79 PerfScore 1.38
-G_M41602_IG07: ; bbWeight=0.21, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+G_M41602_IG08: ; bbWeight=0.21, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx]
+ mov ebx, r8d
+ cmp ebx, r9d
+ jae SHORT G_M41602_IG10
mov r9d, ebx
mov rcx, gword ptr [rcx+8*r9+0x10]
cmp byte ptr [rcx], cl
@@ -67,14 +72,19 @@ G_M41602_IG07: ; bbWeight=0.21, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs -[rcx r9]
; gcr arg pop 0
mov eax, ebx
- ;; size=24 bbWeight=0.21 PerfScore 1.89
-G_M41602_IG08: ; bbWeight=0.21, epilog, nogc, extend
+ ;; size=32 bbWeight=0.21 PerfScore 2.21
+G_M41602_IG09: ; bbWeight=0.21, epilog, nogc, extend
add rsp, 32
pop rbx
ret
;; size=6 bbWeight=0.21 PerfScore 0.37
+G_M41602_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 5, PerfScore 80.75, instruction count 27, allocated bytes for code 76 (MethodHash=30625d7d) for method System.Collections.Concurrent.BlockingCollection`1[int]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection`1[int][],int):int (Tier1)
+; Total bytes of code 92, prolog size 5, PerfScore 78.67, instruction count 31, allocated bytes for code 92 (MethodHash=30625d7d) for method System.Collections.Concurrent.BlockingCollection`1[int]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection`1[int][],int):int (Tier1)
; ============================================================
Unwind Info:
librariestestsnotieredcompilation.run.windows.x64.Release.mch
-29 (-13.24%) : 7661.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
@@ -10,19 +10,19 @@
;
; V00 arg0 [V00,T07] ( 5, 8 ) int -> rbx single-def
; V01 loc0 [V01,T04] ( 7, 22 ) ref -> rdi class-hnd <<unknown class>>
-; V02 loc1 [V02,T02] ( 5, 31.84) ref -> r13 class-hnd exact <<unknown class>>
-; V03 loc2 [V03,T01] ( 7, 87.20) int -> r12
+; V02 loc1 [V02,T02] ( 5, 31.84) ref -> r14 class-hnd exact <<unknown class>>
+; V03 loc2 [V03,T08] ( 3, 10 ) int -> r15
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T00] ( 3, 95.04) ref -> rax class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol>
-; V06 cse0 [V06,T10] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
-; V07 cse1 [V07,T03] ( 3, 23.84) int -> [rsp+0x34] spill-single-def "CSE - aggressive"
-; V08 cse2 [V08,T05] ( 2, 17.84) long -> [rsp+0x28] spill-single-def hoist "CSE - aggressive"
-; V09 cse3 [V09,T11] ( 2, 5 ) long -> r14 hoist "CSE - aggressive"
-; V10 cse4 [V10,T09] ( 2, 5 ) byref -> r15 hoist "CSE - aggressive"
-; V11 cse5 [V11,T08] ( 3, 6 ) long -> rsi "CSE - aggressive"
-; V12 cse6 [V12,T06] ( 3, 12 ) int -> r12 "CSE - aggressive"
+;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "Widened primary induction variable"
+; V07 tmp3 [V07,T01] ( 6, 81.20) long -> r15 "Widened primary induction variable"
+; V08 cse0 [V08,T10] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
+; V09 cse1 [V09,T03] ( 3, 23.84) int -> r13 "CSE - aggressive"
+; V10 cse2 [V10,T05] ( 2, 17.84) long -> r12 hoist "CSE - aggressive"
+; V11 cse3 [V11,T09] ( 3, 6 ) long -> rsi "CSE - aggressive"
+; V12 cse4 [V12,T06] ( 3, 12 ) int -> r15 "CSE - aggressive"
;
-; Lcl frame size = 56
+; Lcl frame size = 40
G_M65390_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -33,7 +33,7 @@ G_M65390_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 56
+ sub rsp, 40
mov ebx, ecx
;; size=18 bbWeight=1 PerfScore 8.50
G_M65390_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -45,76 +45,68 @@ G_M65390_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea edx, [rbx+0x0F]
and edx, -16
movsxd rbp, edx
- mov r14, 0xD1FFAB1E ; <unknown class>
- mov r15, 0xD1FFAB1E ; static handle
- ; byrRegs +[r15]
- ;; size=51 bbWeight=1 PerfScore 7.75
-G_M65390_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=8000 {r15}, byref, isz
+ ;; size=31 bbWeight=1 PerfScore 7.25
+G_M65390_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, rbp
- mov rcx, r14
+ mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWARR_1_OBJ
; gcrRegs +[rax]
; gcr arg pop 0
- mov r13, rax
- ; gcrRegs +[r13]
- mov r12d, dword ptr [rdi+0x08]
- mov r8d, r12d
+ mov r14, rax
+ ; gcrRegs +[r14]
+ mov r15d, dword ptr [rdi+0x08]
+ mov r8d, r15d
mov rcx, rdi
; gcrRegs +[rcx]
- mov rdx, r13
+ mov rdx, r14
; gcrRegs +[rdx]
call [<unknown method>]
; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
- mov eax, dword ptr [r13+0x08]
- mov dword ptr [rsp+0x34], eax
- cmp eax, r12d
+ mov r13d, dword ptr [r14+0x08]
+ cmp r13d, r15d
jle SHORT G_M65390_IG06
- ;; size=46 bbWeight=4 PerfScore 47.00
-G_M65390_IG04: ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=8000 {r15}, byref
- mov rdx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol
- mov qword ptr [rsp+0x28], rdx
- ;; size=15 bbWeight=2 PerfScore 2.50
-G_M65390_IG05: ; bbWeight=15.84, gcrefRegs=2080 {rdi r13}, byrefRegs=8000 {r15}, byref, isz
- mov rcx, rdx
+ ;; size=49 bbWeight=4 PerfScore 43.00
+G_M65390_IG04: ; bbWeight=2, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref
+ mov r15d, r15d
+ mov r12, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol
+ ;; size=13 bbWeight=2 PerfScore 1.00
+G_M65390_IG05: ; bbWeight=15.84, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz
+ mov rcx, r12
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
- mov dword ptr [rax+0x20], r12d
- mov ecx, r12d
- lea rcx, bword ptr [r13+8*rcx+0x10]
+ mov dword ptr [rax+0x20], r15d
+ lea rcx, bword ptr [r14+8*r15+0x10]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- inc r12d
- mov r8d, dword ptr [rsp+0x34]
- cmp r8d, r12d
- mov rdx, qword ptr [rsp+0x28]
+ inc r15d
+ cmp r13d, r15d
jg SHORT G_M65390_IG05
- ;; size=46 bbWeight=15.84 PerfScore 146.52
-G_M65390_IG06: ; bbWeight=4, gcrefRegs=2080 {rdi r13}, byrefRegs=8000 {r15}, byref
+ ;; size=33 bbWeight=15.84 PerfScore 95.04
+G_M65390_IG06: ; bbWeight=4, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz
mov r8, rdi
; gcrRegs +[r8]
- mov rdx, r13
+ mov rdx, r14
; gcrRegs +[rdx]
- mov rcx, r15
+ mov rcx, 0xD1FFAB1E ; static handle
; byrRegs +[rcx]
call <unknown method>
- ; gcrRegs -[rdx rdi r8 r13] +[rax]
+ ; gcrRegs -[rdx rdi r8 r14] +[rax]
; byrRegs -[rcx]
; gcr arg pop 0
mov rdi, gword ptr [rsi]
; gcrRegs +[rdi]
cmp dword ptr [rdi+0x08], ebx
- jl G_M65390_IG03
- ;; size=26 bbWeight=4 PerfScore 31.00
+ jl SHORT G_M65390_IG03
+ ;; size=29 bbWeight=4 PerfScore 31.00
G_M65390_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rax rdi]
- ; byrRegs -[r15]
- add rsp, 56
+ add rsp, 40
pop rbx
pop rbp
pop rsi
@@ -126,7 +118,7 @@ G_M65390_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret
;; size=17 bbWeight=1 PerfScore 5.25
-; Total bytes of code 219, prolog size 18, PerfScore 248.52, instruction count 63, allocated bytes for code 219 (MethodHash=ce860091) for method Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
+; Total bytes of code 190, prolog size 18, PerfScore 191.04, instruction count 57, allocated bytes for code 190 (MethodHash=ce860091) for method Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
; ============================================================
Unwind Info:
@@ -139,7 +131,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
-29 (-13.24%) : 51683.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
@@ -10,19 +10,19 @@
;
; V00 arg0 [V00,T07] ( 5, 8 ) int -> rbx single-def
; V01 loc0 [V01,T04] ( 7, 22 ) ref -> rdi class-hnd <<unknown class>>
-; V02 loc1 [V02,T02] ( 5, 31.84) ref -> r13 class-hnd exact <<unknown class>>
-; V03 loc2 [V03,T01] ( 7, 87.20) int -> r12
+; V02 loc1 [V02,T02] ( 5, 31.84) ref -> r14 class-hnd exact <<unknown class>>
+; V03 loc2 [V03,T08] ( 3, 10 ) int -> r15
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T00] ( 3, 95.04) ref -> rax class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol>
-; V06 cse0 [V06,T10] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
-; V07 cse1 [V07,T03] ( 3, 23.84) int -> [rsp+0x34] spill-single-def "CSE - aggressive"
-; V08 cse2 [V08,T05] ( 2, 17.84) long -> [rsp+0x28] spill-single-def hoist "CSE - aggressive"
-; V09 cse3 [V09,T11] ( 2, 5 ) long -> r14 hoist "CSE - aggressive"
-; V10 cse4 [V10,T09] ( 2, 5 ) byref -> r15 hoist "CSE - aggressive"
-; V11 cse5 [V11,T08] ( 3, 6 ) long -> rsi "CSE - aggressive"
-; V12 cse6 [V12,T06] ( 3, 12 ) int -> r12 "CSE - aggressive"
+;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "Widened primary induction variable"
+; V07 tmp3 [V07,T01] ( 6, 81.20) long -> r15 "Widened primary induction variable"
+; V08 cse0 [V08,T10] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
+; V09 cse1 [V09,T03] ( 3, 23.84) int -> r13 "CSE - aggressive"
+; V10 cse2 [V10,T05] ( 2, 17.84) long -> r12 hoist "CSE - aggressive"
+; V11 cse3 [V11,T09] ( 3, 6 ) long -> rsi "CSE - aggressive"
+; V12 cse4 [V12,T06] ( 3, 12 ) int -> r15 "CSE - aggressive"
;
-; Lcl frame size = 56
+; Lcl frame size = 40
G_M65390_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -33,7 +33,7 @@ G_M65390_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 56
+ sub rsp, 40
mov ebx, ecx
;; size=18 bbWeight=1 PerfScore 8.50
G_M65390_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -45,76 +45,68 @@ G_M65390_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea edx, [rbx+0x0F]
and edx, -16
movsxd rbp, edx
- mov r14, 0xD1FFAB1E ; <unknown class>
- mov r15, 0xD1FFAB1E ; static handle
- ; byrRegs +[r15]
- ;; size=51 bbWeight=1 PerfScore 7.75
-G_M65390_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=8000 {r15}, byref, isz
+ ;; size=31 bbWeight=1 PerfScore 7.25
+G_M65390_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, rbp
- mov rcx, r14
+ mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWARR_1_OBJ
; gcrRegs +[rax]
; gcr arg pop 0
- mov r13, rax
- ; gcrRegs +[r13]
- mov r12d, dword ptr [rdi+0x08]
- mov r8d, r12d
+ mov r14, rax
+ ; gcrRegs +[r14]
+ mov r15d, dword ptr [rdi+0x08]
+ mov r8d, r15d
mov rcx, rdi
; gcrRegs +[rcx]
- mov rdx, r13
+ mov rdx, r14
; gcrRegs +[rdx]
call [<unknown method>]
; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
- mov eax, dword ptr [r13+0x08]
- mov dword ptr [rsp+0x34], eax
- cmp eax, r12d
+ mov r13d, dword ptr [r14+0x08]
+ cmp r13d, r15d
jle SHORT G_M65390_IG06
- ;; size=46 bbWeight=4 PerfScore 47.00
-G_M65390_IG04: ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=8000 {r15}, byref
- mov rdx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol
- mov qword ptr [rsp+0x28], rdx
- ;; size=15 bbWeight=2 PerfScore 2.50
-G_M65390_IG05: ; bbWeight=15.84, gcrefRegs=2080 {rdi r13}, byrefRegs=8000 {r15}, byref, isz
- mov rcx, rdx
+ ;; size=49 bbWeight=4 PerfScore 43.00
+G_M65390_IG04: ; bbWeight=2, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref
+ mov r15d, r15d
+ mov r12, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol
+ ;; size=13 bbWeight=2 PerfScore 1.00
+G_M65390_IG05: ; bbWeight=15.84, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz
+ mov rcx, r12
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
- mov dword ptr [rax+0x20], r12d
- mov ecx, r12d
- lea rcx, bword ptr [r13+8*rcx+0x10]
+ mov dword ptr [rax+0x20], r15d
+ lea rcx, bword ptr [r14+8*r15+0x10]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- inc r12d
- mov r8d, dword ptr [rsp+0x34]
- cmp r8d, r12d
- mov rdx, qword ptr [rsp+0x28]
+ inc r15d
+ cmp r13d, r15d
jg SHORT G_M65390_IG05
- ;; size=46 bbWeight=15.84 PerfScore 146.52
-G_M65390_IG06: ; bbWeight=4, gcrefRegs=2080 {rdi r13}, byrefRegs=8000 {r15}, byref
+ ;; size=33 bbWeight=15.84 PerfScore 95.04
+G_M65390_IG06: ; bbWeight=4, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz
mov r8, rdi
; gcrRegs +[r8]
- mov rdx, r13
+ mov rdx, r14
; gcrRegs +[rdx]
- mov rcx, r15
+ mov rcx, 0xD1FFAB1E ; static handle
; byrRegs +[rcx]
call <unknown method>
- ; gcrRegs -[rdx rdi r8 r13] +[rax]
+ ; gcrRegs -[rdx rdi r8 r14] +[rax]
; byrRegs -[rcx]
; gcr arg pop 0
mov rdi, gword ptr [rsi]
; gcrRegs +[rdi]
cmp dword ptr [rdi+0x08], ebx
- jl G_M65390_IG03
- ;; size=26 bbWeight=4 PerfScore 31.00
+ jl SHORT G_M65390_IG03
+ ;; size=29 bbWeight=4 PerfScore 31.00
G_M65390_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rax rdi]
- ; byrRegs -[r15]
- add rsp, 56
+ add rsp, 40
pop rbx
pop rbp
pop rsi
@@ -126,7 +118,7 @@ G_M65390_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret
;; size=17 bbWeight=1 PerfScore 5.25
-; Total bytes of code 219, prolog size 18, PerfScore 248.52, instruction count 63, allocated bytes for code 219 (MethodHash=ce860091) for method Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
+; Total bytes of code 190, prolog size 18, PerfScore 191.04, instruction count 57, allocated bytes for code 190 (MethodHash=ce860091) for method Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
; ============================================================
Unwind Info:
@@ -139,7 +131,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
-11 (-12.64%) : 1563.dasm - SharedTypes.ComInterfaces.IIntArrayImpl:Double(int[],int):this (FullOpts)
@@ -9,11 +9,12 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <SharedTypes.ComInterfaces.IIntArrayImpl>
; V01 arg1 [V01,T02] ( 9, 12.04) ref -> rdx class-hnd single-def <int[]>
-; V02 arg2 [V02,T04] ( 6, 8 ) int -> r8 single-def
-; V03 loc0 [V03,T00] ( 11, 17.08) int -> rax
+; V02 arg2 [V02,T03] ( 6, 8 ) int -> r8 single-def
+;* V03 loc0 [V03,T04] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T01] ( 4, 16 ) int -> r10 "Strict ordering of exceptions for Array store"
-; V06 cse0 [V06,T03] ( 3, 11.88) long -> rcx "CSE - aggressive"
+; V05 tmp1 [V05,T01] ( 4, 16 ) int -> rcx "Strict ordering of exceptions for Array store"
+; V06 tmp2 [V06,T05] ( 7, 0.25) long -> rax "Widened primary induction variable"
+; V07 tmp3 [V07,T00] ( 6, 20.80) long -> rax "Widened primary induction variable"
;
; Lcl frame size = 40
@@ -22,52 +23,52 @@ G_M50668_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=4 bbWeight=1 PerfScore 0.25
G_M50668_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx]
- xor eax, eax
test r8d, r8d
- jle SHORT G_M50668_IG06
+ jle SHORT G_M50668_IG07
test rdx, rdx
je SHORT G_M50668_IG05
cmp dword ptr [rdx+0x08], r8d
jl SHORT G_M50668_IG05
+ xor eax, eax
;; size=18 bbWeight=1 PerfScore 6.75
G_M50668_IG03: ; bbWeight=3.96, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- mov ecx, eax
- mov r10d, dword ptr [rdx+4*rcx+0x10]
- add r10d, r10d
- mov dword ptr [rdx+4*rcx+0x10], r10d
+ mov ecx, dword ptr [rdx+4*rax+0x10]
+ add ecx, ecx
+ mov dword ptr [rdx+4*rax+0x10], ecx
inc eax
cmp eax, r8d
jl SHORT G_M50668_IG03
- ;; size=22 bbWeight=3.96 PerfScore 19.80
+ ;; size=17 bbWeight=3.96 PerfScore 18.81
G_M50668_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx]
- jmp SHORT G_M50668_IG06
+ jmp SHORT G_M50668_IG07
;; size=2 bbWeight=1 PerfScore 2.00
-G_M50668_IG05: ; bbWeight=0.04, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+G_M50668_IG05: ; bbWeight=0.01, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
+ xor eax, eax
+ ;; size=2 bbWeight=0.01 PerfScore 0.00
+G_M50668_IG06: ; bbWeight=0.04, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
cmp eax, dword ptr [rdx+0x08]
- jae SHORT G_M50668_IG07
- mov r10d, eax
- mov r10d, dword ptr [rdx+4*r10+0x10]
- add r10d, r10d
- mov ecx, eax
- mov dword ptr [rdx+4*rcx+0x10], r10d
+ jae SHORT G_M50668_IG08
+ mov ecx, dword ptr [rdx+4*rax+0x10]
+ add ecx, ecx
+ mov dword ptr [rdx+4*rax+0x10], ecx
inc eax
cmp eax, r8d
- jl SHORT G_M50668_IG05
- ;; size=30 bbWeight=0.04 PerfScore 0.37
-G_M50668_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jl SHORT G_M50668_IG06
+ ;; size=22 bbWeight=0.04 PerfScore 0.35
+G_M50668_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdx]
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-G_M50668_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50668_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 87, prolog size 4, PerfScore 30.42, instruction count 30, allocated bytes for code 87 (MethodHash=34df3a13) for method SharedTypes.ComInterfaces.IIntArrayImpl:Double(int[],int):this (FullOpts)
+; Total bytes of code 76, prolog size 4, PerfScore 29.41, instruction count 28, allocated bytes for code 76 (MethodHash=34df3a13) for method SharedTypes.ComInterfaces.IIntArrayImpl:Double(int[],int):this (FullOpts)
; ============================================================
Unwind Info:
+6 (+17.65%) : 235356.dasm - System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
@@ -8,11 +8,12 @@
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-; V01 loc0 [V01,T00] ( 6, 21 ) int -> rdx
+;* V01 loc0 [V01,T04] ( 0, 0 ) int -> zero-ref
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T03] ( 2, 5 ) byref -> rax single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T02] ( 3, 6 ) int -> rcx single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T02] ( 4, 10 ) int -> rcx single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[ubyte]>
+; V06 tmp4 [V06,T00] ( 7, 25 ) long -> rdx "Widened primary induction variable"
;
; Lcl frame size = 40
@@ -25,24 +26,30 @@ G_M39013_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
; byrRegs +[rax]
mov ecx, dword ptr [rcx+0x08]
; byrRegs -[rcx]
- xor edx, edx
test ecx, ecx
jle SHORT G_M39013_IG04
+ xor edx, edx
;; size=12 bbWeight=1 PerfScore 5.50
G_M39013_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
- mov r8d, edx
- mov byte ptr [rax+r8], dl
+ cmp edx, ecx
+ jae SHORT G_M39013_IG05
+ mov byte ptr [rax+rdx], dl
inc edx
cmp edx, ecx
jl SHORT G_M39013_IG03
- ;; size=13 bbWeight=4 PerfScore 11.00
+ ;; size=13 bbWeight=4 PerfScore 15.00
G_M39013_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rax]
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
+G_M39013_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 34, prolog size 4, PerfScore 18.00, instruction count 13, allocated bytes for code 34 (MethodHash=6c0d679a) for method System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
+; Total bytes of code 40, prolog size 4, PerfScore 22.00, instruction count 16, allocated bytes for code 40 (MethodHash=6c0d679a) for method System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
; ============================================================
Unwind Info:
+8 (+18.60%) : 123295.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
@@ -10,14 +10,15 @@
; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx single-def
; V01 loc0 [V01,T02] ( 4, 10 ) int -> rax
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> r8
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) ubyte -> zero-ref
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) byref -> zero-ref "field V00._reference (fldOffset=0x0)" P-INDEP
;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref "field V00._length (fldOffset=0x8)" P-INDEP
; V08 tmp3 [V08,T04] ( 2, 5 ) byref -> rdx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V09 tmp4 [V09,T03] ( 3, 6 ) int -> rcx "field V02._length (fldOffset=0x8)" P-INDEP
+; V09 tmp4 [V09,T03] ( 4, 10 ) int -> rcx "field V02._length (fldOffset=0x8)" P-INDEP
;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
+; V11 tmp6 [V11,T00] ( 6, 21 ) long -> r8 "Widened primary induction variable"
;
; Lcl frame size = 40
@@ -31,25 +32,31 @@ G_M59336_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
; byrRegs +[rdx]
mov ecx, dword ptr [rcx+0x08]
; byrRegs -[rcx]
- xor r8d, r8d
test ecx, ecx
jle SHORT G_M59336_IG04
+ xor r8d, r8d
;; size=15 bbWeight=1 PerfScore 5.75
G_M59336_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref, isz
- mov r10d, r8d
- movzx r10, byte ptr [rdx+r10]
+ cmp r8d, ecx
+ jae SHORT G_M59336_IG05
+ movzx r10, byte ptr [rdx+r8]
add eax, r10d
inc r8d
cmp r8d, ecx
jl SHORT G_M59336_IG03
- ;; size=19 bbWeight=4 PerfScore 16.00
+ ;; size=21 bbWeight=4 PerfScore 20.00
G_M59336_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rdx]
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
+G_M59336_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 43, prolog size 4, PerfScore 23.25, instruction count 15, allocated bytes for code 43 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 51, prolog size 4, PerfScore 27.25, instruction count 18, allocated bytes for code 51 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================
Unwind Info:
+16 (+21.05%) : 69368.dasm - System.Collections.Concurrent.BlockingCollection1[int]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection1[int][],int):int (FullOpts)
@@ -10,40 +10,40 @@
;
; V00 arg0 [V00,T01] ( 5, 7.50) ref -> rcx class-hnd single-def <System.Collections.Concurrent.BlockingCollection`1[int][]>
; V01 arg1 [V01,T03] ( 3, 2.50) int -> rdx single-def
-; V02 loc0 [V02,T00] ( 7, 18 ) int -> rbx
+; V02 loc0 [V02,T04] ( 4, 2 ) int -> rbx
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T04] ( 3, 3 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Collections.Concurrent.BlockingCollection`1[int]>
+; V04 tmp1 [V04,T05] ( 3, 3 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Collections.Concurrent.BlockingCollection`1[int]>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Threading.CancellationToken>
;* V06 tmp3 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref "field V05._source (fldOffset=0x0)" P-INDEP
-;* V08 tmp5 [V08,T05] ( 0, 0 ) ref -> zero-ref single-def "field V06._source (fldOffset=0x0)" P-INDEP
-; V09 cse0 [V09,T02] ( 3, 6 ) int -> rax "CSE - aggressive"
+;* V08 tmp5 [V08,T06] ( 0, 0 ) ref -> zero-ref single-def "field V06._source (fldOffset=0x0)" P-INDEP
+; V09 tmp6 [V09,T00] ( 6, 17.50) long -> r8 "Widened primary induction variable"
+; V10 cse0 [V10,T02] ( 4, 6.50) int -> r9 "CSE - aggressive"
;
; Lcl frame size = 32
-G_M41602_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M41602_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbx
sub rsp, 32
;; size=5 bbWeight=1 PerfScore 1.25
G_M41602_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
- xor ebx, ebx
- mov eax, dword ptr [rcx+0x08]
- test eax, eax
+ mov r9d, dword ptr [rcx+0x08]
+ test r9d, r9d
jle SHORT G_M41602_IG04
- ;; size=9 bbWeight=1 PerfScore 3.50
+ xor r8d, r8d
+ ;; size=12 bbWeight=1 PerfScore 3.50
G_M41602_IG03: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r9d, ebx
- mov r9, gword ptr [rcx+8*r9+0x10]
- ; gcrRegs +[r9]
- cmp gword ptr [r9+0x10], 0
+ mov rax, gword ptr [rcx+8*r8+0x10]
+ ; gcrRegs +[rax]
+ cmp gword ptr [rax+0x10], 0
je SHORT G_M41602_IG06
- inc ebx
- cmp eax, ebx
+ inc r8d
+ cmp r9d, r8d
jg SHORT G_M41602_IG03
- ;; size=21 bbWeight=4 PerfScore 31.00
+ ;; size=20 bbWeight=4 PerfScore 30.00
G_M41602_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx r9]
+ ; gcrRegs -[rax rcx]
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M41602_IG05: ; bbWeight=0.50, epilog, nogc, extend
@@ -51,8 +51,11 @@ G_M41602_IG05: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
ret
;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M41602_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+G_M41602_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx]
+ mov ebx, r8d
+ cmp ebx, r9d
+ jae SHORT G_M41602_IG08
mov r9d, ebx
mov rcx, gword ptr [rcx+8*r9+0x10]
cmp byte ptr [rcx], cl
@@ -63,14 +66,19 @@ G_M41602_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs -[rcx r9]
; gcr arg pop 0
mov eax, ebx
- ;; size=24 bbWeight=0.50 PerfScore 4.50
+ ;; size=32 bbWeight=0.50 PerfScore 5.25
G_M41602_IG07: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32
pop rbx
ret
;; size=6 bbWeight=0.50 PerfScore 0.88
+G_M41602_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 5, PerfScore 42.12, instruction count 27, allocated bytes for code 76 (MethodHash=30625d7d) for method System.Collections.Concurrent.BlockingCollection`1[int]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection`1[int][],int):int (FullOpts)
+; Total bytes of code 92, prolog size 5, PerfScore 41.88, instruction count 31, allocated bytes for code 92 (MethodHash=30625d7d) for method System.Collections.Concurrent.BlockingCollection`1[int]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection`1[int][],int):int (FullOpts)
; ============================================================
Unwind Info:
realworld.run.windows.x64.checked.mch
-29 (-13.24%) : 24368.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
@@ -10,19 +10,19 @@
;
; V00 arg0 [V00,T07] ( 5, 8 ) int -> rbx single-def
; V01 loc0 [V01,T04] ( 7, 22 ) ref -> rdi class-hnd <<unknown class>>
-; V02 loc1 [V02,T02] ( 5, 31.84) ref -> r13 class-hnd exact <<unknown class>>
-; V03 loc2 [V03,T01] ( 7, 87.20) int -> r12
+; V02 loc1 [V02,T02] ( 5, 31.84) ref -> r14 class-hnd exact <<unknown class>>
+; V03 loc2 [V03,T08] ( 3, 10 ) int -> r15
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T00] ( 3, 95.04) ref -> rax class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol>
-; V06 cse0 [V06,T10] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
-; V07 cse1 [V07,T03] ( 3, 23.84) int -> [rsp+0x34] spill-single-def "CSE - aggressive"
-; V08 cse2 [V08,T05] ( 2, 17.84) long -> [rsp+0x28] spill-single-def hoist "CSE - aggressive"
-; V09 cse3 [V09,T11] ( 2, 5 ) long -> r14 hoist "CSE - aggressive"
-; V10 cse4 [V10,T09] ( 2, 5 ) byref -> r15 hoist "CSE - aggressive"
-; V11 cse5 [V11,T08] ( 3, 6 ) long -> rsi "CSE - aggressive"
-; V12 cse6 [V12,T06] ( 3, 12 ) int -> r12 "CSE - aggressive"
+;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "Widened primary induction variable"
+; V07 tmp3 [V07,T01] ( 6, 81.20) long -> r15 "Widened primary induction variable"
+; V08 cse0 [V08,T10] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
+; V09 cse1 [V09,T03] ( 3, 23.84) int -> r13 "CSE - aggressive"
+; V10 cse2 [V10,T05] ( 2, 17.84) long -> r12 hoist "CSE - aggressive"
+; V11 cse3 [V11,T09] ( 3, 6 ) long -> rsi "CSE - aggressive"
+; V12 cse4 [V12,T06] ( 3, 12 ) int -> r15 "CSE - aggressive"
;
-; Lcl frame size = 56
+; Lcl frame size = 40
G_M65390_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -33,7 +33,7 @@ G_M65390_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 56
+ sub rsp, 40
mov ebx, ecx
;; size=18 bbWeight=1 PerfScore 8.50
G_M65390_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -45,76 +45,68 @@ G_M65390_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea edx, [rbx+0x0F]
and edx, -16
movsxd rbp, edx
- mov r14, 0xD1FFAB1E ; <unknown class>
- mov r15, 0xD1FFAB1E ; static handle
- ; byrRegs +[r15]
- ;; size=51 bbWeight=1 PerfScore 7.75
-G_M65390_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=8000 {r15}, byref, isz
+ ;; size=31 bbWeight=1 PerfScore 7.25
+G_M65390_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, rbp
- mov rcx, r14
+ mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWARR_1_OBJ
; gcrRegs +[rax]
; gcr arg pop 0
- mov r13, rax
- ; gcrRegs +[r13]
- mov r12d, dword ptr [rdi+0x08]
- mov r8d, r12d
+ mov r14, rax
+ ; gcrRegs +[r14]
+ mov r15d, dword ptr [rdi+0x08]
+ mov r8d, r15d
mov rcx, rdi
; gcrRegs +[rcx]
- mov rdx, r13
+ mov rdx, r14
; gcrRegs +[rdx]
call [<unknown method>]
; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
- mov eax, dword ptr [r13+0x08]
- mov dword ptr [rsp+0x34], eax
- cmp eax, r12d
+ mov r13d, dword ptr [r14+0x08]
+ cmp r13d, r15d
jle SHORT G_M65390_IG06
- ;; size=46 bbWeight=4 PerfScore 47.00
-G_M65390_IG04: ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=8000 {r15}, byref
- mov rdx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol
- mov qword ptr [rsp+0x28], rdx
- ;; size=15 bbWeight=2 PerfScore 2.50
-G_M65390_IG05: ; bbWeight=15.84, gcrefRegs=2080 {rdi r13}, byrefRegs=8000 {r15}, byref, isz
- mov rcx, rdx
+ ;; size=49 bbWeight=4 PerfScore 43.00
+G_M65390_IG04: ; bbWeight=2, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref
+ mov r15d, r15d
+ mov r12, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol
+ ;; size=13 bbWeight=2 PerfScore 1.00
+G_M65390_IG05: ; bbWeight=15.84, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz
+ mov rcx, r12
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
- mov dword ptr [rax+0x20], r12d
- mov ecx, r12d
- lea rcx, bword ptr [r13+8*rcx+0x10]
+ mov dword ptr [rax+0x20], r15d
+ lea rcx, bword ptr [r14+8*r15+0x10]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- inc r12d
- mov r8d, dword ptr [rsp+0x34]
- cmp r8d, r12d
- mov rdx, qword ptr [rsp+0x28]
+ inc r15d
+ cmp r13d, r15d
jg SHORT G_M65390_IG05
- ;; size=46 bbWeight=15.84 PerfScore 146.52
-G_M65390_IG06: ; bbWeight=4, gcrefRegs=2080 {rdi r13}, byrefRegs=8000 {r15}, byref
+ ;; size=33 bbWeight=15.84 PerfScore 95.04
+G_M65390_IG06: ; bbWeight=4, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz
mov r8, rdi
; gcrRegs +[r8]
- mov rdx, r13
+ mov rdx, r14
; gcrRegs +[rdx]
- mov rcx, r15
+ mov rcx, 0xD1FFAB1E ; static handle
; byrRegs +[rcx]
call <unknown method>
- ; gcrRegs -[rdx rdi r8 r13] +[rax]
+ ; gcrRegs -[rdx rdi r8 r14] +[rax]
; byrRegs -[rcx]
; gcr arg pop 0
mov rdi, gword ptr [rsi]
; gcrRegs +[rdi]
cmp dword ptr [rdi+0x08], ebx
- jl G_M65390_IG03
- ;; size=26 bbWeight=4 PerfScore 31.00
+ jl SHORT G_M65390_IG03
+ ;; size=29 bbWeight=4 PerfScore 31.00
G_M65390_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rax rdi]
- ; byrRegs -[r15]
- add rsp, 56
+ add rsp, 40
pop rbx
pop rbp
pop rsi
@@ -126,7 +118,7 @@ G_M65390_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret
;; size=17 bbWeight=1 PerfScore 5.25
-; Total bytes of code 219, prolog size 18, PerfScore 248.52, instruction count 63, allocated bytes for code 219 (MethodHash=ce860091) for method Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
+; Total bytes of code 190, prolog size 18, PerfScore 191.04, instruction count 57, allocated bytes for code 190 (MethodHash=ce860091) for method Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
; ============================================================
Unwind Info:
@@ -139,7 +131,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
-24 (-11.82%) : 19002.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
@@ -11,7 +11,7 @@
; V00 this [V00,T06] ( 5, 11 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer>
; V01 arg1 [V01,T11] ( 4, 6.50) int -> rsi single-def
; V02 loc0 [V02,T10] ( 4, 9 ) ref -> rbp class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]>
-; V03 loc1 [V03,T00] ( 9, 32.50) int -> r14
+;* V03 loc1 [V03,T16] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T03] ( 2, 16 ) ref -> rcx class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo>
; V06 tmp2 [V06,T04] ( 2, 16 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo>
@@ -22,25 +22,25 @@
; V11 tmp7 [V11,T02] ( 3, 24 ) ref -> rdx "arr expr"
;* V12 tmp8 [V12,T13] ( 0, 0 ) ref -> zero-ref "arr expr"
; V13 tmp9 [V13,T05] ( 2, 16 ) int -> rdx "argument with side effect"
-; V14 cse0 [V14,T07] ( 3, 12 ) ref -> rdx "CSE - aggressive"
-; V15 cse1 [V15,T15] ( 3, 1.50) int -> rdi "CSE - moderate"
-; V16 cse2 [V16,T08] ( 2, 8 ) ref -> rdx "CSE - aggressive"
-; V17 cse3 [V17,T09] ( 2, 8 ) ref -> rdx "CSE - aggressive"
-; V18 cse4 [V18,T14] ( 4, 3 ) ref -> rcx "CSE - aggressive"
+; V14 tmp10 [V14,T00] ( 9, 32.50) long -> rdi "Widened primary induction variable"
+; V15 cse0 [V15,T07] ( 3, 12 ) ref -> rdx "CSE - aggressive"
+; V16 cse1 [V16,T15] ( 3, 1.50) int -> rdi "CSE - moderate"
+; V17 cse2 [V17,T08] ( 2, 8 ) ref -> rdx "CSE - aggressive"
+; V18 cse3 [V18,T09] ( 2, 8 ) ref -> rdx "CSE - aggressive"
+; V19 cse4 [V19,T14] ( 4, 3 ) ref -> rcx "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M22286_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx
; gcrRegs +[rbx]
mov esi, edx
- ;; size=15 bbWeight=1 PerfScore 5.75
+ ;; size=13 bbWeight=1 PerfScore 4.75
G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0x10]
; gcrRegs +[rcx]
@@ -49,7 +49,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=13 bbWeight=1 PerfScore 3.25
G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
test esi, esi
- jle G_M22286_IG07
+ jle SHORT G_M22286_IG07
mov edi, dword ptr [rcx+0x10]
movsxd rdx, edi
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]
@@ -59,21 +59,20 @@ G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000
; gcr arg pop 0
mov rbp, rax
; gcrRegs +[rbp]
- xor r14d, r14d
test edi, edi
jle SHORT G_M22286_IG05
- ;; size=39 bbWeight=0.50 PerfScore 3.25
+ xor edi, edi
+ ;; size=34 bbWeight=0.50 PerfScore 3.25
G_M22286_IG04: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rdx, gword ptr [rbx+0x10]
; gcrRegs +[rdx]
- cmp r14d, dword ptr [rdx+0x10]
+ cmp edi, dword ptr [rdx+0x10]
jae SHORT G_M22286_IG12
mov rdx, gword ptr [rdx+0x08]
- cmp r14d, dword ptr [rdx+0x08]
+ cmp edi, dword ptr [rdx+0x08]
jae SHORT G_M22286_IG11
- mov ecx, r14d
- mov rdx, gword ptr [rdx+8*rcx+0x10]
+ mov rdx, gword ptr [rdx+8*rdi+0x10]
mov rcx, rdx
; gcrRegs +[rcx]
mov eax, esi
@@ -83,64 +82,60 @@ G_M22286_IG04: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {},
call [Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:WithOffset(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:this]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- cmp r14d, dword ptr [rbp+0x08]
+ cmp edi, dword ptr [rbp+0x08]
jae SHORT G_M22286_IG11
- mov ecx, r14d
- lea rcx, bword ptr [rbp+8*rcx+0x10]
+ lea rcx, bword ptr [rbp+8*rdi+0x10]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- inc r14d
+ inc edi
mov rax, gword ptr [rbx+0x10]
; gcrRegs +[rax]
- cmp r14d, dword ptr [rax+0x10]
+ cmp edi, dword ptr [rax+0x10]
jl SHORT G_M22286_IG04
- ;; size=79 bbWeight=4 PerfScore 139.00
+ ;; size=68 bbWeight=4 PerfScore 137.00
G_M22286_IG05: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx]
mov rax, rbp
; gcrRegs +[rax]
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M22286_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
- pop r14
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M22286_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rbp] +[rcx]
cmp dword ptr [rcx], ecx
;; size=2 bbWeight=0.50 PerfScore 1.50
G_M22286_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
- pop r14
tail.jmp [System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this]
; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.38
+ ;; size=14 bbWeight=0.50 PerfScore 2.12
G_M22286_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M22286_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
- pop r14
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
call CORINFO_HELP_RNGCHKFAIL
@@ -152,7 +147,7 @@ G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 203, prolog size 15, PerfScore 159.12, instruction count 71, allocated bytes for code 203 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
+; Total bytes of code 179, prolog size 13, PerfScore 155.38, instruction count 65, allocated bytes for code 179 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -160,14 +155,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0A
- CountOfUnwindCodes: 6
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
-29 (-8.24%) : 20238.dasm - System.Number:g_ProcessChunk|124(System.ReadOnlySpan`1[ubyte],byref,byref,byref):ubyte (FullOpts)
@@ -17,12 +17,12 @@
;* V06 loc2 [V06,T22] ( 0, 0 ) ubyte -> zero-ref
; V07 loc3 [V07,T03] ( 6, 13.50) int -> r13
; V08 loc4 [V08,T02] ( 6, 15.50) int -> r12
-; V09 loc5 [V09,T08] ( 4, 9.50) int -> [rsp+0x24]
-; V10 loc6 [V10,T00] ( 6, 21 ) int -> [rsp+0x20]
+; V09 loc5 [V09,T08] ( 4, 9.50) int -> [rsp+0x34]
+;* V10 loc6 [V10,T25] ( 0, 0 ) int -> zero-ref
; V11 loc7 [V11,T04] ( 3, 12 ) ushort -> r9
;* V12 loc8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V13 loc9 [V13,T01] ( 6, 20.50) int -> registers
-; V14 loc10 [V14,T05] ( 3, 12 ) ushort -> rax
+;* V13 loc9 [V13,T26] ( 0, 0 ) int -> zero-ref
+; V14 loc10 [V14,T05] ( 3, 12 ) ushort -> rdx
; V15 OutArgs [V15 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V16 tmp1 [V16,T18] ( 3, 3 ) int -> r15 "Inline return value spill temp"
; V17 tmp2 [V17,T14] ( 3, 6 ) int -> r15 "Inlining Arg"
@@ -45,8 +45,10 @@
; V34 tmp19 [V34,T23] ( 2, 1 ) byref -> rdi single-def "field V23._reference (fldOffset=0x0)" P-INDEP
; V35 tmp20 [V35,T24] ( 2, 1 ) int -> r14 "field V23._length (fldOffset=0x8)" P-INDEP
;* V36 tmp21 [V36 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
+; V37 tmp22 [V37,T00] ( 6, 21 ) long -> [rsp+0x28] "Widened primary induction variable"
+; V38 tmp23 [V38,T01] ( 6, 20.50) long -> rax "Widened primary induction variable"
;
-; Lcl frame size = 40
+; Lcl frame size = 56
G_M15568_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -57,7 +59,7 @@ G_M15568_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 40
+ sub rsp, 56
mov rdi, rdx
; byrRegs +[rdi]
mov rbx, r8
@@ -79,7 +81,7 @@ G_M15568_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00CA {rcx rbx r
cmp r15d, r14d
cmovg r15d, r14d
cmp r15d, r14d
- ja G_M15568_IG19
+ ja G_M15568_IG16
mov ecx, r15d
not ecx
shr ecx, 31
@@ -88,26 +90,25 @@ G_M15568_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00CA {rcx rbx r
mov r13d, dword ptr [rsi]
mov r12d, dword ptr [rsi+0x04]
mov ecx, dword ptr [rbx+0x0C]
- xor eax, eax
test r15d, r15d
jle SHORT G_M15568_IG07
+ xor eax, eax
;; size=71 bbWeight=1 PerfScore 23.00
G_M15568_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz
cmp eax, r14d
- jae G_M15568_IG18
- mov dword ptr [rsp+0x20], eax
- mov r9d, eax
- movzx r9, byte ptr [r9+rbp]
+ jae G_M15568_IG15
+ mov qword ptr [rsp+0x28], rax
+ movzx r9, byte ptr [rax+rbp]
test r9d, r9d
je SHORT G_M15568_IG08
lea r8d, [r13+4*r13]
lea r13d, [r9+2*r8-0x30]
inc r12d
inc ecx
- mov dword ptr [rsp+0x24], ecx
+ mov dword ptr [rsp+0x34], ecx
cmp r12d, 9
jne SHORT G_M15568_IG05
- ;; size=51 bbWeight=4 PerfScore 46.00
+ ;; size=49 bbWeight=4 PerfScore 45.00
G_M15568_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref
mov rcx, rdi
; byrRegs +[rcx]
@@ -122,19 +123,19 @@ G_M15568_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=00E8 {rbx rbp r
xor r12d, r12d
;; size=26 bbWeight=2 PerfScore 9.00
G_M15568_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz
- mov eax, dword ptr [rsp+0x20]
+ mov rax, qword ptr [rsp+0x28]
inc eax
cmp eax, r15d
- mov ecx, dword ptr [rsp+0x24]
+ mov ecx, dword ptr [rsp+0x34]
jl SHORT G_M15568_IG03
- ;; size=15 bbWeight=4 PerfScore 14.00
+ ;; size=16 bbWeight=4 PerfScore 14.00
G_M15568_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref, isz
; byrRegs -[rdi]
- mov dword ptr [rsp+0x24], ecx
+ mov dword ptr [rsp+0x34], ecx
jmp SHORT G_M15568_IG10
;; size=6 bbWeight=0.50 PerfScore 1.50
G_M15568_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref, isz
- mov dword ptr [rsp+0x24], ecx
+ mov dword ptr [rsp+0x34], ecx
jmp SHORT G_M15568_IG10
;; size=6 bbWeight=0.50 PerfScore 1.50
G_M15568_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
@@ -145,7 +146,7 @@ G_M15568_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rs
mov eax, 1
;; size=15 bbWeight=0.50 PerfScore 1.62
G_M15568_IG09: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 56
pop rbx
pop rbp
pop rsi
@@ -168,51 +169,33 @@ G_M15568_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
call [<unknown method>]
; byrRegs -[rbp]
; gcr arg pop 0
- xor ecx, ecx
test r14d, r14d
- jle SHORT G_M15568_IG15
- ;; size=30 bbWeight=0.50 PerfScore 3.12
+ mov ecx, dword ptr [rsp+0x34]
+ jle SHORT G_M15568_IG08
+ xor eax, eax
+ ;; size=34 bbWeight=0.50 PerfScore 3.62
G_M15568_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
- cmp ecx, r14d
- jae SHORT G_M15568_IG18
- mov eax, ecx
- movzx rax, byte ptr [rdi+rax]
- test eax, eax
- je SHORT G_M15568_IG14
- mov edx, ecx
- mov ecx, dword ptr [rsp+0x24]
- cmp eax, 48
- jne SHORT G_M15568_IG16
- inc edx
- cmp edx, r14d
- mov dword ptr [rsp+0x24], ecx
- jl SHORT G_M15568_IG13
- ;; size=37 bbWeight=4 PerfScore 39.00
+ cmp eax, r14d
+ jae SHORT G_M15568_IG15
+ movzx rdx, byte ptr [rdi+rax]
+ test edx, edx
+ je SHORT G_M15568_IG08
+ cmp edx, 48
+ jne SHORT G_M15568_IG13
+ inc eax
+ cmp eax, r14d
+ jl SHORT G_M15568_IG11
+ ;; size=25 bbWeight=4 PerfScore 29.00
G_M15568_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
; byrRegs -[rdi]
- mov ecx, dword ptr [rsp+0x24]
jmp SHORT G_M15568_IG08
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M15568_IG13: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
- ; byrRegs +[rdi]
- mov ecx, edx
- jmp SHORT G_M15568_IG11
- ;; size=4 bbWeight=2 PerfScore 4.50
-G_M15568_IG14: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- ; byrRegs -[rdi]
- mov ecx, dword ptr [rsp+0x24]
- jmp SHORT G_M15568_IG08
- ;; size=6 bbWeight=2 PerfScore 6.00
-G_M15568_IG15: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- mov ecx, dword ptr [rsp+0x24]
- jmp SHORT G_M15568_IG08
- ;; size=6 bbWeight=0.25 PerfScore 0.75
-G_M15568_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M15568_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx rsi]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M15568_IG17: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+G_M15568_IG14: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 56
pop rbx
pop rbp
pop rsi
@@ -223,17 +206,17 @@ G_M15568_IG17: ; bbWeight=0.50, epilog, nogc, extend
pop r15
ret
;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M15568_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M15568_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M15568_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15568_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 352, prolog size 25, PerfScore 165.88, instruction count 123, allocated bytes for code 352 (MethodHash=5cdec32f) for method System.Number:<NumberToBigInteger>g__ProcessChunk|12_4(System.ReadOnlySpan`1[ubyte],byref,byref,byref):ubyte (FullOpts)
+; Total bytes of code 323, prolog size 25, PerfScore 143.62, instruction count 112, allocated bytes for code 323 (MethodHash=5cdec32f) for method System.Number:<NumberToBigInteger>g__ProcessChunk|12_4(System.ReadOnlySpan`1[ubyte],byref,byref,byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -246,7 +229,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+8 (+14.81%) : 31044.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
@@ -9,11 +9,12 @@
;
; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx ld-addr-op single-def
; V01 loc0 [V01,T02] ( 4, 10 ) int -> rdx
-; V02 loc1 [V02,T00] ( 5, 17 ) int -> r8
+;* V02 loc1 [V02,T05] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T04] ( 2, 5 ) byref -> rax single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T03] ( 3, 6 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp2 [V05,T03] ( 4, 10 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
+; V07 tmp4 [V07,T00] ( 6, 21 ) long -> r8 "Widened primary induction variable"
;
; Lcl frame size = 40
@@ -27,19 +28,20 @@ G_M53167_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
mov ecx, dword ptr [rcx+0x08]
; byrRegs -[rcx]
mov edx, 0xD1FFAB1E
- xor r8d, r8d
test ecx, ecx
jle SHORT G_M53167_IG04
+ xor r8d, r8d
;; size=18 bbWeight=1 PerfScore 5.75
G_M53167_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
- mov r10d, r8d
- movzx r10, byte ptr [rax+r10]
+ cmp r8d, ecx
+ jae SHORT G_M53167_IG06
+ movzx r10, byte ptr [rax+r8]
xor edx, r10d
imul edx, edx, 0xD1FFAB1E
inc r8d
cmp r8d, ecx
jl SHORT G_M53167_IG03
- ;; size=25 bbWeight=4 PerfScore 24.00
+ ;; size=27 bbWeight=4 PerfScore 28.00
G_M53167_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rax]
mov eax, edx
@@ -48,8 +50,13 @@ G_M53167_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
+G_M53167_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 54, prolog size 4, PerfScore 31.50, instruction count 17, allocated bytes for code 54 (MethodHash=48b13050) for method System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 62, prolog size 4, PerfScore 35.50, instruction count 20, allocated bytes for code 62 (MethodHash=48b13050) for method System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================
Unwind Info:
+9 (+15.00%) : 14537.dasm - System.Reflection.Internal.ObjectPool`1[System.Canon]:Free(System.Canon):this (FullOpts)
@@ -10,39 +10,41 @@
; V00 this [V00,T03] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Reflection.Internal.ObjectPool`1[System.__Canon]>
; V01 arg1 [V01,T04] ( 3, 2.50) ref -> rdx class-hnd single-def <System.__Canon>
; V02 loc0 [V02,T01] ( 4, 6.50) ref -> rcx class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 6, 17.50) int -> rax
+; V03 loc1 [V03,T05] ( 3, 1.50) int -> r8
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T02] ( 3, 6 ) int -> r8 "CSE - aggressive"
+; V05 tmp1 [V05,T00] ( 6, 17.50) long -> r8 "Widened primary induction variable"
+; V06 cse0 [V06,T02] ( 4, 6.50) int -> rax "CSE - aggressive"
;
; Lcl frame size = 40
-G_M19580_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M19580_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 40
;; size=4 bbWeight=1 PerfScore 0.25
G_M19580_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx rdx]
mov rcx, gword ptr [rcx+0x08]
- xor eax, eax
- mov r8d, dword ptr [rcx+0x08]
- test r8d, r8d
+ mov eax, dword ptr [rcx+0x08]
+ test eax, eax
jle SHORT G_M19580_IG04
- ;; size=15 bbWeight=1 PerfScore 5.50
+ xor r8d, r8d
+ ;; size=14 bbWeight=1 PerfScore 5.50
G_M19580_IG03: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
- mov r10d, eax
- cmp gword ptr [rcx+8*r10+0x10], 0
+ cmp gword ptr [rcx+8*r8+0x10], 0
je SHORT G_M19580_IG05
- inc eax
- cmp r8d, eax
+ inc r8d
+ cmp eax, r8d
jg SHORT G_M19580_IG03
- ;; size=18 bbWeight=4 PerfScore 23.00
+ ;; size=16 bbWeight=4 PerfScore 22.00
G_M19580_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx rdx]
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M19580_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref
+G_M19580_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx rdx]
- mov eax, eax
+ cmp r8d, eax
+ jae SHORT G_M19580_IG07
+ mov eax, r8d
lea rcx, bword ptr [rcx+8*rax+0x10]
; gcrRegs -[rcx]
; byrRegs +[rcx]
@@ -50,13 +52,18 @@ G_M19580_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs -[rdx]
; byrRegs -[rcx]
nop
- ;; size=13 bbWeight=0.50 PerfScore 1.25
+ ;; size=19 bbWeight=0.50 PerfScore 1.88
G_M19580_IG06: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M19580_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 4, PerfScore 31.25, instruction count 20, allocated bytes for code 60 (MethodHash=881eb383) for method System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)
+; Total bytes of code 69, prolog size 4, PerfScore 30.88, instruction count 23, allocated bytes for code 69 (MethodHash=881eb383) for method System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)
; ============================================================
Unwind Info:
+9 (+15.00%) : 18835.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.Canon]:FreeSlow(System.Canon):this (FullOpts)
@@ -10,39 +10,41 @@
; V00 this [V00,T03] ( 3, 3 ) ref -> rcx this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]>
; V01 arg1 [V01,T04] ( 3, 2.50) ref -> rdx class-hnd single-def <System.__Canon>
; V02 loc0 [V02,T01] ( 4, 6.50) ref -> rcx class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 6, 17.50) int -> rax
+; V03 loc1 [V03,T05] ( 3, 1.50) int -> r8
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T02] ( 3, 6 ) int -> r8 "CSE - aggressive"
+; V05 tmp1 [V05,T00] ( 6, 17.50) long -> r8 "Widened primary induction variable"
+; V06 cse0 [V06,T02] ( 4, 6.50) int -> rax "CSE - aggressive"
;
; Lcl frame size = 40
-G_M50542_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M50542_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 40
;; size=4 bbWeight=1 PerfScore 0.25
G_M50542_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx rdx]
mov rcx, gword ptr [rcx+0x10]
- xor eax, eax
- mov r8d, dword ptr [rcx+0x08]
- test r8d, r8d
+ mov eax, dword ptr [rcx+0x08]
+ test eax, eax
jle SHORT G_M50542_IG04
- ;; size=15 bbWeight=1 PerfScore 5.50
+ xor r8d, r8d
+ ;; size=14 bbWeight=1 PerfScore 5.50
G_M50542_IG03: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
- mov r10d, eax
- cmp gword ptr [rcx+8*r10+0x10], 0
+ cmp gword ptr [rcx+8*r8+0x10], 0
je SHORT G_M50542_IG05
- inc eax
- cmp r8d, eax
+ inc r8d
+ cmp eax, r8d
jg SHORT G_M50542_IG03
- ;; size=18 bbWeight=4 PerfScore 23.00
+ ;; size=16 bbWeight=4 PerfScore 22.00
G_M50542_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx rdx]
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M50542_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref
+G_M50542_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx rdx]
- mov eax, eax
+ cmp r8d, eax
+ jae SHORT G_M50542_IG07
+ mov eax, r8d
lea rcx, bword ptr [rcx+8*rax+0x10]
; gcrRegs -[rcx]
; byrRegs +[rcx]
@@ -50,13 +52,18 @@ G_M50542_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs -[rdx]
; byrRegs -[rcx]
nop
- ;; size=13 bbWeight=0.50 PerfScore 1.25
+ ;; size=19 bbWeight=0.50 PerfScore 1.88
G_M50542_IG06: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M50542_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 4, PerfScore 31.25, instruction count 20, allocated bytes for code 60 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
+; Total bytes of code 69, prolog size 4, PerfScore 30.88, instruction count 23, allocated bytes for code 69 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
; ============================================================
Unwind Info:
smoke_tests.nativeaot.windows.x64.checked.mch
-30 (-10.38%) : 5034.dasm - System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList1[System.__Canon]:Filter(System.Func2[System.Canon,ubyte]):System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.Canon]:this (FullOpts)
@@ -14,17 +14,18 @@
; V03 loc1 [V03,T12] ( 3, 4 ) ref -> rbp class-hnd exact single-def <System.__Canon[]>
; V04 loc2 [V04,T11] ( 4, 6 ) int -> r13
; V05 loc3 [V05,T04] ( 7, 12 ) int -> r12
-; V06 loc4 [V06,T00] ( 9, 27 ) int -> [rsp+0x2C]
-; V07 loc5 [V07,T07] ( 3, 10 ) ref -> rdi class-hnd <System.__Canon>
+;* V06 loc4 [V06,T16] ( 0, 0 ) int -> zero-ref
+; V07 loc5 [V07,T07] ( 3, 10 ) ref -> [rsp+0x28] class-hnd spill-single-def <System.__Canon>
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V09 tmp1 [V09,T08] ( 2, 8 ) int -> rcx "Strict ordering of exceptions for Array store"
; V10 tmp2 [V10,T05] ( 6, 12 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]>
; V11 tmp3 [V11,T01] ( 3, 24 ) ref -> rdx "arr expr"
;* V12 tmp4 [V12,T09] ( 0, 0 ) ref -> zero-ref "argument with side effect"
; V13 tmp5 [V13,T06] ( 3, 12 ) ref -> rcx "arr expr"
-; V14 cse0 [V14,T13] ( 3, 3 ) long -> r15 "CSE - moderate"
-; V15 cse1 [V15,T14] ( 3, 3 ) long -> rbp "CSE - moderate"
-; V16 cse2 [V16,T15] ( 3, 3 ) int -> rdi "CSE - moderate"
+; V14 tmp6 [V14,T00] ( 9, 27 ) long -> rdi "Widened primary induction variable"
+; V15 cse0 [V15,T13] ( 3, 3 ) long -> r15 "CSE - moderate"
+; V16 cse1 [V16,T14] ( 3, 3 ) long -> rbp "CSE - moderate"
+; V17 cse2 [V17,T15] ( 3, 3 ) int -> rdi "CSE - moderate"
;
; Lcl frame size = 56
@@ -44,7 +45,7 @@ G_M51283_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rsi, rdx
; gcrRegs +[rsi]
;; size=27 bbWeight=1 PerfScore 9.75
-G_M51283_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M51283_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov edi, dword ptr [rbx+0x18]
movsxd rbp, edi
mov rdx, rbp
@@ -64,64 +65,60 @@ G_M51283_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
; gcrRegs +[rbp]
xor r13d, r13d
xor r12d, r12d
- xor r8d, r8d
test edi, edi
- jle G_M51283_IG06
- ;; size=63 bbWeight=1 PerfScore 13.75
+ jle SHORT G_M51283_IG06
+ xor edi, edi
+ ;; size=58 bbWeight=1 PerfScore 13.75
G_M51283_IG03: ; bbWeight=4, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rdx, gword ptr [rbx+0x08]
; gcrRegs +[rdx]
- cmp r8d, dword ptr [rdx+0x08]
- jae G_M51283_IG09
- mov dword ptr [rsp+0x2C], r8d
- mov ecx, r8d
- mov rdi, gword ptr [rdx+8*rcx+0x10]
- ; gcrRegs +[rdi]
- mov rdx, rdi
+ cmp edi, dword ptr [rdx+0x08]
+ jae G_M51283_IG08
+ mov r8, gword ptr [rdx+8*rdi+0x10]
+ ; gcrRegs +[r8]
+ mov gword ptr [rsp+0x28], r8
+ ; GC ptr vars +{V07}
+ mov rdx, r8
mov rcx, gword ptr [rsi+0x08]
; gcrRegs +[rcx]
mov rax, qword ptr [rsi+0x20]
call [CORINFO_HELP_DISPATCH_INDIRECT_CALL]
- ; gcrRegs -[rcx rdx]
+ ; gcrRegs -[rcx rdx r8]
; gcr arg pop 0
test eax, eax
je SHORT G_M51283_IG05
- ;; size=48 bbWeight=4 PerfScore 71.00
-G_M51283_IG04: ; bbWeight=2, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=44 bbWeight=4 PerfScore 70.00
+G_M51283_IG04: ; bbWeight=2, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
movsxd rdx, r12d
mov rcx, rbp
; gcrRegs +[rcx]
- mov r8, rdi
+ mov r8, gword ptr [rsp+0x28]
; gcrRegs +[r8]
+ ; GC ptr vars -{V07}
call CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[rcx rdi r8]
+ ; gcrRegs -[rcx r8]
; gcr arg pop 0
mov rcx, gword ptr [rbx+0x10]
; gcrRegs +[rcx]
- mov edi, dword ptr [rsp+0x2C]
cmp edi, dword ptr [rcx+0x08]
- jae SHORT G_M51283_IG09
- mov eax, edi
- mov ecx, dword ptr [rcx+4*rax+0x10]
+ jae SHORT G_M51283_IG08
+ mov ecx, dword ptr [rcx+4*rdi+0x10]
; gcrRegs -[rcx]
cmp r12d, dword ptr [r14+0x08]
- jae SHORT G_M51283_IG09
+ jae SHORT G_M51283_IG08
mov eax, r12d
mov dword ptr [r14+4*rax+0x10], ecx
inc r12d
cmp edi, dword ptr [rbx+0x1C]
- jge SHORT G_M51283_IG08
+ jge SHORT G_M51283_IG05
inc r13d
- mov dword ptr [rsp+0x2C], edi
- ;; size=62 bbWeight=2 PerfScore 43.50
+ ;; size=54 bbWeight=2 PerfScore 40.50
G_M51283_IG05: ; bbWeight=4, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
- mov edi, dword ptr [rsp+0x2C]
inc edi
cmp edi, dword ptr [rbx+0x18]
- mov r8d, edi
jl SHORT G_M51283_IG03
- ;; size=14 bbWeight=4 PerfScore 22.00
+ ;; size=7 bbWeight=4 PerfScore 17.00
G_M51283_IG06: ; bbWeight=1, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
mov rcx, qword ptr [r15]
@@ -161,19 +158,14 @@ G_M51283_IG07: ; bbWeight=1, epilog, nogc, extend
pop r15
ret
;; size=17 bbWeight=1 PerfScore 5.25
-G_M51283_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax] +[rbp r14]
- mov dword ptr [rsp+0x2C], edi
- jmp SHORT G_M51283_IG05
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M51283_IG09: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbp rsi r14]
+G_M51283_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rsi]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 289, prolog size 21, PerfScore 177.25, instruction count 91, allocated bytes for code 289 (MethodHash=aa3837ac) for method System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:Filter(System.Func`2[System.__Canon,ubyte]):System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 259, prolog size 21, PerfScore 165.25, instruction count 83, allocated bytes for code 259 (MethodHash=aa3837ac) for method System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:Filter(System.Func`2[System.__Canon,ubyte]):System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:this (FullOpts)
; ============================================================
Unwind Info:
-11 (-8.33%) : 13817.dasm - System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
@@ -7,9 +7,9 @@
; fully interruptible
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 6, 39 ) ref -> rbx class-hnd single-def <System.String[]>
-; V01 loc0 [V01,T06] ( 5, 17 ) int -> rsi
-; V02 loc1 [V02,T02] ( 6, 84 ) int -> rbp
+; V00 arg0 [V00,T04] ( 6, 39 ) ref -> rbx class-hnd single-def <System.String[]>
+;* V01 loc0 [V01,T08] ( 0, 0 ) int -> zero-ref
+;* V02 loc1 [V02,T07] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T05] ( 3, 32 ) ubyte -> rax "Inline return value spill temp"
; V05 tmp2 [V05,T00] ( 4, 96 ) ushort -> rcx "Inlining Arg"
@@ -20,103 +20,101 @@
;* V10 tmp7 [V10 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V11 tmp8 [V11 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
; V12 tmp9 [V12,T01] ( 3, 96 ) ref -> rcx "arr expr"
-; V13 cse0 [V13,T07] ( 3, 6 ) int -> rdi "CSE - aggressive"
-; V14 cse1 [V14,T04] ( 4, 40 ) long -> r14 "CSE - aggressive"
+; V13 tmp10 [V13,T03] ( 7, 49 ) long -> rdi "Widened primary induction variable"
+; V14 tmp11 [V14,T02] ( 6, 82 ) long -> rbp "Widened primary induction variable"
+; V15 cse0 [V15,T06] ( 3, 6 ) int -> rsi "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M29788_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=13 bbWeight=1 PerfScore 5.50
+ ;; size=11 bbWeight=1 PerfScore 4.50
G_M29788_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- xor esi, esi
- mov edi, dword ptr [rbx+0x08]
- test edi, edi
- jle SHORT G_M29788_IG09
+ mov esi, dword ptr [rbx+0x08]
+ test esi, esi
+ jle SHORT G_M29788_IG10
+ xor edi, edi
;; size=9 bbWeight=1 PerfScore 3.50
G_M29788_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- xor ebp, ebp
- mov r14d, esi
- mov rcx, gword ptr [rbx+8*r14+0x10]
+ mov rcx, gword ptr [rbx+8*rdi+0x10]
; gcrRegs +[rcx]
cmp dword ptr [rcx+0x08], 0
- jle SHORT G_M29788_IG08
- ;; size=16 bbWeight=4 PerfScore 26.00
-G_M29788_IG04: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jle SHORT G_M29788_IG09
+ ;; size=11 bbWeight=4 PerfScore 24.00
+G_M29788_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
- mov rcx, gword ptr [rbx+8*r14+0x10]
+ xor ebp, ebp
+ ;; size=2 bbWeight=2 PerfScore 0.50
+G_M29788_IG05: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rcx, gword ptr [rbx+8*rdi+0x10]
; gcrRegs +[rcx]
cmp ebp, dword ptr [rcx+0x08]
- jae SHORT G_M29788_IG13
- mov eax, ebp
- movzx rcx, word ptr [rcx+2*rax+0x0C]
+ jae SHORT G_M29788_IG14
+ movzx rcx, word ptr [rcx+2*rbp+0x0C]
; gcrRegs -[rcx]
cmp ecx, 256
- jae SHORT G_M29788_IG06
- ;; size=25 bbWeight=16 PerfScore 152.00
-G_M29788_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jae SHORT G_M29788_IG07
+ ;; size=23 bbWeight=16 PerfScore 148.00
+G_M29788_IG06: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
call System.Char:IsWhiteSpaceLatin1(ushort):ubyte
; gcr arg pop 0
- jmp SHORT G_M29788_IG07
+ jmp SHORT G_M29788_IG08
;; size=7 bbWeight=8 PerfScore 24.00
-G_M29788_IG06: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M29788_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
; gcr arg pop 0
;; size=5 bbWeight=8 PerfScore 8.00
-G_M29788_IG07: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M29788_IG08: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test eax, eax
- jne SHORT G_M29788_IG11
+ jne SHORT G_M29788_IG12
inc ebp
- mov rax, gword ptr [rbx+8*r14+0x10]
+ mov rax, gword ptr [rbx+8*rdi+0x10]
; gcrRegs +[rax]
cmp dword ptr [rax+0x08], ebp
- jg SHORT G_M29788_IG04
+ jg SHORT G_M29788_IG05
;; size=16 bbWeight=16 PerfScore 120.00
-G_M29788_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M29788_IG09: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- inc esi
- cmp edi, esi
+ inc edi
+ cmp esi, edi
jg SHORT G_M29788_IG03
;; size=6 bbWeight=4 PerfScore 6.00
-G_M29788_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29788_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M29788_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+G_M29788_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
- pop r14
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M29788_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
+G_M29788_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M29788_IG12: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+G_M29788_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
- pop r14
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M29788_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
+G_M29788_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 132, prolog size 13, PerfScore 349.00, instruction count 53, allocated bytes for code 132 (MethodHash=bfc38ba3) for method System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
+; Total bytes of code 121, prolog size 11, PerfScore 342.00, instruction count 48, allocated bytes for code 121 (MethodHash=bfc38ba3) for method System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -124,14 +122,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0A
- CountOfUnwindCodes: 6
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
-11 (-8.33%) : 8186.dasm - System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
@@ -8,9 +8,9 @@
; control-flow guard enabled
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 6, 39 ) ref -> rbx class-hnd single-def <System.String[]>
-; V01 loc0 [V01,T06] ( 5, 17 ) int -> rsi
-; V02 loc1 [V02,T02] ( 6, 84 ) int -> rbp
+; V00 arg0 [V00,T04] ( 6, 39 ) ref -> rbx class-hnd single-def <System.String[]>
+;* V01 loc0 [V01,T08] ( 0, 0 ) int -> zero-ref
+;* V02 loc1 [V02,T07] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T05] ( 3, 32 ) ubyte -> rax "Inline return value spill temp"
; V05 tmp2 [V05,T00] ( 4, 96 ) ushort -> rcx "Inlining Arg"
@@ -21,103 +21,101 @@
;* V10 tmp7 [V10 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V11 tmp8 [V11 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
; V12 tmp9 [V12,T01] ( 3, 96 ) ref -> rcx "arr expr"
-; V13 cse0 [V13,T07] ( 3, 6 ) int -> rdi "CSE - aggressive"
-; V14 cse1 [V14,T04] ( 4, 40 ) long -> r14 "CSE - aggressive"
+; V13 tmp10 [V13,T03] ( 7, 49 ) long -> rdi "Widened primary induction variable"
+; V14 tmp11 [V14,T02] ( 6, 82 ) long -> rbp "Widened primary induction variable"
+; V15 cse0 [V15,T06] ( 3, 6 ) int -> rsi "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M29788_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=13 bbWeight=1 PerfScore 5.50
+ ;; size=11 bbWeight=1 PerfScore 4.50
G_M29788_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- xor esi, esi
- mov edi, dword ptr [rbx+0x08]
- test edi, edi
- jle SHORT G_M29788_IG09
+ mov esi, dword ptr [rbx+0x08]
+ test esi, esi
+ jle SHORT G_M29788_IG10
+ xor edi, edi
;; size=9 bbWeight=1 PerfScore 3.50
G_M29788_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- xor ebp, ebp
- mov r14d, esi
- mov rcx, gword ptr [rbx+8*r14+0x10]
+ mov rcx, gword ptr [rbx+8*rdi+0x10]
; gcrRegs +[rcx]
cmp dword ptr [rcx+0x08], 0
- jle SHORT G_M29788_IG08
- ;; size=16 bbWeight=4 PerfScore 26.00
-G_M29788_IG04: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jle SHORT G_M29788_IG09
+ ;; size=11 bbWeight=4 PerfScore 24.00
+G_M29788_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
- mov rcx, gword ptr [rbx+8*r14+0x10]
+ xor ebp, ebp
+ ;; size=2 bbWeight=2 PerfScore 0.50
+G_M29788_IG05: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rcx, gword ptr [rbx+8*rdi+0x10]
; gcrRegs +[rcx]
cmp ebp, dword ptr [rcx+0x08]
- jae SHORT G_M29788_IG13
- mov eax, ebp
- movzx rcx, word ptr [rcx+2*rax+0x0C]
+ jae SHORT G_M29788_IG14
+ movzx rcx, word ptr [rcx+2*rbp+0x0C]
; gcrRegs -[rcx]
cmp ecx, 256
- jae SHORT G_M29788_IG06
- ;; size=25 bbWeight=16 PerfScore 152.00
-G_M29788_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jae SHORT G_M29788_IG07
+ ;; size=23 bbWeight=16 PerfScore 148.00
+G_M29788_IG06: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
call System.Char:IsWhiteSpaceLatin1(ushort):ubyte
; gcr arg pop 0
- jmp SHORT G_M29788_IG07
+ jmp SHORT G_M29788_IG08
;; size=7 bbWeight=8 PerfScore 24.00
-G_M29788_IG06: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M29788_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
; gcr arg pop 0
;; size=5 bbWeight=8 PerfScore 8.00
-G_M29788_IG07: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M29788_IG08: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test eax, eax
- jne SHORT G_M29788_IG11
+ jne SHORT G_M29788_IG12
inc ebp
- mov rax, gword ptr [rbx+8*r14+0x10]
+ mov rax, gword ptr [rbx+8*rdi+0x10]
; gcrRegs +[rax]
cmp dword ptr [rax+0x08], ebp
- jg SHORT G_M29788_IG04
+ jg SHORT G_M29788_IG05
;; size=16 bbWeight=16 PerfScore 120.00
-G_M29788_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M29788_IG09: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- inc esi
- cmp edi, esi
+ inc edi
+ cmp esi, edi
jg SHORT G_M29788_IG03
;; size=6 bbWeight=4 PerfScore 6.00
-G_M29788_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29788_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M29788_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+G_M29788_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
- pop r14
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M29788_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
+G_M29788_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M29788_IG12: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+G_M29788_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
- pop r14
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M29788_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
+G_M29788_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 132, prolog size 13, PerfScore 349.00, instruction count 53, allocated bytes for code 132 (MethodHash=bfc38ba3) for method System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
+; Total bytes of code 121, prolog size 11, PerfScore 342.00, instruction count 48, allocated bytes for code 121 (MethodHash=bfc38ba3) for method System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -125,14 +123,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0A
- CountOfUnwindCodes: 6
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+13 (+22.81%) : 17479.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
@@ -7,24 +7,24 @@
; fully interruptible
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-; V01 loc0 [V01,T07] ( 4, 4 ) ref -> rax class-hnd exact single-def <System.String>
+; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx ld-addr-op single-def
+; V01 loc0 [V01,T06] ( 4, 4 ) ref -> rax class-hnd exact single-def <System.String>
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> rdx
+;* V03 loc2 [V03,T10] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-;* V06 tmp2 [V06,T10] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V07 tmp3 [V07,T08] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
+;* V06 tmp2 [V06,T09] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V07 tmp3 [V07,T07] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp6 [V10,T05] ( 2, 5 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V11 tmp7 [V11,T04] ( 3, 3 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
-; V12 tmp8 [V12,T06] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp9 [V13,T03] ( 3, 6 ) int -> rsi "field V02._length (fldOffset=0x8)" P-INDEP
-; V14 tmp10 [V14,T09] ( 2, 2 ) byref -> rcx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp6 [V10,T04] ( 2, 5 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V11 tmp7 [V11,T02] ( 4, 7 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
+; V12 tmp8 [V12,T05] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp9 [V13,T03] ( 3, 6 ) int -> rdx "field V02._length (fldOffset=0x8)" P-INDEP
+; V14 tmp10 [V14,T08] ( 2, 2 ) byref -> rcx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V15 tmp11 [V15,T11] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
;* V16 tmp12 [V16 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
-; V17 cse0 [V17,T01] ( 3, 12 ) long -> r8 "CSE - aggressive"
+; V17 tmp13 [V17,T00] ( 7, 25 ) long -> r8 "Widened primary induction variable"
;
; Lcl frame size = 40
@@ -46,18 +46,20 @@ G_M6504_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byre
cmp byte ptr [rax], al
lea rcx, bword ptr [rax+0x0C]
; byrRegs +[rcx]
- xor edx, edx
- test esi, esi
+ mov edx, esi
+ test edx, edx
jle SHORT G_M6504_IG04
- ;; size=25 bbWeight=1 PerfScore 10.25
+ xor r8d, r8d
+ ;; size=28 bbWeight=1 PerfScore 10.50
G_M6504_IG03: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=000A {rcx rbx}, byref, isz
- mov r8d, edx
+ cmp r8d, esi
+ jae SHORT G_M6504_IG05
movzx r10, byte ptr [rbx+r8]
mov word ptr [rcx+2*r8], r10w
- inc edx
- cmp edx, esi
+ inc r8d
+ cmp r8d, edx
jl SHORT G_M6504_IG03
- ;; size=19 bbWeight=4 PerfScore 19.00
+ ;; size=23 bbWeight=4 PerfScore 23.00
G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rcx rbx]
add rsp, 40
@@ -65,8 +67,14 @@ G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byre
pop rsi
ret
;; size=7 bbWeight=1 PerfScore 2.25
+G_M6504_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 57, prolog size 6, PerfScore 33.75, instruction count 22, allocated bytes for code 57 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
+; Total bytes of code 70, prolog size 6, PerfScore 38.00, instruction count 26, allocated bytes for code 70 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
; ============================================================
Unwind Info:
+13 (+22.81%) : 2396.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
@@ -7,24 +7,24 @@
; fully interruptible
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-; V01 loc0 [V01,T07] ( 4, 4 ) ref -> rax class-hnd exact single-def <System.String>
+; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx ld-addr-op single-def
+; V01 loc0 [V01,T06] ( 4, 4 ) ref -> rax class-hnd exact single-def <System.String>
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> rdx
+;* V03 loc2 [V03,T10] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-;* V06 tmp2 [V06,T10] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V07 tmp3 [V07,T08] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
+;* V06 tmp2 [V06,T09] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V07 tmp3 [V07,T07] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp6 [V10,T05] ( 2, 5 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V11 tmp7 [V11,T04] ( 3, 3 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
-; V12 tmp8 [V12,T06] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp9 [V13,T03] ( 3, 6 ) int -> rsi "field V02._length (fldOffset=0x8)" P-INDEP
-; V14 tmp10 [V14,T09] ( 2, 2 ) byref -> rcx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp6 [V10,T04] ( 2, 5 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V11 tmp7 [V11,T02] ( 4, 7 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
+; V12 tmp8 [V12,T05] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp9 [V13,T03] ( 3, 6 ) int -> rdx "field V02._length (fldOffset=0x8)" P-INDEP
+; V14 tmp10 [V14,T08] ( 2, 2 ) byref -> rcx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V15 tmp11 [V15,T11] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
;* V16 tmp12 [V16 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
-; V17 cse0 [V17,T01] ( 3, 12 ) long -> r8 "CSE - aggressive"
+; V17 tmp13 [V17,T00] ( 7, 25 ) long -> r8 "Widened primary induction variable"
;
; Lcl frame size = 40
@@ -46,18 +46,20 @@ G_M6504_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byre
cmp byte ptr [rax], al
lea rcx, bword ptr [rax+0x0C]
; byrRegs +[rcx]
- xor edx, edx
- test esi, esi
+ mov edx, esi
+ test edx, edx
jle SHORT G_M6504_IG04
- ;; size=25 bbWeight=1 PerfScore 10.25
+ xor r8d, r8d
+ ;; size=28 bbWeight=1 PerfScore 10.50
G_M6504_IG03: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=000A {rcx rbx}, byref, isz
- mov r8d, edx
+ cmp r8d, esi
+ jae SHORT G_M6504_IG05
movzx r10, byte ptr [rbx+r8]
mov word ptr [rcx+2*r8], r10w
- inc edx
- cmp edx, esi
+ inc r8d
+ cmp r8d, edx
jl SHORT G_M6504_IG03
- ;; size=19 bbWeight=4 PerfScore 19.00
+ ;; size=23 bbWeight=4 PerfScore 23.00
G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rcx rbx]
add rsp, 40
@@ -65,8 +67,14 @@ G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byre
pop rsi
ret
;; size=7 bbWeight=1 PerfScore 2.25
+G_M6504_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 57, prolog size 6, PerfScore 33.75, instruction count 22, allocated bytes for code 57 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
+; Total bytes of code 70, prolog size 6, PerfScore 38.00, instruction count 26, allocated bytes for code 70 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
; ============================================================
Unwind Info:
+13 (+22.81%) : 7812.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
@@ -8,24 +8,24 @@
; control-flow guard enabled
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-; V01 loc0 [V01,T07] ( 4, 4 ) ref -> rax class-hnd exact single-def <System.String>
+; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx ld-addr-op single-def
+; V01 loc0 [V01,T06] ( 4, 4 ) ref -> rax class-hnd exact single-def <System.String>
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> rdx
+;* V03 loc2 [V03,T10] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-;* V06 tmp2 [V06,T10] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V07 tmp3 [V07,T08] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
+;* V06 tmp2 [V06,T09] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V07 tmp3 [V07,T07] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp6 [V10,T05] ( 2, 5 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V11 tmp7 [V11,T04] ( 3, 3 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
-; V12 tmp8 [V12,T06] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp9 [V13,T03] ( 3, 6 ) int -> rsi "field V02._length (fldOffset=0x8)" P-INDEP
-; V14 tmp10 [V14,T09] ( 2, 2 ) byref -> rcx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp6 [V10,T04] ( 2, 5 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V11 tmp7 [V11,T02] ( 4, 7 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
+; V12 tmp8 [V12,T05] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp9 [V13,T03] ( 3, 6 ) int -> rdx "field V02._length (fldOffset=0x8)" P-INDEP
+; V14 tmp10 [V14,T08] ( 2, 2 ) byref -> rcx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V15 tmp11 [V15,T11] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
;* V16 tmp12 [V16 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
-; V17 cse0 [V17,T01] ( 3, 12 ) long -> r8 "CSE - aggressive"
+; V17 tmp13 [V17,T00] ( 7, 25 ) long -> r8 "Widened primary induction variable"
;
; Lcl frame size = 40
@@ -47,18 +47,20 @@ G_M6504_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byre
cmp byte ptr [rax], al
lea rcx, bword ptr [rax+0x0C]
; byrRegs +[rcx]
- xor edx, edx
- test esi, esi
+ mov edx, esi
+ test edx, edx
jle SHORT G_M6504_IG04
- ;; size=25 bbWeight=1 PerfScore 10.25
+ xor r8d, r8d
+ ;; size=28 bbWeight=1 PerfScore 10.50
G_M6504_IG03: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=000A {rcx rbx}, byref, isz
- mov r8d, edx
+ cmp r8d, esi
+ jae SHORT G_M6504_IG05
movzx r10, byte ptr [rbx+r8]
mov word ptr [rcx+2*r8], r10w
- inc edx
- cmp edx, esi
+ inc r8d
+ cmp r8d, edx
jl SHORT G_M6504_IG03
- ;; size=19 bbWeight=4 PerfScore 19.00
+ ;; size=23 bbWeight=4 PerfScore 23.00
G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rcx rbx]
add rsp, 40
@@ -66,8 +68,14 @@ G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byre
pop rsi
ret
;; size=7 bbWeight=1 PerfScore 2.25
+G_M6504_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 57, prolog size 6, PerfScore 33.75, instruction count 22, allocated bytes for code 57 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
+; Total bytes of code 70, prolog size 6, PerfScore 38.00, instruction count 26, allocated bytes for code 70 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
; ============================================================
Unwind Info:
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| aspnet.run.windows.x64.checked.mch |
3,548 |
1,952 |
1,269 |
327 |
-11,777 |
+17,329 |
| benchmarks.run.windows.x64.checked.mch |
1,649 |
1,202 |
375 |
72 |
-7,964 |
+5,126 |
| benchmarks.run_pgo.windows.x64.checked.mch |
5,308 |
3,160 |
1,992 |
156 |
-24,344 |
+21,417 |
| benchmarks.run_tiered.windows.x64.checked.mch |
541 |
375 |
133 |
33 |
-6,183 |
+1,403 |
| coreclr_tests.run.windows.x64.checked.mch |
20,794 |
18,658 |
1,985 |
151 |
-92,379 |
+20,477 |
| libraries.crossgen2.windows.x64.checked.mch |
5,442 |
3,879 |
1,294 |
269 |
-19,448 |
+17,650 |
| libraries.pmi.windows.x64.checked.mch |
7,013 |
4,893 |
1,699 |
421 |
-24,488 |
+22,468 |
| libraries_tests.run.windows.x64.Release.mch |
20,680 |
11,175 |
8,638 |
867 |
-73,336 |
+142,142 |
| librariestestsnotieredcompilation.run.windows.x64.Release.mch |
8,806 |
6,250 |
2,193 |
363 |
-34,496 |
+29,398 |
| realworld.run.windows.x64.checked.mch |
1,511 |
990 |
438 |
83 |
-5,408 |
+6,503 |
| smoke_tests.nativeaot.windows.x64.checked.mch |
1,377 |
1,029 |
310 |
38 |
-4,784 |
+2,664 |
|
76,669 |
53,563 |
20,326 |
2,780 |
-304,607 |
+286,577 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| aspnet.run.windows.x64.checked.mch |
129,289 |
61,702 |
67,587 |
0 (0.00%) |
1 (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,183 |
50,327 |
52,856 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_tiered.windows.x64.checked.mch |
53,511 |
36,872 |
16,639 |
0 (0.00%) |
0 (0.00%) |
| coreclr_tests.run.windows.x64.checked.mch |
574,358 |
341,481 |
232,877 |
27 (0.00%) |
27 (0.00%) |
| libraries.crossgen2.windows.x64.checked.mch |
243,730 |
15 |
243,715 |
1 (0.00%) |
1 (0.00%) |
| libraries.pmi.windows.x64.checked.mch |
309,227 |
6 |
309,221 |
1 (0.00%) |
1 (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,182 |
997,391 |
1,514,791 |
29 (0.00%) |
30 (0.00%) |
jit-analyze output
aspnet.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: 47040393 (overridden on cmd)
Total bytes of diff: 47045945 (overridden on cmd)
Total bytes of delta: 5552 (0.01 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
295 : 128921.dasm (2.36 % of base)
291 : 118096.dasm (1.97 % of base)
274 : 97597.dasm (1.85 % of base)
274 : 128127.dasm (1.85 % of base)
240 : 118861.dasm (4.90 % of base)
186 : 101272.dasm (1.49 % of base)
152 : 71319.dasm (2.74 % of base)
144 : 63296.dasm (0.86 % of base)
121 : 77241.dasm (2.02 % of base)
121 : 34329.dasm (2.02 % of base)
121 : 29905.dasm (2.02 % of base)
121 : 56313.dasm (2.02 % of base)
121 : 57478.dasm (2.02 % of base)
102 : 27565.dasm (3.07 % of base)
100 : 125826.dasm (5.80 % of base)
97 : 116345.dasm (1.60 % of base)
97 : 12903.dasm (1.60 % of base)
97 : 117304.dasm (1.60 % of base)
97 : 20206.dasm (1.60 % of base)
93 : 22528.dasm (1.54 % of base)
Top file improvements (bytes):
-186 : 123319.dasm (-3.96 % of base)
-83 : 120502.dasm (-4.87 % of base)
-59 : 124582.dasm (-1.78 % of base)
-57 : 47760.dasm (-1.69 % of base)
-56 : 69160.dasm (-1.76 % of base)
-56 : 57537.dasm (-1.72 % of base)
-56 : 58860.dasm (-1.76 % of base)
-56 : 77252.dasm (-1.72 % of base)
-56 : 78251.dasm (-1.76 % of base)
-56 : 35121.dasm (-1.76 % of base)
-52 : 20217.dasm (-1.60 % of base)
-52 : 13883.dasm (-1.60 % of base)
-51 : 85128.dasm (-0.80 % of base)
-48 : 128902.dasm (-3.35 % of base)
-48 : 101240.dasm (-3.35 % of base)
-45 : 42893.dasm (-2.75 % of base)
-45 : 58927.dasm (-2.75 % of base)
-44 : 9245.dasm (-4.31 % of base)
-42 : 76319.dasm (-1.38 % of base)
-42 : 76326.dasm (-3.47 % of base)
94 total files with Code Size differences (52 improved, 42 regressed), 20 unchanged.
Top method regressions (bytes):
295 (2.36 % of base) : 128921.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
291 (1.97 % of base) : 118096.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
274 (1.85 % of base) : 97597.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
274 (1.85 % of base) : 128127.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
240 (4.90 % of base) : 118861.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpResponseHeaders:SetValueFast(System.String,Microsoft.Extensions.Primitives.StringValues):this (Tier1)
186 (1.49 % of base) : 101272.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
152 (2.74 % of base) : 71319.dasm - Microsoft.AspNetCore.Routing.Matching.DfaMatcher:MatchAsync(Microsoft.AspNetCore.Http.HttpContext):System.Threading.Tasks.Task:this (Tier1)
144 (0.86 % of base) : 63296.dasm - Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression:.ctor(Microsoft.EntityFrameworkCore.Metadata.IEntityType,Microsoft.EntityFrameworkCore.Query.ISqlExpressionFactory):this (FullOpts)
121 (2.02 % of base) : 77241.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
121 (2.02 % of base) : 34329.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
121 (2.02 % of base) : 29905.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
121 (2.02 % of base) : 56313.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
121 (2.02 % of base) : 57478.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
102 (3.07 % of base) : 27565.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpHeaders:ParseConnection(Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpHeaders):int (Instrumented Tier1)
100 (5.80 % of base) : 125826.dasm - Castle.DynamicProxy.Generators.BaseProxyGenerator:GenerateConstructor(Castle.DynamicProxy.Generators.Emitters.ClassEmitter,System.Reflection.ConstructorInfo,Castle.DynamicProxy.Generators.Emitters.SimpleAST.FieldReference[]):this (FullOpts)
97 (1.60 % of base) : 116345.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
97 (1.60 % of base) : 12903.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
97 (1.60 % of base) : 117304.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
97 (1.60 % of base) : 20206.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
93 (1.54 % of base) : 22528.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
Top method improvements (bytes):
-186 (-3.96 % of base) : 123319.dasm - Jint.Native.Global.GlobalObject:.cctor() (FullOpts)
-83 (-4.87 % of base) : 120502.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:GetCallbackMethodsForType(System.Type,byref,byref,byref,byref,byref):this (FullOpts)
-59 (-1.78 % of base) : 124582.dasm - Jint.Runtime.Interop.DefaultTypeConverter:TryConvert(System.Object,System.Type,System.IFormatProvider,ubyte,byref,byref):ubyte:this (FullOpts)
-57 (-1.69 % of base) : 47760.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Instrumented Tier1)
-56 (-1.76 % of base) : 69160.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
-56 (-1.72 % of base) : 57537.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
-56 (-1.76 % of base) : 58860.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
-56 (-1.72 % of base) : 77252.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
-56 (-1.76 % of base) : 78251.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
-56 (-1.76 % of base) : 35121.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
-52 (-1.60 % of base) : 20217.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
-52 (-1.60 % of base) : 13883.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
-51 (-0.80 % of base) : 85128.dasm - System.Diagnostics.StackTrace:ToString(int,System.Text.StringBuilder):this (Tier1)
-48 (-3.35 % of base) : 128902.dasm - Castle.DynamicProxy.DefaultProxyBuilder:AssertValidTypeForTarget(System.Type,System.Type,System.String):this (Tier1)
-48 (-3.35 % of base) : 101240.dasm - Castle.DynamicProxy.DefaultProxyBuilder:AssertValidTypeForTarget(System.Type,System.Type,System.String):this (Tier1)
-45 (-2.75 % of base) : 42893.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ILEmitResolverBuilder:VisitConstructor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.ILEmitResolverBuilderContext):System.Object:this (Tier1-OSR)
-45 (-2.75 % of base) : 58927.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ILEmitResolverBuilder:VisitConstructor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.ILEmitResolverBuilderContext):System.Object:this (Tier1-OSR)
-44 (-4.31 % of base) : 9245.dasm - System.Diagnostics.Tracing.EventSource:DebugCheckEvent(byref,System.Diagnostics.Tracing.EventSource+EventMetadata[],System.Reflection.MethodInfo,System.Diagnostics.Tracing.EventAttribute,System.Diagnostics.Tracing.ManifestBuilder,int) (Tier1-OSR)
-42 (-3.47 % of base) : 76326.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
-42 (-1.38 % of base) : 76319.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier1)
Top method regressions (percentages):
10 (15.38 % of base) : 127877.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
9 (15.00 % of base) : 127141.dasm - OrchardCore.DisplayManagement.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
9 (15.00 % of base) : 114077.dasm - OrchardCore.DisplayManagement.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
8 (12.50 % of base) : 101153.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:GetCount(ubyte):int:this (Tier1)
8 (12.50 % of base) : 114417.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:GetCount(ubyte):int:this (Tier1)
8 (12.50 % of base) : 128889.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:GetCount(ubyte):int:this (Tier1)
8 (11.94 % of base) : 118816.dasm - OrchardCore.DisplayManagement.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
8 (11.94 % of base) : 85126.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
8 (11.94 % of base) : 117797.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
8 (11.94 % of base) : 101923.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
8 (11.94 % of base) : 116843.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
8 (11.94 % of base) : 119370.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
8 (11.94 % of base) : 129217.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
8 (10.81 % of base) : 123484.dasm - Jint.Pooling.ObjectPool`1[System.__Canon]:AllocateSlow():System.__Canon:this (FullOpts)
13 (9.63 % of base) : 125757.dasm - Castle.DynamicProxy.Generators.Emitters.ArgumentsUtil:InitializeAndConvert(Castle.DynamicProxy.Generators.Emitters.SimpleAST.ArgumentReference[]):System.Type[] (FullOpts)
8 (7.92 % of base) : 85125.dasm - System.Reflection.Internal.PooledStringBuilder:Free():this (Tier1)
30 (7.67 % of base) : 100880.dasm - System.Collections.Frozen.LengthBucketsFrozenDictionary`1[System.__Canon]:GetValueRefOrNullRefCore(System.String):byref:this (Tier1)
30 (7.67 % of base) : 119065.dasm - System.Collections.Frozen.LengthBucketsFrozenDictionary`1[System.__Canon]:GetValueRefOrNullRefCore(System.String):byref:this (Tier1)
30 (7.67 % of base) : 128772.dasm - System.Collections.Frozen.LengthBucketsFrozenDictionary`1[System.__Canon]:GetValueRefOrNullRefCore(System.String):byref:this (Tier1)
20 (7.46 % of base) : 128907.dasm - Castle.DynamicProxy.Internal.TypeUtil:GetAllInterfaces(System.Type[]):System.Type[] (Tier1)
Top method improvements (percentages):
-12 (-12.90 % of base) : 35709.dasm - System.Xml.ValidateNames:ParseNCName(System.String,int):int (Tier1-OSR)
-27 (-10.93 % of base) : 34958.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:Fill(System.__Canon[],System.Span`1[System.__Canon]):this (Tier1-OSR)
-27 (-10.93 % of base) : 69155.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:Fill(System.__Canon[],System.Span`1[System.__Canon]):this (Tier1-OSR)
-15 (-10.27 % of base) : 15656.dasm - System.Reflection.Metadata.MetadataReader:CombineRowCounts(int[],int[],ubyte):int[] (Tier1-OSR)
-27 (-9.28 % of base) : 30164.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:FindBraceIndex(System.String,ushort,int,int):int (Tier1-OSR)
-17 (-7.91 % of base) : 13814.dasm - System.Text.RegularExpressions.RegexCharClass:GetSetChars(System.String,System.Span`1[ushort]):int (Tier1-OSR)
-7 (-7.22 % of base) : 35898.dasm - System.Xml.XmlWellFormedWriter:CheckNCName(System.String) (Tier1-OSR)
-24 (-6.63 % of base) : 123302.dasm - Jint.Runtime.TypeConverter:.cctor() (FullOpts)
-3 (-6.38 % of base) : 90588.dasm - Jint.Extensions.Hash:CombineFNVHash(int,System.String):int (FullOpts)
-3 (-6.00 % of base) : 125762.dasm - Castle.DynamicProxy.Generators.Emitters.ArgumentsUtil:InitializeArgumentsByPosition(Castle.DynamicProxy.Generators.Emitters.SimpleAST.ArgumentReference[],ubyte) (FullOpts)
-3 (-6.00 % of base) : 76358.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
-4 (-5.88 % of base) : 114752.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-4 (-5.88 % of base) : 61351.dasm - System.Linq.EnumerableSorter`1[System.ValueTuple`2[System.__Canon,int]]:ComputeMap(System.ValueTuple`2[System.__Canon,int][],int):int[]:this (FullOpts)
-4 (-5.88 % of base) : 76901.dasm - System.Linq.EnumerableSorter`1[System.ValueTuple`2[System.__Canon,int]]:ComputeMap(System.ValueTuple`2[System.__Canon,int][],int):int[]:this (Tier1)
-3 (-5.66 % of base) : 63823.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey,Microsoft.Extensions.DependencyInjection.ServiceLookup.ILEmitResolverBuilder+GeneratedMethod]:GetCountNoLocks():int:this (FullOpts)
-3 (-5.66 % of base) : 8805.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey,System.__Canon]:GetCountNoLocks():int:this (FullOpts)
-3 (-5.66 % of base) : 113761.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey,System.__Canon]:GetCountNoLocks():int:this (Tier1)
-3 (-5.66 % of base) : 113778.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:GetCountNoLocks():int:this (Tier1)
-3 (-5.56 % of base) : 101873.dasm - System.Resources.FastResourceComparer:HashFunction(System.String):int (Tier1)
-3 (-5.56 % of base) : 84920.dasm - System.Resources.FastResourceComparer:HashFunction(System.String):int (Tier1)
benchmarks.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: 8742476 (overridden on cmd)
Total bytes of diff: 8739638 (overridden on cmd)
Total bytes of delta: -2838 (-0.03 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
184 : 8652.dasm (6.52 % of base)
162 : 7054.dasm (4.07 % of base)
154 : 7090.dasm (1.46 % of base)
153 : 20723.dasm (6.55 % of base)
145 : 12543.dasm (5.40 % of base)
145 : 19820.dasm (5.43 % of base)
139 : 14903.dasm (2.06 % of base)
100 : 19523.dasm (1.30 % of base)
91 : 13361.dasm (9.53 % of base)
71 : 7079.dasm (3.86 % of base)
61 : 317.dasm (4.02 % of base)
58 : 19770.dasm (2.02 % of base)
53 : 2086.dasm (4.80 % of base)
50 : 3471.dasm (1.81 % of base)
48 : 8595.dasm (2.13 % of base)
48 : 6986.dasm (2.39 % of base)
47 : 1683.dasm (1.74 % of base)
45 : 20769.dasm (3.27 % of base)
44 : 11936.dasm (0.92 % of base)
44 : 25297.dasm (0.41 % of base)
Top file improvements (bytes):
-555 : 18176.dasm (-17.70 % of base)
-534 : 17451.dasm (-15.55 % of base)
-447 : 18907.dasm (-5.37 % of base)
-184 : 25336.dasm (-1.78 % of base)
-132 : 18228.dasm (-3.98 % of base)
-117 : 15589.dasm (-7.26 % of base)
-97 : 18175.dasm (-9.20 % of base)
-88 : 24049.dasm (-9.06 % of base)
-83 : 9099.dasm (-4.90 % of base)
-82 : 18908.dasm (-5.55 % of base)
-78 : 24341.dasm (-4.80 % of base)
-74 : 1589.dasm (-4.69 % of base)
-74 : 18177.dasm (-8.17 % of base)
-68 : 9887.dasm (-4.43 % of base)
-61 : 27393.dasm (-0.58 % of base)
-58 : 8653.dasm (-5.61 % of base)
-56 : 17841.dasm (-6.97 % of base)
-55 : 18174.dasm (-5.40 % of base)
-45 : 14862.dasm (-6.13 % of base)
-40 : 16534.dasm (-5.15 % of base)
91 total files with Code Size differences (50 improved, 41 regressed), 20 unchanged.
Top method regressions (bytes):
184 (6.52 % of base) : 8652.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (FullOpts)
162 (4.07 % of base) : 7054.dasm - Utf8Json.Internal.AutomataDictionary+AutomataNode:EmitSearchNextCore(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Action`1[System.Collections.Generic.KeyValuePair`2[System.String,int]],System.Action,Utf8Json.Internal.AutomataDictionary+AutomataNode[],int) (FullOpts)
154 (1.46 % of base) : 7090.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
153 (6.55 % of base) : 20723.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
145 (5.43 % of base) : 19820.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
145 (5.40 % of base) : 12543.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
139 (2.06 % of base) : 14903.dasm - Jil.Deserialize.Methods:_ReadISO8601Date(System.IO.TextReader,ushort[]):System.DateTime (FullOpts)
100 (1.30 % of base) : 19523.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ResolveMetadataReferences(System.__Canon,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]]:this (FullOpts)
91 (9.53 % of base) : 13361.dasm - System.Numerics.BigInteger:TryGetBytes(int,System.Span`1[ubyte],ubyte,ubyte,byref):ubyte[]:this (FullOpts)
71 (3.86 % of base) : 7079.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
61 (4.02 % of base) : 317.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
58 (2.02 % of base) : 19770.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
53 (4.80 % of base) : 2086.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
50 (1.81 % of base) : 3471.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (FullOpts)
48 (2.13 % of base) : 8595.dasm - BilinearTest:BilinearInterpol_Vector(double[],double[],double,double,double[],double,double,double):double[]:this (FullOpts)
48 (2.39 % of base) : 6986.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodTokenNoLock(System.Reflection.MethodInfo,ubyte):int:this (FullOpts)
47 (1.74 % of base) : 1683.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode.EmitRead(ProtoBuf.Compiler.CompilerContext,ProtoBuf.Compiler.Local):this (FullOpts)
45 (3.27 % of base) : 20769.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:CheckConstraints(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,byref):ubyte (FullOpts)
44 (0.41 % of base) : 25297.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffsetThunkReader(byref,ushort[]):System.DateTimeOffset (FullOpts)
44 (0.92 % of base) : 11936.dasm - System.Runtime.Serialization.DataContracts.CollectionDataContract:IsCollectionOrTryCreate(System.Type,ubyte,byref,byref,ubyte,ubyte):ubyte (FullOpts)
Top method improvements (bytes):
-555 (-17.70 % of base) : 18176.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
-534 (-15.55 % of base) : 17451.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
-447 (-5.37 % of base) : 18907.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
-184 (-1.78 % of base) : 25336.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
-132 (-3.98 % of base) : 18228.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (FullOpts)
-117 (-7.26 % of base) : 15589.dasm - AssignJagged:second_assignments(int[][],short[][]) (FullOpts)
-97 (-9.20 % of base) : 18175.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (FullOpts)
-88 (-9.06 % of base) : 24049.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (FullOpts)
-83 (-4.90 % of base) : 9099.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:GetCallbackMethodsForType(System.Type,byref,byref,byref,byref,byref):this (FullOpts)
-82 (-5.55 % of base) : 18908.dasm - Benchstone.BenchF.LLoops:Init():this (FullOpts)
-78 (-4.80 % of base) : 24341.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (FullOpts)
-74 (-8.17 % of base) : 18177.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (FullOpts)
-74 (-4.69 % of base) : 1589.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-68 (-4.43 % of base) : 9887.dasm - SciMark2.LU:factor(double[][],int[]):int (FullOpts)
-61 (-0.58 % of base) : 27393.dasm - Jil.Deserialize.Methods:_ReadISO8601DateThunkReader(byref,ushort[]):System.DateTime (FullOpts)
-58 (-5.61 % of base) : 8653.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
-56 (-6.97 % of base) : 17841.dasm - Benchstone.BenchF.InProd:Test():ubyte:this (FullOpts)
-55 (-5.40 % of base) : 18174.dasm - LUDecomp:build_problem(double[][],int,double[]) (FullOpts)
-45 (-6.13 % of base) : 14862.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (FullOpts)
-40 (-5.15 % of base) : 16534.dasm - AssignRect:second_assignments(int[,],short[,]) (FullOpts)
Top method regressions (percentages):
13 (27.08 % of base) : 23431.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
13 (27.08 % of base) : 25567.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
11 (25.58 % of base) : 25750.dasm - System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
13 (20.63 % of base) : 5956.dasm - System.Collections.IterateFor`1[System.__Canon]:ReadOnlySpan():System.__Canon:this (FullOpts)
13 (20.63 % of base) : 26566.dasm - System.Collections.IterateForEach`1[System.__Canon]:ReadOnlySpan():System.__Canon:this (FullOpts)
8 (20.51 % of base) : 17393.dasm - Struct.SpanWrapper:SumSpan(System.ReadOnlySpan`1[int]):int:this (FullOpts)
35 (19.44 % of base) : 27725.dasm - Benchstone.BenchI.BubbleSort2:Test():ubyte:this (FullOpts)
13 (18.84 % of base) : 24589.dasm - Span.IndexerBench:TestIndexer4(System.Span`1[ubyte],int):ubyte (FullOpts)
8 (18.60 % of base) : 14521.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
8 (16.67 % of base) : 23933.dasm - Span.IndexerBench:TestIndexer2(System.Span`1[ubyte]):ubyte (FullOpts)
8 (16.67 % of base) : 24231.dasm - Span.IndexerBench:TestIndexer3(System.Span`1[ubyte]):ubyte (FullOpts)
8 (16.67 % of base) : 2789.dasm - Span.IndexerBench:TestReadOnlyIndexer2(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
9 (16.67 % of base) : 23387.dasm - System.Collections.IterateFor`1[int]:ReadOnlySpan():int:this (FullOpts)
9 (16.67 % of base) : 23109.dasm - System.Collections.IterateFor`1[int]:Span():int:this (FullOpts)
9 (16.67 % of base) : 27584.dasm - System.Collections.IterateForEach`1[int]:ReadOnlySpan():int:this (FullOpts)
9 (16.67 % of base) : 27245.dasm - System.Collections.IterateForEach`1[int]:Span():int:this (FullOpts)
10 (16.13 % of base) : 26061.dasm - Span.IndexerBench:TestKnownSizeCtor(ubyte[]):ubyte (FullOpts)
9 (15.00 % of base) : 19719.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
9 (15.00 % of base) : 4463.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)
8 (14.81 % of base) : 21612.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
Top method improvements (percentages):
-555 (-17.70 % of base) : 18176.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
-534 (-15.55 % of base) : 17451.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
-26 (-14.77 % of base) : 15892.dasm - Span.Sorting:TestBubbleSortArray(int[]) (FullOpts)
-24 (-11.82 % of base) : 19209.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
-6 (-10.00 % of base) : 17145.dasm - System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (FullOpts)
-10 (-9.80 % of base) : 14750.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (FullOpts)
-97 (-9.20 % of base) : 18175.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (FullOpts)
-16 (-9.09 % of base) : 27375.dasm - Benchstone.BenchI.BubbleSort:SortArray(int[],int) (FullOpts)
-88 (-9.06 % of base) : 24049.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (FullOpts)
-7 (-8.86 % of base) : 25365.dasm - StoreBlock.AnyLocation:InitBlockAllOnes128():this (FullOpts)
-7 (-8.86 % of base) : 25133.dasm - StoreBlock.AnyLocation:InitBlockAllZeros128():this (FullOpts)
-74 (-8.17 % of base) : 18177.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (FullOpts)
-4 (-8.00 % of base) : 7399.dasm - MicroBenchmarks.Serializers.DataGenerator:CreateByteArray(int):ubyte[] (FullOpts)
-5 (-7.94 % of base) : 24320.dasm - StoreBlock.AnyLocation:InitBlockAllOnes64():this (FullOpts)
-5 (-7.94 % of base) : 24172.dasm - StoreBlock.AnyLocation:InitBlockAllZeros64():this (FullOpts)
-3 (-7.69 % of base) : 24549.dasm - System.Collections.IndexerSet`1[int]:Array():int[]:this (FullOpts)
-11 (-7.53 % of base) : 6290.dasm - System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
-28 (-7.41 % of base) : 17674.dasm - Neural:adjust_out_wts() (FullOpts)
-35 (-7.38 % of base) : 26885.dasm - Benchstone.BenchI.Array2:VerifyCopy(int[][][],int[][][]):ubyte (FullOpts)
-6 (-7.32 % of base) : 13489.dasm - IfStatements.IfStatements:Or():this (FullOpts)
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: 36233314 (overridden on cmd)
Total bytes of diff: 36230387 (overridden on cmd)
Total bytes of delta: -2927 (-0.01 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
171 : 23710.dasm (5.72 % of base)
86 : 51879.dasm (3.32 % of base)
65 : 12369.dasm (3.82 % of base)
64 : 56047.dasm (1.28 % of base)
60 : 89606.dasm (3.36 % of base)
60 : 79528.dasm (3.52 % of base)
60 : 85464.dasm (3.36 % of base)
57 : 34646.dasm (4.09 % of base)
57 : 101467.dasm (4.09 % of base)
57 : 26454.dasm (4.09 % of base)
57 : 37244.dasm (4.09 % of base)
57 : 39707.dasm (4.09 % of base)
57 : 45817.dasm (4.09 % of base)
57 : 50810.dasm (4.09 % of base)
57 : 79194.dasm (4.09 % of base)
57 : 94050.dasm (4.09 % of base)
57 : 97090.dasm (4.09 % of base)
54 : 77637.dasm (6.03 % of base)
54 : 70733.dasm (6.03 % of base)
54 : 53784.dasm (6.03 % of base)
Top file improvements (bytes):
-567 : 53949.dasm (-17.86 % of base)
-477 : 50682.dasm (-14.25 % of base)
-441 : 70535.dasm (-4.69 % of base)
-433 : 70549.dasm (-4.57 % of base)
-431 : 70548.dasm (-5.13 % of base)
-383 : 53955.dasm (-6.23 % of base)
-278 : 87236.dasm (-2.43 % of base)
-252 : 87246.dasm (-2.21 % of base)
-172 : 53957.dasm (-7.18 % of base)
-168 : 87245.dasm (-1.62 % of base)
-154 : 71783.dasm (-12.43 % of base)
-152 : 46235.dasm (-8.61 % of base)
-146 : 46234.dasm (-7.86 % of base)
-132 : 53453.dasm (-3.88 % of base)
-125 : 50661.dasm (-8.39 % of base)
-114 : 50667.dasm (-7.71 % of base)
-111 : 53921.dasm (-8.77 % of base)
-111 : 53946.dasm (-8.77 % of base)
-108 : 87235.dasm (-2.97 % of base)
-108 : 87244.dasm (-2.97 % of base)
93 total files with Code Size differences (53 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
171 (5.72 % of base) : 23710.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
86 (3.32 % of base) : 51879.dasm - System.Numerics.BigIntegerCalculator:PowCore(System.Span`1[uint],int,System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint],System.Span`1[uint],int,System.Span`1[uint]):System.Span`1[uint] (Tier1-OSR)
65 (3.82 % of base) : 12369.dasm - System.Text.Json.Utf8JsonWriter:WriteStringEscapeValue(System.ReadOnlySpan`1[ubyte],int):this (Tier1)
64 (1.28 % of base) : 56047.dasm - System.Number:Dragon4(ulong,int,uint,ubyte,int,ubyte,System.Span`1[ubyte],byref):uint (Tier1)
60 (3.36 % of base) : 89606.dasm - System.Text.Json.Utf8JsonWriter:WriteStringEscapeValue(System.ReadOnlySpan`1[ubyte],int):this (Tier1)
60 (3.52 % of base) : 79528.dasm - System.Text.Json.Utf8JsonWriter:WriteStringEscapeValue(System.ReadOnlySpan`1[ubyte],int):this (Tier1)
60 (3.36 % of base) : 85464.dasm - System.Text.Json.Utf8JsonWriter:WriteStringEscapeValue(System.ReadOnlySpan`1[ubyte],int):this (Tier1)
57 (4.09 % of base) : 34646.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
57 (4.09 % of base) : 101467.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
57 (4.09 % of base) : 26454.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
57 (4.09 % of base) : 37244.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
57 (4.09 % of base) : 39707.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
57 (4.09 % of base) : 45817.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
57 (4.09 % of base) : 50810.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
57 (4.09 % of base) : 79194.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
57 (4.09 % of base) : 94050.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
57 (4.09 % of base) : 97090.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
54 (6.03 % of base) : 77637.dasm - System.RuntimeType:GetConstructorCandidates(System.String,int,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.ConstructorInfo]:this (Tier1)
54 (6.03 % of base) : 70733.dasm - System.RuntimeType:GetConstructorCandidates(System.String,int,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.ConstructorInfo]:this (Tier1)
54 (6.03 % of base) : 53784.dasm - System.RuntimeType:GetConstructorCandidates(System.String,int,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.ConstructorInfo]:this (Tier1)
Top method improvements (bytes):
-567 (-17.86 % of base) : 53949.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
-477 (-14.25 % of base) : 50682.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
-441 (-4.69 % of base) : 70535.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
-433 (-4.57 % of base) : 70549.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
-431 (-5.13 % of base) : 70548.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
-383 (-6.23 % of base) : 53955.dasm - LUDecomp:Run():double:this (Tier1)
-278 (-2.43 % of base) : 87236.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
-252 (-2.21 % of base) : 87246.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
-172 (-7.18 % of base) : 53957.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
-168 (-1.62 % of base) : 87245.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
-154 (-12.43 % of base) : 71783.dasm - Benchstone.BenchI.Puzzle:Trial(int):ubyte:this (Tier1)
-152 (-8.61 % of base) : 46235.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
-146 (-7.86 % of base) : 46234.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
-132 (-3.88 % of base) : 53453.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (Tier0-FullOpts)
-125 (-8.39 % of base) : 50661.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
-114 (-7.71 % of base) : 50667.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
-111 (-8.77 % of base) : 53921.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
-111 (-8.77 % of base) : 53946.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
-108 (-2.97 % of base) : 87235.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
-108 (-2.97 % of base) : 87244.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
Top method regressions (percentages):
8 (18.60 % of base) : 42090.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (Tier1)
8 (17.39 % of base) : 101490.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
8 (17.39 % of base) : 27384.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
9 (15.00 % of base) : 67400.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
9 (15.00 % of base) : 73094.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
8 (14.81 % of base) : 68438.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
8 (13.79 % of base) : 29872.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
8 (13.79 % of base) : 8906.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
8 (13.79 % of base) : 23540.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
8 (13.79 % of base) : 8104.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
8 (13.79 % of base) : 83574.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
8 (13.79 % of base) : 88018.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
8 (13.79 % of base) : 92785.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
8 (13.79 % of base) : 97963.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
8 (12.50 % of base) : 27070.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
8 (12.50 % of base) : 100563.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
8 (12.50 % of base) : 39924.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
8 (11.59 % of base) : 65421.dasm - Microsoft.CodeAnalysis.DiagnosticBag:AddRange[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):this (Tier1)
7 (10.61 % of base) : 74528.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (Tier1)
8 (10.53 % of base) : 64808.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
Top method improvements (percentages):
-567 (-17.86 % of base) : 53949.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
-41 (-16.94 % of base) : 102719.dasm - Benchstone.BenchI.BubbleSort2:Inner(int[]) (Tier1-OSR)
-477 (-14.25 % of base) : 50682.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
-154 (-12.43 % of base) : 71783.dasm - Benchstone.BenchI.Puzzle:Trial(int):ubyte:this (Tier1)
-27 (-11.54 % of base) : 100092.dasm - Benchstone.BenchI.BubbleSort:SortArray(int[],int) (Tier1-OSR)
-19 (-11.24 % of base) : 44085.dasm - Span.Sorting:TestBubbleSortArray(int[]) (Tier1)
-26 (-11.16 % of base) : 44071.dasm - Span.Sorting:TestBubbleSortArray(int[]) (Tier1-OSR)
-14 (-10.00 % of base) : 38412.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (Tier1-OSR)
-14 (-10.00 % of base) : 38420.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (Tier1-OSR)
-10 (-9.80 % of base) : 38421.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (Tier1)
-111 (-8.77 % of base) : 53921.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
-111 (-8.77 % of base) : 53946.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
-152 (-8.61 % of base) : 46235.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
-125 (-8.39 % of base) : 50661.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
-29 (-8.33 % of base) : 32716.dasm - BenchmarksGame.SpectralNorm_1:MultiplyAtv(int,double[],double[]):this (Tier1-OSR)
-29 (-8.33 % of base) : 32714.dasm - BenchmarksGame.SpectralNorm_1:MultiplyAv(int,double[],double[]):this (Tier1-OSR)
-12 (-8.11 % of base) : 34497.dasm - System.Linq.Enumerable+ListPartition`1[ubyte]:Fill(System.Collections.Generic.IList`1[ubyte],System.Span`1[ubyte],int) (Tier1-OSR)
-12 (-8.11 % of base) : 31146.dasm - System.Linq.Enumerable+ListPartition`1[ubyte]:Fill(System.Collections.Generic.IList`1[ubyte],System.Span`1[ubyte],int) (Tier1-OSR)
-12 (-8.11 % of base) : 37770.dasm - System.Linq.Enumerable+ListPartition`1[ubyte]:Fill(System.Collections.Generic.IList`1[ubyte],System.Span`1[ubyte],int) (Tier1-OSR)
-12 (-8.11 % of base) : 84990.dasm - System.Linq.Enumerable+ListPartition`1[ubyte]:Fill(System.Collections.Generic.IList`1[ubyte],System.Span`1[ubyte],int) (Tier1-OSR)
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: 12416932 (overridden on cmd)
Total bytes of diff: 12412152 (overridden on cmd)
Total bytes of delta: -4780 (-0.04 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
184 : 18259.dasm (6.52 % of base)
61 : 50175.dasm (4.21 % of base)
48 : 43039.dasm (2.38 % of base)
42 : 50771.dasm (3.15 % of base)
42 : 41803.dasm (6.30 % of base)
33 : 50757.dasm (2.22 % of base)
31 : 28986.dasm (3.15 % of base)
31 : 19452.dasm (0.62 % of base)
30 : 41935.dasm (1.85 % of base)
28 : 2437.dasm (2.26 % of base)
28 : 50761.dasm (11.97 % of base)
28 : 50781.dasm (12.12 % of base)
25 : 42660.dasm (4.62 % of base)
23 : 14348.dasm (3.55 % of base)
20 : 20663.dasm (5.04 % of base)
18 : 33151.dasm (2.12 % of base)
18 : 7263.dasm (2.30 % of base)
17 : 32174.dasm (0.77 % of base)
15 : 32779.dasm (3.95 % of base)
14 : 43390.dasm (6.36 % of base)
Top file improvements (bytes):
-555 : 33483.dasm (-17.70 % of base)
-534 : 32421.dasm (-15.55 % of base)
-478 : 32420.dasm (-15.12 % of base)
-447 : 34845.dasm (-5.37 % of base)
-440 : 33474.dasm (-15.03 % of base)
-184 : 48745.dasm (-1.78 % of base)
-166 : 34843.dasm (-5.08 % of base)
-143 : 29943.dasm (-7.78 % of base)
-132 : 33393.dasm (-3.91 % of base)
-117 : 29944.dasm (-7.26 % of base)
-115 : 48743.dasm (-3.21 % of base)
-97 : 33487.dasm (-9.20 % of base)
-82 : 34844.dasm (-5.55 % of base)
-74 : 33484.dasm (-8.17 % of base)
-74 : 20290.dasm (-4.69 % of base)
-58 : 28367.dasm (-7.39 % of base)
-58 : 46881.dasm (-6.46 % of base)
-55 : 33486.dasm (-5.40 % of base)
-43 : 34842.dasm (-3.20 % of base)
-40 : 30272.dasm (-5.15 % of base)
82 total files with Code Size differences (46 improved, 36 regressed), 20 unchanged.
Top method regressions (bytes):
184 (6.52 % of base) : 18259.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
61 (4.21 % of base) : 50175.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier1)
48 (2.38 % of base) : 43039.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodTokenNoLock(System.Reflection.MethodInfo,ubyte):int:this (Tier1)
42 (6.30 % of base) : 41803.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol] (Tier1)
42 (3.15 % of base) : 50771.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
33 (2.22 % of base) : 50757.dasm - System.Numerics.BigInteger:Add(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
31 (3.15 % of base) : 28986.dasm - Fourier:DoFPUTransIteration(double[],double[],int):long (Tier1)
31 (0.62 % of base) : 19452.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1)
30 (1.85 % of base) : 41935.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:LoadAndValidateAttributes(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]],byref,short,ubyte,Microsoft.CodeAnalysis.CSharp.Binder,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,ubyte],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax]):ubyte:this (Tier1)
28 (11.97 % of base) : 50761.dasm - System.Numerics.BigIntegerCalculator:Add(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1)
28 (12.12 % of base) : 50781.dasm - System.Numerics.BigIntegerCalculator:Subtract(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1)
28 (2.26 % of base) : 2437.dasm - System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixText|41_3(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (Tier0-FullOpts)
25 (4.62 % of base) : 42660.dasm - System.String:MakeSeparatorListAny(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref) (Tier1)
23 (3.55 % of base) : 14348.dasm - System.Text.Json.Tests.Perf_Strings:WriteStringsUtf8():this (Tier1-OSR)
20 (5.04 % of base) : 20663.dasm - System.Buffers.StringSearchValues:AnalyzeValues(System.ReadOnlySpan`1[System.String],byref,byref,byref,byref,byref) (Tier1)
18 (2.12 % of base) : 33151.dasm - System.Numerics.BigIntegerCalculator:PowCore(System.Span`1[uint],int,System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint],System.Span`1[uint],int,System.Span`1[uint]):System.Span`1[uint] (Tier1-OSR)
18 (2.30 % of base) : 7263.dasm - System.Reflection.AssemblyNameParser:ParseVersion(System.String):System.Version:this (Tier0-FullOpts)
17 (0.77 % of base) : 32174.dasm - System.Numerics.BigIntegerCalculator:MultiplyNearLength(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint],System.Span`1[uint]) (Tier0-FullOpts)
15 (3.95 % of base) : 32779.dasm - Benchstone.BenchF.InProd:Test():ubyte:this (Tier1-OSR)
14 (6.36 % of base) : 43390.dasm - Benchstone.BenchI.Puzzle:Place(int,int):int:this (Tier1)
Top method improvements (bytes):
-555 (-17.70 % of base) : 33483.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
-534 (-15.55 % of base) : 32421.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
-478 (-15.12 % of base) : 32420.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
-447 (-5.37 % of base) : 34845.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
-440 (-15.03 % of base) : 33474.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
-184 (-1.78 % of base) : 48745.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
-166 (-5.08 % of base) : 34843.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
-143 (-7.78 % of base) : 29943.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
-132 (-3.91 % of base) : 33393.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (Tier0-FullOpts)
-117 (-7.26 % of base) : 29944.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
-115 (-3.21 % of base) : 48743.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
-97 (-9.20 % of base) : 33487.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
-82 (-5.55 % of base) : 34844.dasm - Benchstone.BenchF.LLoops:Init():this (Tier1)
-74 (-8.17 % of base) : 33484.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1)
-74 (-4.69 % of base) : 20290.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
-58 (-6.46 % of base) : 46881.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (Tier1-OSR)
-58 (-7.39 % of base) : 28367.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)
-55 (-5.40 % of base) : 33486.dasm - LUDecomp:build_problem(double[][],int,double[]) (Tier1)
-43 (-3.20 % of base) : 34842.dasm - Benchstone.BenchF.LLoops:Init():this (Tier1-OSR)
-40 (-5.15 % of base) : 30272.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1)
Top method regressions (percentages):
9 (15.00 % of base) : 39133.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
8 (14.81 % of base) : 42770.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
8 (12.50 % of base) : 20613.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
28 (12.12 % of base) : 50781.dasm - System.Numerics.BigIntegerCalculator:Subtract(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1)
28 (11.97 % of base) : 50761.dasm - System.Numerics.BigIntegerCalculator:Add(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1)
7 (11.11 % of base) : 41378.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (Tier1)
6 (10.71 % of base) : 6432.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
8 (10.53 % of base) : 37528.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
14 (8.92 % of base) : 53175.dasm - IfStatements.IfStatements:AndAndAnd():this (Tier1-OSR)
7 (7.61 % of base) : 28242.dasm - System.Text.RegularExpressions.Symbolic.CharSetSolver:Or(System.ReadOnlySpan`1[System.Text.RegularExpressions.Symbolic.BDD]):System.Text.RegularExpressions.Symbolic.BDD:this (Tier1)
10 (7.41 % of base) : 52598.dasm - IfStatements.IfStatements:AndAnd():this (Tier1-OSR)
10 (7.41 % of base) : 27325.dasm - IfStatements.IfStatements:AndOr():this (Tier1-OSR)
10 (7.41 % of base) : 26252.dasm - IfStatements.IfStatements:OrOr():this (Tier1-OSR)
12 (6.78 % of base) : 24435.dasm - System.Collections.HashHelpers:GetPrime(int):int (Tier1)
12 (6.78 % of base) : 655.dasm - System.Collections.HashHelpers:GetPrime(int):int (Tier1)
184 (6.52 % of base) : 18259.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
14 (6.36 % of base) : 43390.dasm - Benchstone.BenchI.Puzzle:Place(int,int):int:this (Tier1)
42 (6.30 % of base) : 41803.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol] (Tier1)
8 (5.88 % of base) : 29839.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
8 (5.88 % of base) : 32433.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (percentages):
-555 (-17.70 % of base) : 33483.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
-534 (-15.55 % of base) : 32421.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
-478 (-15.12 % of base) : 32420.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
-440 (-15.03 % of base) : 33474.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
-26 (-14.77 % of base) : 29738.dasm - Span.Sorting:TestBubbleSortArray(int[]) (Tier1)
-33 (-13.92 % of base) : 29736.dasm - Span.Sorting:TestBubbleSortArray(int[]) (Tier1-OSR)
-27 (-12.92 % of base) : 53142.dasm - Benchstone.BenchI.BubbleSort2:Inner(int[]) (Tier1-OSR)
-30 (-12.77 % of base) : 53046.dasm - Benchstone.BenchI.BubbleSort:SortArray(int[],int) (Tier1-OSR)
-12 (-10.43 % of base) : 1953.dasm - System.Random+CompatPrng:NextBytes(System.Span`1[ubyte]):this (Tier1-OSR)
-14 (-10.14 % of base) : 27185.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (Tier1-OSR)
-10 (-9.80 % of base) : 27187.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (Tier1)
-97 (-9.20 % of base) : 33487.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
-38 (-8.86 % of base) : 53121.dasm - SciMark2.SparseCompRow:matmult(double[],double[],int[],int[],double[],int) (Tier1-OSR)
-12 (-8.63 % of base) : 28851.dasm - System.Linq.Enumerable+SelectRangeIterator`1[ubyte]:Fill(System.Span`1[ubyte],int,System.Func`2[int,ubyte]) (Tier1-OSR)
-74 (-8.17 % of base) : 33484.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1)
-12 (-8.11 % of base) : 24816.dasm - System.Linq.Enumerable+ListPartition`1[ubyte]:Fill(System.Collections.Generic.IList`1[ubyte],System.Span`1[ubyte],int) (Tier1-OSR)
-28 (-8.09 % of base) : 25780.dasm - BenchmarksGame.SpectralNorm_1:MultiplyAtv(int,double[],double[]):this (Tier1-OSR)
-28 (-8.09 % of base) : 25778.dasm - BenchmarksGame.SpectralNorm_1:MultiplyAv(int,double[],double[]):this (Tier1-OSR)
-143 (-7.78 % of base) : 29943.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
-17 (-7.56 % of base) : 33904.dasm - Benchstone.BenchI.Permutate:Test():ubyte:this (Tier1-OSR)
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: 393194802 (overridden on cmd)
Total bytes of diff: 393122900 (overridden on cmd)
Total bytes of delta: -71902 (-0.02 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
522 : 367996.dasm (3.12 % of base)
155 : 476174.dasm (5.66 % of base)
153 : 477191.dasm (6.53 % of base)
119 : 510762.dasm (3.11 % of base)
81 : 336016.dasm (4.89 % of base)
75 : 510052.dasm (2.43 % of base)
75 : 504314.dasm (2.43 % of base)
72 : 370834.dasm (1.89 % of base)
59 : 476178.dasm (2.57 % of base)
58 : 476108.dasm (2.02 % of base)
55 : 370890.dasm (0.49 % of base)
53 : 120689.dasm (3.36 % of base)
52 : 475810.dasm (0.67 % of base)
50 : 481405.dasm (1.77 % of base)
49 : 193157.dasm (4.45 % of base)
49 : 35675.dasm (3.08 % of base)
48 : 479451.dasm (2.13 % of base)
48 : 368584.dasm (2.54 % of base)
46 : 368588.dasm (2.15 % of base)
46 : 501239.dasm (4.12 % of base)
Top file improvements (bytes):
-555 : 479401.dasm (-17.70 % of base)
-534 : 480819.dasm (-15.55 % of base)
-531 : 228271.dasm (-16.73 % of base)
-447 : 480718.dasm (-5.36 % of base)
-430 : 228281.dasm (-6.96 % of base)
-266 : 464409.dasm (-8.73 % of base)
-182 : 480775.dasm (-1.76 % of base)
-171 : 228005.dasm (-8.95 % of base)
-169 : 557626.dasm (-2.07 % of base)
-161 : 228275.dasm (-6.75 % of base)
-159 : 228006.dasm (-8.97 % of base)
-152 : 445080.dasm (-1.02 % of base)
-152 : 445083.dasm (-1.02 % of base)
-148 : 479356.dasm (-7.06 % of base)
-141 : 504692.dasm (-3.66 % of base)
-141 : 510208.dasm (-3.66 % of base)
-126 : 366869.dasm (-1.39 % of base)
-120 : 504667.dasm (-7.48 % of base)
-120 : 367690.dasm (-1.53 % of base)
-117 : 479332.dasm (-7.26 % of base)
92 total files with Code Size differences (52 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
522 (3.12 % of base) : 367996.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int (Tier1)
155 (5.66 % of base) : 476174.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
153 (6.53 % of base) : 477191.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
119 (3.11 % of base) : 510762.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression):this (FullOpts)
81 (4.89 % of base) : 336016.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier1)
75 (2.43 % of base) : 510052.dasm - Test_jaggedarr_InnerProd.doublemm:TestEntryPoint():int (FullOpts)
75 (2.43 % of base) : 504314.dasm - Test_jaggedarr_InnerProd.doublemm:TestEntryPoint():int (FullOpts)
72 (1.89 % of base) : 370834.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
59 (2.57 % of base) : 476178.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
58 (2.02 % of base) : 476108.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
55 (0.49 % of base) : 370890.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (Tier1)
53 (3.36 % of base) : 120689.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier1)
52 (0.67 % of base) : 475810.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ResolveMetadataReferences(System.__Canon,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]]:this (FullOpts)
50 (1.77 % of base) : 481405.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (FullOpts)
49 (3.08 % of base) : 35675.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier1)
49 (4.45 % of base) : 193157.dasm - System.RuntimeType:GetMethodCandidates(System.String,int,int,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.MethodInfo]:this (Instrumented Tier1)
48 (2.13 % of base) : 479451.dasm - BilinearTest:BilinearInterpol_Vector(double[],double[],double,double,double[],double,double,double):double[]:this (FullOpts)
48 (2.54 % of base) : 368584.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:Expand(System.__Canon[]):this (Tier1)
46 (2.15 % of base) : 368588.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,System.__Canon]:Expand(System.__Canon[]):this (Tier1)
46 (4.12 % of base) : 501239.dasm - JitTest_lcsvalbox_lcs_cs.LCS:findLCS(System.Object[,,,],ushort[][],int[]) (FullOpts)
Top method improvements (bytes):
-555 (-17.70 % of base) : 479401.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
-534 (-15.55 % of base) : 480819.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
-531 (-16.73 % of base) : 228271.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
-447 (-5.36 % of base) : 480718.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
-430 (-6.96 % of base) : 228281.dasm - LUDecomp:Run():double:this (Tier1)
-266 (-8.73 % of base) : 464409.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
-182 (-1.76 % of base) : 480775.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
-171 (-8.95 % of base) : 228005.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
-169 (-2.07 % of base) : 557626.dasm - ILCompiler.Program:RunSingleCompilation(System.Collections.Generic.Dictionary`2[System.String,System.String],ILCompiler.InstructionSetSupport,System.String,System.Collections.Generic.Dictionary`2[System.String,System.String],System.Collections.Generic.HashSet`1[Internal.TypeSystem.ModuleDesc],ILCompiler.ReadyToRunCompilerContext,ILCompiler.Logger):this (FullOpts)
-161 (-6.75 % of base) : 228275.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
-159 (-8.97 % of base) : 228006.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
-152 (-1.02 % of base) : 445080.dasm - IntelHardwareIntrinsicTest._Avx2.Program:ShiftLeftLogicalVariable() (FullOpts)
-152 (-1.02 % of base) : 445083.dasm - IntelHardwareIntrinsicTest._Avx2.Program:ShiftRightLogicalVariable() (FullOpts)
-148 (-7.06 % of base) : 479356.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (FullOpts)
-141 (-3.66 % of base) : 504692.dasm - Test_structarr_InnerProd.intmm:TestEntryPoint():int (FullOpts)
-141 (-3.66 % of base) : 510208.dasm - Test_structarr_InnerProd.intmm:TestEntryPoint():int (FullOpts)
-126 (-1.39 % of base) : 366869.dasm - ILCompiler.ReadyToRunMetadataFieldLayoutAlgorithm+ModuleFieldLayoutMap:CalculateTypeLayout(Internal.TypeSystem.DefType,Internal.TypeSystem.Ecma.EcmaModule,byref):Internal.TypeSystem.FieldAndOffset[]:this (Tier1)
-120 (-7.48 % of base) : 504667.dasm - string1:ProcessJagged3DArray(System.String[][]) (FullOpts)
-120 (-1.53 % of base) : 367690.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]) (Tier1)
-117 (-7.26 % of base) : 479332.dasm - AssignJagged:second_assignments(int[][],short[][]) (FullOpts)
Top method regressions (percentages):
13 (27.08 % of base) : 480554.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
13 (27.08 % of base) : 480573.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
8 (19.05 % of base) : 518237.dasm - GitHub_5556:SpanAsParam(System.Span`1[long]):long (FullOpts)
8 (19.05 % of base) : 518238.dasm - GitHub_5556:SpanWithLocalCopy(System.Span`1[long]):long (FullOpts)
13 (18.84 % of base) : 480563.dasm - Span.IndexerBench:TestIndexer4(System.Span`1[ubyte],int):ubyte (FullOpts)
7 (17.95 % of base) : 493674.dasm - CreateSpanTest:Main():int (FullOpts)
6 (17.65 % of base) : 481431.dasm - Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
8 (17.39 % of base) : 336020.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
8 (16.67 % of base) : 480557.dasm - Span.IndexerBench:TestIndexer2(System.Span`1[ubyte]):ubyte (FullOpts)
8 (16.67 % of base) : 480560.dasm - Span.IndexerBench:TestIndexer3(System.Span`1[ubyte]):ubyte (FullOpts)
8 (16.67 % of base) : 480576.dasm - Span.IndexerBench:TestReadOnlyIndexer2(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
21 (16.03 % of base) : 480592.dasm - Span.IndexerBench:TestKnownSizeCtor2(ubyte[],int):ubyte (FullOpts)
9 (15.00 % of base) : 476054.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
9 (15.00 % of base) : 511235.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)
8 (14.81 % of base) : 478089.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
9 (14.06 % of base) : 474464.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[float]:ReturnArrays(int):this (FullOpts)
8 (13.79 % of base) : 245628.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
8 (13.79 % of base) : 264368.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
8 (13.79 % of base) : 231976.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
8 (13.79 % of base) : 363084.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
Top method improvements (percentages):
-555 (-17.70 % of base) : 479401.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
-531 (-16.73 % of base) : 228271.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
-534 (-15.55 % of base) : 480819.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
-26 (-14.77 % of base) : 481453.dasm - Span.SpanBench:TestBubbleSortArray(int[]) (FullOpts)
-4 (-12.50 % of base) : 481434.dasm - Span.SpanBench:TestFillAllArray(ubyte[]) (FullOpts)
-8 (-11.94 % of base) : 465355.dasm - MarshalArrayAsParam.Default.ArrayMarshal:GetExpectedOutBoolArray(int):ubyte[] (FullOpts)
-8 (-11.94 % of base) : 465347.dasm - MarshalArrayAsParam.Default.ArrayMarshal:InitBoolArray(int):ubyte[] (FullOpts)
-24 (-11.82 % of base) : 475482.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
-14 (-10.00 % of base) : 231720.dasm - Span.SpanBench:TestBubbleSortSpan(System.Span`1[int]) (Tier1-OSR)
-10 (-9.80 % of base) : 481447.dasm - Span.SpanBench:TestBubbleSortSpan(System.Span`1[int]) (FullOpts)
-4 (-9.76 % of base) : 466973.dasm - MiscMethods:Sum(double[]):double:this (FullOpts)
-4 (-9.76 % of base) : 466969.dasm - MiscMethods:Sum(float[]):float:this (FullOpts)
-97 (-9.20 % of base) : 479400.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (FullOpts)
-16 (-9.09 % of base) : 479461.dasm - Benchstone.BenchI.BubbleSort:SortArray(int[],int) (FullOpts)
-88 (-9.06 % of base) : 480425.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (FullOpts)
-18 (-9.00 % of base) : 503998.dasm - class1:Init3DMatrix(double[,,],double[][]) (FullOpts)
-18 (-9.00 % of base) : 504315.dasm - Test_jaggedarr_InnerProd.doublemm:Init3DMatrix(double[,,],double[][]) (FullOpts)
-159 (-8.97 % of base) : 228006.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
-171 (-8.95 % of base) : 228005.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
-4 (-8.89 % of base) : 466581.dasm - BringUpTest_DblArray:DblArray(double[],double):double (FullOpts)
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: 39486541 (overridden on cmd)
Total bytes of diff: 39484743 (overridden on cmd)
Total bytes of delta: -1798 (-0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
436 : 37848.dasm (1.70 % of base)
259 : 38875.dasm (7.26 % of base)
231 : 96805.dasm (8.62 % of base)
208 : 146569.dasm (10.26 % of base)
184 : 117196.dasm (4.18 % of base)
162 : 228828.dasm (6.51 % of base)
146 : 16197.dasm (1.48 % of base)
143 : 35063.dasm (4.36 % of base)
140 : 201185.dasm (5.83 % of base)
119 : 100702.dasm (4.32 % of base)
117 : 38577.dasm (2.90 % of base)
110 : 175679.dasm (4.69 % of base)
96 : 98975.dasm (4.11 % of base)
92 : 100384.dasm (4.48 % of base)
88 : 68023.dasm (1.73 % of base)
88 : 66398.dasm (1.89 % of base)
82 : 218345.dasm (3.54 % of base)
81 : 116525.dasm (3.82 % of base)
81 : 60242.dasm (1.69 % of base)
79 : 92779.dasm (3.56 % of base)
Top file improvements (bytes):
-213 : 195717.dasm (-6.19 % of base)
-171 : 3952.dasm (-2.42 % of base)
-136 : 31107.dasm (-4.39 % of base)
-93 : 116388.dasm (-6.73 % of base)
-93 : 92820.dasm (-1.85 % of base)
-89 : 38994.dasm (-8.21 % of base)
-83 : 231975.dasm (-6.61 % of base)
-80 : 37649.dasm (-3.86 % of base)
-78 : 171122.dasm (-4.81 % of base)
-74 : 133369.dasm (-8.04 % of base)
-74 : 163937.dasm (-3.86 % of base)
-74 : 188760.dasm (-3.86 % of base)
-65 : 101707.dasm (-8.35 % of base)
-65 : 117065.dasm (-3.29 % of base)
-63 : 214952.dasm (-3.95 % of base)
-63 : 231601.dasm (-3.90 % of base)
-62 : 3382.dasm (-5.44 % of base)
-60 : 16199.dasm (-4.67 % of base)
-60 : 122423.dasm (-4.49 % of base)
-58 : 31116.dasm (-3.18 % of base)
96 total files with Code Size differences (56 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
436 (1.70 % of base) : 37848.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
259 (7.26 % of base) : 38875.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
231 (8.62 % of base) : 96805.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportUnspecificProcedures(Microsoft.CodeAnalysis.Location,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte) (FullOpts)
208 (10.26 % of base) : 146569.dasm - System.Dynamic.Utils.DelegateHelpers:CreateObjectArrayDelegateRefEmit(System.Type,System.Func`2[System.Object[],System.Object]):System.Delegate (FullOpts)
184 (4.18 % of base) : 117196.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
162 (6.51 % of base) : 228828.dasm - System.Reflection.DispatchProxyGenerator+ProxyBuilder:AddMethodImpl(System.Reflection.MethodInfo,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
146 (1.48 % of base) : 16197.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
143 (4.36 % of base) : 35063.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (FullOpts)
140 (5.83 % of base) : 201185.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (FullOpts)
119 (4.32 % of base) : 100702.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:AddGroupClassMembersIfNeeded(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+MembersAndInitializersBuilder,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
117 (2.90 % of base) : 38577.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMostSpecific(System.Reflection.MethodBase,System.Reflection.MethodBase,int[],System.Object[],ubyte,int,int,System.Object[]):int:this (FullOpts)
110 (4.69 % of base) : 175679.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
96 (4.11 % of base) : 98975.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol] (FullOpts)
92 (4.48 % of base) : 100384.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckForOverloadsErrors(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
88 (1.73 % of base) : 68023.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteMultiDimensionalArrayForEachEnumerator(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
88 (1.89 % of base) : 66398.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
82 (3.54 % of base) : 218345.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteArray(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):this (FullOpts)
81 (1.69 % of base) : 60242.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedStringHandlerInMemberCall(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
81 (3.82 % of base) : 116525.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:BuildDelegateRelaxationLambda(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundLateMemberAccess,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression (FullOpts)
79 (3.56 % of base) : 92779.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression):this (FullOpts)
Top method improvements (bytes):
-213 (-6.19 % of base) : 195717.dasm - System.Data.Odbc.OdbcDataReader:BuildMetaDataInfo():this (FullOpts)
-171 (-2.42 % of base) : 3952.dasm - System.Data.XmlTreeGen:SchemaTree(System.Xml.XmlDocument,System.Xml.XmlWriter,System.Data.DataSet,System.Data.DataTable,ubyte):this (FullOpts)
-136 (-4.39 % of base) : 31107.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
-93 (-1.85 % of base) : 92820.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
-93 (-6.73 % of base) : 116388.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:VisitAnonymousTypeCreationExpression(Microsoft.CodeAnalysis.VisualBasic.BoundAnonymousTypeCreationExpression):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
-89 (-8.21 % of base) : 38994.dasm - Microsoft.VisualBasic.CompilerServices.Symbols+Container:FilterInvalidMembers(System.Reflection.MemberInfo[]):System.Reflection.MemberInfo[] (FullOpts)
-83 (-6.61 % of base) : 231975.dasm - System.Reflection.TypeLoading.Ecma.EcmaMethodBody:get_ExceptionHandlingClauses():System.Collections.Generic.IList`1[System.Reflection.ExceptionHandlingClause]:this (FullOpts)
-80 (-3.86 % of base) : 37649.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexSet(System.Object,System.Object[],System.String[]) (FullOpts)
-78 (-4.81 % of base) : 171122.dasm - System.Xml.Xsl.Runtime.XmlQueryContext:InvokeXsltLateBoundFunction(System.String,System.String,System.Collections.Generic.IList`1[System.Xml.XPath.XPathItem][]):System.Collections.Generic.IList`1[System.Xml.XPath.XPathItem]:this (FullOpts)
-74 (-3.86 % of base) : 163937.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:TryModifyEntries(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):ubyte:this (FullOpts)
-74 (-3.86 % of base) : 188760.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:TryModifyEntries(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):ubyte:this (FullOpts)
-74 (-8.04 % of base) : 133369.dasm - System.Reflection.Metadata.Ecma335.MetadataAggregator:CalculateHeapSizes(System.Collections.Generic.IReadOnlyList`1[int],System.Collections.Generic.IReadOnlyList`1[System.Reflection.Metadata.MetadataReader]):System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[int]] (FullOpts)
-65 (-3.29 % of base) : 117065.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
-65 (-8.35 % of base) : 101707.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSubstitution:SubstituteCustomModifiers(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]:this (FullOpts)
-63 (-3.95 % of base) : 214952.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-63 (-3.90 % of base) : 231601.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-62 (-5.44 % of base) : 3382.dasm - System.Data.DataRelationCollection+DataSetRelationCollection:FinishInitRelations():this (FullOpts)
-60 (-4.49 % of base) : 122423.dasm - Microsoft.CodeAnalysis.VisualBasic.TypeArgumentInference+InferenceGraph:AddLambdaToGraph(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.TypeArgumentInference+ArgumentNode,Microsoft.CodeAnalysis.VisualBasic.Binder):this (FullOpts)
-60 (-4.67 % of base) : 16199.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-58 (-3.18 % of base) : 31116.dasm - System.Reflection.MethodInvoker:InvokeWithManyArgs(System.Object,System.Span`1[System.Object]):System.Object:this (FullOpts)
Top method regressions (percentages):
14 (28.00 % of base) : 153152.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
14 (28.00 % of base) : 178190.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
14 (28.00 % of base) : 220145.dasm - System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetStartsWithDistance|11_1(System.String,System.String):int (FullOpts)
14 (24.14 % of base) : 36231.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
18 (21.69 % of base) : 178189.dasm - Roslyn.Utilities.StringExtensions:GetCaseInsensitivePrefixLength(System.String,System.String):int (FullOpts)
18 (21.69 % of base) : 153151.dasm - Roslyn.Utilities.StringExtensions:GetCaseInsensitivePrefixLength(System.String,System.String):int (FullOpts)
29 (21.17 % of base) : 152756.dasm - Xunit.Sdk.DisplayNameFormatter+ReplaceEscapeSequenceRule:HexToInt32(ushort[]):int (FullOpts)
9 (20.93 % of base) : 124206.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
9 (20.00 % of base) : 203843.dasm - System.Text.RegularExpressions.Symbolic.UInt64Solver:Or(System.ReadOnlySpan`1[ulong]):ulong:this (FullOpts)
57 (19.39 % of base) : 30512.dasm - System.Globalization.UmAlQuraCalendar:InitDateMapping():System.Globalization.UmAlQuraCalendar+DateMapping[] (FullOpts)
9 (19.15 % of base) : 194581.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
9 (18.37 % of base) : 178102.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
9 (18.37 % of base) : 153064.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
21 (17.65 % of base) : 11961.dasm - Microsoft.FSharp.Collections.ArrayModule:TryFindIndex[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],System.__Canon[]):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
9 (17.65 % of base) : 215957.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
9 (17.65 % of base) : 232521.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
9 (16.67 % of base) : 133016.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
10 (16.39 % of base) : 163347.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
10 (16.39 % of base) : 188164.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
10 (16.39 % of base) : 133105.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)
Top method improvements (percentages):
-31 (-18.34 % of base) : 176304.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
-15 (-12.50 % of base) : 1002.dasm - System.Data.FillErrorEventArgs:get_Values():System.Object[]:this (FullOpts)
-9 (-10.34 % of base) : 3973.dasm - System.Data.ConstraintCollection:CompareArrays(System.Data.DataColumn[],System.Data.DataColumn[]):ubyte (FullOpts)
-14 (-10.07 % of base) : 133351.dasm - System.Reflection.Metadata.MetadataReader:ComputeCodedTokenSize(int,int[],ulong):int:this (FullOpts)
-10 (-8.70 % of base) : 153385.dasm - Microsoft.Cci.CustomDebugInfoWriter:<SerializeDynamicLocalInfo>g__GetDynamicFlags|10_0(Microsoft.Cci.ILocalDefinition):ubyte[] (FullOpts)
-10 (-8.70 % of base) : 178312.dasm - Microsoft.Cci.CustomDebugInfoWriter:<SerializeDynamicLocalInfo>g__GetDynamicFlags|10_0(Microsoft.Cci.ILocalDefinition):ubyte[] (FullOpts)
-13 (-8.67 % of base) : 95073.dasm - System.Speech.Internal.Synthesis.AudioFormatConverter:ConvertLinear8LinearShortByte(short[],int):ubyte[] (FullOpts)
-65 (-8.35 % of base) : 101707.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSubstitution:SubstituteCustomModifiers(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]:this (FullOpts)
-4 (-8.33 % of base) : 127742.dasm - System.DirectoryServices.ActiveDirectory.ActiveDirectorySchedule:ResetSchedule():this (FullOpts)
-11 (-8.33 % of base) : 95071.dasm - System.Speech.Internal.Synthesis.AudioFormatConverter:ConvertLinear8LinearByteShort(ubyte[],int):short[] (FullOpts)
-10 (-8.26 % of base) : 238989.dasm - System.Net.Mime.MailBnfHelper:CreateCharactersAllowedInComments():ubyte[] (FullOpts)
-12 (-8.22 % of base) : 3356.dasm - System.Data.DataKey:ColumnsEqual(System.Data.DataColumn[],System.Data.DataColumn[]):ubyte (FullOpts)
-89 (-8.21 % of base) : 38994.dasm - Microsoft.VisualBasic.CompilerServices.Symbols+Container:FilterInvalidMembers(System.Reflection.MemberInfo[]):System.Reflection.MemberInfo[] (FullOpts)
-11 (-8.15 % of base) : 37249.dasm - System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
-74 (-8.04 % of base) : 133369.dasm - System.Reflection.Metadata.Ecma335.MetadataAggregator:CalculateHeapSizes(System.Collections.Generic.IReadOnlyList`1[int],System.Collections.Generic.IReadOnlyList`1[System.Reflection.Metadata.MetadataReader]):System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[int]] (FullOpts)
-19 (-7.95 % of base) : 241248.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-8 (-7.84 % of base) : 238988.dasm - System.Net.Mime.MailBnfHelper:CreateCharactersAllowedInDomainLiterals():ubyte[] (FullOpts)
-8 (-7.84 % of base) : 238987.dasm - System.Net.Mime.MailBnfHelper:CreateCharactersAllowedInQuotedStrings():ubyte[] (FullOpts)
-17 (-7.80 % of base) : 23552.dasm - System.Reflection.RuntimeEventInfo:GetOtherMethods(ubyte):System.Reflection.MethodInfo[]:this (FullOpts)
-6 (-7.79 % of base) : 166465.dasm - Roslyn.Utilities.ArrayExtensions:ReverseContents[ubyte](ubyte[],int,int) (FullOpts)
libraries.pmi.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: 61663361 (overridden on cmd)
Total bytes of diff: 61661341 (overridden on cmd)
Total bytes of delta: -2020 (-0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
969 : 57942.dasm (3.42 % of base)
717 : 100117.dasm (4.01 % of base)
216 : 127338.dasm (4.46 % of base)
208 : 293843.dasm (6.25 % of base)
191 : 292028.dasm (6.69 % of base)
155 : 93213.dasm (5.66 % of base)
147 : 105649.dasm (7.36 % of base)
145 : 218951.dasm (3.89 % of base)
139 : 293969.dasm (8.26 % of base)
136 : 100158.dasm (0.59 % of base)
120 : 88647.dasm (5.28 % of base)
118 : 123224.dasm (1.92 % of base)
114 : 126034.dasm (3.42 % of base)
113 : 218952.dasm (3.89 % of base)
110 : 127336.dasm (2.23 % of base)
109 : 123566.dasm (6.07 % of base)
99 : 65926.dasm (1.61 % of base)
95 : 17108.dasm (1.12 % of base)
95 : 280771.dasm (2.59 % of base)
93 : 67583.dasm (1.36 % of base)
Top file improvements (bytes):
-282 : 57949.dasm (-9.38 % of base)
-266 : 131471.dasm (-8.69 % of base)
-169 : 304762.dasm (-2.06 % of base)
-137 : 65742.dasm (-3.27 % of base)
-135 : 296449.dasm (-3.88 % of base)
-109 : 57944.dasm (-2.36 % of base)
-100 : 122280.dasm (-3.86 % of base)
-100 : 18511.dasm (-1.54 % of base)
-83 : 151174.dasm (-4.87 % of base)
-82 : 162825.dasm (-1.98 % of base)
-82 : 59586.dasm (-1.36 % of base)
-80 : 217132.dasm (-3.87 % of base)
-80 : 269623.dasm (-2.40 % of base)
-80 : 67504.dasm (-3.82 % of base)
-79 : 67459.dasm (-3.17 % of base)
-75 : 57674.dasm (-5.99 % of base)
-73 : 21073.dasm (-2.54 % of base)
-70 : 57956.dasm (-1.16 % of base)
-69 : 123653.dasm (-1.81 % of base)
-67 : 254911.dasm (-4.00 % of base)
97 total files with Code Size differences (57 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
969 (3.42 % of base) : 57942.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
717 (4.01 % of base) : 100117.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindFieldAndPropertyInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.FieldOrPropertyInitializer]],Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedInteractiveInitializerMethod,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundInitializer] (FullOpts)
216 (4.46 % of base) : 127338.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
208 (6.25 % of base) : 293843.dasm - System.Reflection.DispatchProxyGenerator+ProxyBuilder:AddMethodImpl(System.Reflection.MethodInfo,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
191 (6.69 % of base) : 292028.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (FullOpts)
155 (5.66 % of base) : 93213.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
147 (7.36 % of base) : 105649.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSubstitution:Create(Microsoft.CodeAnalysis.VisualBasic.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],ubyte):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSubstitution (FullOpts)
145 (3.89 % of base) : 218951.dasm - System.Xml.Serialization.TempAssembly:GenerateSerializerToStream(System.Xml.Serialization.XmlMapping[],System.Type[],System.String,System.Reflection.Assembly,System.Collections.Hashtable,System.IO.Stream):ubyte (FullOpts)
139 (8.26 % of base) : 293969.dasm - System.Reflection.Emit.CustomAttributeInfo:DecodeCustomAttribute(System.Reflection.ConstructorInfo,System.ReadOnlySpan`1[ubyte]):System.Reflection.Emit.CustomAttributeInfo (FullOpts)
136 (0.59 % of base) : 100158.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this (FullOpts)
120 (5.28 % of base) : 88647.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
118 (1.92 % of base) : 123224.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
114 (3.42 % of base) : 126034.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder+QueryLambdaBinder:BuildJoinSelector(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundExpression):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
113 (3.89 % of base) : 218952.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
110 (2.23 % of base) : 127336.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
109 (6.07 % of base) : 123566.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:ProcessTrivia(Microsoft.CodeAnalysis.SyntaxTree,System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Diagnostic],System.Collections.Generic.Stack`1[Microsoft.CodeAnalysis.SyntaxNodeOrToken],Microsoft.CodeAnalysis.SyntaxTriviaList) (FullOpts)
99 (1.61 % of base) : 65926.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
95 (1.12 % of base) : 17108.dasm - System.Data.XmlTreeGen:SchemaTree(System.Xml.XmlDocument,System.Xml.XmlWriter,System.Data.DataSet,System.Data.DataTable,ubyte):this (FullOpts)
95 (2.59 % of base) : 280771.dasm - System.Linq.Parallel.SortHelper`2[ubyte,System.Nullable`1[int]]:MergeSortCooperatively():this (FullOpts)
93 (1.36 % of base) : 67583.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteMultiDimensionalArrayForEachEnumerator(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
Top method improvements (bytes):
-282 (-9.38 % of base) : 57949.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-266 (-8.69 % of base) : 131471.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
-169 (-2.06 % of base) : 304762.dasm - ILCompiler.Program:RunSingleCompilation(System.Collections.Generic.Dictionary`2[System.String,System.String],ILCompiler.InstructionSetSupport,System.String,System.Collections.Generic.Dictionary`2[System.String,System.String],System.Collections.Generic.HashSet`1[Internal.TypeSystem.ModuleDesc],ILCompiler.ReadyToRunCompilerContext,ILCompiler.Logger):this (FullOpts)
-137 (-3.27 % of base) : 65742.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitDeconstructMethodArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
-135 (-3.88 % of base) : 296449.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (FullOpts)
-109 (-2.36 % of base) : 57944.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMostSpecific(System.Reflection.MethodBase,System.Reflection.MethodBase,int[],System.Object[],ubyte,int,int,System.Object[]):int:this (FullOpts)
-100 (-3.86 % of base) : 122280.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:VisitAnonymousTypeCreationExpression(Microsoft.CodeAnalysis.VisualBasic.BoundAnonymousTypeCreationExpression):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
-100 (-1.54 % of base) : 18511.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
-83 (-4.87 % of base) : 151174.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:GetCallbackMethodsForType(System.Type,byref,byref,byref,byref,byref):this (FullOpts)
-82 (-1.98 % of base) : 162825.dasm - Microsoft.Build.BackEnd.TaskHost+<BuildProjectFilesInParallelAsync>d__81:MoveNext():this (FullOpts)
-82 (-1.36 % of base) : 59586.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedStringHandlerInMemberCall(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-80 (-3.82 % of base) : 67504.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteTupleConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-80 (-2.40 % of base) : 269623.dasm - System.Data.Odbc.OdbcDataReader:BuildMetaDataInfo():this (FullOpts)
-80 (-3.87 % of base) : 217132.dasm - System.Xml.Xsl.Runtime.XmlQueryContext:InvokeXsltLateBoundFunction(System.String,System.String,System.Collections.Generic.IList`1[System.Xml.XPath.XPathItem][]):System.Collections.Generic.IList`1[System.Xml.XPath.XPathItem]:this (FullOpts)
-79 (-3.17 % of base) : 67459.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteArgumentsForComCall(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BoundExpression[],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]):this (FullOpts)
-75 (-5.99 % of base) : 57674.dasm - Microsoft.VisualBasic.CompilerServices.Symbols+Container:FilterInvalidMembers(System.Reflection.MemberInfo[]):System.Reflection.MemberInfo[] (FullOpts)
-73 (-2.54 % of base) : 21073.dasm - System.Data.ProviderBase.SchemaMapping:SetupSchemaWithoutKeyInfo(int,int,ubyte,System.Data.DataColumn,System.Object):System.Object[]:this (FullOpts)
-70 (-1.16 % of base) : 57956.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
-69 (-1.81 % of base) : 123653.dasm - Microsoft.CodeAnalysis.VisualBasic.TypeUnification:CanUnifyHelper(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers,byref):ubyte (FullOpts)
-67 (-4.00 % of base) : 254911.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
Top method regressions (percentages):
21 (33.33 % of base) : 161240.dasm - Microsoft.Build.Shared.FileMatcher:HasDotDot(System.String):ubyte (FullOpts)
13 (26.00 % of base) : 132688.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
13 (26.00 % of base) : 166701.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
13 (26.00 % of base) : 250744.dasm - System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetStartsWithDistance|11_1(System.String,System.String):int (FullOpts)
16 (21.05 % of base) : 257822.dasm - System.Collections.Concurrent.BlockingCollection`1[int]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection`1[int][],int):int (FullOpts)
16 (21.05 % of base) : 257873.dasm - System.Collections.Concurrent.BlockingCollection`1[long]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection`1[long][],long):int (FullOpts)
16 (21.05 % of base) : 257856.dasm - System.Collections.Concurrent.BlockingCollection`1[System.Numerics.Vector`1[float]]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection`1[System.Numerics.Vector`1[float]][],System.Numerics.Vector`1[float]):int (FullOpts)
16 (20.25 % of base) : 257839.dasm - System.Collections.Concurrent.BlockingCollection`1[double]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection`1[double][],double):int (FullOpts)
16 (20.25 % of base) : 257758.dasm - System.Collections.Concurrent.BlockingCollection`1[ubyte]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection`1[ubyte][],ubyte):int (FullOpts)
16 (20.00 % of base) : 257805.dasm - System.Collections.Concurrent.BlockingCollection`1[short]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection`1[short][],short):int (FullOpts)
8 (18.60 % of base) : 129307.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
14 (18.18 % of base) : 257695.dasm - System.Collections.Concurrent.BlockingCollection`1[System.__Canon]:TryAddToAnyFast(System.__Canon[],System.__Canon):int (FullOpts)
8 (17.78 % of base) : 235727.dasm - System.Text.RegularExpressions.Symbolic.UInt64Solver:Or(System.ReadOnlySpan`1[ulong]):ulong:this (FullOpts)
25 (16.78 % of base) : 215064.dasm - System.Xml.Xsl.XPathConvert+BigInteger:CompareTo(System.Object):int:this (FullOpts)
8 (16.33 % of base) : 132166.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
8 (16.33 % of base) : 166041.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
8 (16.00 % of base) : 203033.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
8 (15.69 % of base) : 282001.dasm - System.Linq.Enumerable:Sum[ubyte,long](System.ReadOnlySpan`1[ubyte]):long (FullOpts)
8 (15.69 % of base) : 255411.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
8 (15.69 % of base) : 294877.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
Top method improvements (percentages):
-31 (-18.24 % of base) : 216873.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
-24 (-11.82 % of base) : 77822.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
-15 (-11.11 % of base) : 17976.dasm - System.Data.DataKey:GetKeyValues(int):System.Object[]:this (FullOpts)
-9 (-10.34 % of base) : 17391.dasm - System.Data.ConstraintCollection:CompareArrays(System.Data.DataColumn[],System.Data.DataColumn[]):ubyte (FullOpts)
-6 (-9.84 % of base) : 283761.dasm - System.Linq.SingleLinkedNode`1[ubyte]:FillReversed(System.Span`1[ubyte]):this (FullOpts)
-282 (-9.38 % of base) : 57949.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-266 (-8.69 % of base) : 131471.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
-4 (-8.51 % of base) : 190369.dasm - System.DirectoryServices.ActiveDirectory.ActiveDirectorySchedule:ResetSchedule():this (FullOpts)
-12 (-8.33 % of base) : 17969.dasm - System.Data.DataKey:ColumnsEqual(System.Data.DataColumn[],System.Data.DataColumn[]):ubyte (FullOpts)
-14 (-8.33 % of base) : 222546.dasm - System.Reflection.Metadata.MetadataReader:ComputeCodedTokenSize(int,int[],ulong):int:this (FullOpts)
-27 (-8.31 % of base) : 103280.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
-31 (-8.27 % of base) : 18171.dasm - System.Data.DataRow:SetKeyValues(System.Data.DataKey,System.Object[]):this (FullOpts)
-13 (-8.23 % of base) : 97866.dasm - System.Speech.Internal.Synthesis.AudioFormatConverter:ConvertLinear8LinearShortByte(short[],int):ubyte[] (FullOpts)
-10 (-7.94 % of base) : 166861.dasm - Microsoft.Cci.CustomDebugInfoWriter:<SerializeDynamicLocalInfo>g__GetDynamicFlags|10_0(Microsoft.Cci.ILocalDefinition):ubyte[] (FullOpts)
-10 (-7.94 % of base) : 132968.dasm - Microsoft.Cci.CustomDebugInfoWriter:<SerializeDynamicLocalInfo>g__GetDynamicFlags|10_0(Microsoft.Cci.ILocalDefinition):ubyte[] (FullOpts)
-6 (-7.89 % of base) : 131834.dasm - Roslyn.Utilities.ArrayExtensions:ReverseContents[ubyte](ubyte[],int,int) (FullOpts)
-6 (-7.89 % of base) : 165711.dasm - Roslyn.Utilities.ArrayExtensions:ReverseContents[ubyte](ubyte[],int,int) (FullOpts)
-11 (-7.86 % of base) : 97864.dasm - System.Speech.Internal.Synthesis.AudioFormatConverter:ConvertLinear8LinearByteShort(ubyte[],int):short[] (FullOpts)
-3 (-7.69 % of base) : 172097.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Validate(System.Object):this (FullOpts)
-3 (-7.69 % of base) : 138290.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Validate(System.Object):this (FullOpts)
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: 282135537 (overridden on cmd)
Total bytes of diff: 282204343 (overridden on cmd)
Total bytes of delta: 68806 (0.02 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
779 : 387325.dasm (5.72 % of base)
555 : 473076.dasm (3.65 % of base)
532 : 189992.dasm (5.50 % of base)
354 : 508170.dasm (2.82 % of base)
341 : 404866.dasm (2.65 % of base)
339 : 69096.dasm (2.23 % of base)
327 : 479068.dasm (2.18 % of base)
300 : 330534.dasm (2.25 % of base)
284 : 82392.dasm (2.21 % of base)
282 : 593216.dasm (4.64 % of base)
281 : 141179.dasm (1.91 % of base)
265 : 594149.dasm (4.42 % of base)
264 : 316914.dasm (2.14 % of base)
257 : 174705.dasm (3.01 % of base)
250 : 178550.dasm (2.00 % of base)
238 : 301720.dasm (1.82 % of base)
234 : 563496.dasm (1.77 % of base)
229 : 341984.dasm (2.08 % of base)
222 : 116585.dasm (1.76 % of base)
221 : 512689.dasm (1.76 % of base)
Top file improvements (bytes):
-606 : 361858.dasm (-4.51 % of base)
-516 : 85011.dasm (-2.71 % of base)
-507 : 57968.dasm (-2.66 % of base)
-421 : 92259.dasm (-5.54 % of base)
-341 : 217924.dasm (-2.16 % of base)
-318 : 333758.dasm (-5.26 % of base)
-297 : 356409.dasm (-2.98 % of base)
-256 : 643639.dasm (-2.37 % of base)
-234 : 471003.dasm (-1.70 % of base)
-218 : 625924.dasm (-6.49 % of base)
-204 : 334628.dasm (-3.25 % of base)
-201 : 635819.dasm (-2.23 % of base)
-196 : 77828.dasm (-1.87 % of base)
-196 : 37565.dasm (-1.87 % of base)
-193 : 167243.dasm (-3.05 % of base)
-183 : 167549.dasm (-3.68 % of base)
-160 : 323655.dasm (-0.99 % of base)
-151 : 334721.dasm (-2.90 % of base)
-144 : 335252.dasm (-2.20 % of base)
-135 : 76917.dasm (-3.98 % of base)
99 total files with Code Size differences (59 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
779 (5.72 % of base) : 387325.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
555 (3.65 % of base) : 473076.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteArray(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):this (Tier1-OSR)
532 (5.50 % of base) : 189992.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
354 (2.82 % of base) : 508170.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
341 (2.65 % of base) : 404866.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
339 (2.23 % of base) : 69096.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
327 (2.18 % of base) : 479068.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
300 (2.25 % of base) : 330534.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
284 (2.21 % of base) : 82392.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
282 (4.64 % of base) : 593216.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:EscapingTestWhileWriting(ushort,System.Text.Encodings.Web.JavaScriptEncoder,ubyte):this (Tier1-OSR)
281 (1.91 % of base) : 141179.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
265 (4.42 % of base) : 594149.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:EscapingTestWhileWritingSurrogate(System.Text.Encodings.Web.JavaScriptEncoder):this (Tier1-OSR)
264 (2.14 % of base) : 316914.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
257 (3.01 % of base) : 174705.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]:IntroSort(System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]],int,System.Comparison`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]) (Tier1)
250 (2.00 % of base) : 178550.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
238 (1.82 % of base) : 301720.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
234 (1.77 % of base) : 563496.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
229 (2.08 % of base) : 341984.dasm - Xunit.Sdk.TypeUtility:ResolveGenericTypes(Xunit.Abstractions.IMethodInfo,System.Object[]):Xunit.Abstractions.ITypeInfo[] (Tier1)
222 (1.76 % of base) : 116585.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
221 (1.76 % of base) : 512689.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
Top method improvements (bytes):
-606 (-4.51 % of base) : 361858.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-516 (-2.71 % of base) : 85011.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1)
-507 (-2.66 % of base) : 57968.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1)
-421 (-5.54 % of base) : 92259.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:HaveSameParameterTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,int,int):ubyte (Tier1)
-341 (-2.16 % of base) : 217924.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:Write(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo):this (Tier1)
-318 (-5.26 % of base) : 333758.dasm - System.Linq.Parallel.SortHelper`2[int,System.Linq.Parallel.Pair`2[int,int]]:MergeSortCooperatively():this (Tier1)
-297 (-2.98 % of base) : 356409.dasm - Xunit.Sdk.TypeUtility:ResolveGenericTypes(Xunit.Abstractions.IMethodInfo,System.Object[]):Xunit.Abstractions.ITypeInfo[] (Tier1)
-256 (-2.37 % of base) : 643639.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1)
-234 (-1.70 % of base) : 471003.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-218 (-6.49 % of base) : 625924.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindSubcaptures[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoZAnchorInputReader[ulong]](System.ReadOnlySpan`1[ushort],int,int,System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+PerThreadData[ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+Registers[ulong]:this (Tier1)
-204 (-3.25 % of base) : 334628.dasm - System.Linq.Parallel.SortHelper`2[System.Collections.Generic.KeyValuePair`2[int,int],System.Linq.Parallel.Pair`2[int,int]]:MergeSortCooperatively():this (Tier1)
-201 (-2.23 % of base) : 635819.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindForOrUsingOrFixedDeclarations(Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (Tier1)
-196 (-1.87 % of base) : 77828.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
-196 (-1.87 % of base) : 37565.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
-193 (-3.05 % of base) : 167243.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttributes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Binder],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData[],Microsoft.CodeAnalysis.CSharp.BoundAttribute[],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (Tier1)
-183 (-3.68 % of base) : 167549.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:EqualsComplicatedCases(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,int):ubyte:this (Tier1)
-160 (-0.99 % of base) : 323655.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
-151 (-2.90 % of base) : 334721.dasm - System.Linq.Parallel.SortHelper`2[System.Collections.Generic.KeyValuePair`2[int,int],int]:MergeSortCooperatively():this (Tier1)
-144 (-2.20 % of base) : 335252.dasm - System.Linq.Parallel.SortHelper`2[int,System.Linq.Parallel.ConcatKey`2[int,int]]:MergeSortCooperatively():this (Tier1)
-135 (-3.98 % of base) : 76917.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (Tier0-FullOpts)
Top method regressions (percentages):
16 (21.05 % of base) : 198786.dasm - System.Collections.Concurrent.BlockingCollection`1[int]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection`1[int][],int):int (Tier1)
6 (17.14 % of base) : 357620.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (Tier1)
8 (16.33 % of base) : 615509.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
8 (16.33 % of base) : 172392.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
8 (16.33 % of base) : 57031.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
8 (16.33 % of base) : 82667.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
9 (16.07 % of base) : 63774.dasm - <PrivateImplementationDetails>:ComputeStringHash(System.String):uint (Tier1)
10 (15.38 % of base) : 59319.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
9 (15.00 % of base) : 49334.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
9 (15.00 % of base) : 614408.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
9 (15.00 % of base) : 653465.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
9 (15.00 % of base) : 165674.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
9 (15.00 % of base) : 82178.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
9 (15.00 % of base) : 106999.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
8 (14.81 % of base) : 617628.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
8 (14.81 % of base) : 170911.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
8 (13.79 % of base) : 324780.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
8 (13.79 % of base) : 379712.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
8 (13.79 % of base) : 679256.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
8 (13.79 % of base) : 680616.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
Top method improvements (percentages):
-6 (-10.00 % of base) : 342068.dasm - System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (Tier1)
-33 (-9.09 % of base) : 335254.dasm - System.Linq.Parallel.SortHelper`2[int,System.Linq.Parallel.ConcatKey`2[int,int]]:Dispose():this (Tier1)
-33 (-9.09 % of base) : 333823.dasm - System.Linq.Parallel.SortHelper`2[int,System.Linq.Parallel.Pair`2[int,int]]:Dispose():this (Tier1)
-33 (-9.09 % of base) : 334711.dasm - System.Linq.Parallel.SortHelper`2[System.Collections.Generic.KeyValuePair`2[int,int],int]:Dispose():this (Tier1)
-33 (-9.09 % of base) : 334648.dasm - System.Linq.Parallel.SortHelper`2[System.Collections.Generic.KeyValuePair`2[int,int],System.Linq.Parallel.Pair`2[int,int]]:Dispose():this (Tier1)
-4 (-8.51 % of base) : 470271.dasm - System.Numerics.Tests.MyBigIntImp:IsZero(ubyte[]):ubyte (Tier1)
-11 (-8.46 % of base) : 288551.dasm - System.Formats.Asn1.AsnDecoder:ReverseBitsPerByte(System.Span`1[ubyte]) (Tier1-OSR)
-25 (-8.45 % of base) : 178355.dasm - System.MulticastDelegate:GetInvocationList():System.Delegate[]:this (Tier1)
-25 (-8.45 % of base) : 385175.dasm - System.MulticastDelegate:GetInvocationList():System.Delegate[]:this (Tier1)
-25 (-8.45 % of base) : 235038.dasm - System.MulticastDelegate:GetInvocationList():System.Delegate[]:this (Tier1)
-25 (-8.45 % of base) : 360855.dasm - System.MulticastDelegate:GetInvocationList():System.Delegate[]:this (Tier1)
-25 (-8.45 % of base) : 590533.dasm - System.MulticastDelegate:GetInvocationList():System.Delegate[]:this (Tier1)
-24 (-8.14 % of base) : 103600.dasm - System.MulticastDelegate:GetInvocationList():System.Delegate[]:this (Tier1)
-24 (-8.14 % of base) : 141254.dasm - System.MulticastDelegate:GetInvocationList():System.Delegate[]:this (Tier1)
-12 (-8.11 % of base) : 312242.dasm - System.Linq.Enumerable+ListPartition`1[ubyte]:Fill(System.Collections.Generic.IList`1[ubyte],System.Span`1[ubyte],int) (Tier1-OSR)
-76 (-7.76 % of base) : 524392.dasm - System.Numerics.BigIntegerCalculator:Divide(System.Span`1[uint],System.ReadOnlySpan`1[uint],System.Span`1[uint]) (Tier1)
-31 (-7.64 % of base) : 68157.dasm - System.IO.Path:GetDirectoryName(System.String):System.String (Tier1)
-8 (-7.55 % of base) : 471589.dasm - System.Text.ValueStringBuilder:Append(ulong,int):this (Tier1-OSR)
-8 (-7.55 % of base) : 471817.dasm - System.Text.ValueStringBuilder:Append(ulong,int):this (Tier1-OSR)
-25 (-7.46 % of base) : 297811.dasm - System.Globalization.DateTimeFormatInfoScanner:GetFormatFlagUseSpaceInDayNames(System.String[],System.String[]):int (Tier1)
librariestestsnotieredcompilation.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: 137061874 (overridden on cmd)
Total bytes of diff: 137056776 (overridden on cmd)
Total bytes of delta: -5098 (-0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
795 : 60087.dasm (2.80 % of base)
292 : 271634.dasm (2.37 % of base)
251 : 186242.dasm (8.40 % of base)
217 : 315592.dasm (5.12 % of base)
191 : 156575.dasm (6.69 % of base)
178 : 18981.dasm (9.09 % of base)
177 : 18971.dasm (7.43 % of base)
173 : 7093.dasm (2.82 % of base)
156 : 125512.dasm (7.94 % of base)
155 : 44030.dasm (5.66 % of base)
155 : 49742.dasm (5.66 % of base)
155 : 5589.dasm (5.66 % of base)
153 : 46611.dasm (6.14 % of base)
153 : 7157.dasm (6.53 % of base)
145 : 63095.dasm (3.89 % of base)
142 : 50959.dasm (2.33 % of base)
139 : 187521.dasm (8.26 % of base)
132 : 187762.dasm (3.39 % of base)
117 : 45098.dasm (1.85 % of base)
115 : 52477.dasm (3.08 % of base)
Top file improvements (bytes):
-1052 : 183325.dasm (-6.88 % of base)
-179 : 190612.dasm (-2.94 % of base)
-167 : 315809.dasm (-4.88 % of base)
-135 : 22145.dasm (-3.96 % of base)
-120 : 25343.dasm (-4.24 % of base)
-111 : 95661.dasm (-1.05 % of base)
-106 : 152070.dasm (-6.17 % of base)
-106 : 153651.dasm (-6.15 % of base)
-100 : 99636.dasm (-1.54 % of base)
-83 : 21546.dasm (-4.87 % of base)
-80 : 179022.dasm (-3.95 % of base)
-78 : 7085.dasm (-3.07 % of base)
-75 : 58812.dasm (-5.99 % of base)
-70 : 60086.dasm (-1.16 % of base)
-67 : 45021.dasm (-2.80 % of base)
-67 : 50857.dasm (-2.78 % of base)
-67 : 187918.dasm (-4.06 % of base)
-65 : 203123.dasm (-4.30 % of base)
-62 : 203122.dasm (-4.14 % of base)
-60 : 100110.dasm (-2.22 % of base)
96 total files with Code Size differences (55 improved, 41 regressed), 20 unchanged.
Top method regressions (bytes):
795 (2.80 % of base) : 60087.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
292 (2.37 % of base) : 271634.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:WriteNumbers(System.Text.Json.JsonWriterOptions,System.String):this (FullOpts)
251 (8.40 % of base) : 186242.dasm - System.Reflection.DispatchProxyGenerator+ProxyBuilder:AddMethodImpl(System.Reflection.MethodInfo,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
217 (5.12 % of base) : 315592.dasm - System.Threading.Tasks.Tests.TaskRtTests:RunFromResult() (FullOpts)
191 (6.69 % of base) : 156575.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (FullOpts)
178 (9.09 % of base) : 18981.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:NegateBoolsRef2D_ClearMarshalling(byref,int,int[]) (FullOpts)
177 (7.43 % of base) : 18971.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:NegateBoolsOut2D(SharedTypes.BoolStruct[][],int,int[],byref) (FullOpts)
173 (2.82 % of base) : 7093.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckAndCoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte):this (FullOpts)
156 (7.94 % of base) : 125512.dasm - System.Globalization.Tests.PersianCalendarTests:CalendarConversion():this (FullOpts)
155 (5.66 % of base) : 44030.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
155 (5.66 % of base) : 49742.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
155 (5.66 % of base) : 5589.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
153 (6.14 % of base) : 46611.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
153 (6.53 % of base) : 7157.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
145 (3.89 % of base) : 63095.dasm - System.Xml.Serialization.TempAssembly:GenerateSerializerToStream(System.Xml.Serialization.XmlMapping[],System.Type[],System.String,System.Reflection.Assembly,System.Collections.Hashtable,System.IO.Stream):ubyte (FullOpts)
142 (2.33 % of base) : 50959.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
139 (8.26 % of base) : 187521.dasm - System.Reflection.Emit.CustomAttributeInfo:DecodeCustomAttribute(System.Reflection.ConstructorInfo,System.ReadOnlySpan`1[ubyte]):System.Reflection.Emit.CustomAttributeInfo (FullOpts)
132 (3.39 % of base) : 187762.dasm - System.Reflection.TypeLoading.RoType:GetMemberImpl(System.String,int,int):System.Reflection.MemberInfo[]:this (FullOpts)
117 (1.85 % of base) : 45098.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
115 (3.08 % of base) : 52477.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetRewrittenAttributeConstructorArguments(byref,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant]:this (FullOpts)
Top method improvements (bytes):
-1052 (-6.88 % of base) : 183325.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (FullOpts)
-179 (-2.94 % of base) : 190612.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateMethodDef(System.Reflection.Metadata.MetadataReader,uint,uint,ubyte):this (FullOpts)
-167 (-4.88 % of base) : 315809.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
-135 (-3.96 % of base) : 22145.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (FullOpts)
-120 (-4.24 % of base) : 25343.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
-111 (-1.05 % of base) : 95661.dasm - System.Data.Tests.DataTableTest2:GetChanges_ByDataRowState():this (FullOpts)
-106 (-6.17 % of base) : 152070.dasm - System.SpanTests.ReadOnlySpanTests:OnSequenceEqualOfEqualSpansMakeSureEveryElementIsCompared(int) (FullOpts)
-106 (-6.15 % of base) : 153651.dasm - System.SpanTests.SpanTests:OnSequenceEqualOfEqualSpansMakeSureEveryElementIsCompared(int) (FullOpts)
-100 (-1.54 % of base) : 99636.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
-83 (-4.87 % of base) : 21546.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:GetCallbackMethodsForType(System.Type,byref,byref,byref,byref,byref):this (FullOpts)
-80 (-3.95 % of base) : 179022.dasm - System.Xml.Xsl.Runtime.XmlQueryContext:InvokeXsltLateBoundFunction(System.String,System.String,System.Collections.Generic.IList`1[System.Xml.XPath.XPathItem][]):System.Collections.Generic.IList`1[System.Xml.XPath.XPathItem]:this (FullOpts)
-78 (-3.07 % of base) : 7085.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveWorseMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,byref):this (FullOpts)
-75 (-5.99 % of base) : 58812.dasm - Microsoft.VisualBasic.CompilerServices.Symbols+Container:FilterInvalidMembers(System.Reflection.MemberInfo[]):System.Reflection.MemberInfo[] (FullOpts)
-70 (-1.16 % of base) : 60086.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
-67 (-2.80 % of base) : 45021.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveWorseMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,byref):this (FullOpts)
-67 (-2.78 % of base) : 50857.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveWorseMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,byref):this (FullOpts)
-67 (-4.06 % of base) : 187918.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-65 (-4.30 % of base) : 203123.dasm - System.Numerics.BigInteger:RotateLeft(System.Numerics.BigInteger,int):System.Numerics.BigInteger (FullOpts)
-62 (-4.14 % of base) : 203122.dasm - System.Numerics.BigInteger:RotateRight(System.Numerics.BigInteger,int):System.Numerics.BigInteger (FullOpts)
-60 (-2.22 % of base) : 100110.dasm - System.Data.ProviderBase.SchemaMapping:SetupSchemaWithoutKeyInfo(int,int,ubyte,System.Data.DataColumn,System.Object):System.Object[]:this (FullOpts)
Top method regressions (percentages):
16 (21.05 % of base) : 69368.dasm - System.Collections.Concurrent.BlockingCollection`1[int]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection`1[int][],int):int (FullOpts)
8 (18.60 % of base) : 123295.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
6 (17.65 % of base) : 235356.dasm - System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
6 (17.14 % of base) : 151136.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
8 (16.00 % of base) : 208070.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
8 (15.69 % of base) : 187134.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
9 (15.00 % of base) : 43742.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
9 (15.00 % of base) : 49413.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
9 (15.00 % of base) : 2433.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
9 (15.00 % of base) : 48484.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
9 (15.00 % of base) : 42834.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
9 (15.00 % of base) : 5165.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
9 (15.00 % of base) : 16843.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)
8 (14.81 % of base) : 47358.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
6 (13.95 % of base) : 142621.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
8 (12.50 % of base) : 308402.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
8 (12.50 % of base) : 137135.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
8 (12.50 % of base) : 281426.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
6 (12.00 % of base) : 4411.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
7 (11.86 % of base) : 207823.dasm - XmlDictionaryWriterTest+<>c:<XmlBaseWriter_WriteString>b__14_1(System.Span`1[ushort],System.Object):this (FullOpts)
Top method improvements (percentages):
-29 (-13.24 % of base) : 51683.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
-29 (-13.24 % of base) : 7661.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
-11 (-12.64 % of base) : 1563.dasm - SharedTypes.ComInterfaces.IIntArrayImpl:Double(int[],int):this (FullOpts)
-24 (-11.82 % of base) : 43488.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
-24 (-11.82 % of base) : 4870.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
-24 (-11.82 % of base) : 49142.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
-4 (-11.43 % of base) : 137873.dasm - System.IO.Tests.MemoryStream_TryGetBufferTests:FillWithData(ubyte[]):ubyte[] (FullOpts)
-15 (-11.11 % of base) : 94221.dasm - System.Data.DataKey:GetKeyValues(int):System.Object[]:this (FullOpts)
-9 (-10.34 % of base) : 94203.dasm - System.Data.ConstraintCollection:CompareArrays(System.Data.DataColumn[],System.Data.DataColumn[]):ubyte (FullOpts)
-6 (-10.00 % of base) : 144400.dasm - System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (FullOpts)
-4 (-8.51 % of base) : 203058.dasm - System.Numerics.Tests.MyBigIntImp:IsZero(ubyte[]):ubyte (FullOpts)
-12 (-8.33 % of base) : 94169.dasm - System.Data.DataKey:ColumnsEqual(System.Data.DataColumn[],System.Data.DataColumn[]):ubyte (FullOpts)
-31 (-8.27 % of base) : 96079.dasm - System.Data.DataRow:SetKeyValues(System.Data.DataKey,System.Object[]):this (FullOpts)
-4 (-8.16 % of base) : 161081.dasm - System.Net.Mail.Tests.MessageEncodeHeadersTest:ContainsNonAscii(System.String):ubyte:this (FullOpts)
-10 (-7.69 % of base) : 160268.dasm - System.Net.Mime.MailBnfHelper:CreateCharactersAllowedInComments():ubyte[] (FullOpts)
-10 (-7.69 % of base) : 161015.dasm - System.Net.Mime.MailBnfHelper:CreateCharactersAllowedInComments():ubyte[] (FullOpts)
-22 (-7.67 % of base) : 11659.dasm - Microsoft.CodeAnalysis.BitVector:IntersectWith(byref):ubyte:this (FullOpts)
-4 (-7.55 % of base) : 102765.dasm - System.Diagnostics.PerformanceData.PerfProviderCollection:ValidateCounterType(int):ubyte (FullOpts)
-6 (-7.50 % of base) : 152249.dasm - System.SpanTests.SpanTests:ArrayReverse[ubyte](ubyte[],int,int) (FullOpts)
-3 (-7.32 % of base) : 202303.dasm - System.Tests.ArrayTests:GetLength(int[]):int (FullOpts)
realworld.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: 14130826 (overridden on cmd)
Total bytes of diff: 14131921 (overridden on cmd)
Total bytes of delta: 1095 (0.01 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
170 : 18453.dasm (3.28 % of base)
157 : 17123.dasm (1.97 % of base)
154 : 34521.dasm (1.46 % of base)
153 : 23449.dasm (6.55 % of base)
146 : 16352.dasm (1.80 % of base)
118 : 16855.dasm (3.16 % of base)
116 : 21051.dasm (4.47 % of base)
99 : 22233.dasm (1.64 % of base)
94 : 3169.dasm (1.54 % of base)
94 : 20558.dasm (1.25 % of base)
91 : 20272.dasm (9.53 % of base)
84 : 22079.dasm (2.17 % of base)
84 : 5330.dasm (1.33 % of base)
63 : 27981.dasm (1.12 % of base)
63 : 34999.dasm (3.42 % of base)
61 : 317.dasm (4.02 % of base)
60 : 15694.dasm (2.69 % of base)
60 : 26185.dasm (2.41 % of base)
60 : 30168.dasm (3.69 % of base)
58 : 27382.dasm (5.23 % of base)
Top file improvements (bytes):
-137 : 28257.dasm (-3.30 % of base)
-88 : 32754.dasm (-1.25 % of base)
-74 : 2167.dasm (-4.69 % of base)
-73 : 17028.dasm (-1.85 % of base)
-67 : 22072.dasm (-2.77 % of base)
-59 : 18444.dasm (-1.97 % of base)
-54 : 2949.dasm (-0.47 % of base)
-53 : 23516.dasm (-6.39 % of base)
-47 : 32750.dasm (-2.59 % of base)
-47 : 21802.dasm (-2.48 % of base)
-43 : 16202.dasm (-0.51 % of base)
-40 : 23620.dasm (-1.93 % of base)
-37 : 33243.dasm (-0.61 % of base)
-37 : 23995.dasm (-0.56 % of base)
-36 : 17033.dasm (-1.01 % of base)
-35 : 32435.dasm (-0.57 % of base)
-34 : 15134.dasm (-1.20 % of base)
-34 : 17035.dasm (-3.44 % of base)
-34 : 36325.dasm (-3.32 % of base)
-31 : 28009.dasm (-0.69 % of base)
92 total files with Code Size differences (52 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
170 (3.28 % of base) : 18453.dasm - Microsoft.ML.Transforms.Text.NgramExtractingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.Text.NgramExtractingEstimator+ColumnOptions[],System.Collections.Immutable.ImmutableArray`1[Microsoft.ML.Transforms.Text.NgramExtractingTransformer+TransformInfo],Microsoft.ML.IDataView,byref):Microsoft.ML.Internal.Utilities.SequencePool[] (FullOpts)
157 (1.97 % of base) : 17123.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
154 (1.46 % of base) : 34521.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
153 (6.55 % of base) : 23449.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
146 (1.80 % of base) : 16352.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
118 (3.16 % of base) : 16855.dasm - Microsoft.ML.Transforms.NormalizingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.IDataView,Microsoft.ML.Transforms.NormalizingEstimator+ColumnOptionsBase[]):Microsoft.ML.Transforms.NormalizingTransformer (FullOpts)
116 (4.47 % of base) : 21051.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
99 (1.64 % of base) : 22233.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
94 (1.54 % of base) : 3169.dasm - FSharp.Compiler.CompilerImports:TcConfig.TryResolveLibsUsingMSBuildRules.Static(FSharp.Compiler.CompilerConfig+TcConfig,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerConfig+AssemblyReference],FSharp.Compiler.Text.Range,FSharp.Compiler.CompilerImports+ResolveAssemblyReferenceMode):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerImports+AssemblyResolution],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerConfig+UnresolvedAssemblyReference]] (FullOpts)
94 (1.25 % of base) : 20558.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ResolveMetadataReferences(System.__Canon,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]]:this (FullOpts)
91 (9.53 % of base) : 20272.dasm - System.Numerics.BigInteger:TryGetBytes(int,System.Span`1[ubyte],ubyte,ubyte,byref):ubyte[]:this (FullOpts)
84 (1.33 % of base) : 5330.dasm - FSharp.Compiler.TypedTreePickle:unpickleObjWithDanglingCcus[System.__Canon](System.String,FSharp.Compiler.AbstractIL.IL+ILScopeRef,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILModuleDef],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],FSharp.Compiler.IO.ReadOnlyByteMemory):FSharp.Compiler.TypedTreePickle+PickledDataWithReferences`1[System.__Canon] (FullOpts)
84 (2.17 % of base) : 22079.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression):this (FullOpts)
63 (1.12 % of base) : 27981.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeDeconstructionConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],byref):ubyte:this (FullOpts)
63 (3.42 % of base) : 34999.dasm - System.Management.Automation.MemberInvocationLoggingOps:LogMemberInvocation(System.String,System.String,System.Object[]) (FullOpts)
61 (4.02 % of base) : 317.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
60 (2.41 % of base) : 26185.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArrayCreationWithInitializer(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte):Microsoft.CodeAnalysis.CSharp.BoundArrayCreation:this (FullOpts)
60 (3.69 % of base) : 30168.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:BuildParamsArray(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
60 (2.69 % of base) : 15694.dasm - Microsoft.ML.Transforms.HashingTransformer:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.IDataView,Microsoft.ML.Transforms.HashingEstimator+ColumnOptions[]):this (FullOpts)
58 (5.23 % of base) : 27382.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:CheckConstraints(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,byref,Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Location],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
Top method improvements (bytes):
-137 (-3.30 % of base) : 28257.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitDeconstructMethodArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
-88 (-1.25 % of base) : 32754.dasm - System.Management.Automation.LanguagePrimitives:RebuildConversionCache() (FullOpts)
-74 (-4.69 % of base) : 2167.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-73 (-1.85 % of base) : 17028.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyWithCore[float,float](byref,byref,Microsoft.ML.Internal.Utilities.VBufferUtils+PairManipulator`2[float,float],ubyte) (FullOpts)
-67 (-2.77 % of base) : 22072.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveWorseMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,byref):this (FullOpts)
-59 (-1.97 % of base) : 18444.dasm - Microsoft.ML.Transforms.Text.NgramExtractorTransform:Create(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.Text.NgramExtractorTransform+Options,Microsoft.ML.IDataView,Microsoft.ML.Transforms.Text.TermLoaderArguments):Microsoft.ML.ITransformer (FullOpts)
-54 (-0.47 % of base) : 2949.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:openMetadataReader(System.String,FSharp.Compiler.AbstractIL.ILBinaryReader+BinaryFile,int,System.Tuple`8[ushort,System.Tuple`2[int,int],ubyte,ubyte,ubyte,ubyte,ubyte,System.Tuple`5[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILPlatform],ubyte,int,int,int]],FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader,FSharp.Compiler.IO.ReadOnlyByteMemory,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader],ubyte):System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILModuleDef,System.Lazy`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILAssemblyRef]]] (FullOpts)
-53 (-6.39 % of base) : 23516.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MergeConstraintKindsForPartialDeclarations(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause]]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause]:this (FullOpts)
-47 (-2.48 % of base) : 21802.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttributes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Binder],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData[],Microsoft.CodeAnalysis.CSharp.BoundAttribute[],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
-47 (-2.59 % of base) : 32750.dasm - System.Management.Automation.ArgumentTypeConverterAttribute:Transform(System.Management.Automation.EngineIntrinsics,System.Object,ubyte,ubyte):System.Object:this (FullOpts)
-43 (-0.51 % of base) : 16202.dasm - Microsoft.ML.Trainers.SdcaTrainerBase`3[System.__Canon,System.__Canon,System.__Canon]:TrainCore(Microsoft.ML.Runtime.IChannel,Microsoft.ML.Data.RoleMappedData,Microsoft.ML.Trainers.LinearModelParameters,int):System.__Canon:this (FullOpts)
-40 (-1.93 % of base) : 23620.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MergeConstraintTypesForPartialDeclarations(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause]],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause]:this (FullOpts)
-37 (-0.56 % of base) : 23995.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference,Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+FieldInfo]) (FullOpts)
-37 (-0.61 % of base) : 33243.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
-36 (-1.01 % of base) : 17033.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyInto[float,float,float](byref,byref,byref,System.Func`4[int,float,float,float]) (FullOpts)
-35 (-0.57 % of base) : 32435.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (FullOpts)
-34 (-3.44 % of base) : 17035.dasm - Microsoft.ML.Numeric.Optimizer+OptimizerState:MapDirByInverseHessian():this (FullOpts)
-34 (-1.20 % of base) : 15134.dasm - SixLabors.ImageSharp.Processing.Processors.Quantization.QuantizerUtilities:SecondPass[SixLabors.ImageSharp.Processing.Processors.Quantization.PaletteQuantizer`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.PixelFormats.Rgba32](byref,SixLabors.ImageSharp.ImageFrame`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.IndexedImageFrame`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Rectangle) (FullOpts)
-34 (-3.32 % of base) : 36325.dasm - System.Management.Automation.ComInterop.ComBinderHelpers:ProcessArgumentsForCom(System.Management.Automation.ComInterop.ComMethodDesc,byref,System.Collections.Generic.List`1[System.Linq.Expressions.ParameterExpression],System.Collections.Generic.List`1[System.Linq.Expressions.Expression]):ubyte[] (FullOpts)
-31 (-0.69 % of base) : 28009.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:MakeTestsAndBindingsForRecursivePattern(Microsoft.CodeAnalysis.CSharp.BoundDagTemp,Microsoft.CodeAnalysis.CSharp.BoundRecursivePattern,byref,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundPatternBinding]):Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+Tests:this (FullOpts)
Top method regressions (percentages):
9 (15.00 % of base) : 18835.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
9 (15.00 % of base) : 14537.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)
8 (14.81 % of base) : 31044.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
23 (14.74 % of base) : 13917.dasm - FSharp.Compiler.CodeAnalysis.IncrementalBuilder:TryGetSlotOfFileName(System.String):Microsoft.FSharp.Core.FSharpOption`1[int]:this (FullOpts)
9 (14.06 % of base) : 16548.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[int]:ReturnArrays(int):this (FullOpts)
6 (13.95 % of base) : 1008.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
8 (13.79 % of base) : 16144.dasm - Microsoft.ML.Internal.Utilities.HashArray`1+HashHelpers[float]:GetPrime(int):int (FullOpts)
17 (12.69 % of base) : 5193.dasm - Microsoft.FSharp.Collections.ArrayModule:ForAll[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],System.__Canon[]):ubyte (FullOpts)
6 (12.00 % of base) : 18677.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
7 (11.11 % of base) : 20898.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
6 (10.71 % of base) : 384.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
24 (10.67 % of base) : 36090.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAll(System.Predicate`1[System.__Canon]):int:this (FullOpts)
8 (10.53 % of base) : 20896.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)
8 (10.13 % of base) : 1499.dasm - DemoBenchmarks.CollisionBatcherTaskBenchmarks:<Setup>g__GetRandomShapeTypeIndex|6_0(System.Span`1[float],byref):BepuPhysics.Collidables.TypedIndex (FullOpts)
8 (10.13 % of base) : 1099.dasm - DemoBenchmarks.Sweeper:<.ctor>g__GetRandomShapeTypeIndex|6_0(System.Span`1[float],byref):BepuPhysics.Collidables.TypedIndex (FullOpts)
11 (10.00 % of base) : 16654.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.ReadOnlyMemory`1[ushort]]:ToArray():System.ReadOnlyMemory`1[ushort][]:this (FullOpts)
91 (9.53 % of base) : 20272.dasm - System.Numerics.BigInteger:TryGetBytes(int,System.Span`1[ubyte],ubyte,ubyte,byref):ubyte[]:this (FullOpts)
21 (9.42 % of base) : 6102.dasm - FSharp.Compiler.TypedTreeBasics:arrayPathEq(System.String[],System.String[]):ubyte (FullOpts)
6 (8.70 % of base) : 16327.dasm - Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)
8 (8.33 % of base) : 18476.dasm - System.Linq.Enumerable:Sum[int,int](System.ReadOnlySpan`1[int]):int (FullOpts)
Top method improvements (percentages):
-29 (-13.24 % of base) : 24368.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
-24 (-11.82 % of base) : 19002.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
-29 (-8.24 % of base) : 20238.dasm - System.Number:<NumberToBigInteger>g__ProcessChunk|12_4(System.ReadOnlySpan`1[ubyte],byref,byref,byref):ubyte (FullOpts)
-22 (-7.67 % of base) : 26048.dasm - Microsoft.CodeAnalysis.BitVector:IntersectWith(byref):ubyte:this (FullOpts)
-15 (-6.44 % of base) : 16830.dasm - Microsoft.ML.Internal.Utilities.NormStr+Pool:GrowTable():this (FullOpts)
-53 (-6.39 % of base) : 23516.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MergeConstraintKindsForPartialDeclarations(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause]]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause]:this (FullOpts)
-3 (-6.38 % of base) : 21175.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.String):int (FullOpts)
-3 (-6.12 % of base) : 16839.dasm - Microsoft.ML.Data.VectorDataViewType:ComputeSize(System.Collections.Immutable.ImmutableArray`1[int]):int (FullOpts)
-16 (-6.06 % of base) : 16096.dasm - Microsoft.ML.Data.TextLoader+Parser:ProcessItems(Microsoft.ML.Data.TextLoader+RowSet,int,ubyte[],Microsoft.ML.Data.TextLoader+Parser+FieldSet,int,long):this (FullOpts)
-3 (-6.00 % of base) : 30396.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.Collections.Immutable.ImmutableArray`1[ubyte]):int (FullOpts)
-10 (-5.92 % of base) : 14524.dasm - System.Reflection.Metadata.MetadataReader:CombineRowCounts(int[],int[],ubyte):int[] (FullOpts)
-4 (-5.88 % of base) : 1001.dasm - System.Linq.EnumerableSorter`1[double]:ComputeMap(double[],int):int[]:this (FullOpts)
-4 (-5.88 % of base) : 600.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (FullOpts)
-4 (-5.80 % of base) : 33223.dasm - System.Globalization.CultureData:ReescapeWin32Strings(System.String[]):System.String[] (FullOpts)
-3 (-5.77 % of base) : 345.dasm - System.Enum:AreSequentialFromZero[uint](uint[]):ubyte (FullOpts)
-3 (-5.66 % of base) : 3066.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[int,System.__Canon]:GetCountNoLocks():int:this (FullOpts)
-3 (-5.66 % of base) : 22356.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[int,ubyte]:GetCountNoLocks():int:this (FullOpts)
-3 (-5.66 % of base) : 891.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (FullOpts)
-3 (-5.56 % of base) : 31999.dasm - System.Reflection.Metadata.Ecma335.MetadataSizes:ComputeNonEmptyTableMask(System.Collections.Immutable.ImmutableArray`1[int]):ulong (FullOpts)
-3 (-5.56 % of base) : 1853.dasm - System.Resources.FastResourceComparer:HashFunction(System.String):int (FullOpts)
smoke_tests.nativeaot.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: 5083179 (overridden on cmd)
Total bytes of diff: 5081059 (overridden on cmd)
Total bytes of delta: -2120 (-0.04 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
138 : 11387.dasm (1.59 % of base)
76 : 6274.dasm (6.99 % of base)
54 : 11965.dasm (5.00 % of base)
41 : 11481.dasm (1.63 % of base)
37 : 2056.dasm (8.22 % of base)
37 : 14893.dasm (8.20 % of base)
37 : 17084.dasm (8.22 % of base)
37 : 19731.dasm (8.22 % of base)
37 : 22367.dasm (8.22 % of base)
37 : 6434.dasm (8.22 % of base)
28 : 6493.dasm (11.81 % of base)
25 : 8322.dasm (2.92 % of base)
25 : 17671.dasm (2.92 % of base)
25 : 20271.dasm (2.92 % of base)
25 : 22931.dasm (2.92 % of base)
25 : 23050.dasm (4.84 % of base)
25 : 2563.dasm (2.92 % of base)
25 : 17769.dasm (4.84 % of base)
25 : 20404.dasm (4.84 % of base)
25 : 2660.dasm (4.84 % of base)
Top file improvements (bytes):
-78 : 11378.dasm (-5.94 % of base)
-78 : 14754.dasm (-5.93 % of base)
-74 : 6117.dasm (-5.34 % of base)
-55 : 6116.dasm (-2.57 % of base)
-43 : 11376.dasm (-2.23 % of base)
-43 : 14752.dasm (-2.23 % of base)
-42 : 32355.dasm (-3.27 % of base)
-35 : 12900.dasm (-5.19 % of base)
-35 : 7491.dasm (-4.98 % of base)
-35 : 6149.dasm (-0.63 % of base)
-32 : 11903.dasm (-0.58 % of base)
-32 : 14918.dasm (-0.58 % of base)
-32 : 5036.dasm (-7.37 % of base)
-30 : 31937.dasm (-1.08 % of base)
-30 : 31938.dasm (-1.67 % of base)
-30 : 32363.dasm (-3.87 % of base)
-30 : 5034.dasm (-10.38 % of base)
-26 : 30040.dasm (-7.28 % of base)
-25 : 10004.dasm (-6.33 % of base)
-23 : 17399.dasm (-6.39 % of base)
86 total files with Code Size differences (50 improved, 36 regressed), 20 unchanged.
Top method regressions (bytes):
138 (1.59 % of base) : 11387.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
76 (6.99 % of base) : 6274.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
54 (5.00 % of base) : 11965.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
41 (1.63 % of base) : 11481.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileAddress(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Interpreter.ByRefUpdater:this (FullOpts)
37 (8.22 % of base) : 2056.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
37 (8.20 % of base) : 14893.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
37 (8.22 % of base) : 17084.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
37 (8.22 % of base) : 19731.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
37 (8.22 % of base) : 22367.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
37 (8.22 % of base) : 6434.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
28 (11.81 % of base) : 6493.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAll(System.Predicate`1[System.__Canon]):int:this (FullOpts)
25 (2.92 % of base) : 8322.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
25 (2.92 % of base) : 17671.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
25 (2.92 % of base) : 20271.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
25 (2.92 % of base) : 22931.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
25 (2.92 % of base) : 2563.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
25 (4.84 % of base) : 23050.dasm - System.String:MakeSeparatorListAny(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref) (FullOpts)
25 (4.84 % of base) : 17769.dasm - System.String:MakeSeparatorListAny(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref) (FullOpts)
25 (4.84 % of base) : 20404.dasm - System.String:MakeSeparatorListAny(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref) (FullOpts)
25 (4.84 % of base) : 2660.dasm - System.String:MakeSeparatorListAny(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref) (FullOpts)
Top method improvements (bytes):
-78 (-5.94 % of base) : 11378.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-78 (-5.93 % of base) : 14754.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-74 (-5.34 % of base) : 6117.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-55 (-2.57 % of base) : 6116.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-43 (-2.23 % of base) : 11376.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-43 (-2.23 % of base) : 14752.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-42 (-3.27 % of base) : 32355.dasm - System.Threading.WaitHandle:WaitMultiple(System.ReadOnlySpan`1[System.Threading.WaitHandle],ubyte,int):int (FullOpts)
-35 (-0.63 % of base) : 6149.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
-35 (-5.19 % of base) : 12900.dasm - System.Reflection.DynamicInvokeInfo:CheckArguments(System.Span`1[System.Object],ulong,System.Object[],System.Reflection.BinderBundle):this (FullOpts)
-35 (-4.98 % of base) : 7491.dasm - System.Reflection.DynamicInvokeInfo:CheckArguments(System.Span`1[System.Object],ulong,System.Object[],System.Reflection.BinderBundle):this (FullOpts)
-32 (-0.58 % of base) : 11903.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
-32 (-0.58 % of base) : 14918.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
-32 (-7.37 % of base) : 5036.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
-30 (-10.38 % of base) : 5034.dasm - System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:Filter(System.Func`2[System.__Canon,ubyte]):System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:this (FullOpts)
-30 (-3.87 % of base) : 32363.dasm - System.Threading.WaitHandle:ObtainSafeWaitHandles(System.ReadOnlySpan`1[System.Threading.WaitHandle],System.Span`1[Microsoft.Win32.SafeHandles.SafeWaitHandle],System.Span`1[long]) (FullOpts)
-30 (-1.67 % of base) : 31938.dasm - WaitSubsystemTests:AutoResetEventTest() (FullOpts)
-30 (-1.08 % of base) : 31937.dasm - WaitSubsystemTests:SemaphoreTest() (FullOpts)
-26 (-7.28 % of base) : 30040.dasm - System.Reflection.DynamicInvokeInfo:CopyBackToSpan(System.Span`1[System.Object],System.Span`1[System.Object]):this (FullOpts)
-25 (-6.33 % of base) : 10004.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
-23 (-6.39 % of base) : 17399.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Span`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
Top method regressions (percentages):
13 (22.81 % of base) : 20069.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
13 (22.81 % of base) : 22701.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
13 (22.81 % of base) : 2396.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
13 (22.81 % of base) : 7812.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
13 (22.81 % of base) : 17479.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
28 (11.81 % of base) : 6493.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAll(System.Predicate`1[System.__Canon]):int:this (FullOpts)
24 (10.76 % of base) : 11442.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAll(System.Predicate`1[System.__Canon]):int:this (FullOpts)
6 (10.71 % of base) : 17629.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
6 (10.71 % of base) : 22914.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
6 (10.71 % of base) : 7238.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
6 (10.71 % of base) : 20281.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
6 (10.71 % of base) : 2594.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
7 (10.14 % of base) : 747.dasm - System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (FullOpts)
7 (10.14 % of base) : 4583.dasm - System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (FullOpts)
9 (8.65 % of base) : 11712.dasm - Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int (FullOpts)
9 (8.65 % of base) : 6337.dasm - Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int (FullOpts)
9 (8.49 % of base) : 25195.dasm - System.Buffers.IndexOfAnyAsciiSearcher:TryComputeBitmap(System.ReadOnlySpan`1[ushort],ulong,byref):ubyte (FullOpts)
37 (8.22 % of base) : 2056.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
37 (8.22 % of base) : 17084.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
37 (8.22 % of base) : 19731.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
Top method improvements (percentages):
-30 (-10.38 % of base) : 5034.dasm - System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:Filter(System.Func`2[System.__Canon,ubyte]):System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:this (FullOpts)
-11 (-8.33 % of base) : 8186.dasm - System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
-11 (-8.33 % of base) : 13817.dasm - System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
-21 (-7.69 % of base) : 9999.dasm - System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:Filter(System.Func`2[System.__Canon,ubyte]):System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:this (FullOpts)
-32 (-7.37 % of base) : 5036.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
-11 (-7.28 % of base) : 15927.dasm - Internal.Runtime.CompilerHelpers.StartupCodeHelpers:GetLoadedModules(Internal.Runtime.TypeManagerHandle[]):int (FullOpts)
-11 (-7.28 % of base) : 21207.dasm - Internal.Runtime.CompilerHelpers.StartupCodeHelpers:GetLoadedModules(Internal.Runtime.TypeManagerHandle[]):int (FullOpts)
-11 (-7.28 % of base) : 753.dasm - Internal.Runtime.CompilerHelpers.StartupCodeHelpers:GetLoadedModules(Internal.Runtime.TypeManagerHandle[]):int (FullOpts)
-11 (-7.28 % of base) : 18568.dasm - Internal.Runtime.CompilerHelpers.StartupCodeHelpers:GetLoadedModules(Internal.Runtime.TypeManagerHandle[]):int (FullOpts)
-11 (-7.28 % of base) : 3811.dasm - Internal.Runtime.CompilerHelpers.StartupCodeHelpers:GetLoadedModules(Internal.Runtime.TypeManagerHandle[]):int (FullOpts)
-26 (-7.28 % of base) : 30040.dasm - System.Reflection.DynamicInvokeInfo:CopyBackToSpan(System.Span`1[System.Object],System.Span`1[System.Object]):this (FullOpts)
-13 (-6.84 % of base) : 6112.dasm - System.DefaultBinder:FindMostDerivedNewSlotMeth(System.Reflection.MethodBase[],int):System.Reflection.MethodBase (FullOpts)
-23 (-6.39 % of base) : 17399.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Span`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
-23 (-6.39 % of base) : 20017.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Span`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
-23 (-6.39 % of base) : 22651.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Span`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
-23 (-6.39 % of base) : 2313.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Span`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
-25 (-6.33 % of base) : 10004.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
-4 (-6.25 % of base) : 23318.dasm - PInvokeTests.Program+ClosedDelegateCLass:CheckArray(int[],long):ubyte:this (FullOpts)
-12 (-6.25 % of base) : 8211.dasm - System.Type:BinarySearch(System.Array,System.Object):int (FullOpts)
-12 (-6.25 % of base) : 11783.dasm - System.Type:BinarySearch(System.Array,System.Object):int (FullOpts)