Assembly Diffs
osx arm64
Diffs are based on 2,270,844 contexts (932,669 MinOpts, 1,338,175 FullOpts).
MISSED contexts: base: 2 (0.00%), diff: 26 (0.00%)
Overall (-1,196 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run_pgo.osx.arm64.checked.mch |
34,442,120 |
+4 |
coreclr_tests.run.osx.arm64.checked.mch |
486,418,056 |
-704 |
libraries_tests.run.osx.arm64.Release.mch |
324,596,696 |
-496 |
FullOpts (-1,196 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run_pgo.osx.arm64.checked.mch |
18,140,820 |
+4 |
coreclr_tests.run.osx.arm64.checked.mch |
153,805,132 |
-704 |
libraries_tests.run.osx.arm64.Release.mch |
120,880,848 |
-496 |
Example diffs
benchmarks.run_pgo.osx.arm64.checked.mch
+0 (0.00%) : 65589.dasm - System.Collections.Generic.ArraySortHelper1[System.Collections.IntStruct]:SwapIfGreater(System.Span
1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
@@ -52,17 +52,17 @@ G_M8313_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=44 bbWeight=1 PerfScore 8.00
G_M8313_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref, isz
cmp w19, w20
- beq G_M8313_IG10
+ beq G_M8313_IG11
;; size=8 bbWeight=1 PerfScore 1.50
G_M8313_IG03: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref, isz
cmp w19, w23
- bhs G_M8313_IG09
+ bhs G_M8313_IG10
ubfiz x0, x19, #2, #32
add x24, x22, x0
; byrRegs +[x24]
ldr w1, [x24]
cmp w20, w23
- bhs G_M8313_IG09
+ bhs G_M8313_IG10
ubfiz x0, x20, #2, #32
add x25, x22, x0
; byrRegs +[x25]
@@ -72,25 +72,20 @@ G_M8313_IG03: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
cmp x0, x3
- bne G_M8313_IG11
+ bne G_M8313_IG09
cmp w1, w2
- bge G_M8313_IG05
+ bge G_M8313_IG08
;; size=72 bbWeight=1 PerfScore 19.50
G_M8313_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=3000000 {x24 x25}, byref
; gcrRegs -[x21]
; byrRegs -[x22]
movn w3, #0
- b G_M8313_IG06
- ;; size=8 bbWeight=0.64 PerfScore 0.96
-G_M8313_IG05: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=3000000 {x24 x25}, byref
- cmp w1, w2
- cset x3, gt
- ;; size=8 bbWeight=0.36 PerfScore 0.36
-G_M8313_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=3000000 {x24 x25}, byref, isz
+ ;; size=4 bbWeight=0.64 PerfScore 0.32
+G_M8313_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=3000000 {x24 x25}, byref, isz
cmp w3, #0
- bgt G_M8313_IG08
+ bgt G_M8313_IG07
;; size=8 bbWeight=1 PerfScore 1.50
-G_M8313_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M8313_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x24-x25]
ldr x25, [sp, #0x48]
ldp x23, x24, [sp, #0x38]
@@ -99,19 +94,34 @@ G_M8313_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldp fp, lr, [sp], #0x50
ret lr
;; size=24 bbWeight=1 PerfScore 7.00
-G_M8313_IG08: ; bbWeight=0.45, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=3000000 {x24 x25}, gcvars, byref
+G_M8313_IG07: ; bbWeight=0.45, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=3000000 {x24 x25}, gcvars, byref
; byrRegs +[x24-x25]
ldr w0, [x24]
ldr w1, [x25]
str w1, [x24]
str w0, [x25]
- b G_M8313_IG07
+ b G_M8313_IG06
;; size=20 bbWeight=0.45 PerfScore 4.04
-G_M8313_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8313_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=3000000 {x24 x25}, byref
+ cmp w1, w2
+ cset x3, gt
+ b G_M8313_IG05
+ ;; size=12 bbWeight=0.36 PerfScore 0.73
+G_M8313_IG09: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=3000000 {x24 x25}, byref
+ ; gcrRegs +[x21]
+ ldr x0, [x21, #0x08]
+ ; gcrRegs +[x0]
+ ldr x3, [x21, #0x18]
+ blr x3
+ ; gcrRegs -[x0 x21]
+ sxtw w3, w0
+ b G_M8313_IG05
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M8313_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x24-x25]
bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M8313_IG10: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref
+G_M8313_IG11: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref
; gcrRegs +[x21]
; byrRegs +[x22]
movz x0, #0xD1FFAB1E
@@ -127,18 +137,8 @@ G_M8313_IG10: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22
blr x2
b G_M8313_IG03
;; size=48 bbWeight=0 PerfScore 0.00
-G_M8313_IG11: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=3000000 {x24 x25}, byref
- ; byrRegs -[x22] +[x24-x25]
- ldr x0, [x21, #0x08]
- ; gcrRegs +[x0]
- ldr x3, [x21, #0x18]
- blr x3
- ; gcrRegs -[x0 x21]
- sxtw w3, w0
- b G_M8313_IG06
- ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 264, prolog size 24, PerfScore 42.86, instruction count 66, allocated bytes for code 264 (MethodHash=3756df86) for method System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
+; Total bytes of code 264, prolog size 24, PerfScore 42.58, instruction count 66, allocated bytes for code 264 (MethodHash=3756df86) for method System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
; ============================================================
Unwind Info:
+0 (0.00%) : 68061.dasm - Interop+CoreFoundation:CFGetData(Microsoft.Win32.SafeHandles.SafeCFDataHandle):ubyte
@@ -52,14 +52,14 @@ G_M21612_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=000
;; size=4 bbWeight=1 PerfScore 1.00
G_M21612_IG03: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldrb w1, [x0, #0x1D]
- cbz w1, G_M21612_IG07
+ cbz w1, G_M21612_IG09
;; size=8 bbWeight=1 PerfScore 4.00
G_M21612_IG04: ; bbWeight=5.88, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
add x1, x0, #24
; byrRegs +[x1]
ldar w1, [x1]
; byrRegs -[x1]
- tbnz w1, #0, G_M21612_IG09
+ tbnz w1, #0, G_M21612_IG07
;; size=12 bbWeight=5.88 PerfScore 26.47
G_M21612_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
add x2, x0, #24
@@ -91,8 +91,8 @@ G_M21612_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
; gcr arg pop 0
mov x20, x0
cmp x19, w19, SXTW
- bne G_M21612_IG08
- tbnz w19, #31, G_M21612_IG06
+ bne G_M21612_IG06
+ tbnz w19, #31, G_M21612_IG08
cbz w19, G_M21612_IG10
sxtw x1, w19
movz x0, #0xD1FFAB1E
@@ -121,6 +121,21 @@ G_M21612_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
;; size=160 bbWeight=1 PerfScore 37.00
G_M21612_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x21]
+ bl CORINFO_HELP_OVERFLOW
+ ; gcr arg pop 0
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M21612_IG07: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x0]
+ movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowObjectDisposedException(System.Object)
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ ldr x1, [x1]
+ blr x1
+ ; gcrRegs -[x0]
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M21612_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -129,7 +144,7 @@ G_M21612_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M21612_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M21612_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -146,23 +161,8 @@ G_M21612_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs +[x0]
b G_M21612_IG04
;; size=52 bbWeight=0 PerfScore 0.00
-G_M21612_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- bl CORINFO_HELP_OVERFLOW
- ; gcr arg pop 0
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M21612_IG09: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowObjectDisposedException(System.Object)
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- ldr x1, [x1]
- blr x1
- ; gcrRegs -[x0]
- ; gcr arg pop 0
- brk_unix #0
- ;; size=24 bbWeight=0 PerfScore 0.00
G_M21612_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
movz x21, #0xD1FFAB1E
movk x21, #0xD1FFAB1E LSL #16
movk x21, #1 LSL #32
+0 (0.00%) : 71053.dasm - System.Collections.Generic.ArraySortHelper1[int]:SwapIfGreater(System.Span
1[int],System.Comparison`1[int],int,int) (Tier1)
@@ -54,59 +54,54 @@ G_M64750_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=44 bbWeight=1 PerfScore 8.00
G_M64750_IG02: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz
cmp w20, w19
- beq G_M64750_IG11
+ beq G_M64750_IG12
;; size=8 bbWeight=1 PerfScore 1.50
G_M64750_IG03: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz
cmp w20, w23
- bhs G_M64750_IG10
+ bhs G_M64750_IG11
ubfiz x24, x20, #2, #32
ldr w1, [x21, x24]
cmp w19, w23
- bhs G_M64750_IG10
+ bhs G_M64750_IG11
ldr w2, [x21, w19, UXTW #2]
ldr x0, [x22, #0x18]
movz x3, #0xD1FFAB1E // code for System.Linq.EnumerableSorter`2[System.Collections.IntStruct,System.Collections.IntStruct]:CompareAnyKeys_DefaultComparer_NoNext_Ascending(int,int):int:this
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
cmp x0, x3
- bne G_M64750_IG12
+ bne G_M64750_IG10
ldr x0, [x22, #0x08]
; gcrRegs +[x0]
ldr x0, [x0, #0x20]
ldr w3, [x0, #0x08]
cmp w1, w3
- bhs G_M64750_IG10
+ bhs G_M64750_IG11
ubfiz x4, x1, #2, #32
add x4, x4, #16
ldr w4, [x0, x4]
cmp w2, w3
- bhs G_M64750_IG10
+ bhs G_M64750_IG11
ubfiz x3, x2, #2, #32
add x3, x3, #16
ldr w0, [x0, x3]
; gcrRegs -[x0]
cmp w4, w0
- bge G_M64750_IG05
+ bge G_M64750_IG09
;; size=112 bbWeight=1 PerfScore 38.50
G_M64750_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
; gcrRegs -[x22]
movn w3, #0
- b G_M64750_IG06
- ;; size=8 bbWeight=0.64 PerfScore 0.96
-G_M64750_IG05: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
- cmp w4, w0
- cset x3, gt
- ;; size=8 bbWeight=0.36 PerfScore 0.36
-G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+ ;; size=4 bbWeight=0.64 PerfScore 0.32
+G_M64750_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
sub w0, w1, w2
cmp w3, #0
csel w25, w0, w3, eq
;; size=12 bbWeight=1 PerfScore 1.50
-G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
cmp w25, #0
- bgt G_M64750_IG09
+ bgt G_M64750_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x21]
ldr x25, [sp, #0x48]
ldp x23, x24, [sp, #0x38]
@@ -115,7 +110,7 @@ G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldp fp, lr, [sp], #0x50
ret lr
;; size=24 bbWeight=1 PerfScore 7.00
-G_M64750_IG09: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, gcvars, byref
+G_M64750_IG08: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, gcvars, byref
; byrRegs +[x21]
ldr w0, [x21, x24]
add x1, x21, x24
@@ -123,13 +118,29 @@ G_M64750_IG09: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=000
ldr w2, [x21, w19, UXTW #2]
str w2, [x1]
str w0, [x21, w19, UXTW #2]
- b G_M64750_IG08
+ b G_M64750_IG07
;; size=24 bbWeight=0.46 PerfScore 4.35
-G_M64750_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x1 x21]
+G_M64750_IG09: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+ ; byrRegs -[x1]
+ cmp w4, w0
+ cset x3, gt
+ b G_M64750_IG05
+ ;; size=12 bbWeight=0.36 PerfScore 0.72
+G_M64750_IG10: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
+ ; gcrRegs +[x22]
+ ldr x0, [x22, #0x08]
+ ; gcrRegs +[x0]
+ ldr x3, [x22, #0x18]
+ blr x3
+ ; gcrRegs -[x0 x22]
+ sxtw w25, w0
+ b G_M64750_IG06
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M64750_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x21]
bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M64750_IG11: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
+G_M64750_IG12: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
; gcrRegs +[x22]
; byrRegs +[x21]
movz x0, #0xD1FFAB1E
@@ -145,17 +156,8 @@ G_M64750_IG11: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x2
blr x2
b G_M64750_IG03
;; size=48 bbWeight=0 PerfScore 0.00
-G_M64750_IG12: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
- ldr x0, [x22, #0x08]
- ; gcrRegs +[x0]
- ldr x3, [x22, #0x18]
- blr x3
- ; gcrRegs -[x0 x22]
- sxtw w25, w0
- b G_M64750_IG07
- ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 320, prolog size 24, PerfScore 63.67, instruction count 80, allocated bytes for code 320 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
+; Total bytes of code 320, prolog size 24, PerfScore 63.40, instruction count 80, allocated bytes for code 320 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
; ============================================================
Unwind Info:
+0 (0.00%) : 83388.dasm - System.Collections.Generic.ArraySortHelper1[int]:SwapIfGreater(System.Span
1[int],System.Comparison`1[int],int,int) (Tier1)
@@ -45,39 +45,34 @@ G_M64750_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=40 bbWeight=1 PerfScore 7.00
G_M64750_IG02: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz
cmp w20, w19
- beq G_M64750_IG10
+ beq G_M64750_IG11
;; size=8 bbWeight=1 PerfScore 1.50
G_M64750_IG03: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz
cmp w20, w23
- bhs G_M64750_IG09
+ bhs G_M64750_IG10
ubfiz x24, x20, #2, #32
ldr w1, [x21, x24]
cmp w19, w23
- bhs G_M64750_IG09
+ bhs G_M64750_IG10
ldr w2, [x21, w19, UXTW #2]
ldr x0, [x22, #0x18]
movz x3, #0xD1FFAB1E // code for System.Collections.Sort`1+<>c[int]:<Array_Comparison>b__13_0(int,int):int:this
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
cmp x0, x3
- bne G_M64750_IG11
+ bne G_M64750_IG09
cmp w1, w2
- bge G_M64750_IG05
+ bge G_M64750_IG08
;; size=60 bbWeight=1 PerfScore 17.50
G_M64750_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
; gcrRegs -[x22]
movn w3, #0
- b G_M64750_IG06
- ;; size=8 bbWeight=0.64 PerfScore 0.96
-G_M64750_IG05: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
- cmp w1, w2
- cset x3, gt
- ;; size=8 bbWeight=0.36 PerfScore 0.36
-G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+ ;; size=4 bbWeight=0.64 PerfScore 0.32
+G_M64750_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
cmp w3, #0
- bgt G_M64750_IG08
+ bgt G_M64750_IG07
;; size=8 bbWeight=1 PerfScore 1.50
-G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x21]
ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
@@ -85,7 +80,7 @@ G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldp fp, lr, [sp], #0x40
ret lr
;; size=20 bbWeight=1 PerfScore 5.00
-G_M64750_IG08: ; bbWeight=0.44, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, gcvars, byref
+G_M64750_IG07: ; bbWeight=0.44, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, gcvars, byref
; byrRegs +[x21]
ldr w0, [x21, x24]
add x1, x21, x24
@@ -93,13 +88,29 @@ G_M64750_IG08: ; bbWeight=0.44, gcVars=0000000000000000 {}, gcrefRegs=000
ldr w2, [x21, w19, UXTW #2]
str w2, [x1]
str w0, [x21, w19, UXTW #2]
- b G_M64750_IG07
+ b G_M64750_IG06
;; size=24 bbWeight=0.44 PerfScore 4.22
-G_M64750_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x1 x21]
+G_M64750_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+ ; byrRegs -[x1]
+ cmp w1, w2
+ cset x3, gt
+ b G_M64750_IG05
+ ;; size=12 bbWeight=0.36 PerfScore 0.72
+G_M64750_IG09: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
+ ; gcrRegs +[x22]
+ ldr x0, [x22, #0x08]
+ ; gcrRegs +[x0]
+ ldr x3, [x22, #0x18]
+ blr x3
+ ; gcrRegs -[x0 x22]
+ sxtw w3, w0
+ b G_M64750_IG05
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M64750_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x21]
bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M64750_IG10: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
+G_M64750_IG11: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
; gcrRegs +[x22]
; byrRegs +[x21]
movz x0, #8
@@ -115,17 +126,8 @@ G_M64750_IG10: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x2
blr x2
b G_M64750_IG03
;; size=48 bbWeight=0 PerfScore 0.00
-G_M64750_IG11: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
- ldr x0, [x22, #0x08]
- ; gcrRegs +[x0]
- ldr x3, [x22, #0x18]
- blr x3
- ; gcrRegs -[x0 x22]
- sxtw w3, w0
- b G_M64750_IG06
- ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 248, prolog size 20, PerfScore 38.04, instruction count 62, allocated bytes for code 248 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
+; Total bytes of code 248, prolog size 20, PerfScore 37.76, instruction count 62, allocated bytes for code 248 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
; ============================================================
Unwind Info:
+0 (0.00%) : 83616.dasm - System.Collections.Generic.ArraySortHelper1[int]:SwapIfGreater(System.Span
1[int],System.Comparison`1[int],int,int) (Tier1)
@@ -54,28 +54,28 @@ G_M64750_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=44 bbWeight=1 PerfScore 8.00
G_M64750_IG02: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz
cmp w20, w19
- beq G_M64750_IG11
+ beq G_M64750_IG12
;; size=8 bbWeight=1 PerfScore 1.50
G_M64750_IG03: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz
cmp w20, w23
- bhs G_M64750_IG10
+ bhs G_M64750_IG11
ubfiz x24, x20, #2, #32
ldr w1, [x21, x24]
cmp w19, w23
- bhs G_M64750_IG10
+ bhs G_M64750_IG11
ldr w2, [x21, w19, UXTW #2]
ldr x0, [x22, #0x18]
movz x3, #0xD1FFAB1E // code for System.Linq.EnumerableSorter`2[System.Collections.BigStruct,System.Collections.BigStruct]:CompareAnyKeys_DefaultComparer_NoNext_Ascending(int,int):int:this
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
cmp x0, x3
- bne G_M64750_IG12
+ bne G_M64750_IG10
ldr x0, [x22, #0x08]
; gcrRegs +[x0]
ldr x0, [x0, #0x20]
ldr w3, [x0, #0x08]
cmp w1, w3
- bhs G_M64750_IG10
+ bhs G_M64750_IG11
ubfiz x4, x1, #5, #32
add x4, x4, #16
add x4, x0, x4
@@ -83,7 +83,7 @@ G_M64750_IG03: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=200000 {x2
ldr w4, [x4, #0x0C]
; byrRegs -[x4]
cmp w2, w3
- bhs G_M64750_IG10
+ bhs G_M64750_IG11
ubfiz x3, x2, #5, #32
add x3, x3, #16
add x0, x0, x3
@@ -92,27 +92,22 @@ G_M64750_IG03: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=200000 {x2
ldr w0, [x0, #0x0C]
; byrRegs -[x0]
cmp w4, w0
- bge G_M64750_IG05
+ bge G_M64750_IG09
;; size=120 bbWeight=1 PerfScore 39.50
G_M64750_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
; gcrRegs -[x22]
movn w3, #0
- b G_M64750_IG06
- ;; size=8 bbWeight=0.64 PerfScore 0.96
-G_M64750_IG05: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
- cmp w4, w0
- cset x3, gt
- ;; size=8 bbWeight=0.36 PerfScore 0.36
-G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+ ;; size=4 bbWeight=0.64 PerfScore 0.32
+G_M64750_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
sub w0, w1, w2
cmp w3, #0
csel w25, w0, w3, eq
;; size=12 bbWeight=1 PerfScore 1.50
-G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
cmp w25, #0
- bgt G_M64750_IG09
+ bgt G_M64750_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x21]
ldr x25, [sp, #0x48]
ldp x23, x24, [sp, #0x38]
@@ -121,7 +116,7 @@ G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldp fp, lr, [sp], #0x50
ret lr
;; size=24 bbWeight=1 PerfScore 7.00
-G_M64750_IG09: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, gcvars, byref
+G_M64750_IG08: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, gcvars, byref
; byrRegs +[x21]
ldr w0, [x21, x24]
add x1, x21, x24
@@ -129,13 +124,29 @@ G_M64750_IG09: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=000
ldr w2, [x21, w19, UXTW #2]
str w2, [x1]
str w0, [x21, w19, UXTW #2]
- b G_M64750_IG08
+ b G_M64750_IG07
;; size=24 bbWeight=0.46 PerfScore 4.36
-G_M64750_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x1 x21]
+G_M64750_IG09: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+ ; byrRegs -[x1]
+ cmp w4, w0
+ cset x3, gt
+ b G_M64750_IG05
+ ;; size=12 bbWeight=0.36 PerfScore 0.73
+G_M64750_IG10: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
+ ; gcrRegs +[x22]
+ ldr x0, [x22, #0x08]
+ ; gcrRegs +[x0]
+ ldr x3, [x22, #0x18]
+ blr x3
+ ; gcrRegs -[x0 x22]
+ sxtw w25, w0
+ b G_M64750_IG06
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M64750_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x21]
bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M64750_IG11: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
+G_M64750_IG12: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
; gcrRegs +[x22]
; byrRegs +[x21]
movz x0, #0xD1FFAB1E
@@ -151,17 +162,8 @@ G_M64750_IG11: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x2
blr x2
b G_M64750_IG03
;; size=48 bbWeight=0 PerfScore 0.00
-G_M64750_IG12: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
- ldr x0, [x22, #0x08]
- ; gcrRegs +[x0]
- ldr x3, [x22, #0x18]
- blr x3
- ; gcrRegs -[x0 x22]
- sxtw w25, w0
- b G_M64750_IG07
- ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 328, prolog size 24, PerfScore 64.68, instruction count 82, allocated bytes for code 328 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
+; Total bytes of code 328, prolog size 24, PerfScore 64.40, instruction count 82, allocated bytes for code 328 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
; ============================================================
Unwind Info:
+4 (+2.63%) : 58008.dasm - Microsoft.CodeAnalysis.CSharp.BoundStatementList:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1862
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1862
; 2 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -47,40 +47,23 @@ G_M38662_IG02: ; bbWeight=1, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}
mov x15, x1
; gcrRegs +[x15]
tst w3, #255
- bne G_M38662_IG12
+ bne G_M38662_IG13
;; size=12 bbWeight=1 PerfScore 2.00
G_M38662_IG03: ; bbWeight=1.00, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
mov x14, x2
; gcrRegs +[x14]
- cbz x14, G_M38662_IG07
+ cbz x14, G_M38662_IG04
mov w12, wzr
ldr w14, [x14, #0x08]
; gcrRegs -[x14]
cmp w14, #0
- ble G_M38662_IG07
+ bgt G_M38662_IG08
;; size=24 bbWeight=1.00 PerfScore 6.50
-G_M38662_IG04: ; bbWeight=0.46, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, byref
- add xip0, x2, #16
- ; byrRegs +[xip0]
- ;; size=4 bbWeight=0.46 PerfScore 0.23
-G_M38662_IG05: ; bbWeight=0.85, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=10000 {xip0}, byref, isz
- ldr x1, [xip0, w12, UXTW #3]
- ; gcrRegs +[x1]
- ldrsh w1, [x1, #0x10]
- ; gcrRegs -[x1]
- tbnz w1, #0, G_M38662_IG11
- ;; size=12 bbWeight=0.85 PerfScore 5.97
-G_M38662_IG06: ; bbWeight=0.85, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=10000 {xip0}, byref, isz
- add w12, w12, #1
- cmp w12, w14
- blt G_M38662_IG05
- ;; size=12 bbWeight=0.85 PerfScore 1.71
-G_M38662_IG07: ; bbWeight=1.00, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, byref
- ; byrRegs -[xip0]
+G_M38662_IG04: ; bbWeight=1.00, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, byref
mov w1, wzr
;; size=4 bbWeight=1.00 PerfScore 0.50
-G_M38662_IG08: ; bbWeight=1, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, byref, isz
+G_M38662_IG05: ; bbWeight=1, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, byref, isz
mov w14, #122
strb w14, [x0, #0x12]
add x14, x0, #8
@@ -89,9 +72,9 @@ G_M38662_IG08: ; bbWeight=1, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {
; gcrRegs -[x15]
; byrRegs -[x14]
tst w1, #255
- bne G_M38662_IG13
+ bne G_M38662_IG14
;; size=24 bbWeight=1 PerfScore 4.50
-G_M38662_IG09: ; bbWeight=1, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref
+G_M38662_IG06: ; bbWeight=1, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref
add x14, x0, #24
; byrRegs +[x14]
mov x15, x2
@@ -100,31 +83,51 @@ G_M38662_IG09: ; bbWeight=1, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, b
; gcrRegs -[x0 x2 x15]
; byrRegs -[x14]
;; size=12 bbWeight=1 PerfScore 2.00
-G_M38662_IG10: ; bbWeight=1, epilog, nogc, extend
+G_M38662_IG07: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M38662_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, gcvars, byref
+G_M38662_IG08: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0 x2 x15]
+ add xip0, x2, #16
+ ; byrRegs +[xip0]
+ ;; size=4 bbWeight=0.46 PerfScore 0.23
+G_M38662_IG09: ; bbWeight=0.85, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=10000 {xip0}, byref, isz
+ ldr x1, [xip0, w12, UXTW #3]
+ ; gcrRegs +[x1]
+ ldrsh w1, [x1, #0x10]
+ ; gcrRegs -[x1]
+ tbnz w1, #0, G_M38662_IG12
+ ;; size=12 bbWeight=0.85 PerfScore 5.97
+G_M38662_IG10: ; bbWeight=0.85, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=10000 {xip0}, byref, isz
+ add w12, w12, #1
+ cmp w12, w14
+ blt G_M38662_IG09
+ ;; size=12 bbWeight=0.85 PerfScore 1.71
+G_M38662_IG11: ; bbWeight=0.46, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, byref
+ ; byrRegs -[xip0]
+ b G_M38662_IG04
+ ;; size=4 bbWeight=0.46 PerfScore 0.46
+G_M38662_IG12: ; bbWeight=0, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, byref
mov w1, #1
- b G_M38662_IG08
+ b G_M38662_IG05
;; size=8 bbWeight=0 PerfScore 0.00
-G_M38662_IG12: ; bbWeight=0, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref
+G_M38662_IG13: ; bbWeight=0, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x15] +[x1]
mov x15, x1
; gcrRegs +[x15]
mov w1, #1
; gcrRegs -[x1]
- b G_M38662_IG08
+ b G_M38662_IG05
;; size=12 bbWeight=0 PerfScore 0.00
-G_M38662_IG13: ; bbWeight=0, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref
+G_M38662_IG14: ; bbWeight=0, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x15]
mov w1, #1
strh w1, [x0, #0x10]
- b G_M38662_IG09
+ b G_M38662_IG06
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 152, prolog size 8, PerfScore 26.91, instruction count 38, allocated bytes for code 152 (MethodHash=762c68f9) for method Microsoft.CodeAnalysis.CSharp.BoundStatementList:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
+; Total bytes of code 156, prolog size 8, PerfScore 27.37, instruction count 39, allocated bytes for code 156 (MethodHash=762c68f9) for method Microsoft.CodeAnalysis.CSharp.BoundStatementList:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
; ============================================================
Unwind Info:
@@ -135,7 +138,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 38 (0x00026) Actual length = 152 (0x000098)
+ Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
coreclr_tests.run.osx.arm64.checked.mch
-20 (-10.87%) : 296132.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRefHelperNoCacheLookup(byref,ulong,System.Object) (FullOpts)
@@ -2,20 +2,22 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Unknown PGO
; fp based frame
; fully interruptible
+; with Unknown PGO: edge weights are valid, and fgCalledCount is 154
; No matching PGO data
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 3, 2.82) byref -> x21 single-def
-; V01 arg1 [V01,T01] ( 4, 3 ) long -> x20 single-def
-; V02 arg2 [V02,T00] ( 10, 6.82) ref -> x19 class-hnd <System.Object>
+; V00 arg0 [V00,T01] ( 3, 3 ) byref -> x20 single-def
+; V01 arg1 [V01,T02] ( 3, 3 ) long -> x21 single-def
+; V02 arg2 [V02,T00] ( 7, 7 ) ref -> x19 class-hnd <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T04] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V05 tmp2 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V06 tmp3 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V07 cse0 [V07,T03] ( 3, 0.02) ref -> x1 "CSE - conservative"
+; V07 cse0 [V07,T03] ( 3, 2.40) ref -> x1 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -24,43 +26,16 @@ G_M14814_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x19, x20, [sp, #0x18]
str x21, [sp, #0x28]
mov fp, sp
- mov x21, x0
- ; byrRegs +[x21]
- mov x20, x1
+ mov x20, x0
+ ; byrRegs +[x20]
+ mov x21, x1
mov x19, x2
; gcrRegs +[x19]
;; size=28 bbWeight=1 PerfScore 5.00
-G_M14814_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
- cbz x19, G_M14814_IG06
+G_M14814_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+ cbnz x19, G_M14814_IG04
;; size=4 bbWeight=1 PerfScore 1.00
-G_M14814_IG03: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
- mov x0, x20
- mov x1, x19
- ; gcrRegs +[x1]
- bl <unknown method>
- ; gcrRegs -[x1 x19] +[x0]
- ; gcr arg pop 0
- mov x19, x0
- ; gcrRegs +[x19]
- cbz x19, G_M14814_IG07
- ;; size=20 bbWeight=0.99 PerfScore 3.48
-G_M14814_IG04: ; bbWeight=0.82, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
- ; gcrRegs -[x0]
- mov x0, x21
- ; byrRegs +[x0]
- mov x1, x19
- ; gcrRegs +[x1]
- ;; size=8 bbWeight=0.82 PerfScore 0.82
-G_M14814_IG05: ; bbWeight=0.82, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- b <unknown method>
- ; gcr arg pop 0
- ;; size=16 bbWeight=0.82 PerfScore 4.09
-G_M14814_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, gcvars, byref, isz
- ; gcrRegs -[x1]
- ; byrRegs -[x0]
+G_M14814_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -73,7 +48,9 @@ G_M14814_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=800
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- mov x0, x20
+ ;; size=36 bbWeight=0.80 PerfScore 6.00
+G_M14814_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+ mov x0, x21
mov x1, x19
; gcrRegs +[x1]
bl <unknown method>
@@ -81,11 +58,23 @@ G_M14814_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=800
; gcr arg pop 0
mov x19, x0
; gcrRegs +[x19]
- cbnz x19, G_M14814_IG04
- ;; size=56 bbWeight=0.01 PerfScore 0.07
-G_M14814_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x19]
- ; byrRegs -[x21]
+ cbz x19, G_M14814_IG06
+ mov x0, x20
+ ; gcrRegs -[x0]
+ ; byrRegs +[x0]
+ mov x1, x19
+ ; gcrRegs +[x1]
+ ;; size=28 bbWeight=1 PerfScore 4.50
+G_M14814_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ b <unknown method>
+ ; gcr arg pop 0
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M14814_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x1 x19]
+ ; byrRegs -[x0 x20]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -109,7 +98,7 @@ G_M14814_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 184, prolog size 28, PerfScore 14.46, instruction count 46, allocated bytes for code 184 (MethodHash=29c6c621) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
+; Total bytes of code 164, prolog size 28, PerfScore 21.50, instruction count 41, allocated bytes for code 164 (MethodHash=29c6c621) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
; ============================================================
Unwind Info:
@@ -120,7 +109,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-16 (-6.67%) : 296131.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (FullOpts)
@@ -2,37 +2,38 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Unknown PGO
; fp based frame
; fully interruptible
+; with Unknown PGO: edge weights are invalid, and fgCalledCount is 3648
; No matching PGO data
; 0 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T09] ( 4, 2 ) byref -> x0 single-def
-; V01 arg1 [V01,T08] ( 5, 3 ) long -> x1 single-def
-; V02 arg2 [V02,T07] ( 5, 3 ) ref -> x2 class-hnd single-def <System.Object>
-;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
-;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T10] ( 2, 4 ) ref -> x3 class-hnd single-def "impAppendStmt" <int[]>
-; V06 tmp2 [V06,T11] ( 2, 0 ) int -> x19 "Inline return value spill temp"
-; V07 tmp3 [V07,T02] ( 4, 360.15) byref -> x3 single-def "Inline stloc first use temp"
-; V08 tmp4 [V08,T05] ( 3, 16.31) long -> x4 "Inlining Arg"
-; V09 tmp5 [V09,T01] ( 4, 711.15) int -> x5 "Inline stloc first use temp"
-; V10 tmp6 [V10,T00] ( 5,1409 ) int -> x6 "Inline stloc first use temp"
-; V11 tmp7 [V11,T04] ( 5, 18.46) byref -> x7 "Inline stloc first use temp"
-; V12 tmp8 [V12,T03] ( 5, 96 ) int -> x8 "Inline stloc first use temp"
-; V13 tmp9 [V13,T06] ( 2, 12.31) long -> x9 "Inline stloc first use temp"
-; V14 tmp10 [V14,T12] ( 3, 0 ) long -> x19 "Inline stloc first use temp"
-;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V16 tmp12 [V16 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+; V00 arg0 [V00,T10] ( 4, 3.42) byref -> x0 single-def
+; V01 arg1 [V01,T08] ( 5, 11.96) long -> x1 single-def
+; V02 arg2 [V02,T09] ( 5, 4.42) ref -> x2 class-hnd single-def <System.Object>
+;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
+;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V05 tmp1 [V05,T11] ( 2, 4 ) ref -> x3 class-hnd single-def "impAppendStmt" <int[]>
+; V06 tmp2 [V06,T12] ( 2, 2.00) int -> x9 "Inline return value spill temp"
+; V07 tmp3 [V07,T04] ( 4, 67.48) byref -> x3 single-def "Inline stloc first use temp"
+; V08 tmp4 [V08,T05] ( 3, 66.04) long -> x4 "Inlining Arg"
+; V09 tmp5 [V09,T03] ( 4,100.95) int -> x5 "Inline stloc first use temp"
+; V10 tmp6 [V10,T00] ( 5,138.86) int -> x6 "Inline stloc first use temp"
+; V11 tmp7 [V11,T02] ( 5,101.32) byref -> x7 "Inline stloc first use temp"
+; V12 tmp8 [V12,T01] ( 5,122.66) int -> x8 "Inline stloc first use temp"
+; V13 tmp9 [V13,T06] ( 2, 62.04) long -> x9 "Inline stloc first use temp"
+; V14 tmp10 [V14,T07] ( 3, 17.13) long -> x9 "Inline stloc first use temp"
+;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V16 tmp12 [V16 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
-G_M34926_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+G_M34926_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M34926_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref
; gcrRegs +[x2]
; byrRegs +[x0]
@@ -56,7 +57,7 @@ G_M34926_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, by
lsr x5, x5, x6
mov w6, wzr
;; size=64 bbWeight=1 PerfScore 17.50
-G_M34926_IG03: ; bbWeight=6.15, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
+G_M34926_IG03: ; bbWeight=31.02, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
add w7, w5, #1
mov w8, #24
smull x7, w7, w8
@@ -66,40 +67,56 @@ G_M34926_IG03: ; bbWeight=6.15, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x
ldr x9, [x7, #0x08]
and w8, w8, #0xD1FFAB1E
cmp x9, x4
- beq G_M34926_IG11
- ;; size=36 bbWeight=6.15 PerfScore 70.77
-G_M34926_IG04: ; bbWeight=77.54, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
+ beq G_M34926_IG07
+ ;; size=36 bbWeight=31.02 PerfScore 356.71
+G_M34926_IG04: ; bbWeight=29.41, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
; byrRegs -[x7]
- cbz w8, G_M34926_IG09
- ;; size=4 bbWeight=77.54 PerfScore 77.54
-G_M34926_IG05: ; bbWeight=352, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
+ cbz w8, G_M34926_IG12
+ ;; size=4 bbWeight=29.41 PerfScore 29.41
+G_M34926_IG05: ; bbWeight=34.46, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
add w6, w6, #1
add w5, w5, w6
- ldr w7, [x3, #0x04]
- and w5, w5, w7
+ ldr w9, [x3, #0x04]
+ and w5, w5, w9
cmp w6, #8
blt G_M34926_IG03
- ;; size=24 bbWeight=352 PerfScore 2112.00
-G_M34926_IG06: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref
+ ;; size=24 bbWeight=34.46 PerfScore 206.79
+G_M34926_IG06: ; bbWeight=0.90, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref
; byrRegs -[x3]
- b G_M34926_IG09
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M34926_IG07: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz
- cmp w19, #1
- bne G_M34926_IG09
+ b G_M34926_IG12
+ ;; size=4 bbWeight=0.90 PerfScore 0.90
+G_M34926_IG07: ; bbWeight=8.06, gcrefRegs=0004 {x2}, byrefRegs=0089 {x0 x3 x7}, byref, isz
+ ; byrRegs +[x3 x7]
+ ldr x9, [x7, #0x10]
+ eor x9, x9, x1
+ cmp x9, #1
+ bhi G_M34926_IG04
+ ;; size=16 bbWeight=8.06 PerfScore 40.32
+G_M34926_IG08: ; bbWeight=0.20, gcrefRegs=0004 {x2}, byrefRegs=0081 {x0 x7}, byref, isz
+ ; byrRegs -[x3]
+ dmb ishld
+ ldr w3, [x7]
+ cmp w8, w3
+ bne G_M34926_IG12
+ ;; size=16 bbWeight=0.20 PerfScore 2.92
+G_M34926_IG09: ; bbWeight=1.00, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz
+ ; byrRegs -[x7]
+ cmp w9, #1
+ bne G_M34926_IG12
+ ;; size=8 bbWeight=1.00 PerfScore 1.50
+G_M34926_IG10: ; bbWeight=0.52, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref
mov x1, x2
; gcrRegs +[x1]
bl <unknown method>
; gcrRegs -[x1-x2]
; byrRegs -[x0]
; gcr arg pop 0
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M34926_IG08: ; bbWeight=0, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ;; size=8 bbWeight=0.52 PerfScore 0.78
+G_M34926_IG11: ; bbWeight=0.52, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M34926_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, gcvars, byref
+ ;; size=8 bbWeight=0.52 PerfScore 1.04
+G_M34926_IG12: ; bbWeight=0.90, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, gcvars, byref
; gcrRegs +[x2]
; byrRegs +[x0]
movz x3, #0xD1FFAB1E // code for System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object)
@@ -110,39 +127,24 @@ G_M34926_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0004 {
; gcrRegs -[x2]
; byrRegs -[x0]
; gcr arg pop 0
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M34926_IG10: ; bbWeight=0, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ;; size=20 bbWeight=0.90 PerfScore 4.92
+G_M34926_IG13: ; bbWeight=0.90, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M34926_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0089 {x0 x3 x7}, gcvars, byref, isz
- ; gcrRegs +[x2]
- ; byrRegs +[x0 x3 x7]
- ldr x9, [x7, #0x10]
- eor x19, x9, x1
- cmp x19, #1
- bhi G_M34926_IG04
- dmb ishld
- ldr w3, [x7]
- ; byrRegs -[x3]
- cmp w8, w3
- bne G_M34926_IG09
- b G_M34926_IG07
- ;; size=36 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0.90 PerfScore 1.79
-; Total bytes of code 240, prolog size 12, PerfScore 2280.31, instruction count 60, allocated bytes for code 240 (MethodHash=f2f07791) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (FullOpts)
+; Total bytes of code 224, prolog size 8, PerfScore 666.08, instruction count 56, allocated bytes for code 224 (MethodHash=f2f07791) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -153,10 +155,7 @@ 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
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-20 (-5.95%) : 295994.dasm - System.AppContext:Setup(ulong,ulong,int) (FullOpts)
@@ -2,25 +2,28 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Unknown PGO
; fp based frame
; partially interruptible
+; with Unknown PGO: edge weights are valid, and fgCalledCount is 3
; No matching PGO data
; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T06] ( 3, 98 ) long -> x20 single-def
-; V01 arg1 [V01,T07] ( 3, 98 ) long -> x21 single-def
-; V02 arg2 [V02,T05] ( 5,100 ) int -> x19 single-def
-; V03 loc0 [V03,T01] ( 5,385 ) int -> x23
+; V00 arg0 [V00,T07] ( 3, 74.00) long -> x20 single-def
+; V01 arg1 [V01,T08] ( 3, 74.00) long -> x21 single-def
+; V02 arg2 [V02,T06] ( 5, 76.00) int -> x19 single-def
+; V03 loc0 [V03,T01] ( 5,289.00) int -> x23
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T09] ( 3, 6 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V05 tmp1 [V05,T10] ( 3, 6.00) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V06 tmp2 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V07 tmp3 [V07,T00] ( 3,576 ) ref -> x24 class-hnd "Inlining Arg" <<unknown class>>
-; V08 tmp4 [V08,T02] ( 2,384 ) ref -> x26 class-hnd exact "Inlining Arg" <System.String>
-; V09 tmp5 [V09,T03] ( 2,384 ) ref -> x2 class-hnd exact "Inlining Arg" <System.String>
+; V07 tmp3 [V07,T00] ( 3,432.00) ref -> x24 class-hnd "Inlining Arg" <<unknown class>>
+; V08 tmp4 [V08,T02] ( 2,288.00) ref -> x26 class-hnd exact "Inlining Arg" <System.String>
+; V09 tmp5 [V09,T03] ( 2,288.00) ref -> x2 class-hnd exact "Inlining Arg" <System.String>
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V11 cse0 [V11,T04] ( 3,288 ) long -> x25 "CSE - aggressive"
-; V12 cse1 [V12,T08] ( 4, 99 ) long -> x22 "CSE - aggressive"
+; V11 cse0 [V11,T04] ( 3,216.00) long -> x25 "CSE - aggressive"
+; V12 cse1 [V12,T09] ( 4, 75.00) long -> x22 "CSE - aggressive"
+; V13 cse2 [V13,T05] ( 5, 88.00) ref -> x1 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -41,10 +44,23 @@ G_M44736_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x22, #2 LSL #32
ldr x0, [x22]
; gcrRegs +[x0]
- cbnz x0, G_M44736_IG07
+ cbz x0, G_M44736_IG04
;; size=20 bbWeight=1 PerfScore 5.50
-G_M44736_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M44736_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ blr x2
+ ;; size=44 bbWeight=0.80 PerfScore 6.80
+G_M44736_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -68,8 +84,8 @@ G_M44736_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov w23, wzr
cmp w19, #0
ble G_M44736_IG08
- ;; size=72 bbWeight=1 PerfScore 13.50
-G_M44736_IG04: ; bbWeight=96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=72 bbWeight=1.00 PerfScore 13.50
+G_M44736_IG05: ; bbWeight=72.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x24, [x22]
; gcrRegs +[x24]
sbfiz x25, x23, #3, #32
@@ -95,52 +111,36 @@ G_M44736_IG04: ; bbWeight=96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x4, [x4]
blr x4
; gcrRegs -[x0-x2 x24 x26]
- cbz w0, G_M44736_IG06
- ;; size=72 bbWeight=96 PerfScore 2304.00
-G_M44736_IG05: ; bbWeight=96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M44736_IG07
+ ;; size=72 bbWeight=72.00 PerfScore 1728.00
+G_M44736_IG06: ; bbWeight=28.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ mov x0, x1
+ ; gcrRegs +[x0]
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x0]
+ ;; size=36 bbWeight=28.80 PerfScore 216.00
+G_M44736_IG07: ; bbWeight=72.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add w23, w23, #1
cmp w23, w19
- bge G_M44736_IG08
- b G_M44736_IG04
- ;; size=16 bbWeight=96 PerfScore 288.00
-G_M44736_IG06: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- b G_M44736_IG05
- ;; size=48 bbWeight=0.32 PerfScore 3.00
-G_M44736_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- b G_M44736_IG03
- ;; size=48 bbWeight=0.01 PerfScore 0.06
-G_M44736_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ blt G_M44736_IG05
+ ;; size=12 bbWeight=72.00 PerfScore 144.00
+G_M44736_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp x25, x26, [sp, #0x40]
ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x50
ret lr
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=1 PerfScore 6.00
-; Total bytes of code 336, prolog size 24, PerfScore 2621.07, instruction count 84, allocated bytes for code 336 (MethodHash=16ec513f) for method System.AppContext:Setup(ulong,ulong,int) (FullOpts)
+; Total bytes of code 316, prolog size 24, PerfScore 2126.80, instruction count 79, allocated bytes for code 316 (MethodHash=16ec513f) for method System.AppContext:Setup(ulong,ulong,int) (FullOpts)
; ============================================================
Unwind Info:
@@ -151,7 +151,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 84 (0x00054) Actual length = 336 (0x000150)
+ Function Length : 79 (0x0004f) Actual length = 316 (0x00013c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+4.35%) : 295997.dasm - System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
@@ -2,55 +2,124 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Unknown PGO
; fp based frame
; fully interruptible
+; with Unknown PGO: edge weights are invalid, and fgCalledCount is 5
; No matching PGO data
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T05] ( 6, 3 ) int -> x19 single-def
+; V00 arg0 [V00,T03] ( 6, 41.78) int -> x19 single-def
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
-; V02 loc1 [V02,T01] ( 5, 39 ) int -> x20
-; V03 loc2 [V03,T08] ( 3, 0 ) int -> x0
-; V04 loc3 [V04,T06] ( 7, 0 ) int -> x20
+; V02 loc1 [V02,T00] ( 5,165.21) int -> x1
+; V03 loc2 [V03,T02] ( 3, 76.26) int -> x2
+; V04 loc3 [V04,T01] ( 8,119.79) int -> x20
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T07] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V06 tmp1 [V06,T10] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
-; V08 tmp3 [V08,T02] ( 2, 39 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-;* V09 tmp4 [V09,T03] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP
-; V10 tmp5 [V10,T00] ( 2, 78 ) byref -> x1 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V11 tmp6 [V11,T04] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
-; V12 tmp7 [V12,T09] ( 3, 0 ) int -> x0 "fgMakeTemp is creating a new local variable"
+; V08 tmp3 [V08,T06] ( 2, 38.89) byref -> x0 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+;* V09 tmp4 [V09,T08] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP
+; V10 tmp5 [V10,T07] ( 2, 2 ) byref -> x0 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V11 tmp6 [V11,T09] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
+; V12 tmp7 [V12,T04] ( 3, 40.27) int -> x0 "fgMakeTemp is creating a new local variable"
; V13 tmp8 [V13,T11] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V14 rat0 [V14,T10] ( 3, 0 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V14 rat0 [V14,T05] ( 3, 40.27) int -> x1 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 0
-G_M22313_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M22313_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
stp x19, x20, [sp, #0x10]
mov fp, sp
mov w19, w0
;; size=16 bbWeight=1 PerfScore 3.00
G_M22313_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- tbnz w19, #31, G_M22313_IG04
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M22313_IG03: ; bbWeight=39, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x1, #0xD1FFAB1E
+ tbnz w19, #31, G_M22313_IG15
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ mov w1, wzr
+ ;; size=20 bbWeight=1 PerfScore 3.00
+G_M22313_IG03: ; bbWeight=37.89, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ ; byrRegs +[x0]
+ ldr w2, [x0, w1, UXTW #2]
+ cmp w2, w19
+ bge G_M22313_IG13
+ ;; size=12 bbWeight=37.89 PerfScore 170.53
+G_M22313_IG04: ; bbWeight=42.11, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ add w1, w1, #1
+ cmp w1, #72
+ blt G_M22313_IG03
+ ;; size=12 bbWeight=42.11 PerfScore 84.21
+G_M22313_IG05: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0]
+ orr w20, w19, #1
+ movn w0, #0xD1FFAB1E LSL #16
+ cmp w20, w0
+ bge G_M22313_IG08
+ ;; size=16 bbWeight=0.53 PerfScore 1.32
+G_M22313_IG06: ; bbWeight=25.81, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov w0, w20
+ movz x1, #0xD1FFAB1E // code for System.Collections.HashHelpers:IsPrime(int):ubyte
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
- mov w20, wzr
- b G_M22313_IG05
- ;; size=20 bbWeight=39 PerfScore 117.00
-G_M22313_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x1, [x1]
+ blr x1
+ ; gcr arg pop 0
+ cbnz w0, G_M22313_IG10
+ ;; size=28 bbWeight=25.81 PerfScore 180.70
+G_M22313_IG07: ; bbWeight=28.68, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ add w20, w20, #2
+ movn w0, #0xD1FFAB1E LSL #16
+ cmp w20, w0
+ blt G_M22313_IG06
+ ;; size=16 bbWeight=28.68 PerfScore 71.71
+G_M22313_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, w19
+ ;; size=4 bbWeight=0.36 PerfScore 0.18
+G_M22313_IG09: ; bbWeight=0.36, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.36 PerfScore 1.08
+G_M22313_IG10: ; bbWeight=6.71, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ sub w0, w20, #1
+ movz w1, #0xD1FFAB1E
+ movk w1, #0xD1FFAB1E LSL #16
+ smull x1, w1, w0
+ asr x1, x1, #32
+ asr w2, w1, #4
+ add w1, w2, w1, LSR #31
+ mov w2, #101
+ msub w0, w1, w2, w0
+ cbz w0, G_M22313_IG07
+ ;; size=40 bbWeight=6.71 PerfScore 67.12
+G_M22313_IG11: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, w20
+ ;; size=4 bbWeight=0.17 PerfScore 0.08
+G_M22313_IG12: ; bbWeight=0.17, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.17 PerfScore 0.50
+G_M22313_IG13: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, w2
+ ;; size=4 bbWeight=0.47 PerfScore 0.24
+G_M22313_IG14: ; bbWeight=0.47, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.47 PerfScore 1.42
+G_M22313_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; gcr arg pop 0
- mov x20, x0
- ; gcrRegs +[x20]
+ mov x19, x0
+ ; gcrRegs +[x19]
movz x0, #0xD1FFAB1E // code for <unknown method>
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
@@ -61,7 +130,7 @@ G_M22313_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
mov x1, x0
; gcrRegs +[x1]
- mov x0, x20
+ mov x0, x19
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
@@ -69,73 +138,15 @@ G_M22313_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x2
; gcrRegs -[x0-x1]
; gcr arg pop 0
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
bl CORINFO_HELP_THROW
- ; gcrRegs -[x0 x20]
+ ; gcrRegs -[x0 x19]
; gcr arg pop 0
- ;; size=76 bbWeight=0 PerfScore 0.00
-G_M22313_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ; byrRegs +[x1]
- ldr w0, [x1, w20, UXTW #2]
- cmp w0, w19
- bge G_M22313_IG06
- add w20, w20, #1
- cmp w20, #72
- blt G_M22313_IG05
- orr w20, w19, #1
- b G_M22313_IG09
- ;; size=32 bbWeight=0 PerfScore 0.00
-G_M22313_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[x1]
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M22313_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- mov w0, w20
- movz x1, #0xD1FFAB1E // code for System.Collections.HashHelpers:IsPrime(int):ubyte
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- ldr x1, [x1]
- blr x1
- ; gcr arg pop 0
- cbz w0, G_M22313_IG08
- sub w0, w20, #1
- movz w1, #0xD1FFAB1E
- movk w1, #0xD1FFAB1E LSL #16
- smull x1, w1, w0
- asr x1, x1, #32
- asr w2, w1, #4
- add w1, w2, w1, LSR #31
- mov w2, #101
- msub w0, w1, w2, w0
- cbnz w0, G_M22313_IG11
- ;; size=68 bbWeight=0 PerfScore 0.00
-G_M22313_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add w20, w20, #2
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M22313_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movn w0, #0xD1FFAB1E LSL #16
- cmp w20, w0
- blt G_M22313_IG07
- mov w0, w19
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M22313_IG10: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M22313_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, w20
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M22313_IG12: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ brk_unix #0
+ ;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 276, prolog size 16, PerfScore 121.00, instruction count 69, allocated bytes for code 276 (MethodHash=5705a8d6) for method System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
+; Total bytes of code 288, prolog size 16, PerfScore 585.07, instruction count 72, allocated bytes for code 288 (MethodHash=5705a8d6) for method System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -146,7 +157,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 69 (0x00045) Actual length = 276 (0x000114)
+ 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)
+16 (+5.56%) : 296042.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
@@ -2,36 +2,39 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Unknown PGO
; fp based frame
; fully interruptible
+; with Unknown PGO: edge weights are invalid, and fgCalledCount is 1
; No matching PGO data
; 0 inlinees with PGO data; 14 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T09] ( 5, 2.83) long -> x0 single-def
-; V01 arg1 [V01,T05] ( 6, 15.64) long -> x19 single-def
-; V02 arg2 [V02,T08] ( 3, 3 ) long -> x2 single-def
-; V03 loc0 [V03,T02] ( 18, 51.36) long -> x20
-; V04 loc1 [V04,T06] ( 14, 11.73) int -> x21
+; V00 arg0 [V00,T04] ( 5, 21.52) long -> x0 single-def
+; V01 arg1 [V01,T05] ( 6, 19.60) long -> x19 single-def
+; V02 arg2 [V02,T07] ( 3, 3 ) long -> x2 single-def
+; V03 loc0 [V03,T02] ( 18, 91.25) long -> x20
+; V04 loc1 [V04,T08] ( 14, 4.44) int -> x21
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref
-; V06 loc3 [V06,T04] ( 6, 18.08) long -> x3
-; V07 loc4 [V07,T10] ( 5, 2.64) long -> x2
-; V08 loc5 [V08,T07] ( 2, 8.41) long -> x1
+; V06 loc3 [V06,T03] ( 6, 72.07) long -> x3
+; V07 loc4 [V07,T09] ( 5, 3.54) long -> x2
+; V08 loc5 [V08,T06] ( 2, 17.38) long -> x1
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp2 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V12 tmp3 [V12,T00] ( 6,100.29) long -> x3 "Inlining Arg"
-; V13 tmp4 [V13,T01] ( 5, 83.57) byref -> x4 "Inlining Arg"
+; V12 tmp3 [V12,T00] ( 6,203.21) long -> x3 "Inlining Arg"
+; V13 tmp4 [V13,T01] ( 5,169.35) byref -> x4 "Inlining Arg"
;* V14 tmp5 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp6 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V16 tmp7 [V16,T03] ( 3, 30.76) byref -> x1 single-def "Inlining Arg"
+; V16 tmp7 [V16,T11] ( 3, 1.01) byref -> x1 single-def "Inlining Arg"
;* V17 tmp8 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp9 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V19 tmp10 [V19,T11] ( 3, 0.93) byref -> x0 "Inlining Arg"
+; V19 tmp10 [V19,T10] ( 3, 1.17) byref -> x0 "Inlining Arg"
;* V20 tmp11 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp12 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp14 [V23,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V24 cse0 [V24,T13] ( 2, 0.85) ref -> x1 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -45,18 +48,24 @@ G_M6063_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M6063_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov x20, xzr
cmp x2, #4
- blo G_M6063_IG06
+ bhs G_M6063_IG05
;; size=12 bbWeight=1 PerfScore 2.00
-G_M6063_IG03: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6063_IG03: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ tbz w2, #1, G_M6063_IG13
+ ;; size=4 bbWeight=0.62 PerfScore 0.62
+G_M6063_IG04: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b G_M6063_IG09
+ ;; size=4 bbWeight=0.32 PerfScore 0.32
+G_M6063_IG05: ; bbWeight=0.45, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub x1, x2, #4
- ;; size=4 bbWeight=0.05 PerfScore 0.03
-G_M6063_IG04: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.45 PerfScore 0.22
+G_M6063_IG06: ; bbWeight=18.82, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lsl x3, x20, #1
ldr x3, [x0, x3]
tst x3, #0xD1FFAB1E
- bne G_M6063_IG12
- ;; size=16 bbWeight=0.51 PerfScore 2.79
-G_M6063_IG05: ; bbWeight=8.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ bne G_M6063_IG18
+ ;; size=16 bbWeight=18.82 PerfScore 103.49
+G_M6063_IG07: ; bbWeight=16.93, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add x4, x19, x20
strb w3, [x4]
lsr x3, x3, #16
@@ -67,52 +76,44 @@ G_M6063_IG05: ; bbWeight=8.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
strb w3, [x4, #0x03]
add x20, x20, #4
cmp x20, x1
- bls G_M6063_IG04
- ;; size=44 bbWeight=8.36 PerfScore 79.39
-G_M6063_IG06: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- tbz w2, #1, G_M6063_IG09
- ;; size=4 bbWeight=0.07 PerfScore 0.07
-G_M6063_IG07: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ bls G_M6063_IG06
+ ;; size=44 bbWeight=16.93 PerfScore 160.88
+G_M6063_IG08: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b G_M6063_IG03
+ ;; size=4 bbWeight=0.62 PerfScore 0.62
+G_M6063_IG09: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lsl x1, x20, #1
ldr w21, [x0, x1]
tst w21, #0xD1FFAB1E
- bne G_M6063_IG14
- ;; size=16 bbWeight=0.32 PerfScore 1.75
-G_M6063_IG08: ; bbWeight=5.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ beq G_M6063_IG12
+ ;; size=16 bbWeight=0.32 PerfScore 1.79
+G_M6063_IG10: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ tst w21, #0xD1FFAB1E
+ bne G_M6063_IG17
+ ;; size=8 bbWeight=0.53 PerfScore 0.80
+G_M6063_IG11: ; bbWeight=0.43, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b G_M6063_IG16
+ ;; size=4 bbWeight=0.43 PerfScore 0.43
+G_M6063_IG12: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x1, x19, x20
strb w21, [x1]
lsr w3, w21, #16
strb w3, [x1, #0x01]
add x20, x20, #2
- ;; size=20 bbWeight=5.13 PerfScore 20.51
-G_M6063_IG09: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- tbnz w2, #0, G_M6063_IG16
- ;; size=4 bbWeight=0.52 PerfScore 0.52
-G_M6063_IG10: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=20 bbWeight=0.17 PerfScore 0.68
+G_M6063_IG13: ; bbWeight=0.47, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ tbnz w2, #0, G_M6063_IG20
+ ;; size=4 bbWeight=0.47 PerfScore 0.47
+G_M6063_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov x0, x20
- ;; size=4 bbWeight=0.26 PerfScore 0.13
-G_M6063_IG11: ; bbWeight=0.26, epilog, nogc, extend
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M6063_IG15: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=0.26 PerfScore 1.31
-G_M6063_IG12: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- sxtw w21, w3
- tst w21, #0xD1FFAB1E
- bne G_M6063_IG14
- ;; size=12 bbWeight=0.19 PerfScore 0.38
-G_M6063_IG13: ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x0, x19, x20
- strb w21, [x0]
- lsr w1, w21, #16
- strb w1, [x0, #0x01]
- lsr x21, x3, #32
- add x20, x20, #2
- ;; size=24 bbWeight=0.15 PerfScore 0.77
-G_M6063_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- tst w21, #0xD1FFAB1E
- bne G_M6063_IG15
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M6063_IG16: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -125,25 +126,39 @@ G_M6063_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr x2, [x2]
blr x2
; gcr arg pop 0
- ;; size=52 bbWeight=0 PerfScore 0.00
-G_M6063_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=44 bbWeight=0.43 PerfScore 3.61
+G_M6063_IG17: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
tst w21, #0xD1FFAB1E
- beq G_M6063_IG17
+ bne G_M6063_IG14
+ b G_M6063_IG21
+ ;; size=12 bbWeight=0.53 PerfScore 1.33
+G_M6063_IG18: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ sxtw w21, w3
+ tst w21, #0xD1FFAB1E
+ bne G_M6063_IG10
+ ;; size=12 bbWeight=0.38 PerfScore 0.75
+G_M6063_IG19: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add x0, x19, x20
+ strb w21, [x0]
+ lsr w1, w21, #16
+ strb w1, [x0, #0x01]
+ lsr x21, x3, #32
+ add x20, x20, #2
b G_M6063_IG10
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M6063_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- lsl x1, x20, #1
- ldrh w21, [x0, x1]
+ ;; size=28 bbWeight=0.20 PerfScore 1.17
+G_M6063_IG20: ; bbWeight=0.37, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ lsl x2, x20, #1
+ ldrh w21, [x0, x2]
cmp w21, #127
- bhi G_M6063_IG10
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M6063_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bhi G_M6063_IG14
+ ;; size=16 bbWeight=0.37 PerfScore 2.06
+G_M6063_IG21: ; bbWeight=0.30, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
strb w21, [x19, x20]
add x20, x20, #1
- b G_M6063_IG10
- ;; size=12 bbWeight=0 PerfScore 0.00
+ b G_M6063_IG14
+ ;; size=12 bbWeight=0.30 PerfScore 0.75
-; Total bytes of code 288, prolog size 20, PerfScore 113.65, instruction count 72, allocated bytes for code 288 (MethodHash=53fae850) for method System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
+; Total bytes of code 304, prolog size 20, PerfScore 291.49, instruction count 76, allocated bytes for code 304 (MethodHash=53fae850) for method System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
; ============================================================
Unwind Info:
@@ -154,7 +169,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 72 (0x00048) Actual length = 288 (0x000120)
+ Function Length : 76 (0x0004c) Actual length = 304 (0x000130)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+32 (+5.59%) : 296094.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (FullOpts)
@@ -2,39 +2,45 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Unknown PGO
; fp based frame
; fully interruptible
+; with Unknown PGO: edge weights are invalid, and fgCalledCount is 3
; No matching PGO data
-; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 5 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 11, 3 ) ref -> x19 class-hnd single-def <System.Reflection.MethodBase>
-; V01 arg1 [V01,T02] ( 4, 2.29) int -> x21 single-def
-; V02 arg2 [V02,T01] ( 9, 2.43) int -> x20
-; V03 arg3 [V03,T04] ( 6, 2 ) int -> x23 single-def
-; V04 arg4 [V04,T03] ( 9, 2 ) ref -> x22 class-hnd single-def <System.Type[]>
+; V00 arg0 [V00,T05] ( 11, 5.22) ref -> x20 class-hnd single-def <System.Reflection.MethodBase>
+; V01 arg1 [V01,T06] ( 4, 4.00) int -> x21 single-def
+; V02 arg2 [V02,T04] ( 9, 5.91) int -> x19
+; V03 arg3 [V03,T08] ( 6, 3.65) int -> x23 single-def
+; V04 arg4 [V04,T07] ( 8, 3.83) ref -> x22 class-hnd single-def <System.Type[]>
;* V05 loc0 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
;* V06 loc1 [V06,T14] ( 0, 0 ) ubyte -> zero-ref
;* V07 loc2 [V07 ] ( 0, 0 ) ubyte -> zero-ref
;* V08 loc3 [V08 ] ( 0, 0 ) ubyte -> zero-ref
-; V09 loc4 [V09,T08] ( 5, 0 ) ref -> x20 class-hnd single-def <System.Reflection.ParameterInfo>
-; V10 loc5 [V10,T07] ( 7, 0 ) int -> x19
-; V11 loc6 [V11,T10] ( 3, 0 ) ref -> x0 class-hnd <System.Type>
+; V09 loc4 [V09,T13] ( 4, 0.46) ref -> x21 class-hnd single-def <System.Reflection.ParameterInfo>
+; V10 loc5 [V10,T00] ( 6, 39.53) int -> x19
+; V11 loc6 [V11,T01] ( 3, 19.36) ref -> x0 class-hnd <System.Type>
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V13 tmp1 [V13 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-; V14 tmp2 [V14,T13] ( 3, 0 ) int -> x0 "Span.get_Item index"
-; V15 tmp3 [V15,T15] ( 2, 0 ) int -> x0 "Span.get_Item index"
+; V14 tmp2 [V14,T17] ( 3, 0.33) int -> x0 "Span.get_Item index"
+; V15 tmp3 [V15,T12] ( 2, 0.49) int -> x0 "Span.get_Item index"
;* V16 tmp4 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V17 tmp5 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V18 tmp6 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.ParameterInfo>
-;* V19 tmp7 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
-; V20 tmp8 [V20,T09] ( 4, 0 ) byref -> x21 "field V05._reference (fldOffset=0x0)" P-INDEP
-; V21 tmp9 [V21,T06] ( 8, 0 ) int -> x24 "field V05._length (fldOffset=0x8)" P-INDEP
-;* V22 tmp10 [V22 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-DEP
-;* V23 tmp11 [V23 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-DEP
-; V24 tmp12 [V24,T11] ( 3, 0 ) ref -> x0 single-def "argument with side effect"
-; V25 tmp13 [V25,T12] ( 3, 0 ) ref -> x0 single-def "argument with side effect"
-; V26 cse0 [V26,T05] ( 3, 0.00) ref -> x1 "CSE - conservative"
+;* V18 tmp6 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V19 tmp7 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V20 tmp8 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.ParameterInfo>
+;* V21 tmp9 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
+; V22 tmp10 [V22,T09] ( 4, 2.98) byref -> x21 "field V05._reference (fldOffset=0x0)" P-INDEP
+; V23 tmp11 [V23,T02] ( 9, 11.61) int -> x24 "field V05._length (fldOffset=0x8)" P-INDEP
+;* V24 tmp12 [V24 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-DEP
+;* V25 tmp13 [V25 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-DEP
+; V26 tmp14 [V26,T16] ( 3, 0.33) ref -> x0 single-def "argument with side effect"
+; V27 tmp15 [V27,T11] ( 3, 0.73) ref -> x0 single-def "argument with side effect"
+; V28 cse0 [V28,T15] ( 3, 0.34) long -> x24 "CSE - conservative"
+; V29 cse1 [V29,T03] ( 2, 8.66) byref -> x22 hoist "CSE - aggressive"
+; V30 cse2 [V30,T10] ( 6, 2.54) ref -> x1 multi-def "CSE - moderate"
;
; Lcl frame size = 0
@@ -44,36 +50,18 @@ G_M44091_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x21, x22, [sp, #0x20]
stp x23, x24, [sp, #0x30]
mov fp, sp
- mov x19, x0
- ; gcrRegs +[x19]
+ mov x20, x0
+ ; gcrRegs +[x20]
mov w21, w1
- mov w20, w2
+ mov w19, w2
mov w23, w3
mov x22, x4
; gcrRegs +[x22]
;; size=40 bbWeight=1 PerfScore 7.00
-G_M44091_IG02: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M44091_IG06
+G_M44091_IG02: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
+ cbnz x20, G_M44091_IG04
;; size=4 bbWeight=1 PerfScore 1.00
-G_M44091_IG03: ; bbWeight=0.14, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- eor w20, w20, #2
- and w0, w20, w21
- cmp w0, w21
- beq G_M44091_IG16
- ;; size=16 bbWeight=0.14 PerfScore 0.36
-G_M44091_IG04: ; bbWeight=8.14, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19 x22]
- mov w0, wzr
- ;; size=4 bbWeight=8.14 PerfScore 4.07
-G_M44091_IG05: ; bbWeight=8.14, 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=8.14 PerfScore 40.71
-G_M44091_IG06: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x19 x22]
+G_M44091_IG03: ; bbWeight=0.80, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -86,149 +74,24 @@ G_M44091_IG06: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=480
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- b G_M44091_IG03
- ;; size=40 bbWeight=0.00 PerfScore 0.01
-G_M44091_IG07: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz
- ; gcrRegs -[x19]
- ; byrRegs +[x21]
- tbz w20, #18, G_M44091_IG08
- ldr w0, [x22, #0x08]
- cmp w0, w24
- bhs G_M44091_IG15
- ldr x0, [x21, w0, UXTW #3]
- ; gcrRegs +[x0]
- ldr x1, [x0]
- ldr x1, [x1, #0x48]
- ldr x1, [x1, #0x20]
- blr x1
- ; gcrRegs -[x0]
- ; gcr arg pop 0
- tbnz w0, #4, G_M44091_IG13
- ;; size=40 bbWeight=0 PerfScore 0.00
-G_M44091_IG08: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz
- cbz w24, G_M44091_IG04
- ldr w0, [x22, #0x08]
- sub w1, w24, #1
- cmp w0, w1
- blt G_M44091_IG04
- sub w0, w24, #1
- ldr x20, [x21, w0, UXTW #3]
- ; gcrRegs +[x20]
+ ;; size=36 bbWeight=0.80 PerfScore 6.00
+G_M44091_IG04: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
+ eor w19, w19, #2
+ and w0, w19, w21
+ cmp w0, w21
+ bne G_M44091_IG11
+ ;; size=16 bbWeight=1.00 PerfScore 2.50
+G_M44091_IG05: ; bbWeight=0.80, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
+ tst w23, #3
+ beq G_M44091_IG30
+ ;; size=8 bbWeight=0.80 PerfScore 1.20
+G_M44091_IG06: ; bbWeight=0.72, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
+ cbz x22, G_M44091_IG14
+ ;; size=4 bbWeight=0.72 PerfScore 0.72
+G_M44091_IG07: ; bbWeight=0.57, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
mov x0, x20
; gcrRegs +[x0]
ldr x1, [x20]
- ldr x1, [x1, #0x48]
- ldr x1, [x1, #0x38]
- blr x1
- ; gcrRegs -[x22]
- ; byrRegs -[x21]
- ; gcr arg pop 0
- ldr x1, [x0]
- ldr x1, [x1, #0x60]
- ldr x1, [x1, #0x10]
- blr x1
- ; gcrRegs -[x0]
- ; gcr arg pop 0
- cbz w0, G_M44091_IG04
- mov x0, x20
- ; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- mov w2, wzr
- ldr x3, [x20]
- ldr x3, [x3, #0x50]
- ldr x3, [x3, #0x20]
- blr x3
- ; gcrRegs -[x0 x20]
- ; gcr arg pop 0
- cbnz w0, G_M44091_IG13
- b G_M44091_IG04
- ;; size=112 bbWeight=0 PerfScore 0.00
-G_M44091_IG09: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz
- ; gcrRegs +[x22]
- ; byrRegs +[x21]
- tbz w20, #16, G_M44091_IG13
- tbnz w20, #8, G_M44091_IG13
- mov w19, wzr
- b G_M44091_IG12
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M44091_IG10: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz
- ldr w1, [x22, #0x08]
- cmp w19, w1
- bhs G_M44091_IG15
- add x1, x22, #16
- ; byrRegs +[x1]
- ldr x0, [x1, w19, UXTW #3]
- ; gcrRegs +[x0]
- cbz x0, G_M44091_IG11
- ldr x1, [x21, w19, UXTW #3]
- ; gcrRegs +[x1]
- ; byrRegs -[x1]
- movz x2, #0xD1FFAB1E // code for System.Reflection.SignatureTypeExtensions:MatchesParameterTypeExactly(System.Type,System.Reflection.ParameterInfo):ubyte
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x0-x1]
- ; gcr arg pop 0
- cbz w0, G_M44091_IG04
- ;; size=52 bbWeight=0 PerfScore 0.00
-G_M44091_IG11: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
- add w19, w19, #1
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M44091_IG12: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz
- cmp w19, w24
- blt G_M44091_IG10
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M44091_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x22]
- ; byrRegs -[x21]
- mov w0, #1
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M44091_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
- ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M44091_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_M44091_IG16: ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x19 x22]
- tst w23, #3
- bne G_M44091_IG18
- tbz w23, #1, G_M44091_IG17
- mov x0, x19
- ; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x60]
- ldr x1, [x1]
- blr x1
...
libraries_tests.run.osx.arm64.Release.mch
-12 (-4.48%) : 202664.dasm - System.Collections.Generic.SortedSet`1+TreeSubSet[int]:IsWithinRange(int):ubyte:this (Tier1)
@@ -14,19 +14,19 @@
;* 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,T05] ( 3, 3.94) ref -> x0 class-hnd single-def "spilling ret_expr" <System.Collections.Generic.IComparer`1[int]>
-; V05 tmp2 [V05,T06] ( 4, 2 ) int -> x3
+; V05 tmp2 [V05,T06] ( 2, 2 ) int -> x0
; V06 tmp3 [V06,T04] ( 3, 3.95) ref -> x0 class-hnd single-def "spilling ret_expr" <System.Collections.Generic.IComparer`1[int]>
-; V07 tmp4 [V07,T08] ( 3, 2 ) int -> x0
-; V08 tmp5 [V08,T07] ( 4, 2 ) int -> x3 "guarded devirt return temp"
+; V07 tmp4 [V07,T07] ( 3, 2.00) int -> x0
+; V08 tmp5 [V08,T08] ( 3, 1.98) int -> x0 "guarded devirt return temp"
; V09 tmp6 [V09,T03] ( 4, 4.18) int -> x1 "guarded devirt arg temp"
;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Collections.Generic.GenericComparer`1[int]>
-; V11 tmp8 [V11,T10] ( 3, 1.97) int -> x0 "guarded devirt return temp"
+; V11 tmp8 [V11,T09] ( 3, 1.97) int -> x0 "guarded devirt return temp"
; V12 tmp9 [V12,T02] ( 4, 4.20) int -> x1 "guarded devirt arg temp"
;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Collections.Generic.GenericComparer`1[int]>
;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-; V15 tmp12 [V15,T09] ( 3, 1.98) int -> x3 "Inline return value spill temp"
+; V15 tmp12 [V15,T11] ( 3, 1.97) int -> x0 "Inline return value spill temp"
;* V16 tmp13 [V16 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-; V17 tmp14 [V17,T11] ( 3, 1.97) int -> x0 "Inline return value spill temp"
+; V17 tmp14 [V17,T10] ( 3, 1.97) int -> x0 "Inline return value spill temp"
;
; Lcl frame size = 0
@@ -40,7 +40,7 @@ G_M7586_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=20 bbWeight=1 PerfScore 3.50
G_M7586_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x3C]
- cbz w0, G_M7586_IG07
+ cbz w0, G_M7586_IG06
;; size=8 bbWeight=1 PerfScore 4.00
G_M7586_IG03: ; bbWeight=0.98, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x10]
@@ -53,26 +53,21 @@ G_M7586_IG03: ; bbWeight=0.98, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
cmp x2, x11
bne G_M7586_IG16
cmp w1, w20
- bge G_M7586_IG05
+ bge G_M7586_IG12
;; size=40 bbWeight=0.98 PerfScore 13.29
G_M7586_IG04: ; bbWeight=0.86, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- movn w3, #0
- b G_M7586_IG06
- ;; size=8 bbWeight=0.86 PerfScore 1.29
-G_M7586_IG05: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- cmp w1, w20
- cset x3, gt
- ;; size=8 bbWeight=0.12 PerfScore 0.12
-G_M7586_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cmp w3, #0
- bgt G_M7586_IG17
+ movn w0, #0
+ ;; size=4 bbWeight=0.86 PerfScore 0.43
+G_M7586_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ cmp w0, #0
+ bgt G_M7586_IG14
;; size=8 bbWeight=1 PerfScore 1.50
-G_M7586_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M7586_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x3D]
- cbz w0, G_M7586_IG10
+ cbz w0, G_M7586_IG13
;; size=8 bbWeight=1 PerfScore 4.00
-G_M7586_IG08: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M7586_IG07: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
ldr w1, [x19, #0x34]
@@ -81,47 +76,48 @@ G_M7586_IG08: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
movk x11, #0xD1FFAB1E LSL #16
movk x11, #2 LSL #32
cmp x2, x11
- bne G_M7586_IG15
+ bne G_M7586_IG17
cmp w1, w20
- bge G_M7586_IG13
+ bge G_M7586_IG11
;; size=40 bbWeight=0.99 PerfScore 13.33
-G_M7586_IG09: ; bbWeight=0.86, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M7586_IG08: ; bbWeight=0.86, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19]
movn w0, #0
- b G_M7586_IG14
- ;; size=8 bbWeight=0.86 PerfScore 1.30
-G_M7586_IG10: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov w0, #1
- b G_M7586_IG11
- ;; size=8 bbWeight=0.01 PerfScore 0.02
-G_M7586_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=0.86 PerfScore 0.43
+G_M7586_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
cmp w0, #0
cset x0, ge
;; size=8 bbWeight=1 PerfScore 1.00
-G_M7586_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M7586_IG10: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M7586_IG13: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M7586_IG11: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
cmp w1, w20
cset x0, gt
- ;; size=8 bbWeight=0.12 PerfScore 0.12
-G_M7586_IG14: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M7586_IG11
- ;; size=4 bbWeight=0.99 PerfScore 0.99
-G_M7586_IG15: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0]
- mov w2, w20
- movz x11, #0xD1FFAB1E // code for <unknown method>
- movk x11, #0xD1FFAB1E LSL #16
- movk x11, #2 LSL #32
- ldr x3, [x11]
- blr x3
- ; gcrRegs -[x0]
- b G_M7586_IG11
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M7586_IG16: ; bbWeight=0, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ b G_M7586_IG09
+ ;; size=12 bbWeight=0.12 PerfScore 0.25
+G_M7586_IG12: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x19]
+ cmp w1, w20
+ cset x0, gt
+ b G_M7586_IG05
+ ;; size=12 bbWeight=0.12 PerfScore 0.25
+G_M7586_IG13: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19]
+ mov w0, #1
+ b G_M7586_IG09
+ ;; size=8 bbWeight=0.01 PerfScore 0.02
+G_M7586_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M7586_IG15: ; bbWeight=0, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M7586_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0 x19]
mov w2, w20
movz x11, #0xD1FFAB1E // code for <unknown method>
@@ -130,21 +126,21 @@ G_M7586_IG16: ; bbWeight=0, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {},
ldr x3, [x11]
blr x3
; gcrRegs -[x0]
- sxtw w3, w0
- cmp w3, #0
- ble G_M7586_IG07
- ;; size=36 bbWeight=0 PerfScore 0.00
-G_M7586_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- mov w0, wzr
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M7586_IG18: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ b G_M7586_IG05
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M7586_IG17: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19] +[x0]
+ mov w2, w20
+ movz x11, #0xD1FFAB1E // code for <unknown method>
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #2 LSL #32
+ ldr x3, [x11]
+ blr x3
+ ; gcrRegs -[x0]
+ b G_M7586_IG09
+ ;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 268, prolog size 12, PerfScore 47.46, instruction count 67, allocated bytes for code 268 (MethodHash=4918e25d) for method System.Collections.Generic.SortedSet`1+TreeSubSet[int]:IsWithinRange(int):ubyte:this (Tier1)
+; Total bytes of code 256, prolog size 12, PerfScore 44.99, instruction count 64, allocated bytes for code 256 (MethodHash=4918e25d) for method System.Collections.Generic.SortedSet`1+TreeSubSet[int]:IsWithinRange(int):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -155,7 +151,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 67 (0x00043) Actual length = 268 (0x00010c)
+ Function Length : 64 (0x00040) Actual length = 256 (0x000100)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-36 (-4.11%) : 156202.dasm - Microsoft.CodeAnalysis.PEModule+d__85:MoveNext():ubyte:this (Tier1)
@@ -5,14 +5,14 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 88928
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 88928
; 9 inlinees with PGO data; 32 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 17, 12.62) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__85>
; V01 loc0 [V01,T27] ( 4, 2.01) ubyte -> x1
; V02 loc1 [V02,T18] ( 3, 3.00) int -> x1 single-def
-; V03 loc2 [V03,T09] ( 6, 5.59) ref -> x19 class-hnd exact single-def <Microsoft.CodeAnalysis.PEModule>
+; V03 loc2 [V03,T09] ( 6, 5.60) ref -> x19 class-hnd exact single-def <Microsoft.CodeAnalysis.PEModule>
;* V04 loc3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Reflection.Metadata.TypeDefinitionHandleCollection>
;* V05 loc4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Reflection.Metadata.TypeDefinitionHandle>
; V06 loc5 [V06 ] ( 12, 10.64) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.Metadata.TypeDefinition>
@@ -24,11 +24,11 @@
;* V12 tmp5 [V12 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V13 tmp6 [V13 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V14 tmp7 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinitionHandle>
-; V15 tmp8 [V15,T04] ( 4, 9.19) ref -> x22 class-hnd exact "Inlining Arg" <System.Reflection.Metadata.MetadataReader>
+; V15 tmp8 [V15,T04] ( 4, 9.19) ref -> x21 class-hnd exact "Inlining Arg" <System.Reflection.Metadata.MetadataReader>
;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinition>
; V17 tmp10 [V17,T12] ( 3, 3.06) int -> x1 "Inline return value spill temp"
;* V18 tmp11 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.TypeDefinitionHandle>
-; V19 tmp12 [V19,T15] ( 3, 3.05) int -> x22 "Inline return value spill temp"
+; V19 tmp12 [V19,T15] ( 3, 3.05) int -> x21 "Inline return value spill temp"
; V20 tmp13 [V20,T02] ( 4, 12.19) byref -> x1 "impAppendStmt"
;* V21 tmp14 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Reflection.Metadata.TypeDefinitionHandle>
;* V22 tmp15 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -48,9 +48,9 @@
; V36 tmp29 [V36,T22] ( 2, 2.01) int -> x2 "Inline stloc first use temp"
; V37 tmp30 [V37,T20] ( 3, 2.01) int -> x1 "Inline return value spill temp"
;* V38 tmp31 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V39 tmp32 [V39,T07] ( 5, 6.03) byref -> x22 "Inlining Arg"
-; V40 tmp33 [V40,T08] ( 5, 6.03) int -> x19 "Inlining Arg"
-; V41 tmp34 [V41,T19] ( 3, 2.35) int -> x23 "Inline stloc first use temp"
+; V39 tmp32 [V39,T07] ( 5, 6.03) byref -> x3 "Inlining Arg"
+; V40 tmp33 [V40,T08] ( 5, 6.03) int -> x2 "Inlining Arg"
+; V41 tmp34 [V41,T19] ( 3, 2.35) int -> x1 "Inline stloc first use temp"
;* V42 tmp35 [V42 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp"
;* V43 tmp36 [V43 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp"
;* V44 tmp37 [V44 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
@@ -61,18 +61,18 @@
;* V49 tmp42 [V49 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V50 tmp43 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinitionHandle>
;* V51 tmp44 [V51,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V52 tmp45 [V52,T01] ( 5, 12.27) byref -> x20 "Inlining Arg"
+; V52 tmp45 [V52,T01] ( 5, 12.27) byref -> x1 "Inlining Arg"
; V53 tmp46 [V53,T30] ( 2, 0.00) int -> x0 "field V04._lastRowId (fldOffset=0x0)" P-INDEP
;* V54 tmp47 [V54 ] ( 0, 0 ) int -> zero-ref "field V05._rowId (fldOffset=0x0)" P-INDEP
; V55 tmp48 [V55 ] ( 6, 4.06) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V06._reader (fldOffset=0x0)" P-DEP
; V56 tmp49 [V56 ] ( 7, 6.59) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V06._treatmentAndRowId (fldOffset=0x8)" P-DEP
-; V57 tmp50 [V57,T23] ( 2, 2.01) int -> x21 "field V08.TypeDef (fldOffset=0x0)" P-INDEP
+; V57 tmp50 [V57,T23] ( 2, 2.01) int -> x20 "field V08.TypeDef (fldOffset=0x0)" P-INDEP
; V58 tmp51 [V58,T24] ( 2, 2.01) int -> x1 "field V08.NamespaceHandle (fldOffset=0x4)" P-INDEP
;* V59 tmp52 [V59 ] ( 0, 0 ) int -> zero-ref "field V09._value (fldOffset=0x0)" P-INDEP
; V60 tmp53 [V60,T31] ( 2, 0.00) int -> x0 single-def "field V10._lastRowId (fldOffset=0x0)" P-INDEP
;* V61 tmp54 [V61,T32] ( 0, 0 ) int -> zero-ref single-def "field V10._currentRowId (fldOffset=0x4)" P-INDEP
-; V62 tmp55 [V62,T11] ( 4, 4.07) int -> x21 "field V14._rowId (fldOffset=0x0)" P-INDEP
-; V63 tmp56 [V63,T13] ( 2, 3.06) ref -> x22 "field V16._reader (fldOffset=0x0)" P-INDEP
+; V62 tmp55 [V62,T11] ( 4, 4.07) int -> x20 "field V14._rowId (fldOffset=0x0)" P-INDEP
+; V63 tmp56 [V63,T13] ( 2, 3.06) ref -> x21 "field V16._reader (fldOffset=0x0)" P-INDEP
; V64 tmp57 [V64,T14] ( 2, 3.06) int -> x1 "field V16._treatmentAndRowId (fldOffset=0x8)" P-INDEP
;* V65 tmp58 [V65 ] ( 0, 0 ) int -> zero-ref "field V18._rowId (fldOffset=0x0)" P-INDEP
;* V66 tmp59 [V66 ] ( 0, 0 ) int -> zero-ref "field V21._rowId (fldOffset=0x0)" P-INDEP
@@ -86,39 +86,162 @@
;* V74 tmp67 [V74 ] ( 0, 0 ) int -> zero-ref "field V48._rowId (fldOffset=0x0)" P-INDEP
; V75 tmp68 [V75,T34] ( 2, 0 ) int -> x2 "field V50._rowId (fldOffset=0x0)" P-INDEP
; V76 PSPSym [V76,T29] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
-; V77 cse0 [V77,T10] ( 3, 4.60) int -> x1 "CSE - aggressive"
+; V77 cse0 [V77,T10] ( 3, 4.60) int -> x2 "CSE - aggressive"
;
; Lcl frame size = 40
G_M11515_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]!
+ stp fp, lr, [sp, #-0x50]!
stp x19, x20, [sp, #0x38]
- stp x21, x22, [sp, #0x48]
- str x23, [sp, #0x58]
+ str x21, [sp, #0x48]
mov fp, sp
stp xzr, xzr, [fp, #0x20] // [V06 loc5], [V06 loc5+0x08]
- add x1, sp, #96
+ add x1, sp, #80
str x1, [fp, #0x30] // [V76 PSPSym]
str x0, [fp, #0x18] // [V00 this]
; GC ptr vars +{V00}
- ;; size=36 bbWeight=1 PerfScore 8.00
+ ;; size=32 bbWeight=1 PerfScore 7.00
G_M11515_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0]
ldr w1, [x0, #0x10]
ldr x19, [x0, #0x08]
; gcrRegs +[x19]
- cbz w1, G_M11515_IG05
+ cbz w1, G_M11515_IG14
;; size=12 bbWeight=1 PerfScore 7.00
G_M11515_IG03: ; bbWeight=1.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
cmp w1, #1
- bne G_M11515_IG28
+ bne G_M11515_IG18
;; size=8 bbWeight=1.00 PerfScore 1.50
G_M11515_IG04: ; bbWeight=1.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
movn w1, #2
str w1, [x0, #0x10]
- b G_M11515_IG07
- ;; size=12 bbWeight=1.00 PerfScore 2.51
-G_M11515_IG05: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=1.00 PerfScore 1.51
+G_M11515_IG05: ; bbWeight=1.53, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ add x1, x0, #36
+ ; byrRegs +[x1]
+ ldp w3, w2, [x1]
+ cmp w2, w3
+ bge G_M11515_IG15
+ add w2, w2, #1
+ str w2, [x1, #0x04]
+ ldr w1, [x0, #0x28]
+ ; byrRegs -[x1]
+ and w20, w1, #0xD1FFAB1E
+ ldr x1, [x19, #0x18]
+ ; gcrRegs +[x1]
+ cbz x1, G_M11515_IG16
+ ;; size=40 bbWeight=1.53 PerfScore 21.46
+G_M11515_IG06: ; bbWeight=1.53, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0-x1]
+ ldrb w1, [x19, #0x6C]
+ cbnz w1, G_M11515_IG21
+ ldr x21, [x19, #0x18]
+ ; gcrRegs +[x21]
+ ldr w1, [x21, #0x50]
+ cbnz w1, G_M11515_IG19
+ sxtw w1, w20
+ ;; size=24 bbWeight=1.53 PerfScore 17.61
+G_M11515_IG07: ; bbWeight=1.53, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+ str x21, [fp, #0x20] // [V55 tmp48]
+ str w1, [fp, #0x28] // [V56 tmp49]
+ ldr x0, [fp, #0x18] // [V00 this]
+ ; gcrRegs +[x0]
+ ldrb w1, [x0, #0x18]
+ cbz w1, G_M11515_IG10
+ ;; size=20 bbWeight=1.53 PerfScore 12.25
+G_M11515_IG08: ; bbWeight=1.52, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x21]
+ ldr w1, [fp, #0x28] // [V56 tmp49]
+ lsr w1, w1, #24
+ uxtb w1, w1
+ cbnz w1, G_M11515_IG20
+ ldr x1, [fp, #0x20] // [V55 tmp48]
+ ; gcrRegs +[x1]
+ add x1, x1, #0xD1FFAB1E
+ ; gcrRegs -[x1]
+ ; byrRegs +[x1]
+ ldr w2, [fp, #0x28] // [V56 tmp49]
+ and w2, w2, #0xD1FFAB1E
+ sub w2, w2, #1
+ ldr w3, [x1, #0x20]
+ mul w2, w2, w3
+ add x3, x1, #40
+ ; byrRegs +[x3]
+ ldr w1, [x1, #0x08]
+ ; byrRegs -[x1]
+ add w1, w2, w1
+ mov w2, w1
+ add x2, x2, #4
+ ldrsw x4, [x3, #0x08]
+ cmp x2, x4
+ bhi G_M11515_IG22
+ ldr x2, [x3]
+ sxtw x1, w1
+ ldr w21, [x2, x1]
+ ;; size=88 bbWeight=1.52 PerfScore 47.22
+G_M11515_IG09: ; bbWeight=1.52, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x3]
+ tst w21, #6
+ bne G_M11515_IG05
+ ;; size=8 bbWeight=1.52 PerfScore 2.28
+G_M11515_IG10: ; bbWeight=1.00, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x19]
+ ldr w1, [fp, #0x28] // [V56 tmp49]
+ lsr w1, w1, #24
+ uxtb w1, w1
+ cbnz w1, G_M11515_IG24
+ ldr x1, [fp, #0x20] // [V55 tmp48]
+ ; gcrRegs +[x1]
+ add x1, x1, #0xD1FFAB1E
+ ; gcrRegs -[x1]
+ ; byrRegs +[x1]
+ ldr w2, [fp, #0x28] // [V56 tmp49]
+ and w2, w2, #0xD1FFAB1E
+ sub w2, w2, #1
+ ldr w3, [x1, #0x20]
+ mul w2, w2, w3
+ add x3, x1, #40
+ ; byrRegs +[x3]
+ ldr w4, [x1, #0x10]
+ add w2, w2, w4
+ ldrb w1, [x1, #0x07]
+ ; byrRegs -[x1]
+ cbnz w1, G_M11515_IG13
+ ;; size=64 bbWeight=1.00 PerfScore 23.10
+G_M11515_IG11: ; bbWeight=0.78, gcrefRegs=0001 {x0}, byrefRegs=0008 {x3}, byref, isz
+ mov w1, w2
+ add x1, x1, #4
+ ldrsw x4, [x3, #0x08]
+ cmp x1, x4
+ bhi G_M11515_IG22
+ ldr x1, [x3]
+ sxtw x2, w2
+ ldr w1, [x1, x2]
+ tst w1, #0xD1FFAB1E
+ bne G_M11515_IG23
+ ;; size=40 bbWeight=0.78 PerfScore 10.56
+G_M11515_IG12: ; bbWeight=1.00, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x3]
+ stp w20, w1, [x0, #0x1C]
+ mov w1, #1
+ str w1, [x0, #0x10]
+ b G_M11515_IG25
+ ;; size=16 bbWeight=1.00 PerfScore 3.52
+G_M11515_IG13: ; bbWeight=0.22, gcrefRegs=0001 {x0}, byrefRegs=0008 {x3}, byref, isz
+ ; byrRegs +[x3]
+ mov w1, w2
+ add x1, x1, #2
+ ldrsw x4, [x3, #0x08]
+ cmp x1, x4
+ bhi G_M11515_IG22
+ ldr x3, [x3]
+ ; byrRegs -[x3]
+ sxtw x2, w2
+ ldrh w1, [x3, x2]
+ b G_M11515_IG12
+ ;; size=36 bbWeight=0.22 PerfScore 2.88
+G_M11515_IG14: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x19]
movn w1, #0
str w1, [x0, #0x10]
mov x0, x19
@@ -143,117 +266,16 @@ G_M11515_IG05: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
; gcrRegs +[x0]
b G_M11515_IG04
;; size=72 bbWeight=0.00 PerfScore 0.04
-G_M11515_IG06: ; bbWeight=1.52, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x20]
- tst w22, #6
- beq G_M11515_IG14
- ;; size=8 bbWeight=1.52 PerfScore 2.28
...
-16 (-3.77%) : 350433.dasm - System.Collections.Generic.Dictionary2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer
1[System.__Canon]):this (Tier1)
@@ -16,41 +16,40 @@
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
; V06 tmp2 [V06,T07] ( 4, 3.32) ref -> x15
-; V07 tmp3 [V07,T05] ( 3, 3.99) long -> x0 "spilling helperCall"
+; V07 tmp3 [V07,T05] ( 3, 3.99) long -> x1 "spilling helperCall"
;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 tmp5 [V09,T08] ( 5, 2.99) ref -> x22 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
-; V10 tmp6 [V10,T02] ( 4, 5.85) ref -> x20 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V09 tmp5 [V09,T08] ( 6, 2.99) ref -> x22 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
+; V10 tmp6 [V10,T02] ( 4, 5.85) ref -> x1 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V11 cse0 [V11,T06] ( 6, 3.83) long -> x0 multi-def "CSE - aggressive"
; V12 cse1 [V12,T09] ( 5, 2.99) long -> x21 "CSE - aggressive"
-; V13 cse2 [V13,T12] ( 3, 1.40) long -> x23 "CSE - moderate"
+; V13 cse2 [V13,T12] ( 3, 1.40) long -> x2 "CSE - moderate"
; V14 rat0 [V14,T11] ( 3, 1.40) long -> x0 "Spilling to split statement for tree"
; V15 rat1 [V15,T13] ( 3, 1.27) long -> x1 "runtime lookup"
; V16 rat2 [V16,T10] ( 3, 1.78) long -> x1 "fgMakeTemp is creating a new local variable"
-; V17 rat3 [V17,T03] ( 3, 5.59) long -> x23 "fgMakeTemp is creating a new local variable"
+; V17 rat3 [V17,T03] ( 3, 5.59) long -> x1 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M21827_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 x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
mov fp, sp
- str x0, [fp, #0x10]
+ str x0, [fp, #0x18]
mov x19, x0
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=32 bbWeight=1 PerfScore 6.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M21827_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w1, #31, G_M21827_IG20
+ tbnz w1, #31, G_M21827_IG19
cmp w1, #0
- bgt G_M21827_IG21
+ bgt G_M21827_IG20
;; size=12 bbWeight=1 PerfScore 2.50
G_M21827_IG03: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x15, x20
; gcrRegs +[x15]
- cbz x15, G_M21827_IG07
+ cbz x15, G_M21827_IG10
;; size=8 bbWeight=1 PerfScore 1.50
G_M21827_IG04: ; bbWeight=1, gcrefRegs=88000 {x15 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20]
@@ -67,44 +66,55 @@ G_M21827_IG04: ; bbWeight=1, gcrefRegs=88000 {x15 x19}, byrefRegs=0000 {}
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
cmp x1, x2
- bne G_M21827_IG19
+ bne G_M21827_IG18
;; size=44 bbWeight=1 PerfScore 16.50
G_M21827_IG05: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x20, [x19, #0x18]
- ; gcrRegs +[x20]
+ ldr x1, [x19, #0x18]
+ ; gcrRegs +[x1]
movz x21, #0xD1FFAB1E
movk x21, #0xD1FFAB1E LSL #16
movk x21, #2 LSL #32
- ldr x1, [x21, #0xD1FFAB1E]
- ; gcrRegs +[x1]
- cmp x20, x1
- bne G_M21827_IG14
+ ldr x2, [x21, #0xD1FFAB1E]
+ ; gcrRegs +[x2]
+ cmp x1, x2
+ bne G_M21827_IG17
;; size=28 bbWeight=1.00 PerfScore 8.98
G_M21827_IG06: ; bbWeight=0.53, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x1-x2]
ldr x22, [x21]
; gcrRegs +[x22]
- b G_M21827_IG12
- ;; size=8 bbWeight=0.53 PerfScore 2.13
-G_M21827_IG07: ; bbWeight=0.32, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.53 PerfScore 1.60
+G_M21827_IG07: ; bbWeight=0.53, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ cbz x22, G_M21827_IG18
+ ;; size=4 bbWeight=0.53 PerfScore 0.53
+G_M21827_IG08: ; bbWeight=1.00, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [x0, #0x38]
+ ldr x1, [x1]
+ ldr x1, [x1, #0x60]
+ cbz x1, G_M21827_IG14
+ ;; size=16 bbWeight=1.00 PerfScore 9.98
+G_M21827_IG09: ; bbWeight=0.80, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+ b G_M21827_IG15
+ ;; size=4 bbWeight=0.80 PerfScore 0.80
+G_M21827_IG10: ; bbWeight=0.32, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22]
ldr x0, [x19]
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x1, [x1, #0x68]
- cbz x1, G_M21827_IG09
+ cbz x1, G_M21827_IG12
;; size=20 bbWeight=0.32 PerfScore 4.13
-G_M21827_IG08: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- b G_M21827_IG10
+G_M21827_IG11: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M21827_IG13
;; size=4 bbWeight=0.25 PerfScore 0.25
-G_M21827_IG09: ; bbWeight=0.06, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21827_IG12: ; bbWeight=0.06, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov x1, x0
;; size=20 bbWeight=0.06 PerfScore 0.19
-G_M21827_IG10: ; bbWeight=0.32, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21827_IG13: ; bbWeight=0.32, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x1
movz x1, #0xD1FFAB1E // code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
movk x1, #0xD1FFAB1E LSL #16
@@ -116,50 +126,16 @@ G_M21827_IG10: ; bbWeight=0.32, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs +[x15]
b G_M21827_IG04
;; size=32 bbWeight=0.32 PerfScore 2.38
-G_M21827_IG11: ; bbWeight=0.47, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x15] +[x20]
- ldr x1, [x23, #0x08]
- ; gcrRegs +[x1]
- ldr x2, [x21, #0x10]
- ; gcrRegs +[x2]
- cmp x20, x1
- csel x22, xzr, x2, ne
- ; gcrRegs +[x22]
- ;; size=16 bbWeight=0.47 PerfScore 3.26
-G_M21827_IG12: ; bbWeight=1.00, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x1-x2 x20]
- cbz x22, G_M21827_IG19
- ldr x1, [x0, #0x38]
- ldr x1, [x1]
- ldr x23, [x1, #0x60]
- cbz x23, G_M21827_IG16
- ;; size=20 bbWeight=1.00 PerfScore 10.98
-G_M21827_IG13: ; bbWeight=0.04, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
- b G_M21827_IG15
- ;; size=4 bbWeight=0.04 PerfScore 0.04
-G_M21827_IG14: ; bbWeight=0.47, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x22] +[x20]
- movz x23, #0xD1FFAB1E
- movk x23, #0xD1FFAB1E LSL #16
- movk x23, #2 LSL #32
- ldr x1, [x23]
- ; gcrRegs +[x1]
- cmp x20, x1
- beq G_M21827_IG22
- b G_M21827_IG11
- ;; size=28 bbWeight=0.47 PerfScore 3.26
-G_M21827_IG15: ; bbWeight=0.80, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1 x20] +[x22]
- mov x0, x23
- b G_M21827_IG17
- ;; size=8 bbWeight=0.80 PerfScore 1.20
-G_M21827_IG16: ; bbWeight=0.20, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M21827_IG14: ; bbWeight=0.20, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x15] +[x22]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ;; size=16 bbWeight=0.20 PerfScore 0.50
-G_M21827_IG17: ; bbWeight=1.00, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+ mov x1, x0
+ ;; size=20 bbWeight=0.20 PerfScore 0.60
+G_M21827_IG15: ; bbWeight=1.00, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+ mov x0, x1
mov x1, x22
; gcrRegs +[x1]
bl CORINFO_HELP_CHKCASTANY
@@ -171,22 +147,38 @@ G_M21827_IG17: ; bbWeight=1.00, gcrefRegs=480000 {x19 x22}, byrefRegs=000
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ;; size=20 bbWeight=1.00 PerfScore 3.49
-G_M21827_IG18: ; bbWeight=1.00, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
+ ;; size=24 bbWeight=1.00 PerfScore 3.99
+G_M21827_IG16: ; bbWeight=1.00, epilog, nogc, extend
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=20 bbWeight=1.00 PerfScore 5.99
-G_M21827_IG19: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
+ ;; size=16 bbWeight=1.00 PerfScore 3.99
+G_M21827_IG17: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x1]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #2 LSL #32
+ ldr x3, [x2]
+ ; gcrRegs +[x3]
+ cmp x1, x3
+ beq G_M21827_IG21
+ ldr x2, [x2, #0x08]
+ ; gcrRegs +[x2]
+ ldr x3, [x21, #0x10]
+ cmp x1, x2
+ csel x22, xzr, x3, ne
+ ; gcrRegs +[x22]
+ cbnz x22, G_M21827_IG08
+ ;; size=44 bbWeight=0.47 PerfScore 6.52
+G_M21827_IG18: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x1-x3 x22]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=20 bbWeight=0.00 PerfScore 0.01
-G_M21827_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=0.00 PerfScore 0.01
+G_M21827_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
mov w0, #22
movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
movk x1, #0xD1FFAB1E LSL #16
@@ -195,7 +187,7 @@ G_M21827_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
blr x1
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M21827_IG21: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M21827_IG20: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs +[x20]
mov x0, x19
; gcrRegs +[x0]
@@ -207,14 +199,14 @@ G_M21827_IG21: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs -[x0]
b G_M21827_IG03
;; size=28 bbWeight=0 PerfScore 0.00
-G_M21827_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21827_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
...
+8 (+1.11%) : 171130.dasm - System.Enum:CompareTo(System.Object):int:this (Tier1)
@@ -57,12 +57,12 @@ G_M10478_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=24 bbWeight=1 PerfScore 4.50
G_M10478_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cmp x20, x19
- beq G_M10478_IG41
- cbz x20, G_M10478_IG23
+ beq G_M10478_IG39
+ cbz x20, G_M10478_IG41
ldr x0, [x19]
ldr x1, [x20]
cmp x0, x1
- bne G_M10478_IG25
+ bne G_M10478_IG43
add x21, x19, #8
; byrRegs +[x21]
add x22, x20, #8
@@ -72,7 +72,7 @@ G_M10478_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs -[x20]
sub w0, w0, #2
cmp w0, #23
- bhi G_M10478_IG40
+ bhi G_M10478_IG38
mov w0, w0
adr x1, [@RWD00]
ldr w1, [x1, x0, LSL #2]
@@ -85,126 +85,227 @@ G_M10478_IG03: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=600000 {x21
ldrsb w0, [x21]
ldrsb w1, [x22]
sub w0, w0, w1
- b G_M10478_IG22
+ b G_M10478_IG11
;; size=16 bbWeight=0.12 PerfScore 0.94
G_M10478_IG04: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref
ldrb w0, [x21]
ldrb w1, [x22]
sub w0, w0, w1
- b G_M10478_IG22
+ b G_M10478_IG11
;; size=16 bbWeight=0.12 PerfScore 0.94
G_M10478_IG05: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref
ldrsh w0, [x21]
ldrsh w1, [x22]
sub w0, w0, w1
- b G_M10478_IG22
+ b G_M10478_IG11
;; size=16 bbWeight=0.12 PerfScore 0.94
G_M10478_IG06: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref
ldrh w0, [x21]
ldrh w1, [x22]
sub w0, w0, w1
- b G_M10478_IG22
+ b G_M10478_IG11
;; size=16 bbWeight=0.12 PerfScore 0.94
G_M10478_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref, isz
ldr w0, [x22]
ldr w1, [x21]
cmp w1, w0
- bge G_M10478_IG09
+ bge G_M10478_IG10
;; size=16 bbWeight=0.12 PerfScore 0.94
G_M10478_IG08: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x21-x22]
movn w0, #0
- b G_M10478_IG10
- ;; size=8 bbWeight=0.10 PerfScore 0.15
-G_M10478_IG09: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+ ;; size=4 bbWeight=0.10 PerfScore 0.05
+G_M10478_IG09: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b G_M10478_IG11
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M10478_IG10: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
; byrRegs +[x21]
ldr w1, [x21]
cmp w1, w0
cset x0, gt
- ;; size=12 bbWeight=0.02 PerfScore 0.10
-G_M10478_IG10: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x21]
- b G_M10478_IG22
- ;; size=4 bbWeight=0.12 PerfScore 0.12
-G_M10478_IG11: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref, isz
- ; byrRegs +[x21-x22]
- ldr w0, [x22]
- ldr w1, [x21]
- cmp w1, w0
- bhs G_M10478_IG13
- ;; size=16 bbWeight=0.12 PerfScore 0.94
-G_M10478_IG12: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x21-x22]
- movn w0, #0
- b G_M10478_IG14
- ;; size=8 bbWeight=0.10 PerfScore 0.15
-G_M10478_IG13: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
- ; byrRegs +[x21]
- ldr w1, [x21]
- cmp w1, w0
- cset x0, hi
- ;; size=12 bbWeight=0.03 PerfScore 0.11
-G_M10478_IG14: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x21]
- b G_M10478_IG22
- ;; size=4 bbWeight=0.12 PerfScore 0.12
-G_M10478_IG15: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref, isz
- ; byrRegs +[x21-x22]
- ldr x0, [x22]
- ldr x1, [x21]
- cmp x1, x0
- bge G_M10478_IG17
- ;; size=16 bbWeight=0.12 PerfScore 0.94
-G_M10478_IG16: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x21-x22]
- movn w0, #0
- b G_M10478_IG18
- ;; size=8 bbWeight=0.08 PerfScore 0.12
-G_M10478_IG17: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
- ; byrRegs +[x21]
- ldr x1, [x21]
- cmp x1, x0
- cset x0, gt
- ;; size=12 bbWeight=0.05 PerfScore 0.19
-G_M10478_IG18: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x21]
- b G_M10478_IG22
- ;; size=4 bbWeight=0.12 PerfScore 0.12
-G_M10478_IG19: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref, isz
- ; byrRegs +[x21-x22]
- ldr x0, [x22]
- ldr x1, [x21]
- cmp x1, x0
- bhs G_M10478_IG21
- ;; size=16 bbWeight=0.12 PerfScore 0.94
-G_M10478_IG20: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x21-x22]
- movn w0, #0
- b G_M10478_IG22
- ;; size=8 bbWeight=0.12 PerfScore 0.18
-G_M10478_IG21: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
- ; byrRegs +[x21]
- ldr x1, [x21]
- cmp x1, x0
- cset x0, hi
- ;; size=12 bbWeight=0.01 PerfScore 0.02
-G_M10478_IG22: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ b G_M10478_IG09
+ ;; size=16 bbWeight=0.02 PerfScore 0.12
+G_M10478_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x21]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 4.00
-G_M10478_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M10478_IG12: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, gcvars, byref, isz
+ ; byrRegs +[x21-x22]
+ ldr w0, [x22]
+ ldr w1, [x21]
+ cmp w1, w0
+ bhs G_M10478_IG22
+ ;; size=16 bbWeight=0.12 PerfScore 0.94
+G_M10478_IG13: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x21-x22]
+ movn w0, #0
+ ;; size=4 bbWeight=0.10 PerfScore 0.05
+G_M10478_IG14: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b G_M10478_IG11
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M10478_IG15: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref, isz
+ ; byrRegs +[x21-x22]
+ ldr x0, [x22]
+ ldr x1, [x21]
+ cmp x1, x0
+ bge G_M10478_IG21
+ ;; size=16 bbWeight=0.12 PerfScore 0.94
+G_M10478_IG16: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x21-x22]
+ movn w0, #0
+ ;; size=4 bbWeight=0.08 PerfScore 0.04
+G_M10478_IG17: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b G_M10478_IG11
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M10478_IG18: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref, isz
+ ; byrRegs +[x21-x22]
+ ldr x0, [x22]
+ ldr x1, [x21]
+ cmp x1, x0
+ bhs G_M10478_IG23
+ ;; size=16 bbWeight=0.12 PerfScore 0.94
+G_M10478_IG19: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x21-x22]
+ movn w0, #0
+ ;; size=4 bbWeight=0.12 PerfScore 0.06
+G_M10478_IG20: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b G_M10478_IG11
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M10478_IG21: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+ ; byrRegs +[x21]
+ ldr x1, [x21]
+ cmp x1, x0
+ cset x0, gt
+ b G_M10478_IG17
+ ;; size=16 bbWeight=0.05 PerfScore 0.24
+G_M10478_IG22: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+ ldr w1, [x21]
+ cmp w1, w0
+ cset x0, hi
+ b G_M10478_IG14
+ ;; size=16 bbWeight=0.03 PerfScore 0.14
+G_M10478_IG23: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+ ldr x1, [x21]
+ cmp x1, x0
+ cset x0, hi
+ b G_M10478_IG20
+ ;; size=16 bbWeight=0.01 PerfScore 0.03
+G_M10478_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref, isz
+ ; byrRegs +[x22]
+ ldr s16, [x22]
+ ldr s17, [x21]
+ fcmp s17, s16
+ bhs G_M10478_IG26
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M10478_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x21-x22]
+ movn w0, #0
+ b G_M10478_IG30
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M10478_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+ ; byrRegs +[x21]
+ ldr s17, [x21]
+ fcmp s17, s16
+ bgt G_M10478_IG29
+ ldr s17, [x21]
+ fcmp s17, s16
+ bne G_M10478_IG28
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M10478_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x21]
+ mov w0, wzr
+ b G_M10478_IG30
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M10478_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+ ; byrRegs +[x21]
+ ldr s17, [x21]
+ fcmp s17, s17
+ beq G_M10478_IG29
+ fcmp s16, s16
+ bne G_M10478_IG27
+ b G_M10478_IG25
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M10478_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
...
+16 (+1.22%) : 275767.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadSpan(System.Span1[ubyte],System.ArraySegment
1[ubyte]):int:this (Tier1)
@@ -5,11 +5,11 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 49576
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 49576
; 10 inlinees with PGO data; 16 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 35, 12.29) ref -> x19 this class-hnd single-def <System.IO.Strategies.BufferedFileStreamStrategy>
+; V00 this [V00,T00] ( 36, 12.29) ref -> x19 this class-hnd single-def <System.IO.Strategies.BufferedFileStreamStrategy>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
; V02 arg2 [V02,T09] ( 10, 2 ) struct (16) [fp+0x10] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.ArraySegment`1[ubyte]>
; V03 loc0 [V03,T21] ( 3, 1.00) ubyte -> x22
@@ -62,11 +62,11 @@
; V50 tmp43 [V50,T36] ( 3, 0 ) int -> x20 "Inlining Arg"
; V51 tmp44 [V51,T37] ( 2, 0 ) byref -> x21 single-def "Inlining Arg"
; V52 tmp45 [V52,T08] ( 5, 2.00) byref -> x21 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V53 tmp46 [V53,T04] ( 9, 5.02) int -> x20 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V53 tmp46 [V53,T04] ( 10, 5.02) int -> x20 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V54 tmp47 [V54 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V55 tmp48 [V55 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
; V56 tmp49 [V56,T16] ( 4, 2.01) byref -> x1 "field V09._reference (fldOffset=0x0)" P-INDEP
-; V57 tmp50 [V57,T11] ( 4, 3.01) int -> x3 "field V09._length (fldOffset=0x8)" P-INDEP
+; V57 tmp50 [V57,T11] ( 5, 3.01) int -> x3 "field V09._length (fldOffset=0x8)" P-INDEP
;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V59 tmp52 [V59 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
; V60 tmp53 [V60,T27] ( 3, 0.00) byref -> x1 "field V33._reference (fldOffset=0x0)" P-INDEP
@@ -78,7 +78,7 @@
; V66 tmp59 [V66,T31] ( 3, 0 ) ref -> x0 single-def "argument with side effect"
; V67 tmp60 [V67,T32] ( 3, 0 ) ref -> x0 single-def "argument with side effect"
; V68 tmp61 [V68,T33] ( 3, 0 ) ref -> x0 single-def "argument with side effect"
-; V69 cse0 [V69,T15] ( 3, 3.00) int -> x0 "CSE - moderate"
+; V69 cse0 [V69,T15] ( 3, 3.00) int -> x22 "CSE - moderate"
; V70 cse1 [V70,T12] ( 3, 3.01) byref -> x0 "CSE - aggressive"
; V71 cse2 [V71,T14] ( 3, 3.01) long -> x1 "CSE - aggressive"
;
@@ -100,19 +100,21 @@ G_M13056_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov w20, w2
;; size=44 bbWeight=1 PerfScore 9.00
G_M13056_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
- ldr w0, [x19, #0x30]
- cbz w0, G_M13056_IG11
+ ldr w22, [x19, #0x30]
+ cbz w22, G_M13056_IG12
;; size=8 bbWeight=1 PerfScore 4.00
G_M13056_IG03: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
- ldr w1, [x19, #0x2C]
- cbnz w1, G_M13056_IG04
- ldr w1, [x19, #0x34]
- cmp w0, w1
+ ldr w0, [x19, #0x2C]
+ cbnz w0, G_M13056_IG05
+ ;; size=8 bbWeight=1.00 PerfScore 4.02
+G_M13056_IG04: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+ ldr w0, [x19, #0x34]
+ cmp w22, w0
cset x0, le
tst w0, #255
- bne G_M13056_IG05
- ;; size=28 bbWeight=1.00 PerfScore 9.54
-G_M13056_IG04: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
+ bne G_M13056_IG06
+ ;; size=20 bbWeight=1.00 PerfScore 5.52
+G_M13056_IG05: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -125,45 +127,45 @@ G_M13056_IG04: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {
ldr x2, [x2]
blr x2
;; size=44 bbWeight=1.00 PerfScore 8.54
-G_M13056_IG05: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+G_M13056_IG06: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
mov w22, wzr
ldp w1, w0, [x19, #0x30]
sub w23, w0, w1
- cbz w23, G_M13056_IG09
+ cbz w23, G_M13056_IG10
;; size=16 bbWeight=1.00 PerfScore 5.02
-G_M13056_IG06: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+G_M13056_IG07: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
cmp w23, w20
csel w23, w23, w20, le
ldr x0, [x19, #0x20]
; gcrRegs +[x0]
ldr w24, [x19, #0x30]
- cbz x0, G_M13056_IG38
+ cbz x0, G_M13056_IG31
mov w1, w24
add x2, x1, w23, UXTW
ldr w3, [x0, #0x08]
cmp x2, x3
- bhi G_M13056_IG34
+ bhi G_M13056_IG39
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
add x1, x0, x1
; byrRegs +[x1]
sxtw w3, w23
- ;; size=52 bbWeight=1.00 PerfScore 15.57
-G_M13056_IG07: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200002 {x1 x21}, byref, isz
- ; byrRegs -[x0]
cmp w3, w20
- bhi G_M13056_IG27
+ bhi G_M13056_IG32
+ ;; size=60 bbWeight=1.00 PerfScore 17.08
+G_M13056_IG08: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200002 {x1 x21}, byref, isz
+ ; byrRegs -[x0]
mov w2, w3
cmp x2, #1
- bne G_M13056_IG26
- ;; size=20 bbWeight=1.00 PerfScore 3.52
-G_M13056_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=200002 {x1 x21}, byref
+ bne G_M13056_IG21
+ ;; size=12 bbWeight=1.00 PerfScore 2.01
+G_M13056_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=200002 {x1 x21}, byref
ldrb w0, [x1]
strb w0, [x21]
- b G_M13056_IG13
+ b G_M13056_IG14
;; size=12 bbWeight=0.50 PerfScore 2.51
-G_M13056_IG09: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+G_M13056_IG10: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
; byrRegs -[x1]
mov x0, x19
; gcrRegs +[x0]
@@ -175,9 +177,9 @@ G_M13056_IG09: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {
; gcrRegs -[x0]
ldr w0, [x19, #0x2C]
cmp w0, #0
- bgt G_M13056_IG39
+ bgt G_M13056_IG43
;; size=36 bbWeight=0.00 PerfScore 0.00
-G_M13056_IG10: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+G_M13056_IG11: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
ldr x0, [x19, #0x18]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -185,7 +187,7 @@ G_M13056_IG10: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
cmp x1, x2
- bne G_M13056_IG40
+ bne G_M13056_IG45
ldr x0, [x0, #0x18]
movz x1, #0xD1FFAB1E // code for Microsoft.Win32.SafeHandles.SafeFileHandle:get_CanSeek():ubyte:this
movk x1, #0xD1FFAB1E LSL #16
@@ -194,18 +196,18 @@ G_M13056_IG10: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {
ldr wzr, [x0]
blr x1
; gcrRegs -[x0]
- b G_M13056_IG20
+ b G_M13056_IG22
;; size=60 bbWeight=0.00 PerfScore 0.00
-G_M13056_IG11: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
- ldr w1, [x19, #0x34]
- cbnz w1, G_M13056_IG03
+G_M13056_IG12: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+ ldr w0, [x19, #0x34]
+ cbnz w0, G_M13056_IG03
;; size=8 bbWeight=0.25 PerfScore 1.00
-G_M13056_IG12: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
- ldr w1, [x19, #0x2C]
- tbnz w1, #31, G_M13056_IG03
- b G_M13056_IG05
+G_M13056_IG13: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+ ldr w0, [x19, #0x2C]
+ tbnz w0, #31, G_M13056_IG44
+ b G_M13056_IG06
;; size=12 bbWeight=0.00 PerfScore 0.00
-G_M13056_IG13: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+G_M13056_IG14: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
ldr w0, [x19, #0x30]
add w0, w0, w23
str w0, [x19, #0x30]
@@ -216,14 +218,14 @@ G_M13056_IG13: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
cmp x1, x2
- bne G_M13056_IG31
+ bne G_M13056_IG36
ldr x25, [x0, #0x18]
; gcrRegs +[x25]
add x0, x25, #24
; gcrRegs -[x0]
; byrRegs +[x0]
ldapr w1, [x0]
- tbnz w1, #0, G_M13056_IG30
+ tbnz w1, #0, G_M13056_IG35
ldapr w0, [x0]
; byrRegs -[x0]
mvn w0, w0
@@ -234,12 +236,12 @@ G_M13056_IG13: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {
ldr x1, [x1]
blr x1
ldr x0, [x25, #0x10]
- tbnz x0, #63, G_M13056_IG28
+ tbnz x0, #63, G_M13056_IG33
mov x1, #0xD1FFAB1E
cmp x0, x1
cset x26, gt
;; size=108 bbWeight=1.00 PerfScore 36.16
-G_M13056_IG14: ; bbWeight=1.00, gcrefRegs=2080000 {x19 x25}, byrefRegs=200000 {x21}, byref, isz
+G_M13056_IG15: ; bbWeight=1.00, gcrefRegs=2080000 {x19 x25}, byrefRegs=200000 {x21}, byref, isz
cmp w26, #0
cset x0, eq
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -248,26 +250,26 @@ G_M13056_IG14: ; bbWeight=1.00, gcrefRegs=2080000 {x19 x25}, byrefRegs=20
ldr x1, [x1]
blr x1
ldapur w27, [x25, #0x30]
- cbz w27, G_M13056_IG29
+ cbz w27, G_M13056_IG34
;; size=36 bbWeight=1.00 PerfScore 10.55
-G_M13056_IG15: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
+G_M13056_IG16: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
; gcrRegs -[x25]
cmp w27, #1
cset x28, eq
;; size=8 bbWeight=1.00 PerfScore 1.00
-G_M13056_IG16: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
- cbz w28, G_M13056_IG18
- ;; size=4 bbWeight=1.00 PerfScore 1.00
G_M13056_IG17: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+ cbz w28, G_M13056_IG19
+ ;; size=4 bbWeight=1.00 PerfScore 1.00
+G_M13056_IG18: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
cmp w23, w20
- blt G_M13056_IG32
+ blt G_M13056_IG37
;; size=8 bbWeight=1.00 PerfScore 1.51
-G_M13056_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M13056_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
; byrRegs -[x21]
mov w0, w23
;; size=4 bbWeight=1 PerfScore 0.50
-G_M13056_IG19: ; bbWeight=1, epilog, nogc, extend
+G_M13056_IG20: ; bbWeight=1, epilog, nogc, extend
ldp x27, x28, [sp, #0x60]
ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40]
@@ -276,20 +278,31 @@ G_M13056_IG19: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x70
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M13056_IG20: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, gcvars, byref, isz
+G_M13056_IG21: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=200002 {x1 x21}, gcvars, byref
...
+8 (+1.69%) : 627366.dasm - System.Threading.Tasks.Dataflow.Internal.QueuedMap2+ArrayBasedLinkedQueue
1[System.Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair
2[System.Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]):int:this (Tier1)
@@ -5,11 +5,11 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1765
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1765
; 3 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 13, 7.99) ref -> x19 this class-hnd single-def <System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]>
+; V00 this [V00,T00] ( 14, 7.99) ref -> x19 this class-hnd single-def <System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]>
; V02 loc0 [V02,T08] ( 6, 4 ) int -> x20
; V03 loc1 [V03 ] ( 5, 1.98) struct (24) [fp+0x48] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]>
@@ -80,7 +80,7 @@ G_M42120_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {},
; gcrRegs +[x1]
ldr w14, [x19, #0x18]
cmn w14, #1
- beq G_M42120_IG10
+ beq G_M42120_IG11
;; size=12 bbWeight=1 PerfScore 4.50
G_M42120_IG03: ; bbWeight=0.99, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
sxtw w20, w14
@@ -90,13 +90,13 @@ G_M42120_IG03: ; bbWeight=0.99, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
; gcrRegs +[x15]
ldr w12, [x15, #0x10]
cmp w14, w12
- bhs G_M42120_IG13
+ bhs G_M42120_IG14
;; size=24 bbWeight=0.99 PerfScore 8.41
G_M42120_IG04: ; bbWeight=0.99, gcrefRegs=88003 {x0 x1 x15 x19}, byrefRegs=0000 {}, byref, isz
ldr x15, [x15, #0x08]
ldr w12, [x15, #0x08]
cmp w14, w12
- bhs G_M42120_IG12
+ bhs G_M42120_IG13
mov w12, #24
mov xip0, #16
umaddl x14, w14, w12, xip0
@@ -128,25 +128,27 @@ G_M42120_IG06: ; bbWeight=0.99, extend
add w2, w1, #1
str w2, [x0, #0x14]
;; size=48 bbWeight=0.99 PerfScore 14.85
-G_M42120_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M42120_IG07: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
; byrRegs -[x3]
ldr w0, [x19, #0x10]
cmn w0, #1
- bne G_M42120_IG11
- str w20, [x19, #0x10]
- ;; size=16 bbWeight=1 PerfScore 5.50
+ bne G_M42120_IG12
+ ;; size=12 bbWeight=0.99 PerfScore 4.45
G_M42120_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ str w20, [x19, #0x10]
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M42120_IG09: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
str w20, [x19, #0x14]
mov w0, w20
;; size=8 bbWeight=1 PerfScore 1.50
-G_M42120_IG09: ; bbWeight=1, epilog, nogc, extend
+G_M42120_IG10: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x70]
ldp x19, x20, [sp, #0x60]
ldp fp, lr, [sp], #0x80
ret lr
;; size=16 bbWeight=1 PerfScore 4.00
-G_M42120_IG10: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M42120_IG11: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1]
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
@@ -162,7 +164,7 @@ G_M42120_IG10: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=800
; gcrRegs +[x22]
ldr w1, [x22, #0x08]
cmp w1, w21
- bhi G_M42120_IG14
+ bhi G_M42120_IG15
add x1, fp, #24 // [V24 tmp20]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
@@ -170,9 +172,11 @@ G_M42120_IG10: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=800
ldr x2, [x2]
blr x2
; gcrRegs -[x0 x22]
- b G_M42120_IG07
- ;; size=76 bbWeight=0.01 PerfScore 0.28
-G_M42120_IG11: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ldr w0, [x19, #0x10]
+ cmn w0, #1
+ beq G_M42120_IG08
+ ;; size=84 bbWeight=0.01 PerfScore 0.32
+G_M42120_IG12: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x21, [x19, #0x08]
; gcrRegs +[x21]
ldr w22, [x19, #0x14]
@@ -205,12 +209,12 @@ G_M42120_IG11: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr wzr, [x0]
blr x3
; gcrRegs -[x0 x21]
- b G_M42120_IG08
+ b G_M42120_IG09
;; size=104 bbWeight=0 PerfScore 0.00
-G_M42120_IG12: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M42120_IG13: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M42120_IG13: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M42120_IG14: ; 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
@@ -218,7 +222,7 @@ G_M42120_IG13: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M42120_IG14: ; bbWeight=0, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, byref
+G_M42120_IG15: ; bbWeight=0, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs +[x0 x22]
add w14, w21, #1
str w14, [x0, #0x10]
@@ -238,7 +242,7 @@ G_M42120_IG14: ; bbWeight=0, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=000
b G_M42120_IG07
;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 472, prolog size 36, PerfScore 69.81, instruction count 118, allocated bytes for code 472 (MethodHash=31685b77) for method System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]):int:this (Tier1)
+; Total bytes of code 480, prolog size 36, PerfScore 69.80, instruction count 120, allocated bytes for code 480 (MethodHash=31685b77) for method System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]):int:this (Tier1)
; ============================================================
Unwind Info:
@@ -249,7 +253,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 118 (0x00076) Actual length = 472 (0x0001d8)
+ Function Length : 120 (0x00078) Actual length = 480 (0x0001e0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
benchmarks.run_pgo.osx.arm64.checked.mch |
26 |
0 |
1 |
25 |
-0 |
+4 |
benchmarks.run_tiered.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
coreclr_tests.run.osx.arm64.checked.mch |
98 |
51 |
11 |
36 |
-832 |
+128 |
libraries.crossgen2.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
libraries.pmi.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
libraries_tests.run.osx.arm64.Release.mch |
371 |
89 |
30 |
252 |
-656 |
+160 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
realworld.run.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
495 |
140 |
42 |
313 |
-1,488 |
+292 |
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,862 |
356,765 |
229,097 |
2 (0.00%) |
26 (0.00%) |
libraries.crossgen2.osx.arm64.checked.mch |
234,105 |
15 |
234,090 |
0 (0.00%) |
0 (0.00%) |
libraries.pmi.osx.arm64.checked.mch |
316,348 |
18 |
316,330 |
0 (0.00%) |
0 (0.00%) |
libraries_tests.run.osx.arm64.Release.mch |
643,885 |
468,829 |
175,056 |
0 (0.00%) |
0 (0.00%) |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
302,301 |
21,597 |
280,704 |
0 (0.00%) |
0 (0.00%) |
realworld.run.osx.arm64.checked.mch |
31,542 |
3 |
31,539 |
0 (0.00%) |
0 (0.00%) |
|
2,270,844 |
932,669 |
1,338,175 |
2 (0.00%) |
26 (0.00%) |
jit-analyze output
benchmarks.run_pgo.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 34442120 (overridden on cmd)
Total bytes of diff: 34442124 (overridden on cmd)
Total bytes of delta: 4 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
4 : 58008.dasm (2.63 % of base)
1 total files with Code Size differences (0 improved, 1 regressed), 25 unchanged.
Top method regressions (bytes):
4 (2.63 % of base) : 58008.dasm - Microsoft.CodeAnalysis.CSharp.BoundStatementList:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
Top method regressions (percentages):
4 (2.63 % of base) : 58008.dasm - Microsoft.CodeAnalysis.CSharp.BoundStatementList:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
1 total methods with Code Size differences (0 improved, 1 regressed).
coreclr_tests.run.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 486418056 (overridden on cmd)
Total bytes of diff: 486417352 (overridden on cmd)
Total bytes of delta: -704 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
32 : 296094.dasm (5.59 % of base)
20 : 296000.dasm (2.84 % of base)
16 : 296042.dasm (5.56 % of base)
16 : 296126.dasm (3.39 % of base)
12 : 295997.dasm (4.35 % of base)
8 : 296022.dasm (2.47 % of base)
8 : 296039.dasm (2.47 % of base)
4 : 214393.dasm (0.48 % of base)
4 : 296034.dasm (1.30 % of base)
4 : 296130.dasm (1.35 % of base)
4 : 296089.dasm (2.86 % of base)
Top file improvements (bytes):
-176 : 296041.dasm (-7.89 % of base)
-160 : 296118.dasm (-40.82 % of base)
-80 : 296032.dasm (-14.93 % of base)
-40 : 296028.dasm (-2.79 % of base)
-32 : 296083.dasm (-5.26 % of base)
-24 : 296127.dasm (-2.75 % of base)
-20 : 295994.dasm (-5.95 % of base)
-20 : 296132.dasm (-10.87 % of base)
-20 : 296135.dasm (-5.10 % of base)
-16 : 296131.dasm (-6.67 % of base)
-16 : 296066.dasm (-4.04 % of base)
-12 : 296013.dasm (-4.55 % of base)
-12 : 296113.dasm (-3.26 % of base)
-12 : 296129.dasm (-4.35 % of base)
-8 : 285327.dasm (-2.11 % of base)
-8 : 296006.dasm (-2.67 % of base)
-8 : 269655.dasm (-2.11 % of base)
-8 : 296053.dasm (-1.80 % of base)
-8 : 296093.dasm (-1.85 % of base)
-8 : 294825.dasm (-2.11 % of base)
40 total files with Code Size differences (29 improved, 11 regressed), 24 unchanged.
Top method regressions (bytes):
32 (5.59 % of base) : 296094.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (FullOpts)
20 (2.84 % of base) : 296000.dasm - System.Collections.Generic.ComparerHelpers:CreateDefaultEqualityComparer(System.Type):System.Object (FullOpts)
16 (3.39 % of base) : 296126.dasm - System.Runtime.Loader.AssemblyLoadContext:OnProcessExit() (FullOpts)
16 (5.56 % of base) : 296042.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
12 (4.35 % of base) : 295997.dasm - System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
8 (2.47 % of base) : 296022.dasm - System.AppContext:GetData(System.String):System.Object (FullOpts)
8 (2.47 % of base) : 296039.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiChar_Vector(ulong,ulong):ulong (FullOpts)
4 (0.48 % of base) : 214393.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
4 (1.35 % of base) : 296130.dasm - System.Collections.Generic.List`1[System.__Canon]:set_Capacity(int):this (FullOpts)
4 (2.86 % of base) : 296089.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef(System.Array,long,System.Object) (FullOpts)
4 (1.30 % of base) : 296034.dasm - System.Text.UTF8Encoding:SetDefaultFallbacks():this (FullOpts)
Top method improvements (bytes):
-176 (-7.89 % of base) : 296041.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
-160 (-40.82 % of base) : 296118.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
-80 (-14.93 % of base) : 296032.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (FullOpts)
-40 (-2.79 % of base) : 296028.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (FullOpts)
-32 (-5.26 % of base) : 296083.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (FullOpts)
-24 (-2.75 % of base) : 296127.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
-20 (-5.95 % of base) : 295994.dasm - System.AppContext:Setup(ulong,ulong,int) (FullOpts)
-20 (-5.10 % of base) : 296135.dasm - System.Diagnostics.Tracing.EventProvider:Dispose(ubyte):this (FullOpts)
-20 (-10.87 % of base) : 296132.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
-16 (-6.67 % of base) : 296131.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (FullOpts)
-16 (-4.04 % of base) : 296066.dasm - System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)
-12 (-4.35 % of base) : 296129.dasm - System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this (FullOpts)
-12 (-3.26 % of base) : 296113.dasm - System.Runtime.InteropServices.GCHandle:.ctor(System.Object,int):this (FullOpts)
-12 (-4.55 % of base) : 296013.dasm - System.String:GetNonRandomizedHashCode():int:this (FullOpts)
-8 (-1.85 % of base) : 296093.dasm - System.Array:Resize[System.__Canon](byref,int) (FullOpts)
-8 (-1.80 % of base) : 296053.dasm - System.Diagnostics.Tracing.EventPipeEventProvider:Register(System.Diagnostics.Tracing.EventSource):this (FullOpts)
-8 (-2.11 % of base) : 285327.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-8 (-2.11 % of base) : 269655.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-8 (-2.11 % of base) : 294825.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-8 (-2.67 % of base) : 296006.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (FullOpts)
Top method regressions (percentages):
32 (5.59 % of base) : 296094.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (FullOpts)
16 (5.56 % of base) : 296042.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
12 (4.35 % of base) : 295997.dasm - System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
16 (3.39 % of base) : 296126.dasm - System.Runtime.Loader.AssemblyLoadContext:OnProcessExit() (FullOpts)
4 (2.86 % of base) : 296089.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef(System.Array,long,System.Object) (FullOpts)
20 (2.84 % of base) : 296000.dasm - System.Collections.Generic.ComparerHelpers:CreateDefaultEqualityComparer(System.Type):System.Object (FullOpts)
8 (2.47 % of base) : 296022.dasm - System.AppContext:GetData(System.String):System.Object (FullOpts)
8 (2.47 % of base) : 296039.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiChar_Vector(ulong,ulong):ulong (FullOpts)
4 (1.35 % of base) : 296130.dasm - System.Collections.Generic.List`1[System.__Canon]:set_Capacity(int):this (FullOpts)
4 (1.30 % of base) : 296034.dasm - System.Text.UTF8Encoding:SetDefaultFallbacks():this (FullOpts)
4 (0.48 % of base) : 214393.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
Top method improvements (percentages):
-160 (-40.82 % of base) : 296118.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
-80 (-14.93 % of base) : 296032.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (FullOpts)
-20 (-10.87 % of base) : 296132.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
-176 (-7.89 % of base) : 296041.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
-16 (-6.67 % of base) : 296131.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (FullOpts)
-20 (-5.95 % of base) : 295994.dasm - System.AppContext:Setup(ulong,ulong,int) (FullOpts)
-32 (-5.26 % of base) : 296083.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (FullOpts)
-20 (-5.10 % of base) : 296135.dasm - System.Diagnostics.Tracing.EventProvider:Dispose(ubyte):this (FullOpts)
-4 (-5.00 % of base) : 296048.dasm - System.Runtime.InteropServices.GCHandle:InternalAlloc(System.Object,int):long (FullOpts)
-12 (-4.55 % of base) : 296013.dasm - System.String:GetNonRandomizedHashCode():int:this (FullOpts)
-12 (-4.35 % of base) : 296129.dasm - System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this (FullOpts)
-16 (-4.04 % of base) : 296066.dasm - System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)
-4 (-3.85 % of base) : 296012.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer+OrdinalComparer:GetHashCode(System.String):int:this (FullOpts)
-4 (-3.45 % of base) : 296019.dasm - System.Diagnostics.Tracing.EventSource:.cctor() (FullOpts)
-12 (-3.26 % of base) : 296113.dasm - System.Runtime.InteropServices.GCHandle:.ctor(System.Object,int):this (FullOpts)
-4 (-2.94 % of base) : 296024.dasm - System.Diagnostics.Tracing.RuntimeEventSource:Initialize() (FullOpts)
-40 (-2.79 % of base) : 296028.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (FullOpts)
-24 (-2.75 % of base) : 296127.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
-8 (-2.67 % of base) : 296006.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (FullOpts)
-8 (-2.63 % of base) : 296035.dasm - System.Text.EncoderReplacementFallback:.ctor(System.String):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: 324596696 (overridden on cmd)
Total bytes of diff: 324596200 (overridden on cmd)
Total bytes of delta: -496 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
16 : 275767.dasm (1.22 % of base)
16 : 148882.dasm (0.64 % of base)
8 : 171130.dasm (1.11 % of base)
8 : 544132.dasm (0.49 % of base)
8 : 627366.dasm (1.69 % of base)
8 : 543151.dasm (0.43 % of base)
4 : 126303.dasm (0.06 % of base)
4 : 202937.dasm (0.50 % of base)
4 : 327085.dasm (0.44 % of base)
4 : 390918.dasm (0.52 % of base)
4 : 544226.dasm (0.18 % of base)
4 : 246371.dasm (0.42 % of base)
4 : 281375.dasm (0.43 % of base)
4 : 320043.dasm (0.43 % of base)
4 : 327084.dasm (0.32 % of base)
4 : 349435.dasm (0.30 % of base)
4 : 48506.dasm (0.41 % of base)
4 : 492391.dasm (0.52 % of base)
4 : 82280.dasm (0.43 % of base)
4 : 82860.dasm (0.31 % of base)
Top file improvements (bytes):
-36 : 156202.dasm (-4.11 % of base)
-20 : 474648.dasm (-1.30 % of base)
-16 : 192282.dasm (-3.77 % of base)
-16 : 290352.dasm (-3.77 % of base)
-16 : 341686.dasm (-2.82 % of base)
-16 : 375414.dasm (-3.77 % of base)
-16 : 202778.dasm (-2.34 % of base)
-16 : 426409.dasm (-3.77 % of base)
-16 : 432654.dasm (-3.77 % of base)
-16 : 267668.dasm (-3.77 % of base)
-16 : 350433.dasm (-3.77 % of base)
-16 : 371310.dasm (-3.77 % of base)
-12 : 177905.dasm (-2.94 % of base)
-12 : 542614.dasm (-0.89 % of base)
-12 : 542616.dasm (-0.89 % of base)
-12 : 542617.dasm (-0.89 % of base)
-12 : 202664.dasm (-4.48 % of base)
-12 : 220822.dasm (-1.26 % of base)
-12 : 277466.dasm (-0.89 % of base)
-12 : 466753.dasm (-0.23 % of base)
53 total files with Code Size differences (27 improved, 26 regressed), 20 unchanged.
Top method regressions (bytes):
16 (1.22 % of base) : 275767.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadSpan(System.Span`1[ubyte],System.ArraySegment`1[ubyte]):int:this (Tier1)
16 (0.64 % of base) : 148882.dasm - System.Text.RegularExpressions.RegexParser:ScanCharClass(ubyte,ubyte):System.Text.RegularExpressions.RegexCharClass:this (Tier1)
8 (1.11 % of base) : 171130.dasm - System.Enum:CompareTo(System.Object):int:this (Tier1)
8 (0.43 % of base) : 543151.dasm - System.Text.Json.JsonSerializer:WriteString[int](byref,System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[int]):System.String (Tier1)
8 (0.49 % of base) : 544132.dasm - System.Text.Json.JsonSerializer:WriteString[System.Nullable`1[System.ValueTuple`2[System.__Canon,ubyte]]](byref,System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[System.ValueTuple`2[System.__Canon,ubyte]]]):System.String (Tier1)
8 (1.69 % of base) : 627366.dasm - System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]):int:this (Tier1)
4 (0.79 % of base) : 125749.dasm - Microsoft.Extensions.FileProviders.PhysicalFileProvider:GetFullPath(System.String):System.String:this (Tier1)
4 (0.06 % of base) : 126303.dasm - Microsoft.Extensions.FileProviders.PhysicalFileProviderTests+<UsePollingFileWatcher_UseActivePolling_HasChanged_SymbolicLink_TargetChanged>d__86:MoveNext():this (Tier1)
4 (0.86 % of base) : 605251.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]]:GetOrAdd(System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]):System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]:this (Tier1)
4 (0.31 % of base) : 82860.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
4 (0.30 % of base) : 349435.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (Tier1)
4 (0.52 % of base) : 390918.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
4 (0.52 % of base) : 492391.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
4 (0.52 % of base) : 169375.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
4 (0.52 % of base) : 331113.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
4 (0.41 % of base) : 48506.dasm - System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:AddRange(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]):this (Tier1)
4 (0.43 % of base) : 82280.dasm - System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:AddRange(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]):this (Tier1)
4 (0.42 % of base) : 246371.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
4 (0.43 % of base) : 281375.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
4 (0.43 % of base) : 320043.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
Top method improvements (bytes):
-36 (-4.11 % of base) : 156202.dasm - Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__85:MoveNext():ubyte:this (Tier1)
-20 (-1.30 % of base) : 474648.dasm - System.Formats.Asn1.AsnWriter:WriteBitString(System.ReadOnlySpan`1[ubyte],int,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
-16 (-3.77 % of base) : 192282.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 290352.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-2.82 % of base) : 341686.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 375414.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 426409.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 432654.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 267668.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 350433.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 371310.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-2.34 % of base) : 202778.dasm - System.Collections.Tests.ICollection_Generic_Tests`1+<>c[int]:<GetModifyEnumerables>b__20_1(System.Collections.Generic.IEnumerable`1[int]):ubyte:this (Tier1)
-12 (-2.94 % of base) : 177905.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-12 (-1.26 % of base) : 220822.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-12 (-4.48 % of base) : 202664.dasm - System.Collections.Generic.SortedSet`1+TreeSubSet[int]:IsWithinRange(int):ubyte:this (Tier1)
-12 (-0.23 % of base) : 466753.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryParser:Run():this (Tier1)
-12 (-0.89 % of base) : 542614.dasm - System.Text.Json.SourceGeneration.Tests.NumberHandlingTests_Default+NumberHandlingTestsContext_Default:Create_NullableInt64(System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[long]]:this (Tier1)
-12 (-0.89 % of base) : 542616.dasm - System.Text.Json.SourceGeneration.Tests.NumberHandlingTests_Default+NumberHandlingTestsContext_Default:Create_NullableUInt32(System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[uint]]:this (Tier1)
-12 (-0.89 % of base) : 542617.dasm - System.Text.Json.SourceGeneration.Tests.NumberHandlingTests_Default+NumberHandlingTestsContext_Default:Create_NullableUInt64(System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[ulong]]:this (Tier1)
-12 (-0.89 % of base) : 277466.dasm - System.Text.RegularExpressions.RegexParser:AddGroup():this (Tier1)
Top method regressions (percentages):
8 (1.69 % of base) : 627366.dasm - System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]):int:this (Tier1)
16 (1.22 % of base) : 275767.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadSpan(System.Span`1[ubyte],System.ArraySegment`1[ubyte]):int:this (Tier1)
8 (1.11 % of base) : 171130.dasm - System.Enum:CompareTo(System.Object):int:this (Tier1)
4 (0.86 % of base) : 605251.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]]:GetOrAdd(System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]):System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]:this (Tier1)
4 (0.79 % of base) : 125749.dasm - Microsoft.Extensions.FileProviders.PhysicalFileProvider:GetFullPath(System.String):System.String:this (Tier1)
4 (0.74 % of base) : 293259.dasm - System.Threading.Tasks.Task:FinishSlow(ubyte):this (Tier1)
16 (0.64 % of base) : 148882.dasm - System.Text.RegularExpressions.RegexParser:ScanCharClass(ubyte,ubyte):System.Text.RegularExpressions.RegexCharClass:this (Tier1)
4 (0.52 % of base) : 390918.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
4 (0.52 % of base) : 492391.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
4 (0.52 % of base) : 169375.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
4 (0.52 % of base) : 331113.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
4 (0.50 % of base) : 202937.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryTypeConverter:TypeFromInfo(int,System.Object,System.Runtime.Serialization.Formatters.Binary.ObjectReader,System.Runtime.Serialization.Formatters.Binary.BinaryAssemblyInfo,byref,byref,byref,byref) (Tier1)
8 (0.49 % of base) : 544132.dasm - System.Text.Json.JsonSerializer:WriteString[System.Nullable`1[System.ValueTuple`2[System.__Canon,ubyte]]](byref,System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[System.ValueTuple`2[System.__Canon,ubyte]]]):System.String (Tier1)
4 (0.44 % of base) : 327085.dasm - System.Net.HttpListener:RemoveConnection(System.Net.HttpConnection):this (Tier1)
8 (0.43 % of base) : 543151.dasm - System.Text.Json.JsonSerializer:WriteString[int](byref,System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[int]):System.String (Tier1)
4 (0.43 % of base) : 281375.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
4 (0.43 % of base) : 320043.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
4 (0.43 % of base) : 82280.dasm - System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:AddRange(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]):this (Tier1)
4 (0.42 % of base) : 246371.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
4 (0.41 % of base) : 48506.dasm - System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:AddRange(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]):this (Tier1)
Top method improvements (percentages):
-12 (-4.48 % of base) : 202664.dasm - System.Collections.Generic.SortedSet`1+TreeSubSet[int]:IsWithinRange(int):ubyte:this (Tier1)
-36 (-4.11 % of base) : 156202.dasm - Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__85:MoveNext():ubyte:this (Tier1)
-16 (-3.77 % of base) : 192282.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 290352.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 375414.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 426409.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 432654.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 267668.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 350433.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 371310.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-12 (-2.94 % of base) : 177905.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-2.82 % of base) : 341686.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-2.34 % of base) : 202778.dasm - System.Collections.Tests.ICollection_Generic_Tests`1+<>c[int]:<GetModifyEnumerables>b__20_1(System.Collections.Generic.IEnumerable`1[int]):ubyte:this (Tier1)
-8 (-2.11 % of base) : 491028.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-8 (-2.11 % of base) : 349228.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-8 (-1.59 % of base) : 180295.dasm - System.Collections.Concurrent.ConcurrentBag`1[int]:CreateWorkStealingQueueForCurrentThread():System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[int]:this (Tier1)
-8 (-1.53 % of base) : 501096.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-8 (-1.52 % of base) : 241207.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-8 (-1.52 % of base) : 202591.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-8 (-1.52 % of base) : 179909.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
windows arm64
Diffs are based on 2,341,083 contexts (938,449 MinOpts, 1,402,634 FullOpts).
MISSED contexts: base: 9 (0.00%), diff: 34 (0.00%)
Overall (-1,000 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run_pgo.windows.arm64.checked.mch |
45,573,032 |
-152 |
coreclr_tests.run.windows.arm64.checked.mch |
495,271,268 |
-700 |
libraries_tests.run.windows.arm64.Release.mch |
330,811,128 |
-148 |
FullOpts (-1,000 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run_pgo.windows.arm64.checked.mch |
29,561,636 |
-152 |
coreclr_tests.run.windows.arm64.checked.mch |
156,582,164 |
-700 |
libraries_tests.run.windows.arm64.Release.mch |
127,377,532 |
-148 |
Example diffs
benchmarks.run_pgo.windows.arm64.checked.mch
-16 (-3.77%) : 38757.dasm - System.Collections.Generic.Dictionary2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer
1[System.__Canon]):this (Tier1)
@@ -16,41 +16,40 @@
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
; V06 tmp2 [V06,T07] ( 4, 3.00) ref -> x15
-; V07 tmp3 [V07,T05] ( 3, 3.99) long -> x0 "spilling helperCall"
+; V07 tmp3 [V07,T05] ( 3, 3.99) long -> x1 "spilling helperCall"
;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 tmp5 [V09,T08] ( 5, 2.99) ref -> x22 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
-; V10 tmp6 [V10,T04] ( 4, 4.32) ref -> x20 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V09 tmp5 [V09,T08] ( 6, 2.99) ref -> x22 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
+; V10 tmp6 [V10,T04] ( 4, 4.32) ref -> x1 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V11 cse0 [V11,T06] ( 6, 3.20) long -> x0 multi-def "CSE - aggressive"
; V12 cse1 [V12,T09] ( 5, 2.99) long -> x21 "CSE - aggressive"
-; V13 cse2 [V13,T10] ( 3, 0.25) long -> x23 "CSE - conservative"
+; V13 cse2 [V13,T10] ( 3, 0.25) long -> x2 "CSE - conservative"
; V14 rat0 [V14,T12] ( 3, 0.02) long -> x0 "Spilling to split statement for tree"
; V15 rat1 [V15,T13] ( 3, 0.02) long -> x1 "runtime lookup"
; V16 rat2 [V16,T11] ( 3, 0.02) long -> x1 "fgMakeTemp is creating a new local variable"
-; V17 rat3 [V17,T02] ( 3, 5.58) long -> x23 "fgMakeTemp is creating a new local variable"
+; V17 rat3 [V17,T02] ( 3, 5.58) long -> x1 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M21827_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 x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
mov fp, sp
- str x0, [fp, #0x10]
+ str x0, [fp, #0x18]
mov x19, x0
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=32 bbWeight=1 PerfScore 6.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M21827_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w1, #31, G_M21827_IG20
+ tbnz w1, #31, G_M21827_IG19
cmp w1, #0
- bgt G_M21827_IG21
+ bgt G_M21827_IG20
;; size=12 bbWeight=1 PerfScore 2.50
G_M21827_IG03: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x15, x20
; gcrRegs +[x15]
- cbz x15, G_M21827_IG07
+ cbz x15, G_M21827_IG10
;; size=8 bbWeight=1 PerfScore 1.50
G_M21827_IG04: ; bbWeight=1, gcrefRegs=88000 {x15 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20]
@@ -67,44 +66,55 @@ G_M21827_IG04: ; bbWeight=1, gcrefRegs=88000 {x15 x19}, byrefRegs=0000 {}
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M21827_IG19
+ bne G_M21827_IG18
;; size=44 bbWeight=1 PerfScore 16.50
G_M21827_IG05: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x20, [x19, #0x18]
- ; gcrRegs +[x20]
+ ldr x1, [x19, #0x18]
+ ; gcrRegs +[x1]
movz x21, #0xD1FFAB1E
movk x21, #0xD1FFAB1E LSL #16
movk x21, #0xD1FFAB1E LSL #32
- ldr x1, [x21, #0xD1FFAB1E]
- ; gcrRegs +[x1]
- cmp x20, x1
- bne G_M21827_IG14
+ ldr x2, [x21, #0xD1FFAB1E]
+ ; gcrRegs +[x2]
+ cmp x1, x2
+ bne G_M21827_IG17
;; size=28 bbWeight=1.00 PerfScore 8.97
G_M21827_IG06: ; bbWeight=0.91, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x1-x2]
ldr x22, [x21]
; gcrRegs +[x22]
- b G_M21827_IG12
- ;; size=8 bbWeight=0.91 PerfScore 3.65
-G_M21827_IG07: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.91 PerfScore 2.74
+G_M21827_IG07: ; bbWeight=0.91, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ cbz x22, G_M21827_IG18
+ ;; size=4 bbWeight=0.91 PerfScore 0.91
+G_M21827_IG08: ; bbWeight=1.00, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [x0, #0x38]
+ ldr x1, [x1]
+ ldr x1, [x1, #0x18]
+ cbz x1, G_M21827_IG14
+ ;; size=16 bbWeight=1.00 PerfScore 9.97
+G_M21827_IG09: ; bbWeight=0.80, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+ b G_M21827_IG15
+ ;; size=4 bbWeight=0.80 PerfScore 0.80
+G_M21827_IG10: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22]
ldr x0, [x19]
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x1, [x1, #0x20]
- cbz x1, G_M21827_IG09
+ cbz x1, G_M21827_IG12
;; size=20 bbWeight=0.00 PerfScore 0.05
-G_M21827_IG08: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- b G_M21827_IG10
+G_M21827_IG11: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M21827_IG13
;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M21827_IG09: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21827_IG12: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov x1, x0
;; size=20 bbWeight=0.00 PerfScore 0.00
-G_M21827_IG10: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21827_IG13: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x1
movz x1, #0xD1FFAB1E // code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
movk x1, #0xD1FFAB1E LSL #16
@@ -116,50 +126,16 @@ G_M21827_IG10: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs +[x15]
b G_M21827_IG04
;; size=32 bbWeight=0.00 PerfScore 0.03
-G_M21827_IG11: ; bbWeight=0.08, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x15] +[x20]
- ldr x1, [x23, #0x08]
- ; gcrRegs +[x1]
- ldr x2, [x21, #0x10]
- ; gcrRegs +[x2]
- cmp x20, x1
- csel x22, xzr, x2, ne
- ; gcrRegs +[x22]
- ;; size=16 bbWeight=0.08 PerfScore 0.58
-G_M21827_IG12: ; bbWeight=1.00, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x1-x2 x20]
- cbz x22, G_M21827_IG19
- ldr x1, [x0, #0x38]
- ldr x1, [x1]
- ldr x23, [x1, #0x18]
- cbz x23, G_M21827_IG16
- ;; size=20 bbWeight=1.00 PerfScore 10.96
-G_M21827_IG13: ; bbWeight=0.04, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
- b G_M21827_IG15
- ;; size=4 bbWeight=0.04 PerfScore 0.04
-G_M21827_IG14: ; bbWeight=0.08, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x22] +[x20]
- movz x23, #0xD1FFAB1E
- movk x23, #0xD1FFAB1E LSL #16
- movk x23, #0xD1FFAB1E LSL #32
- ldr x1, [x23]
- ; gcrRegs +[x1]
- cmp x20, x1
- beq G_M21827_IG22
- b G_M21827_IG11
- ;; size=28 bbWeight=0.08 PerfScore 0.58
-G_M21827_IG15: ; bbWeight=0.80, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1 x20] +[x22]
- mov x0, x23
- b G_M21827_IG17
- ;; size=8 bbWeight=0.80 PerfScore 1.20
-G_M21827_IG16: ; bbWeight=0.20, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M21827_IG14: ; bbWeight=0.20, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x15] +[x22]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ;; size=16 bbWeight=0.20 PerfScore 0.50
-G_M21827_IG17: ; bbWeight=1.00, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+ mov x1, x0
+ ;; size=20 bbWeight=0.20 PerfScore 0.60
+G_M21827_IG15: ; bbWeight=1.00, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+ mov x0, x1
mov x1, x22
; gcrRegs +[x1]
bl CORINFO_HELP_CHKCASTANY
@@ -171,22 +147,38 @@ G_M21827_IG17: ; bbWeight=1.00, gcrefRegs=480000 {x19 x22}, byrefRegs=000
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ;; size=20 bbWeight=1.00 PerfScore 3.49
-G_M21827_IG18: ; bbWeight=1.00, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
+ ;; size=24 bbWeight=1.00 PerfScore 3.99
+G_M21827_IG16: ; bbWeight=1.00, epilog, nogc, extend
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=20 bbWeight=1.00 PerfScore 5.98
-G_M21827_IG19: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
+ ;; size=16 bbWeight=1.00 PerfScore 3.99
+G_M21827_IG17: ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x1]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x3, [x2]
+ ; gcrRegs +[x3]
+ cmp x1, x3
+ beq G_M21827_IG21
+ ldr x2, [x2, #0x08]
+ ; gcrRegs +[x2]
+ ldr x3, [x21, #0x10]
+ cmp x1, x2
+ csel x22, xzr, x3, ne
+ ; gcrRegs +[x22]
+ cbnz x22, G_M21827_IG08
+ ;; size=44 bbWeight=0.08 PerfScore 1.16
+G_M21827_IG18: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x1-x3 x22]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=20 bbWeight=0.00 PerfScore 0.02
-G_M21827_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=0.00 PerfScore 0.01
+G_M21827_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
mov w0, #22
movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
movk x1, #0xD1FFAB1E LSL #16
@@ -195,7 +187,7 @@ G_M21827_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
blr x1
brk_windows #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M21827_IG21: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M21827_IG20: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs +[x20]
mov x0, x19
; gcrRegs +[x0]
@@ -207,14 +199,14 @@ G_M21827_IG21: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs -[x0]
b G_M21827_IG03
;; size=28 bbWeight=0 PerfScore 0.00
-G_M21827_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21827_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
...
-16 (-3.77%) : 71937.dasm - System.Collections.Generic.Dictionary2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer
1[System.__Canon]):this (Tier1)
@@ -16,41 +16,40 @@
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
; V06 tmp2 [V06,T06] ( 4, 3.29) ref -> x15
-; V07 tmp3 [V07,T07] ( 3, 3.06) long -> x0 "spilling helperCall"
+; V07 tmp3 [V07,T07] ( 3, 3.06) long -> x1 "spilling helperCall"
;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V09 tmp5 [V09,T08] ( 5, 2.29) ref -> x22 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
-; V10 tmp6 [V10,T05] ( 4, 3.31) ref -> x20 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V10 tmp6 [V10,T05] ( 4, 3.31) ref -> x1 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V11 cse0 [V11,T04] ( 6, 3.51) long -> x0 multi-def "CSE - aggressive"
; V12 cse1 [V12,T09] ( 5, 2.29) long -> x21 "CSE - aggressive"
-; V13 cse2 [V13,T13] ( 3, 0.19) long -> x23 "CSE - conservative"
+; V13 cse2 [V13,T13] ( 3, 0.19) long -> x2 "CSE - conservative"
; V14 rat0 [V14,T11] ( 3, 1.29) long -> x0 "Spilling to split statement for tree"
; V15 rat1 [V15,T12] ( 3, 1.18) long -> x1 "runtime lookup"
; V16 rat2 [V16,T10] ( 3, 1.65) long -> x1 "fgMakeTemp is creating a new local variable"
-; V17 rat3 [V17,T03] ( 3, 4.28) long -> x23 "fgMakeTemp is creating a new local variable"
+; V17 rat3 [V17,T03] ( 3, 4.28) long -> x1 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M21827_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 x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
mov fp, sp
- str x0, [fp, #0x10]
+ str x0, [fp, #0x18]
mov x19, x0
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=32 bbWeight=1 PerfScore 6.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M21827_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w1, #31, G_M21827_IG20
+ tbnz w1, #31, G_M21827_IG18
cmp w1, #0
- bgt G_M21827_IG21
+ bgt G_M21827_IG19
;; size=12 bbWeight=1 PerfScore 2.50
G_M21827_IG03: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x15, x20
; gcrRegs +[x15]
- cbz x15, G_M21827_IG07
+ cbz x15, G_M21827_IG09
;; size=8 bbWeight=1 PerfScore 1.50
G_M21827_IG04: ; bbWeight=1, gcrefRegs=88000 {x15 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20]
@@ -67,44 +66,53 @@ G_M21827_IG04: ; bbWeight=1, gcrefRegs=88000 {x15 x19}, byrefRegs=0000 {}
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M21827_IG19
+ bne G_M21827_IG16
;; size=44 bbWeight=1 PerfScore 16.50
G_M21827_IG05: ; bbWeight=0.76, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x20, [x19, #0x18]
- ; gcrRegs +[x20]
+ ldr x1, [x19, #0x18]
+ ; gcrRegs +[x1]
movz x21, #0xD1FFAB1E
movk x21, #0xD1FFAB1E LSL #16
movk x21, #0xD1FFAB1E LSL #32
- ldr x1, [x21, #0xD1FFAB1E]
- ; gcrRegs +[x1]
- cmp x20, x1
- bne G_M21827_IG14
+ ldr x2, [x21, #0xD1FFAB1E]
+ ; gcrRegs +[x2]
+ cmp x1, x2
+ bne G_M21827_IG17
;; size=28 bbWeight=0.76 PerfScore 6.88
G_M21827_IG06: ; bbWeight=0.70, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x1-x2]
ldr x22, [x21]
; gcrRegs +[x22]
- b G_M21827_IG12
- ;; size=8 bbWeight=0.70 PerfScore 2.80
-G_M21827_IG07: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.70 PerfScore 2.10
+G_M21827_IG07: ; bbWeight=0.76, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ cbz x22, G_M21827_IG16
+ ldr x1, [x0, #0x38]
+ ldr x1, [x1]
+ ldr x1, [x1, #0x18]
+ cbz x1, G_M21827_IG13
+ ;; size=20 bbWeight=0.76 PerfScore 8.41
+G_M21827_IG08: ; bbWeight=0.61, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+ b G_M21827_IG14
+ ;; size=4 bbWeight=0.61 PerfScore 0.61
+G_M21827_IG09: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22]
ldr x0, [x19]
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x1, [x1, #0x20]
- cbz x1, G_M21827_IG09
+ cbz x1, G_M21827_IG11
;; size=20 bbWeight=0.29 PerfScore 3.82
-G_M21827_IG08: ; bbWeight=0.24, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- b G_M21827_IG10
+G_M21827_IG10: ; bbWeight=0.24, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M21827_IG12
;; size=4 bbWeight=0.24 PerfScore 0.24
-G_M21827_IG09: ; bbWeight=0.06, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21827_IG11: ; bbWeight=0.06, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov x1, x0
;; size=20 bbWeight=0.06 PerfScore 0.18
-G_M21827_IG10: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21827_IG12: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x1
movz x1, #0xD1FFAB1E // code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
movk x1, #0xD1FFAB1E LSL #16
@@ -116,50 +124,16 @@ G_M21827_IG10: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs +[x15]
b G_M21827_IG04
;; size=32 bbWeight=0.29 PerfScore 2.21
-G_M21827_IG11: ; bbWeight=0.06, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x15] +[x20]
- ldr x1, [x23, #0x08]
- ; gcrRegs +[x1]
- ldr x2, [x21, #0x10]
- ; gcrRegs +[x2]
- cmp x20, x1
- csel x22, xzr, x2, ne
- ; gcrRegs +[x22]
- ;; size=16 bbWeight=0.06 PerfScore 0.45
-G_M21827_IG12: ; bbWeight=0.76, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x1-x2 x20]
- cbz x22, G_M21827_IG19
- ldr x1, [x0, #0x38]
- ldr x1, [x1]
- ldr x23, [x1, #0x18]
- cbz x23, G_M21827_IG16
- ;; size=20 bbWeight=0.76 PerfScore 8.41
-G_M21827_IG13: ; bbWeight=2.94, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
- b G_M21827_IG15
- ;; size=4 bbWeight=2.94 PerfScore 2.94
-G_M21827_IG14: ; bbWeight=0.06, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x22] +[x20]
- movz x23, #0xD1FFAB1E
- movk x23, #0xD1FFAB1E LSL #16
- movk x23, #0xD1FFAB1E LSL #32
- ldr x1, [x23]
- ; gcrRegs +[x1]
- cmp x20, x1
- beq G_M21827_IG22
- b G_M21827_IG11
- ;; size=28 bbWeight=0.06 PerfScore 0.45
-G_M21827_IG15: ; bbWeight=0.61, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1 x20] +[x22]
- mov x0, x23
- b G_M21827_IG17
- ;; size=8 bbWeight=0.61 PerfScore 0.92
-G_M21827_IG16: ; bbWeight=0.15, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M21827_IG13: ; bbWeight=0.15, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x15] +[x22]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ;; size=16 bbWeight=0.15 PerfScore 0.38
-G_M21827_IG17: ; bbWeight=0.76, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+ mov x1, x0
+ ;; size=20 bbWeight=0.15 PerfScore 0.46
+G_M21827_IG14: ; bbWeight=0.76, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+ mov x0, x1
mov x1, x22
; gcrRegs +[x1]
bl CORINFO_HELP_CHKCASTANY
@@ -171,22 +145,38 @@ G_M21827_IG17: ; bbWeight=0.76, gcrefRegs=480000 {x19 x22}, byrefRegs=000
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ;; size=20 bbWeight=0.76 PerfScore 2.68
-G_M21827_IG18: ; bbWeight=0.76, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
+ ;; size=24 bbWeight=0.76 PerfScore 3.06
+G_M21827_IG15: ; bbWeight=0.76, epilog, nogc, extend
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=20 bbWeight=0.76 PerfScore 4.59
-G_M21827_IG19: ; bbWeight=0.24, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
+ ;; size=16 bbWeight=0.76 PerfScore 3.06
+G_M21827_IG16: ; bbWeight=0.24, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=20 bbWeight=0.24 PerfScore 1.41
-G_M21827_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=0.24 PerfScore 0.94
+G_M21827_IG17: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x1]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x3, [x2]
+ ; gcrRegs +[x3]
+ cmp x1, x3
+ beq G_M21827_IG20
+ ldr x2, [x2, #0x08]
+ ; gcrRegs +[x2]
+ ldr x3, [x21, #0x10]
+ cmp x1, x2
+ csel x22, xzr, x3, ne
+ ; gcrRegs +[x22]
+ b G_M21827_IG07
+ ;; size=44 bbWeight=0.06 PerfScore 0.89
+G_M21827_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1-x3 x22]
mov w0, #22
movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
movk x1, #0xD1FFAB1E LSL #16
@@ -195,7 +185,7 @@ G_M21827_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
blr x1
brk_windows #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M21827_IG21: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M21827_IG19: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs +[x20]
mov x0, x19
; gcrRegs +[x0]
@@ -207,14 +197,14 @@ G_M21827_IG21: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs -[x0]
b G_M21827_IG03
;; size=28 bbWeight=0 PerfScore 0.00
-G_M21827_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21827_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20]
ldr x22, [x21, #0x08]
; gcrRegs +[x22]
...
-16 (-3.77%) : 91985.dasm - System.Collections.Generic.Dictionary2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer
1[System.__Canon]):this (Tier1)
@@ -16,41 +16,40 @@
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
; V06 tmp2 [V06,T07] ( 4, 3.04) ref -> x15
-; V07 tmp3 [V07,T05] ( 3, 3.87) long -> x0 "spilling helperCall"
+; V07 tmp3 [V07,T05] ( 3, 3.87) long -> x1 "spilling helperCall"
;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V09 tmp5 [V09,T08] ( 5, 2.90) ref -> x22 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
-; V10 tmp6 [V10,T04] ( 4, 4.19) ref -> x20 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V10 tmp6 [V10,T04] ( 4, 4.19) ref -> x1 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V11 cse0 [V11,T06] ( 6, 3.24) long -> x0 multi-def "CSE - aggressive"
; V12 cse1 [V12,T09] ( 5, 2.90) long -> x21 "CSE - aggressive"
-; V13 cse2 [V13,T10] ( 3, 0.24) long -> x23 "CSE - conservative"
+; V13 cse2 [V13,T10] ( 3, 0.24) long -> x2 "CSE - conservative"
; V14 rat0 [V14,T12] ( 3, 0.18) long -> x0 "Spilling to split statement for tree"
; V15 rat1 [V15,T13] ( 3, 0.16) long -> x1 "runtime lookup"
; V16 rat2 [V16,T11] ( 3, 0.22) long -> x1 "fgMakeTemp is creating a new local variable"
-; V17 rat3 [V17,T02] ( 3, 5.42) long -> x23 "fgMakeTemp is creating a new local variable"
+; V17 rat3 [V17,T02] ( 3, 5.42) long -> x1 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M21827_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 x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
mov fp, sp
- str x0, [fp, #0x10]
+ str x0, [fp, #0x18]
mov x19, x0
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=32 bbWeight=1 PerfScore 6.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M21827_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w1, #31, G_M21827_IG20
+ tbnz w1, #31, G_M21827_IG18
cmp w1, #0
- bgt G_M21827_IG21
+ bgt G_M21827_IG19
;; size=12 bbWeight=1 PerfScore 2.50
G_M21827_IG03: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x15, x20
; gcrRegs +[x15]
- cbz x15, G_M21827_IG07
+ cbz x15, G_M21827_IG09
;; size=8 bbWeight=1 PerfScore 1.50
G_M21827_IG04: ; bbWeight=1, gcrefRegs=88000 {x15 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20]
@@ -67,44 +66,53 @@ G_M21827_IG04: ; bbWeight=1, gcrefRegs=88000 {x15 x19}, byrefRegs=0000 {}
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M21827_IG19
+ bne G_M21827_IG17
;; size=44 bbWeight=1 PerfScore 16.50
G_M21827_IG05: ; bbWeight=0.97, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x20, [x19, #0x18]
- ; gcrRegs +[x20]
+ ldr x1, [x19, #0x18]
+ ; gcrRegs +[x1]
movz x21, #0xD1FFAB1E
movk x21, #0xD1FFAB1E LSL #16
movk x21, #0xD1FFAB1E LSL #32
- ldr x1, [x21, #0xD1FFAB1E]
- ; gcrRegs +[x1]
- cmp x20, x1
- bne G_M21827_IG14
+ ldr x2, [x21, #0xD1FFAB1E]
+ ; gcrRegs +[x2]
+ cmp x1, x2
+ bne G_M21827_IG16
;; size=28 bbWeight=0.97 PerfScore 8.71
G_M21827_IG06: ; bbWeight=0.89, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x1-x2]
ldr x22, [x21]
; gcrRegs +[x22]
- b G_M21827_IG12
- ;; size=8 bbWeight=0.89 PerfScore 3.55
-G_M21827_IG07: ; bbWeight=0.04, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.89 PerfScore 2.66
+G_M21827_IG07: ; bbWeight=0.97, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ cbz x22, G_M21827_IG17
+ ldr x1, [x0, #0x38]
+ ldr x1, [x1]
+ ldr x1, [x1, #0x18]
+ cbz x1, G_M21827_IG13
+ ;; size=20 bbWeight=0.97 PerfScore 10.65
+G_M21827_IG08: ; bbWeight=0.77, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+ b G_M21827_IG14
+ ;; size=4 bbWeight=0.77 PerfScore 0.77
+G_M21827_IG09: ; bbWeight=0.04, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22]
ldr x0, [x19]
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x1, [x1, #0x20]
- cbz x1, G_M21827_IG09
+ cbz x1, G_M21827_IG11
;; size=20 bbWeight=0.04 PerfScore 0.52
-G_M21827_IG08: ; bbWeight=0.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- b G_M21827_IG10
+G_M21827_IG10: ; bbWeight=0.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M21827_IG12
;; size=4 bbWeight=0.03 PerfScore 0.03
-G_M21827_IG09: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21827_IG11: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov x1, x0
;; size=20 bbWeight=0.01 PerfScore 0.02
-G_M21827_IG10: ; bbWeight=0.04, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21827_IG12: ; bbWeight=0.04, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x1
movz x1, #0xD1FFAB1E // code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
movk x1, #0xD1FFAB1E LSL #16
@@ -116,50 +124,16 @@ G_M21827_IG10: ; bbWeight=0.04, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs +[x15]
b G_M21827_IG04
;; size=32 bbWeight=0.04 PerfScore 0.30
-G_M21827_IG11: ; bbWeight=0.08, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x15] +[x20]
- ldr x1, [x23, #0x08]
- ; gcrRegs +[x1]
- ldr x2, [x21, #0x10]
- ; gcrRegs +[x2]
- cmp x20, x1
- csel x22, xzr, x2, ne
- ; gcrRegs +[x22]
- ;; size=16 bbWeight=0.08 PerfScore 0.56
-G_M21827_IG12: ; bbWeight=0.97, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x1-x2 x20]
- cbz x22, G_M21827_IG19
- ldr x1, [x0, #0x38]
- ldr x1, [x1]
- ldr x23, [x1, #0x18]
- cbz x23, G_M21827_IG16
- ;; size=20 bbWeight=0.97 PerfScore 10.65
-G_M21827_IG13: ; bbWeight=0.40, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
- b G_M21827_IG15
- ;; size=4 bbWeight=0.40 PerfScore 0.40
-G_M21827_IG14: ; bbWeight=0.08, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x22] +[x20]
- movz x23, #0xD1FFAB1E
- movk x23, #0xD1FFAB1E LSL #16
- movk x23, #0xD1FFAB1E LSL #32
- ldr x1, [x23]
- ; gcrRegs +[x1]
- cmp x20, x1
- beq G_M21827_IG22
- b G_M21827_IG11
- ;; size=28 bbWeight=0.08 PerfScore 0.56
-G_M21827_IG15: ; bbWeight=0.77, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1 x20] +[x22]
- mov x0, x23
- b G_M21827_IG17
- ;; size=8 bbWeight=0.77 PerfScore 1.16
-G_M21827_IG16: ; bbWeight=0.19, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M21827_IG13: ; bbWeight=0.19, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x15] +[x22]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ;; size=16 bbWeight=0.19 PerfScore 0.48
-G_M21827_IG17: ; bbWeight=0.97, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+ mov x1, x0
+ ;; size=20 bbWeight=0.19 PerfScore 0.58
+G_M21827_IG14: ; bbWeight=0.97, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+ mov x0, x1
mov x1, x22
; gcrRegs +[x1]
bl CORINFO_HELP_CHKCASTANY
@@ -171,22 +145,38 @@ G_M21827_IG17: ; bbWeight=0.97, gcrefRegs=480000 {x19 x22}, byrefRegs=000
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ;; size=20 bbWeight=0.97 PerfScore 3.39
-G_M21827_IG18: ; bbWeight=0.97, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
+ ;; size=24 bbWeight=0.97 PerfScore 3.87
+G_M21827_IG15: ; bbWeight=0.97, epilog, nogc, extend
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=20 bbWeight=0.97 PerfScore 5.81
-G_M21827_IG19: ; bbWeight=0.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
+ ;; size=16 bbWeight=0.97 PerfScore 3.87
+G_M21827_IG16: ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x1]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x3, [x2]
+ ; gcrRegs +[x3]
+ cmp x1, x3
+ beq G_M21827_IG20
+ ldr x2, [x2, #0x08]
+ ; gcrRegs +[x2]
+ ldr x3, [x21, #0x10]
+ cmp x1, x2
+ csel x22, xzr, x3, ne
+ ; gcrRegs +[x22]
+ b G_M21827_IG07
+ ;; size=44 bbWeight=0.08 PerfScore 1.13
+G_M21827_IG17: ; bbWeight=0.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x1-x3 x22]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=20 bbWeight=0.03 PerfScore 0.19
-G_M21827_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=0.03 PerfScore 0.13
+G_M21827_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
mov w0, #22
movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
movk x1, #0xD1FFAB1E LSL #16
@@ -195,7 +185,7 @@ G_M21827_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
blr x1
brk_windows #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M21827_IG21: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M21827_IG19: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs +[x20]
mov x0, x19
; gcrRegs +[x0]
@@ -207,14 +197,14 @@ G_M21827_IG21: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs -[x0]
b G_M21827_IG03
;; size=28 bbWeight=0 PerfScore 0.00
-G_M21827_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21827_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20]
ldr x22, [x21, #0x08]
; gcrRegs +[x22]
...
+0 (0.00%) : 43256.dasm - System.Text.StringBuilder:Append(byref,int):this (Tier1)
@@ -54,29 +54,40 @@ G_M8170_IG04: ; bbWeight=0.82, gcrefRegs=100001 {x0 x20}, byrefRegs=20000
sbfiz x1, x22, #1, #32
add x0, x0, x1
cmp w19, #2
- bgt G_M8170_IG06
+ bgt G_M8170_IG08
;; size=20 bbWeight=0.82 PerfScore 2.86
G_M8170_IG05: ; bbWeight=0.45, gcrefRegs=100000 {x20}, byrefRegs=200001 {x0 x21}, byref, isz
ldrh w1, [x21]
strh w1, [x0]
cmp w19, #2
- bne G_M8170_IG09
+ bne G_M8170_IG06
ldrh w1, [x21, #0x02]
strh w1, [x0, #0x02]
- b G_M8170_IG09
- ;; size=28 bbWeight=0.45 PerfScore 4.77
-G_M8170_IG06: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=200001 {x0 x21}, byref, isz
+ ;; size=24 bbWeight=0.45 PerfScore 4.32
+G_M8170_IG06: ; bbWeight=0.82, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x0 x21]
+ add w0, w22, w19
+ str w0, [x20, #0x18]
+ ;; size=8 bbWeight=0.82 PerfScore 1.23
+G_M8170_IG07: ; bbWeight=0.82, epilog, nogc, extend
+ ldp x21, x22, [sp, #0x20]
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=0.82 PerfScore 3.27
+G_M8170_IG08: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=200001 {x0 x21}, gcvars, byref, isz
+ ; byrRegs +[x0 x21]
sxtw x1, w19
lsl x2, x1, #1
cmp x2, #2
- bne G_M8170_IG08
+ bne G_M8170_IG10
;; size=16 bbWeight=0.36 PerfScore 1.09
-G_M8170_IG07: ; bbWeight=0.18, gcrefRegs=100000 {x20}, byrefRegs=200001 {x0 x21}, byref
+G_M8170_IG09: ; bbWeight=0.18, gcrefRegs=100000 {x20}, byrefRegs=200001 {x0 x21}, byref
ldrh w1, [x21]
strh w1, [x0]
- b G_M8170_IG09
+ b G_M8170_IG06
;; size=12 bbWeight=0.18 PerfScore 0.91
-G_M8170_IG08: ; bbWeight=0.18, gcrefRegs=100000 {x20}, byrefRegs=200001 {x0 x21}, byref
+G_M8170_IG10: ; bbWeight=0.18, gcrefRegs=100000 {x20}, byrefRegs=200001 {x0 x21}, byref
mov x1, x21
; byrRegs +[x1]
movz x3, #0xD1FFAB1E // code for <unknown method>
@@ -86,18 +97,9 @@ G_M8170_IG08: ; bbWeight=0.18, gcrefRegs=100000 {x20}, byrefRegs=200001 {
blr x3
; byrRegs -[x0-x1 x21]
; gcr arg pop 0
- ;; size=24 bbWeight=0.18 PerfScore 1.09
-G_M8170_IG09: ; bbWeight=0.82, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- add w0, w22, w19
- str w0, [x20, #0x18]
- ;; size=8 bbWeight=0.82 PerfScore 1.23
-G_M8170_IG10: ; bbWeight=0.82, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20]
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0.82 PerfScore 3.27
-G_M8170_IG11: ; bbWeight=0.18, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, gcvars, byref
+ b G_M8170_IG06
+ ;; size=28 bbWeight=0.18 PerfScore 1.27
+G_M8170_IG11: ; bbWeight=0.18, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref
; byrRegs +[x21]
mov x0, x20
; gcrRegs +[x0]
@@ -142,7 +144,7 @@ G_M8170_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000
b G_M8170_IG03
;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 292, prolog size 28, PerfScore 35.05, instruction count 73, allocated bytes for code 292 (MethodHash=800fe015) for method System.Text.StringBuilder:Append(byref,int):this (Tier1)
+; Total bytes of code 292, prolog size 28, PerfScore 34.77, instruction count 73, allocated bytes for code 292 (MethodHash=800fe015) for method System.Text.StringBuilder:Append(byref,int):this (Tier1)
; ============================================================
Unwind Info:
+0 (0.00%) : 77160.dasm - System.Linq.EnumerableSorter`2[System.Collections.IntStruct,System.Collections.IntStruct]:CompareAnyKeysDefaultComparerNoNext_Ascending(int,int):int:this (Tier1)
@@ -46,31 +46,31 @@ G_M16336_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
ldr w0, [x0, x3]
; gcrRegs -[x0]
cmp w4, w0
- bge G_M16336_IG04
+ bge G_M16336_IG06
;; size=56 bbWeight=1 PerfScore 19.50
G_M16336_IG03: ; bbWeight=0.63, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movn w3, #0
- b G_M16336_IG05
- ;; size=8 bbWeight=0.63 PerfScore 0.95
-G_M16336_IG04: ; bbWeight=0.37, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- cmp w4, w0
- cset x3, gt
- ;; size=8 bbWeight=0.37 PerfScore 0.37
-G_M16336_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=0.63 PerfScore 0.32
+G_M16336_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub w0, w1, w2
cmp w3, #0
csel w0, w0, w3, eq
;; size=12 bbWeight=1 PerfScore 1.50
-G_M16336_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M16336_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M16336_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M16336_IG06: ; bbWeight=0.37, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ cmp w4, w0
+ cset x3, gt
+ b G_M16336_IG04
+ ;; size=12 bbWeight=0.37 PerfScore 0.73
+G_M16336_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 108, prolog size 8, PerfScore 25.82, instruction count 27, allocated bytes for code 108 (MethodHash=56a7c02f) for method System.Linq.EnumerableSorter`2[System.Collections.IntStruct,System.Collections.IntStruct]:CompareAnyKeys_DefaultComparer_NoNext_Ascending(int,int):int:this (Tier1)
+; Total bytes of code 108, prolog size 8, PerfScore 25.55, instruction count 27, allocated bytes for code 108 (MethodHash=56a7c02f) for method System.Linq.EnumerableSorter`2[System.Collections.IntStruct,System.Collections.IntStruct]:CompareAnyKeys_DefaultComparer_NoNext_Ascending(int,int):int:this (Tier1)
; ============================================================
Unwind Info:
+0 (0.00%) : 78492.dasm - System.Collections.Generic.ArraySortHelper1[int]:SwapIfGreater(System.Span
1[int],System.Comparison`1[int],int,int) (Tier1)
@@ -54,59 +54,54 @@ G_M64750_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=44 bbWeight=1 PerfScore 8.00
G_M64750_IG02: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz
cmp w20, w19
- beq G_M64750_IG11
+ beq G_M64750_IG12
;; size=8 bbWeight=1 PerfScore 1.50
G_M64750_IG03: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz
cmp w20, w23
- bhs G_M64750_IG10
+ bhs G_M64750_IG11
ubfiz x24, x20, #2, #32
ldr w1, [x21, x24]
cmp w19, w23
- bhs G_M64750_IG10
+ bhs G_M64750_IG11
ldr w2, [x21, w19, UXTW #2]
ldr x0, [x22, #0x18]
movz x3, #0xD1FFAB1E // code for System.Linq.EnumerableSorter`2[System.Collections.IntStruct,System.Collections.IntStruct]:CompareAnyKeys_DefaultComparer_NoNext_Ascending(int,int):int:this
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
cmp x0, x3
- bne G_M64750_IG12
+ bne G_M64750_IG10
ldr x0, [x22, #0x08]
; gcrRegs +[x0]
ldr x0, [x0, #0x20]
ldr w3, [x0, #0x08]
cmp w1, w3
- bhs G_M64750_IG10
+ bhs G_M64750_IG11
ubfiz x4, x1, #2, #32
add x4, x4, #16
ldr w4, [x0, x4]
cmp w2, w3
- bhs G_M64750_IG10
+ bhs G_M64750_IG11
ubfiz x3, x2, #2, #32
add x3, x3, #16
ldr w0, [x0, x3]
; gcrRegs -[x0]
cmp w4, w0
- bge G_M64750_IG05
+ bge G_M64750_IG09
;; size=112 bbWeight=1 PerfScore 38.50
G_M64750_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
; gcrRegs -[x22]
movn w3, #0
- b G_M64750_IG06
- ;; size=8 bbWeight=0.64 PerfScore 0.95
-G_M64750_IG05: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
- cmp w4, w0
- cset x3, gt
- ;; size=8 bbWeight=0.36 PerfScore 0.36
-G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+ ;; size=4 bbWeight=0.64 PerfScore 0.32
+G_M64750_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
sub w0, w1, w2
cmp w3, #0
csel w25, w0, w3, eq
;; size=12 bbWeight=1 PerfScore 1.50
-G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
cmp w25, #0
- bgt G_M64750_IG09
+ bgt G_M64750_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x21]
ldr x25, [sp, #0x48]
ldp x23, x24, [sp, #0x38]
@@ -115,7 +110,7 @@ G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldp fp, lr, [sp], #0x50
ret lr
;; size=24 bbWeight=1 PerfScore 7.00
-G_M64750_IG09: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, gcvars, byref
+G_M64750_IG08: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, gcvars, byref
; byrRegs +[x21]
ldr w0, [x21, x24]
add x1, x21, x24
@@ -123,13 +118,29 @@ G_M64750_IG09: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=000
ldr w2, [x21, w19, UXTW #2]
str w2, [x1]
str w0, [x21, w19, UXTW #2]
- b G_M64750_IG08
+ b G_M64750_IG07
;; size=24 bbWeight=0.43 PerfScore 4.04
-G_M64750_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x1 x21]
+G_M64750_IG09: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+ ; byrRegs -[x1]
+ cmp w4, w0
+ cset x3, gt
+ b G_M64750_IG05
+ ;; size=12 bbWeight=0.36 PerfScore 0.73
+G_M64750_IG10: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
+ ; gcrRegs +[x22]
+ ldr x0, [x22, #0x08]
+ ; gcrRegs +[x0]
+ ldr x3, [x22, #0x18]
+ blr x3
+ ; gcrRegs -[x0 x22]
+ sxtw w25, w0
+ b G_M64750_IG06
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M64750_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x21]
bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M64750_IG11: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
+G_M64750_IG12: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
; gcrRegs +[x22]
; byrRegs +[x21]
movz x0, #8
@@ -145,17 +156,8 @@ G_M64750_IG11: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x2
blr x2
b G_M64750_IG03
;; size=48 bbWeight=0 PerfScore 0.00
-G_M64750_IG12: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
- ldr x0, [x22, #0x08]
- ; gcrRegs +[x0]
- ldr x3, [x22, #0x18]
- blr x3
- ; gcrRegs -[x0 x22]
- sxtw w25, w0
- b G_M64750_IG07
- ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 320, prolog size 24, PerfScore 63.36, instruction count 80, allocated bytes for code 320 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
+; Total bytes of code 320, prolog size 24, PerfScore 63.09, instruction count 80, allocated bytes for code 320 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
; ============================================================
Unwind Info:
coreclr_tests.run.windows.arm64.checked.mch
-20 (-10.87%) : 250330.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRefHelperNoCacheLookup(byref,ulong,System.Object) (FullOpts)
@@ -2,20 +2,22 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Unknown PGO
; fp based frame
; fully interruptible
+; with Unknown PGO: edge weights are valid, and fgCalledCount is 154
; No matching PGO data
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 3, 2.82) byref -> x21 single-def
-; V01 arg1 [V01,T01] ( 4, 3 ) long -> x20 single-def
-; V02 arg2 [V02,T00] ( 10, 6.82) ref -> x19 class-hnd <System.Object>
+; V00 arg0 [V00,T01] ( 3, 3 ) byref -> x20 single-def
+; V01 arg1 [V01,T02] ( 3, 3 ) long -> x21 single-def
+; V02 arg2 [V02,T00] ( 7, 7 ) ref -> x19 class-hnd <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T04] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V05 tmp2 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V06 tmp3 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V07 cse0 [V07,T03] ( 3, 0.02) ref -> x1 "CSE - conservative"
+; V07 cse0 [V07,T03] ( 3, 2.40) ref -> x1 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -24,43 +26,16 @@ G_M14814_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x19, x20, [sp, #0x18]
str x21, [sp, #0x28]
mov fp, sp
- mov x21, x0
- ; byrRegs +[x21]
- mov x20, x1
+ mov x20, x0
+ ; byrRegs +[x20]
+ mov x21, x1
mov x19, x2
; gcrRegs +[x19]
;; size=28 bbWeight=1 PerfScore 5.00
-G_M14814_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
- cbz x19, G_M14814_IG06
+G_M14814_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+ cbnz x19, G_M14814_IG04
;; size=4 bbWeight=1 PerfScore 1.00
-G_M14814_IG03: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
- mov x0, x20
- mov x1, x19
- ; gcrRegs +[x1]
- bl <unknown method>
- ; gcrRegs -[x1 x19] +[x0]
- ; gcr arg pop 0
- mov x19, x0
- ; gcrRegs +[x19]
- cbz x19, G_M14814_IG07
- ;; size=20 bbWeight=0.99 PerfScore 3.48
-G_M14814_IG04: ; bbWeight=0.82, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
- ; gcrRegs -[x0]
- mov x0, x21
- ; byrRegs +[x0]
- mov x1, x19
- ; gcrRegs +[x1]
- ;; size=8 bbWeight=0.82 PerfScore 0.82
-G_M14814_IG05: ; bbWeight=0.82, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- b <unknown method>
- ; gcr arg pop 0
- ;; size=16 bbWeight=0.82 PerfScore 4.09
-G_M14814_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, gcvars, byref, isz
- ; gcrRegs -[x1]
- ; byrRegs -[x0]
+G_M14814_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -73,7 +48,9 @@ G_M14814_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=800
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- mov x0, x20
+ ;; size=36 bbWeight=0.80 PerfScore 6.00
+G_M14814_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+ mov x0, x21
mov x1, x19
; gcrRegs +[x1]
bl <unknown method>
@@ -81,11 +58,23 @@ G_M14814_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=800
; gcr arg pop 0
mov x19, x0
; gcrRegs +[x19]
- cbnz x19, G_M14814_IG04
- ;; size=56 bbWeight=0.01 PerfScore 0.07
-G_M14814_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x19]
- ; byrRegs -[x21]
+ cbz x19, G_M14814_IG06
+ mov x0, x20
+ ; gcrRegs -[x0]
+ ; byrRegs +[x0]
+ mov x1, x19
+ ; gcrRegs +[x1]
+ ;; size=28 bbWeight=1 PerfScore 4.50
+G_M14814_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ b <unknown method>
+ ; gcr arg pop 0
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M14814_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x1 x19]
+ ; byrRegs -[x0 x20]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -109,7 +98,7 @@ G_M14814_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 184, prolog size 28, PerfScore 14.46, instruction count 46, allocated bytes for code 184 (MethodHash=29c6c621) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
+; Total bytes of code 164, prolog size 28, PerfScore 21.50, instruction count 41, allocated bytes for code 164 (MethodHash=29c6c621) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
; ============================================================
Unwind Info:
@@ -120,7 +109,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-16 (-6.67%) : 250329.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (FullOpts)
@@ -2,37 +2,38 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Unknown PGO
; fp based frame
; fully interruptible
+; with Unknown PGO: edge weights are invalid, and fgCalledCount is 3648
; No matching PGO data
; 0 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T09] ( 4, 2 ) byref -> x0 single-def
-; V01 arg1 [V01,T08] ( 5, 3 ) long -> x1 single-def
-; V02 arg2 [V02,T07] ( 5, 3 ) ref -> x2 class-hnd single-def <System.Object>
-;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
-;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T10] ( 2, 4 ) ref -> x3 class-hnd single-def "impAppendStmt" <int[]>
-; V06 tmp2 [V06,T11] ( 2, 0 ) int -> x19 "Inline return value spill temp"
-; V07 tmp3 [V07,T02] ( 4, 360.15) byref -> x3 single-def "Inline stloc first use temp"
-; V08 tmp4 [V08,T05] ( 3, 16.31) long -> x4 "Inlining Arg"
-; V09 tmp5 [V09,T01] ( 4, 711.15) int -> x5 "Inline stloc first use temp"
-; V10 tmp6 [V10,T00] ( 5,1409 ) int -> x6 "Inline stloc first use temp"
-; V11 tmp7 [V11,T04] ( 5, 18.46) byref -> x7 "Inline stloc first use temp"
-; V12 tmp8 [V12,T03] ( 5, 96 ) int -> x8 "Inline stloc first use temp"
-; V13 tmp9 [V13,T06] ( 2, 12.31) long -> x9 "Inline stloc first use temp"
-; V14 tmp10 [V14,T12] ( 3, 0 ) long -> x19 "Inline stloc first use temp"
-;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V16 tmp12 [V16 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+; V00 arg0 [V00,T10] ( 4, 3.42) byref -> x0 single-def
+; V01 arg1 [V01,T08] ( 5, 11.96) long -> x1 single-def
+; V02 arg2 [V02,T09] ( 5, 4.42) ref -> x2 class-hnd single-def <System.Object>
+;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
+;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V05 tmp1 [V05,T11] ( 2, 4 ) ref -> x3 class-hnd single-def "impAppendStmt" <int[]>
+; V06 tmp2 [V06,T12] ( 2, 2.00) int -> x9 "Inline return value spill temp"
+; V07 tmp3 [V07,T04] ( 4, 67.48) byref -> x3 single-def "Inline stloc first use temp"
+; V08 tmp4 [V08,T05] ( 3, 66.04) long -> x4 "Inlining Arg"
+; V09 tmp5 [V09,T03] ( 4,100.95) int -> x5 "Inline stloc first use temp"
+; V10 tmp6 [V10,T00] ( 5,138.86) int -> x6 "Inline stloc first use temp"
+; V11 tmp7 [V11,T02] ( 5,101.32) byref -> x7 "Inline stloc first use temp"
+; V12 tmp8 [V12,T01] ( 5,122.66) int -> x8 "Inline stloc first use temp"
+; V13 tmp9 [V13,T06] ( 2, 62.04) long -> x9 "Inline stloc first use temp"
+; V14 tmp10 [V14,T07] ( 3, 17.13) long -> x9 "Inline stloc first use temp"
+;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V16 tmp12 [V16 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
-G_M34926_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+G_M34926_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M34926_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref
; gcrRegs +[x2]
; byrRegs +[x0]
@@ -56,7 +57,7 @@ G_M34926_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, by
lsr x5, x5, x6
mov w6, wzr
;; size=64 bbWeight=1 PerfScore 17.50
-G_M34926_IG03: ; bbWeight=6.15, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
+G_M34926_IG03: ; bbWeight=31.02, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
add w7, w5, #1
mov w8, #24
smull x7, w7, w8
@@ -66,40 +67,56 @@ G_M34926_IG03: ; bbWeight=6.15, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x
ldr x9, [x7, #0x08]
and w8, w8, #0xD1FFAB1E
cmp x9, x4
- beq G_M34926_IG11
- ;; size=36 bbWeight=6.15 PerfScore 70.77
-G_M34926_IG04: ; bbWeight=77.54, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
+ beq G_M34926_IG07
+ ;; size=36 bbWeight=31.02 PerfScore 356.71
+G_M34926_IG04: ; bbWeight=29.41, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
; byrRegs -[x7]
- cbz w8, G_M34926_IG09
- ;; size=4 bbWeight=77.54 PerfScore 77.54
-G_M34926_IG05: ; bbWeight=352, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
+ cbz w8, G_M34926_IG12
+ ;; size=4 bbWeight=29.41 PerfScore 29.41
+G_M34926_IG05: ; bbWeight=34.46, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
add w6, w6, #1
- ldr w7, [x3, #0x04]
+ ldr w9, [x3, #0x04]
add w5, w5, w6
- and w5, w7, w5
+ and w5, w9, w5
cmp w6, #8
blt G_M34926_IG03
- ;; size=24 bbWeight=352 PerfScore 2112.00
-G_M34926_IG06: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref
+ ;; size=24 bbWeight=34.46 PerfScore 206.79
+G_M34926_IG06: ; bbWeight=0.90, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref
; byrRegs -[x3]
- b G_M34926_IG09
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M34926_IG07: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz
- cmp w19, #1
- bne G_M34926_IG09
+ b G_M34926_IG12
+ ;; size=4 bbWeight=0.90 PerfScore 0.90
+G_M34926_IG07: ; bbWeight=8.06, gcrefRegs=0004 {x2}, byrefRegs=0089 {x0 x3 x7}, byref, isz
+ ; byrRegs +[x3 x7]
+ ldr x9, [x7, #0x10]
+ eor x9, x9, x1
+ cmp x9, #1
+ bhi G_M34926_IG04
+ ;; size=16 bbWeight=8.06 PerfScore 40.32
+G_M34926_IG08: ; bbWeight=0.20, gcrefRegs=0004 {x2}, byrefRegs=0081 {x0 x7}, byref, isz
+ ; byrRegs -[x3]
+ dmb ishld
+ ldr w3, [x7]
+ cmp w3, w8
+ bne G_M34926_IG12
+ ;; size=16 bbWeight=0.20 PerfScore 2.92
+G_M34926_IG09: ; bbWeight=1.00, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz
+ ; byrRegs -[x7]
+ cmp w9, #1
+ bne G_M34926_IG12
+ ;; size=8 bbWeight=1.00 PerfScore 1.50
+G_M34926_IG10: ; bbWeight=0.52, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref
mov x1, x2
; gcrRegs +[x1]
bl <unknown method>
; gcrRegs -[x1-x2]
; byrRegs -[x0]
; gcr arg pop 0
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M34926_IG08: ; bbWeight=0, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ;; size=8 bbWeight=0.52 PerfScore 0.78
+G_M34926_IG11: ; bbWeight=0.52, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M34926_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, gcvars, byref
+ ;; size=8 bbWeight=0.52 PerfScore 1.04
+G_M34926_IG12: ; bbWeight=0.90, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, gcvars, byref
; gcrRegs +[x2]
; byrRegs +[x0]
movz x3, #0xD1FFAB1E // code for System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object)
@@ -110,39 +127,24 @@ G_M34926_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0004 {
; gcrRegs -[x2]
; byrRegs -[x0]
; gcr arg pop 0
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M34926_IG10: ; bbWeight=0, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ;; size=20 bbWeight=0.90 PerfScore 4.92
+G_M34926_IG13: ; bbWeight=0.90, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M34926_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0089 {x0 x3 x7}, gcvars, byref, isz
- ; gcrRegs +[x2]
- ; byrRegs +[x0 x3 x7]
- ldr x9, [x7, #0x10]
- eor x19, x9, x1
- cmp x19, #1
- bhi G_M34926_IG04
- dmb ishld
- ldr w3, [x7]
- ; byrRegs -[x3]
- cmp w3, w8
- bne G_M34926_IG09
- b G_M34926_IG07
- ;; size=36 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0.90 PerfScore 1.79
-; Total bytes of code 240, prolog size 12, PerfScore 2280.31, instruction count 60, allocated bytes for code 240 (MethodHash=f2f07791) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (FullOpts)
+; Total bytes of code 224, prolog size 8, PerfScore 666.08, instruction count 56, allocated bytes for code 224 (MethodHash=f2f07791) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -153,10 +155,7 @@ 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
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-20 (-5.95%) : 250191.dasm - System.AppContext:Setup(ulong,ulong,int) (FullOpts)
@@ -2,25 +2,28 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Unknown PGO
; fp based frame
; partially interruptible
+; with Unknown PGO: edge weights are valid, and fgCalledCount is 3
; No matching PGO data
; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T06] ( 3, 98 ) long -> x20 single-def
-; V01 arg1 [V01,T07] ( 3, 98 ) long -> x21 single-def
-; V02 arg2 [V02,T05] ( 5,100 ) int -> x19 single-def
-; V03 loc0 [V03,T01] ( 5,385 ) int -> x23
+; V00 arg0 [V00,T07] ( 3, 74.00) long -> x20 single-def
+; V01 arg1 [V01,T08] ( 3, 74.00) long -> x21 single-def
+; V02 arg2 [V02,T06] ( 5, 76.00) int -> x19 single-def
+; V03 loc0 [V03,T01] ( 5,289.00) int -> x23
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T09] ( 3, 6 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V05 tmp1 [V05,T10] ( 3, 6.00) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V06 tmp2 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V07 tmp3 [V07,T00] ( 3,576 ) ref -> x24 class-hnd "Inlining Arg" <<unknown class>>
-; V08 tmp4 [V08,T02] ( 2,384 ) ref -> x26 class-hnd exact "Inlining Arg" <System.String>
-; V09 tmp5 [V09,T03] ( 2,384 ) ref -> x2 class-hnd exact "Inlining Arg" <System.String>
+; V07 tmp3 [V07,T00] ( 3,432.00) ref -> x24 class-hnd "Inlining Arg" <<unknown class>>
+; V08 tmp4 [V08,T02] ( 2,288.00) ref -> x26 class-hnd exact "Inlining Arg" <System.String>
+; V09 tmp5 [V09,T03] ( 2,288.00) ref -> x2 class-hnd exact "Inlining Arg" <System.String>
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V11 cse0 [V11,T04] ( 3,288 ) long -> x25 "CSE - aggressive"
-; V12 cse1 [V12,T08] ( 4, 99 ) long -> x22 "CSE - aggressive"
+; V11 cse0 [V11,T04] ( 3,216.00) long -> x25 "CSE - aggressive"
+; V12 cse1 [V12,T09] ( 4, 75.00) long -> x22 "CSE - aggressive"
+; V13 cse2 [V13,T05] ( 5, 88.00) ref -> x1 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -41,10 +44,23 @@ G_M44736_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x22, #0xD1FFAB1E LSL #32
ldr x0, [x22]
; gcrRegs +[x0]
- cbnz x0, G_M44736_IG07
+ cbz x0, G_M44736_IG04
;; size=20 bbWeight=1 PerfScore 5.50
-G_M44736_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M44736_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ movz x0, #32
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ movz x1, #8
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ ;; size=44 bbWeight=0.80 PerfScore 6.80
+G_M44736_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -68,8 +84,8 @@ G_M44736_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov w23, wzr
cmp w19, #0
ble G_M44736_IG08
- ;; size=72 bbWeight=1 PerfScore 13.50
-G_M44736_IG04: ; bbWeight=96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=72 bbWeight=1.00 PerfScore 13.50
+G_M44736_IG05: ; bbWeight=72.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x24, [x22]
; gcrRegs +[x24]
sbfiz x25, x23, #3, #32
@@ -78,7 +94,7 @@ G_M44736_IG04: ; bbWeight=96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs +[x0]
mov x26, x0
; gcrRegs +[x26]
- ldr x0, [x25, x21]
+ ldr x0, [x21, x25]
; gcrRegs -[x0]
bl <unknown method>
; gcrRegs +[x0]
@@ -95,52 +111,36 @@ G_M44736_IG04: ; bbWeight=96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x4, [x4]
blr x4
; gcrRegs -[x0-x2 x24 x26]
- cbz w0, G_M44736_IG06
- ;; size=72 bbWeight=96 PerfScore 2304.00
-G_M44736_IG05: ; bbWeight=96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M44736_IG07
+ ;; size=72 bbWeight=72.00 PerfScore 1728.00
+G_M44736_IG06: ; bbWeight=28.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ movz x1, #8
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ mov x0, x1
+ ; gcrRegs +[x0]
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x0]
+ ;; size=36 bbWeight=28.80 PerfScore 216.00
+G_M44736_IG07: ; bbWeight=72.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add w23, w23, #1
- cmp w19, w23
- ble G_M44736_IG08
- b G_M44736_IG04
- ;; size=16 bbWeight=96 PerfScore 288.00
-G_M44736_IG06: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #8
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- movz x1, #8
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- b G_M44736_IG05
- ;; size=48 bbWeight=0.32 PerfScore 3.00
-G_M44736_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #32
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- movz x1, #8
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- b G_M44736_IG03
- ;; size=48 bbWeight=0.01 PerfScore 0.06
-G_M44736_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ cmp w23, w19
+ blt G_M44736_IG05
+ ;; size=12 bbWeight=72.00 PerfScore 144.00
+G_M44736_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp x25, x26, [sp, #0x40]
ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x50
ret lr
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=1 PerfScore 6.00
-; Total bytes of code 336, prolog size 24, PerfScore 2621.07, instruction count 84, allocated bytes for code 336 (MethodHash=16ec513f) for method System.AppContext:Setup(ulong,ulong,int) (FullOpts)
+; Total bytes of code 316, prolog size 24, PerfScore 2126.80, instruction count 79, allocated bytes for code 316 (MethodHash=16ec513f) for method System.AppContext:Setup(ulong,ulong,int) (FullOpts)
; ============================================================
Unwind Info:
@@ -151,7 +151,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 84 (0x00054) Actual length = 336 (0x000150)
+ Function Length : 79 (0x0004f) Actual length = 316 (0x00013c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+4.35%) : 250194.dasm - System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
@@ -2,55 +2,124 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Unknown PGO
; fp based frame
; fully interruptible
+; with Unknown PGO: edge weights are invalid, and fgCalledCount is 5
; No matching PGO data
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T05] ( 6, 3 ) int -> x19 single-def
+; V00 arg0 [V00,T03] ( 6, 41.78) int -> x19 single-def
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
-; V02 loc1 [V02,T01] ( 5, 39 ) int -> x20
-; V03 loc2 [V03,T08] ( 3, 0 ) int -> x0
-; V04 loc3 [V04,T06] ( 7, 0 ) int -> x20
+; V02 loc1 [V02,T00] ( 5,165.21) int -> x1
+; V03 loc2 [V03,T02] ( 3, 76.26) int -> x2
+; V04 loc3 [V04,T01] ( 8,119.79) int -> x20
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T07] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V06 tmp1 [V06,T10] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
-; V08 tmp3 [V08,T02] ( 2, 39 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-;* V09 tmp4 [V09,T03] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP
-; V10 tmp5 [V10,T00] ( 2, 78 ) byref -> x1 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V11 tmp6 [V11,T04] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
-; V12 tmp7 [V12,T09] ( 3, 0 ) int -> x0 "fgMakeTemp is creating a new local variable"
+; V08 tmp3 [V08,T06] ( 2, 38.89) byref -> x0 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+;* V09 tmp4 [V09,T08] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP
+; V10 tmp5 [V10,T07] ( 2, 2 ) byref -> x0 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V11 tmp6 [V11,T09] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
+; V12 tmp7 [V12,T04] ( 3, 40.27) int -> x0 "fgMakeTemp is creating a new local variable"
; V13 tmp8 [V13,T11] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V14 rat0 [V14,T10] ( 3, 0 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V14 rat0 [V14,T05] ( 3, 40.27) int -> x1 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 0
-G_M22313_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M22313_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
stp x19, x20, [sp, #0x10]
mov fp, sp
mov w19, w0
;; size=16 bbWeight=1 PerfScore 3.00
G_M22313_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- tbnz w19, #31, G_M22313_IG04
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M22313_IG03: ; bbWeight=39, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x1, #0xD1FFAB1E
+ tbnz w19, #31, G_M22313_IG15
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ mov w1, wzr
+ ;; size=20 bbWeight=1 PerfScore 3.00
+G_M22313_IG03: ; bbWeight=37.89, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ ; byrRegs +[x0]
+ ldr w2, [x0, w1, UXTW #2]
+ cmp w19, w2
+ ble G_M22313_IG13
+ ;; size=12 bbWeight=37.89 PerfScore 170.53
+G_M22313_IG04: ; bbWeight=42.11, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ add w1, w1, #1
+ cmp w1, #72
+ blt G_M22313_IG03
+ ;; size=12 bbWeight=42.11 PerfScore 84.21
+G_M22313_IG05: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0]
+ orr w20, w19, #1
+ movn w0, #0xD1FFAB1E LSL #16
+ cmp w20, w0
+ bge G_M22313_IG08
+ ;; size=16 bbWeight=0.53 PerfScore 1.32
+G_M22313_IG06: ; bbWeight=25.81, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov w0, w20
+ movz x1, #0xD1FFAB1E // code for System.Collections.HashHelpers:IsPrime(int):ubyte
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
- mov w20, wzr
- b G_M22313_IG05
- ;; size=20 bbWeight=39 PerfScore 117.00
-G_M22313_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x1, [x1]
+ blr x1
+ ; gcr arg pop 0
+ cbnz w0, G_M22313_IG10
+ ;; size=28 bbWeight=25.81 PerfScore 180.70
+G_M22313_IG07: ; bbWeight=28.68, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ add w20, w20, #2
+ movn w0, #0xD1FFAB1E LSL #16
+ cmp w20, w0
+ blt G_M22313_IG06
+ ;; size=16 bbWeight=28.68 PerfScore 71.71
+G_M22313_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, w19
+ ;; size=4 bbWeight=0.36 PerfScore 0.18
+G_M22313_IG09: ; bbWeight=0.36, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.36 PerfScore 1.08
+G_M22313_IG10: ; bbWeight=6.71, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ sub w0, w20, #1
+ movz w1, #0xD1FFAB1E
+ movk w1, #0xD1FFAB1E LSL #16
+ smull x1, w1, w0
+ asr x1, x1, #32
+ asr w2, w1, #4
+ add w1, w2, w1, LSR #31
+ mov w2, #101
+ msub w0, w1, w2, w0
+ cbz w0, G_M22313_IG07
+ ;; size=40 bbWeight=6.71 PerfScore 67.12
+G_M22313_IG11: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, w20
+ ;; size=4 bbWeight=0.17 PerfScore 0.08
+G_M22313_IG12: ; bbWeight=0.17, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.17 PerfScore 0.50
+G_M22313_IG13: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, w2
+ ;; size=4 bbWeight=0.47 PerfScore 0.24
+G_M22313_IG14: ; bbWeight=0.47, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.47 PerfScore 1.42
+G_M22313_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; gcr arg pop 0
- mov x20, x0
- ; gcrRegs +[x20]
+ mov x19, x0
+ ; gcrRegs +[x19]
movz x0, #0xD1FFAB1E // code for <unknown method>
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
@@ -61,7 +130,7 @@ G_M22313_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
mov x1, x0
; gcrRegs +[x1]
- mov x0, x20
+ mov x0, x19
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -69,73 +138,15 @@ G_M22313_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x2
; gcrRegs -[x0-x1]
; gcr arg pop 0
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
bl CORINFO_HELP_THROW
- ; gcrRegs -[x0 x20]
+ ; gcrRegs -[x0 x19]
; gcr arg pop 0
- ;; size=76 bbWeight=0 PerfScore 0.00
-G_M22313_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ; byrRegs +[x1]
- ldr w0, [x1, w20, UXTW #2]
- cmp w19, w0
- ble G_M22313_IG06
- add w20, w20, #1
- cmp w20, #72
- blt G_M22313_IG05
- orr w20, w19, #1
- b G_M22313_IG09
- ;; size=32 bbWeight=0 PerfScore 0.00
-G_M22313_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[x1]
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M22313_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- mov w0, w20
- movz x1, #0xD1FFAB1E // code for System.Collections.HashHelpers:IsPrime(int):ubyte
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- ; gcr arg pop 0
- cbz w0, G_M22313_IG08
- sub w0, w20, #1
- movz w1, #0xD1FFAB1E
- movk w1, #0xD1FFAB1E LSL #16
- smull x1, w1, w0
- asr x1, x1, #32
- asr w2, w1, #4
- add w1, w2, w1, LSR #31
- mov w2, #101
- msub w0, w1, w2, w0
- cbnz w0, G_M22313_IG11
- ;; size=68 bbWeight=0 PerfScore 0.00
-G_M22313_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add w20, w20, #2
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M22313_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movn w0, #0xD1FFAB1E LSL #16
- cmp w20, w0
- blt G_M22313_IG07
- mov w0, w19
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M22313_IG10: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M22313_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, w20
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M22313_IG12: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ brk_windows #0
+ ;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 276, prolog size 16, PerfScore 121.00, instruction count 69, allocated bytes for code 276 (MethodHash=5705a8d6) for method System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
+; Total bytes of code 288, prolog size 16, PerfScore 585.07, instruction count 72, allocated bytes for code 288 (MethodHash=5705a8d6) for method System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -146,7 +157,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 69 (0x00045) Actual length = 276 (0x000114)
+ 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)
+16 (+5.56%) : 250237.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
@@ -2,36 +2,39 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Unknown PGO
; fp based frame
; fully interruptible
+; with Unknown PGO: edge weights are invalid, and fgCalledCount is 1
; No matching PGO data
; 0 inlinees with PGO data; 14 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T09] ( 5, 2.83) long -> x0 single-def
-; V01 arg1 [V01,T05] ( 6, 15.64) long -> x19 single-def
-; V02 arg2 [V02,T08] ( 3, 3 ) long -> x2 single-def
-; V03 loc0 [V03,T02] ( 18, 51.36) long -> x20
-; V04 loc1 [V04,T06] ( 14, 11.73) int -> x21
+; V00 arg0 [V00,T04] ( 5, 21.52) long -> x0 single-def
+; V01 arg1 [V01,T05] ( 6, 19.60) long -> x19 single-def
+; V02 arg2 [V02,T07] ( 3, 3 ) long -> x2 single-def
+; V03 loc0 [V03,T02] ( 18, 91.25) long -> x20
+; V04 loc1 [V04,T08] ( 14, 4.44) int -> x21
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref
-; V06 loc3 [V06,T04] ( 6, 18.08) long -> x3
-; V07 loc4 [V07,T10] ( 5, 2.64) long -> x2
-; V08 loc5 [V08,T07] ( 2, 8.41) long -> x1
+; V06 loc3 [V06,T03] ( 6, 72.07) long -> x3
+; V07 loc4 [V07,T09] ( 5, 3.54) long -> x2
+; V08 loc5 [V08,T06] ( 2, 17.38) long -> x1
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp2 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V12 tmp3 [V12,T00] ( 6,100.29) long -> x3 "Inlining Arg"
-; V13 tmp4 [V13,T01] ( 5, 83.57) byref -> x4 "Inlining Arg"
+; V12 tmp3 [V12,T00] ( 6,203.21) long -> x3 "Inlining Arg"
+; V13 tmp4 [V13,T01] ( 5,169.35) byref -> x4 "Inlining Arg"
;* V14 tmp5 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp6 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V16 tmp7 [V16,T03] ( 3, 30.76) byref -> x1 single-def "Inlining Arg"
+; V16 tmp7 [V16,T11] ( 3, 1.01) byref -> x1 single-def "Inlining Arg"
;* V17 tmp8 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp9 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V19 tmp10 [V19,T11] ( 3, 0.93) byref -> x0 "Inlining Arg"
+; V19 tmp10 [V19,T10] ( 3, 1.17) byref -> x0 "Inlining Arg"
;* V20 tmp11 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp12 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp14 [V23,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V24 cse0 [V24,T13] ( 2, 0.85) ref -> x1 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -45,18 +48,24 @@ G_M6063_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M6063_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov x20, xzr
cmp x2, #4
- blo G_M6063_IG06
+ bhs G_M6063_IG05
;; size=12 bbWeight=1 PerfScore 2.00
-G_M6063_IG03: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6063_IG03: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ tbz w2, #1, G_M6063_IG13
+ ;; size=4 bbWeight=0.62 PerfScore 0.62
+G_M6063_IG04: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b G_M6063_IG09
+ ;; size=4 bbWeight=0.32 PerfScore 0.32
+G_M6063_IG05: ; bbWeight=0.45, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub x1, x2, #4
- ;; size=4 bbWeight=0.05 PerfScore 0.03
-G_M6063_IG04: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.45 PerfScore 0.22
+G_M6063_IG06: ; bbWeight=18.82, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lsl x3, x20, #1
ldr x3, [x0, x3]
tst x3, #0xD1FFAB1E
- bne G_M6063_IG12
- ;; size=16 bbWeight=0.51 PerfScore 2.79
-G_M6063_IG05: ; bbWeight=8.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ bne G_M6063_IG18
+ ;; size=16 bbWeight=18.82 PerfScore 103.49
+G_M6063_IG07: ; bbWeight=16.93, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add x4, x20, x19
strb w3, [x4]
lsr x3, x3, #16
@@ -67,52 +76,44 @@ G_M6063_IG05: ; bbWeight=8.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
strb w3, [x4, #0x03]
add x20, x20, #4
cmp x1, x20
- bhs G_M6063_IG04
- ;; size=44 bbWeight=8.36 PerfScore 79.39
-G_M6063_IG06: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- tbz w2, #1, G_M6063_IG09
- ;; size=4 bbWeight=0.07 PerfScore 0.07
-G_M6063_IG07: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ bhs G_M6063_IG06
+ ;; size=44 bbWeight=16.93 PerfScore 160.88
+G_M6063_IG08: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b G_M6063_IG03
+ ;; size=4 bbWeight=0.62 PerfScore 0.62
+G_M6063_IG09: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lsl x1, x20, #1
ldr w21, [x0, x1]
tst w21, #0xD1FFAB1E
- bne G_M6063_IG14
- ;; size=16 bbWeight=0.32 PerfScore 1.75
-G_M6063_IG08: ; bbWeight=5.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ beq G_M6063_IG12
+ ;; size=16 bbWeight=0.32 PerfScore 1.79
+G_M6063_IG10: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ tst w21, #0xD1FFAB1E
+ bne G_M6063_IG17
+ ;; size=8 bbWeight=0.53 PerfScore 0.80
+G_M6063_IG11: ; bbWeight=0.43, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b G_M6063_IG16
+ ;; size=4 bbWeight=0.43 PerfScore 0.43
+G_M6063_IG12: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x1, x20, x19
strb w21, [x1]
lsr w3, w21, #16
strb w3, [x1, #0x01]
add x20, x20, #2
- ;; size=20 bbWeight=5.13 PerfScore 20.51
-G_M6063_IG09: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- tbnz w2, #0, G_M6063_IG16
- ;; size=4 bbWeight=0.52 PerfScore 0.52
-G_M6063_IG10: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=20 bbWeight=0.17 PerfScore 0.68
+G_M6063_IG13: ; bbWeight=0.47, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ tbnz w2, #0, G_M6063_IG20
+ ;; size=4 bbWeight=0.47 PerfScore 0.47
+G_M6063_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov x0, x20
- ;; size=4 bbWeight=0.26 PerfScore 0.13
-G_M6063_IG11: ; bbWeight=0.26, epilog, nogc, extend
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M6063_IG15: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=0.26 PerfScore 1.31
-G_M6063_IG12: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- sxtw w21, w3
- tst w21, #0xD1FFAB1E
- bne G_M6063_IG14
- ;; size=12 bbWeight=0.19 PerfScore 0.38
-G_M6063_IG13: ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x0, x20, x19
- strb w21, [x0]
- lsr w1, w21, #16
- strb w1, [x0, #0x01]
- lsr x21, x3, #32
- add x20, x20, #2
- ;; size=24 bbWeight=0.15 PerfScore 0.77
-G_M6063_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- tst w21, #0xD1FFAB1E
- bne G_M6063_IG15
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M6063_IG16: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -125,25 +126,39 @@ G_M6063_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr x2, [x2]
blr x2
; gcr arg pop 0
- ;; size=52 bbWeight=0 PerfScore 0.00
-G_M6063_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=44 bbWeight=0.43 PerfScore 3.61
+G_M6063_IG17: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
tst w21, #0xD1FFAB1E
- beq G_M6063_IG17
+ bne G_M6063_IG14
+ b G_M6063_IG21
+ ;; size=12 bbWeight=0.53 PerfScore 1.33
+G_M6063_IG18: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ sxtw w21, w3
+ tst w21, #0xD1FFAB1E
+ bne G_M6063_IG10
+ ;; size=12 bbWeight=0.38 PerfScore 0.75
+G_M6063_IG19: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add x0, x20, x19
+ strb w21, [x0]
+ lsr w1, w21, #16
+ strb w1, [x0, #0x01]
+ lsr x21, x3, #32
+ add x20, x20, #2
b G_M6063_IG10
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M6063_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- lsl x1, x20, #1
- ldrh w21, [x0, x1]
+ ;; size=28 bbWeight=0.20 PerfScore 1.17
+G_M6063_IG20: ; bbWeight=0.37, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ lsl x2, x20, #1
+ ldrh w21, [x0, x2]
cmp w21, #127
- bhi G_M6063_IG10
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M6063_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bhi G_M6063_IG14
+ ;; size=16 bbWeight=0.37 PerfScore 2.06
+G_M6063_IG21: ; bbWeight=0.30, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
strb w21, [x20, x19]
add x20, x20, #1
- b G_M6063_IG10
- ;; size=12 bbWeight=0 PerfScore 0.00
+ b G_M6063_IG14
+ ;; size=12 bbWeight=0.30 PerfScore 0.75
-; Total bytes of code 288, prolog size 20, PerfScore 113.65, instruction count 72, allocated bytes for code 288 (MethodHash=53fae850) for method System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
+; Total bytes of code 304, prolog size 20, PerfScore 291.49, instruction count 76, allocated bytes for code 304 (MethodHash=53fae850) for method System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
; ============================================================
Unwind Info:
@@ -154,7 +169,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 72 (0x00048) Actual length = 288 (0x000120)
+ Function Length : 76 (0x0004c) Actual length = 304 (0x000130)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+32 (+5.59%) : 250290.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (FullOpts)
@@ -2,39 +2,45 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Unknown PGO
; fp based frame
; fully interruptible
+; with Unknown PGO: edge weights are invalid, and fgCalledCount is 3
; No matching PGO data
-; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 5 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 11, 3 ) ref -> x19 class-hnd single-def <System.Reflection.MethodBase>
-; V01 arg1 [V01,T02] ( 4, 2.29) int -> x21 single-def
-; V02 arg2 [V02,T01] ( 9, 2.43) int -> x20
-; V03 arg3 [V03,T04] ( 6, 2 ) int -> x23 single-def
-; V04 arg4 [V04,T03] ( 9, 2 ) ref -> x22 class-hnd single-def <System.Type[]>
+; V00 arg0 [V00,T05] ( 11, 5.22) ref -> x20 class-hnd single-def <System.Reflection.MethodBase>
+; V01 arg1 [V01,T06] ( 4, 4.00) int -> x21 single-def
+; V02 arg2 [V02,T04] ( 9, 5.91) int -> x19
+; V03 arg3 [V03,T08] ( 6, 3.65) int -> x23 single-def
+; V04 arg4 [V04,T07] ( 8, 3.83) ref -> x22 class-hnd single-def <System.Type[]>
;* V05 loc0 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
;* V06 loc1 [V06,T14] ( 0, 0 ) ubyte -> zero-ref
;* V07 loc2 [V07 ] ( 0, 0 ) ubyte -> zero-ref
;* V08 loc3 [V08 ] ( 0, 0 ) ubyte -> zero-ref
-; V09 loc4 [V09,T08] ( 5, 0 ) ref -> x20 class-hnd single-def <System.Reflection.ParameterInfo>
-; V10 loc5 [V10,T07] ( 7, 0 ) int -> x19
-; V11 loc6 [V11,T10] ( 3, 0 ) ref -> x0 class-hnd <System.Type>
+; V09 loc4 [V09,T13] ( 4, 0.46) ref -> x21 class-hnd single-def <System.Reflection.ParameterInfo>
+; V10 loc5 [V10,T00] ( 6, 39.53) int -> x19
+; V11 loc6 [V11,T01] ( 3, 19.36) ref -> x0 class-hnd <System.Type>
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V13 tmp1 [V13 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-; V14 tmp2 [V14,T13] ( 3, 0 ) int -> x0 "Span.get_Item index"
-; V15 tmp3 [V15,T15] ( 2, 0 ) int -> x0 "Span.get_Item index"
+; V14 tmp2 [V14,T17] ( 3, 0.33) int -> x0 "Span.get_Item index"
+; V15 tmp3 [V15,T12] ( 2, 0.49) int -> x0 "Span.get_Item index"
;* V16 tmp4 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V17 tmp5 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V18 tmp6 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.ParameterInfo>
-;* V19 tmp7 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
-; V20 tmp8 [V20,T09] ( 4, 0 ) byref -> x21 "field V05._reference (fldOffset=0x0)" P-INDEP
-; V21 tmp9 [V21,T06] ( 8, 0 ) int -> x24 "field V05._length (fldOffset=0x8)" P-INDEP
-;* V22 tmp10 [V22 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-DEP
-;* V23 tmp11 [V23 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-DEP
-; V24 tmp12 [V24,T11] ( 3, 0 ) ref -> x0 single-def "argument with side effect"
-; V25 tmp13 [V25,T12] ( 3, 0 ) ref -> x0 single-def "argument with side effect"
-; V26 cse0 [V26,T05] ( 3, 0.00) ref -> x1 "CSE - conservative"
+;* V18 tmp6 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V19 tmp7 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V20 tmp8 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.ParameterInfo>
+;* V21 tmp9 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
+; V22 tmp10 [V22,T09] ( 4, 2.98) byref -> x21 "field V05._reference (fldOffset=0x0)" P-INDEP
+; V23 tmp11 [V23,T02] ( 9, 11.61) int -> x24 "field V05._length (fldOffset=0x8)" P-INDEP
+;* V24 tmp12 [V24 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-DEP
+;* V25 tmp13 [V25 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-DEP
+; V26 tmp14 [V26,T16] ( 3, 0.33) ref -> x0 single-def "argument with side effect"
+; V27 tmp15 [V27,T11] ( 3, 0.73) ref -> x0 single-def "argument with side effect"
+; V28 cse0 [V28,T15] ( 3, 0.34) long -> x24 "CSE - conservative"
+; V29 cse1 [V29,T03] ( 2, 8.66) byref -> x22 hoist "CSE - aggressive"
+; V30 cse2 [V30,T10] ( 6, 2.54) ref -> x1 multi-def "CSE - moderate"
;
; Lcl frame size = 0
@@ -44,36 +50,18 @@ G_M44091_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x21, x22, [sp, #0x20]
stp x23, x24, [sp, #0x30]
mov fp, sp
- mov x19, x0
- ; gcrRegs +[x19]
+ mov x20, x0
+ ; gcrRegs +[x20]
mov w21, w1
- mov w20, w2
+ mov w19, w2
mov w23, w3
mov x22, x4
; gcrRegs +[x22]
;; size=40 bbWeight=1 PerfScore 7.00
-G_M44091_IG02: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M44091_IG06
+G_M44091_IG02: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
+ cbnz x20, G_M44091_IG04
;; size=4 bbWeight=1 PerfScore 1.00
-G_M44091_IG03: ; bbWeight=0.14, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- eor w20, w20, #2
- and w0, w20, w21
- cmp w0, w21
- beq G_M44091_IG16
- ;; size=16 bbWeight=0.14 PerfScore 0.36
-G_M44091_IG04: ; bbWeight=8.14, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19 x22]
- mov w0, wzr
- ;; size=4 bbWeight=8.14 PerfScore 4.07
-G_M44091_IG05: ; bbWeight=8.14, 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=8.14 PerfScore 40.71
-G_M44091_IG06: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x19 x22]
+G_M44091_IG03: ; bbWeight=0.80, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -86,149 +74,24 @@ G_M44091_IG06: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=480
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- b G_M44091_IG03
- ;; size=40 bbWeight=0.00 PerfScore 0.01
-G_M44091_IG07: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz
- ; gcrRegs -[x19]
- ; byrRegs +[x21]
- tbz w20, #18, G_M44091_IG08
- ldr w0, [x22, #0x08]
- cmp w0, w24
- bhs G_M44091_IG15
- ldr x0, [x21, w0, UXTW #3]
- ; gcrRegs +[x0]
- ldr x1, [x0]
- ldr x1, [x1, #0x48]
- ldr x1, [x1, #0x20]
- blr x1
- ; gcrRegs -[x0]
- ; gcr arg pop 0
- tbnz w0, #4, G_M44091_IG13
- ;; size=40 bbWeight=0 PerfScore 0.00
-G_M44091_IG08: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz
- cbz w24, G_M44091_IG04
- ldr w0, [x22, #0x08]
- sub w1, w24, #1
- cmp w0, w1
- blt G_M44091_IG04
- sub w0, w24, #1
- ldr x20, [x21, w0, UXTW #3]
- ; gcrRegs +[x20]
+ ;; size=36 bbWeight=0.80 PerfScore 6.00
+G_M44091_IG04: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
+ eor w19, w19, #2
+ and w0, w21, w19
+ cmp w21, w0
+ bne G_M44091_IG11
+ ;; size=16 bbWeight=1.00 PerfScore 2.50
+G_M44091_IG05: ; bbWeight=0.80, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
+ tst w23, #3
+ beq G_M44091_IG30
+ ;; size=8 bbWeight=0.80 PerfScore 1.20
+G_M44091_IG06: ; bbWeight=0.72, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
+ cbz x22, G_M44091_IG14
+ ;; size=4 bbWeight=0.72 PerfScore 0.72
+G_M44091_IG07: ; bbWeight=0.57, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
mov x0, x20
; gcrRegs +[x0]
ldr x1, [x20]
- ldr x1, [x1, #0x48]
- ldr x1, [x1, #0x38]
- blr x1
- ; gcrRegs -[x22]
- ; byrRegs -[x21]
- ; gcr arg pop 0
- ldr x1, [x0]
- ldr x1, [x1, #0x60]
- ldr x1, [x1, #0x10]
- blr x1
- ; gcrRegs -[x0]
- ; gcr arg pop 0
- cbz w0, G_M44091_IG04
- mov x0, x20
- ; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- mov w2, wzr
- ldr x3, [x20]
- ldr x3, [x3, #0x50]
- ldr x3, [x3, #0x20]
- blr x3
- ; gcrRegs -[x0 x20]
- ; gcr arg pop 0
- cbnz w0, G_M44091_IG13
- b G_M44091_IG04
- ;; size=112 bbWeight=0 PerfScore 0.00
-G_M44091_IG09: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz
- ; gcrRegs +[x22]
- ; byrRegs +[x21]
- tbz w20, #16, G_M44091_IG13
- tbnz w20, #8, G_M44091_IG13
- mov w19, wzr
- b G_M44091_IG12
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M44091_IG10: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz
- ldr w1, [x22, #0x08]
- cmp w19, w1
- bhs G_M44091_IG15
- add x1, x22, #16
- ; byrRegs +[x1]
- ldr x0, [x1, w19, UXTW #3]
- ; gcrRegs +[x0]
- cbz x0, G_M44091_IG11
- ldr x1, [x21, w19, UXTW #3]
- ; gcrRegs +[x1]
- ; byrRegs -[x1]
- movz x2, #0xD1FFAB1E // code for System.Reflection.SignatureTypeExtensions:MatchesParameterTypeExactly(System.Type,System.Reflection.ParameterInfo):ubyte
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x0-x1]
- ; gcr arg pop 0
- cbz w0, G_M44091_IG04
- ;; size=52 bbWeight=0 PerfScore 0.00
-G_M44091_IG11: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
- add w19, w19, #1
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M44091_IG12: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz
- cmp w19, w24
- blt G_M44091_IG10
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M44091_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x22]
- ; byrRegs -[x21]
- mov w0, #1
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M44091_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
- ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M44091_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_M44091_IG16: ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x19 x22]
- tst w23, #3
- bne G_M44091_IG18
- tbz w23, #1, G_M44091_IG17
- mov x0, x19
- ; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x60]
- ldr x1, [x1]
- blr x1
...
libraries_tests.run.windows.arm64.Release.mch
-36 (-4.11%) : 156125.dasm - Microsoft.CodeAnalysis.PEModule+d__85:MoveNext():ubyte:this (Tier1)
@@ -5,14 +5,14 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 90464
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 90464
; 9 inlinees with PGO data; 32 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 17, 12.75) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__85>
+; V00 this [V00,T00] ( 17, 12.76) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__85>
; V01 loc0 [V01,T27] ( 4, 2.02) ubyte -> x1
; V02 loc1 [V02,T18] ( 3, 3.00) int -> x1 single-def
-; V03 loc2 [V03,T09] ( 6, 5.68) ref -> x19 class-hnd exact single-def <Microsoft.CodeAnalysis.PEModule>
+; V03 loc2 [V03,T09] ( 6, 5.69) ref -> x19 class-hnd exact single-def <Microsoft.CodeAnalysis.PEModule>
;* V04 loc3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Reflection.Metadata.TypeDefinitionHandleCollection>
;* V05 loc4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Reflection.Metadata.TypeDefinitionHandle>
; V06 loc5 [V06 ] ( 12, 10.83) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.Metadata.TypeDefinition>
@@ -24,11 +24,11 @@
;* V12 tmp5 [V12 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V13 tmp6 [V13 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V14 tmp7 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinitionHandle>
-; V15 tmp8 [V15,T04] ( 4, 9.37) ref -> x22 class-hnd exact "Inlining Arg" <System.Reflection.Metadata.MetadataReader>
+; V15 tmp8 [V15,T04] ( 4, 9.37) ref -> x21 class-hnd exact "Inlining Arg" <System.Reflection.Metadata.MetadataReader>
;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinition>
; V17 tmp10 [V17,T12] ( 3, 3.12) int -> x1 "Inline return value spill temp"
;* V18 tmp11 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.TypeDefinitionHandle>
-; V19 tmp12 [V19,T15] ( 3, 3.11) int -> x22 "Inline return value spill temp"
+; V19 tmp12 [V19,T15] ( 3, 3.11) int -> x21 "Inline return value spill temp"
; V20 tmp13 [V20,T02] ( 4, 12.43) byref -> x1 "impAppendStmt"
;* V21 tmp14 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Reflection.Metadata.TypeDefinitionHandle>
;* V22 tmp15 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -48,9 +48,9 @@
; V36 tmp29 [V36,T22] ( 2, 2.03) int -> x2 "Inline stloc first use temp"
; V37 tmp30 [V37,T20] ( 3, 2.03) int -> x1 "Inline return value spill temp"
;* V38 tmp31 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V39 tmp32 [V39,T07] ( 5, 6.09) byref -> x22 "Inlining Arg"
-; V40 tmp33 [V40,T08] ( 5, 6.09) int -> x19 "Inlining Arg"
-; V41 tmp34 [V41,T19] ( 3, 2.39) int -> x23 "Inline stloc first use temp"
+; V39 tmp32 [V39,T07] ( 5, 6.09) byref -> x3 "Inlining Arg"
+; V40 tmp33 [V40,T08] ( 5, 6.09) int -> x2 "Inlining Arg"
+; V41 tmp34 [V41,T19] ( 3, 2.39) int -> x1 "Inline stloc first use temp"
;* V42 tmp35 [V42 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp"
;* V43 tmp36 [V43 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp"
;* V44 tmp37 [V44 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
@@ -61,18 +61,18 @@
;* V49 tmp42 [V49 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V50 tmp43 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinitionHandle>
;* V51 tmp44 [V51,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V52 tmp45 [V52,T01] ( 5, 12.50) byref -> x20 "Inlining Arg"
+; V52 tmp45 [V52,T01] ( 5, 12.50) byref -> x1 "Inlining Arg"
; V53 tmp46 [V53,T30] ( 2, 0.00) int -> x0 "field V04._lastRowId (fldOffset=0x0)" P-INDEP
;* V54 tmp47 [V54 ] ( 0, 0 ) int -> zero-ref "field V05._rowId (fldOffset=0x0)" P-INDEP
; V55 tmp48 [V55 ] ( 6, 4.13) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V06._reader (fldOffset=0x0)" P-DEP
; V56 tmp49 [V56 ] ( 7, 6.70) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V06._treatmentAndRowId (fldOffset=0x8)" P-DEP
-; V57 tmp50 [V57,T23] ( 2, 2.03) int -> x21 "field V08.TypeDef (fldOffset=0x0)" P-INDEP
+; V57 tmp50 [V57,T23] ( 2, 2.03) int -> x20 "field V08.TypeDef (fldOffset=0x0)" P-INDEP
; V58 tmp51 [V58,T24] ( 2, 2.03) int -> x1 "field V08.NamespaceHandle (fldOffset=0x4)" P-INDEP
;* V59 tmp52 [V59 ] ( 0, 0 ) int -> zero-ref "field V09._value (fldOffset=0x0)" P-INDEP
; V60 tmp53 [V60,T31] ( 2, 0.00) int -> x0 single-def "field V10._lastRowId (fldOffset=0x0)" P-INDEP
;* V61 tmp54 [V61,T32] ( 0, 0 ) int -> zero-ref single-def "field V10._currentRowId (fldOffset=0x4)" P-INDEP
-; V62 tmp55 [V62,T11] ( 4, 4.14) int -> x21 "field V14._rowId (fldOffset=0x0)" P-INDEP
-; V63 tmp56 [V63,T13] ( 2, 3.12) ref -> x22 "field V16._reader (fldOffset=0x0)" P-INDEP
+; V62 tmp55 [V62,T11] ( 4, 4.14) int -> x20 "field V14._rowId (fldOffset=0x0)" P-INDEP
+; V63 tmp56 [V63,T13] ( 2, 3.12) ref -> x21 "field V16._reader (fldOffset=0x0)" P-INDEP
; V64 tmp57 [V64,T14] ( 2, 3.12) int -> x1 "field V16._treatmentAndRowId (fldOffset=0x8)" P-INDEP
;* V65 tmp58 [V65 ] ( 0, 0 ) int -> zero-ref "field V18._rowId (fldOffset=0x0)" P-INDEP
;* V66 tmp59 [V66 ] ( 0, 0 ) int -> zero-ref "field V21._rowId (fldOffset=0x0)" P-INDEP
@@ -86,39 +86,162 @@
;* V74 tmp67 [V74 ] ( 0, 0 ) int -> zero-ref "field V48._rowId (fldOffset=0x0)" P-INDEP
; V75 tmp68 [V75,T34] ( 2, 0 ) int -> x2 "field V50._rowId (fldOffset=0x0)" P-INDEP
; V76 PSPSym [V76,T29] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
-; V77 cse0 [V77,T10] ( 3, 4.69) int -> x1 "CSE - aggressive"
+; V77 cse0 [V77,T10] ( 3, 4.69) int -> x2 "CSE - aggressive"
;
; Lcl frame size = 40
G_M11515_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]!
+ stp fp, lr, [sp, #-0x50]!
stp x19, x20, [sp, #0x38]
- stp x21, x22, [sp, #0x48]
- str x23, [sp, #0x58]
+ str x21, [sp, #0x48]
mov fp, sp
stp xzr, xzr, [fp, #0x20] // [V06 loc5], [V06 loc5+0x08]
- add x1, sp, #96
+ add x1, sp, #80
str x1, [fp, #0x30] // [V76 PSPSym]
str x0, [fp, #0x18] // [V00 this]
; GC ptr vars +{V00}
- ;; size=36 bbWeight=1 PerfScore 8.00
+ ;; size=32 bbWeight=1 PerfScore 7.00
G_M11515_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0]
ldr w1, [x0, #0x10]
ldr x19, [x0, #0x08]
; gcrRegs +[x19]
- cbz w1, G_M11515_IG05
+ cbz w1, G_M11515_IG14
;; size=12 bbWeight=1 PerfScore 7.00
G_M11515_IG03: ; bbWeight=1.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
cmp w1, #1
- bne G_M11515_IG28
+ bne G_M11515_IG18
;; size=8 bbWeight=1.00 PerfScore 1.50
G_M11515_IG04: ; bbWeight=1.02, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
movn w1, #2
str w1, [x0, #0x10]
- b G_M11515_IG07
- ;; size=12 bbWeight=1.02 PerfScore 2.54
-G_M11515_IG05: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=1.02 PerfScore 1.52
+G_M11515_IG05: ; bbWeight=1.56, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ add x1, x0, #36
+ ; byrRegs +[x1]
+ ldp w3, w2, [x1]
+ cmp w2, w3
+ bge G_M11515_IG15
+ add w2, w2, #1
+ str w2, [x1, #0x04]
+ ldr w1, [x0, #0x28]
+ ; byrRegs -[x1]
+ and w20, w1, #0xD1FFAB1E
+ ldr x1, [x19, #0x18]
+ ; gcrRegs +[x1]
+ cbz x1, G_M11515_IG16
+ ;; size=40 bbWeight=1.56 PerfScore 21.88
+G_M11515_IG06: ; bbWeight=1.56, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0-x1]
+ ldrb w1, [x19, #0x6C]
+ cbnz w1, G_M11515_IG21
+ ldr x21, [x19, #0x18]
+ ; gcrRegs +[x21]
+ ldr w1, [x21, #0x50]
+ cbnz w1, G_M11515_IG19
+ sxtw w1, w20
+ ;; size=24 bbWeight=1.56 PerfScore 17.95
+G_M11515_IG07: ; bbWeight=1.56, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+ str x21, [fp, #0x20] // [V55 tmp48]
+ str w1, [fp, #0x28] // [V56 tmp49]
+ ldr x0, [fp, #0x18] // [V00 this]
+ ; gcrRegs +[x0]
+ ldrb w1, [x0, #0x18]
+ cbz w1, G_M11515_IG10
+ ;; size=20 bbWeight=1.56 PerfScore 12.49
+G_M11515_IG08: ; bbWeight=1.55, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x21]
+ ldr w1, [fp, #0x28] // [V56 tmp49]
+ lsr w1, w1, #24
+ uxtb w1, w1
+ cbnz w1, G_M11515_IG20
+ ldr x1, [fp, #0x20] // [V55 tmp48]
+ ; gcrRegs +[x1]
+ add x1, x1, #0xD1FFAB1E
+ ; gcrRegs -[x1]
+ ; byrRegs +[x1]
+ ldr w2, [fp, #0x28] // [V56 tmp49]
+ and w2, w2, #0xD1FFAB1E
+ sub w2, w2, #1
+ ldr w3, [x1, #0x20]
+ mul w2, w2, w3
+ add x3, x1, #40
+ ; byrRegs +[x3]
+ ldr w1, [x1, #0x08]
+ ; byrRegs -[x1]
+ add w1, w2, w1
+ mov w2, w1
+ add x2, x2, #4
+ ldrsw x4, [x3, #0x08]
+ cmp x2, x4
+ bhi G_M11515_IG22
+ ldr x2, [x3]
+ sxtw x1, w1
+ ldr w21, [x2, x1]
+ ;; size=88 bbWeight=1.55 PerfScore 48.18
+G_M11515_IG09: ; bbWeight=1.55, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x3]
+ tst w21, #6
+ bne G_M11515_IG05
+ ;; size=8 bbWeight=1.55 PerfScore 2.33
+G_M11515_IG10: ; bbWeight=1.02, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x19]
+ ldr w1, [fp, #0x28] // [V56 tmp49]
+ lsr w1, w1, #24
+ uxtb w1, w1
+ cbnz w1, G_M11515_IG24
+ ldr x1, [fp, #0x20] // [V55 tmp48]
+ ; gcrRegs +[x1]
+ add x1, x1, #0xD1FFAB1E
+ ; gcrRegs -[x1]
+ ; byrRegs +[x1]
+ ldr w2, [fp, #0x28] // [V56 tmp49]
+ and w2, w2, #0xD1FFAB1E
+ sub w2, w2, #1
+ ldr w3, [x1, #0x20]
+ mul w2, w2, w3
+ add x3, x1, #40
+ ; byrRegs +[x3]
+ ldr w4, [x1, #0x10]
+ add w2, w2, w4
+ ldrb w1, [x1, #0x07]
+ ; byrRegs -[x1]
+ cbnz w1, G_M11515_IG13
+ ;; size=64 bbWeight=1.02 PerfScore 23.35
+G_M11515_IG11: ; bbWeight=0.80, gcrefRegs=0001 {x0}, byrefRegs=0008 {x3}, byref, isz
+ mov w1, w2
+ add x1, x1, #4
+ ldrsw x4, [x3, #0x08]
+ cmp x1, x4
+ bhi G_M11515_IG22
+ ldr x1, [x3]
+ sxtw x2, w2
+ ldr w1, [x1, x2]
+ tst w1, #0xD1FFAB1E
+ bne G_M11515_IG23
+ ;; size=40 bbWeight=0.80 PerfScore 10.74
+G_M11515_IG12: ; bbWeight=1.02, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x3]
+ stp w20, w1, [x0, #0x1C]
+ mov w1, #1
+ str w1, [x0, #0x10]
+ b G_M11515_IG25
+ ;; size=16 bbWeight=1.02 PerfScore 3.55
+G_M11515_IG13: ; bbWeight=0.22, gcrefRegs=0001 {x0}, byrefRegs=0008 {x3}, byref, isz
+ ; byrRegs +[x3]
+ mov w1, w2
+ add x1, x1, #2
+ ldrsw x4, [x3, #0x08]
+ cmp x1, x4
+ bhi G_M11515_IG22
+ ldr x3, [x3]
+ ; byrRegs -[x3]
+ sxtw x2, w2
+ ldrh w1, [x3, x2]
+ b G_M11515_IG12
+ ;; size=36 bbWeight=0.22 PerfScore 2.86
+G_M11515_IG14: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x19]
movn w1, #0
str w1, [x0, #0x10]
mov x0, x19
@@ -143,117 +266,16 @@ G_M11515_IG05: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
; gcrRegs +[x0]
b G_M11515_IG04
;; size=72 bbWeight=0.00 PerfScore 0.04
-G_M11515_IG06: ; bbWeight=1.55, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x20]
- tst w22, #6
- beq G_M11515_IG14
...
-8 (-2.11%) : 358041.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
@@ -35,7 +35,7 @@ G_M28334_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M28334_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
cmp w2, #2
- bhi G_M28334_IG07
+ bhi G_M28334_IG05
mov w2, w2
adr x3, [@RWD00]
ldr w3, [x3, x2, LSL #2]
@@ -46,24 +46,12 @@ G_M28334_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
G_M28334_IG03: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
b G_M28334_IG08
;; size=4 bbWeight=1 PerfScore 1.00
-G_M28334_IG04: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ldrsw x2, [x0, #0x1C]
- adds x1, x1, x2
- bvs G_M28334_IG06
- b G_M28334_IG08
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M28334_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ldrsw x2, [x0, #0x18]
- adds x1, x1, x2
- bvs G_M28334_IG06
- b G_M28334_IG08
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M28334_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28334_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
bl CORINFO_HELP_OVERFLOW
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M28334_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28334_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -95,10 +83,20 @@ G_M28334_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROW
; gcrRegs -[x0 x19]
; gcr arg pop 0
- brk_windows #0
- ;; size=80 bbWeight=0 PerfScore 0.00
-G_M28334_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ;; size=76 bbWeight=0 PerfScore 0.00
+G_M28334_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
+ ldrsw x2, [x0, #0x1C]
+ adds x1, x1, x2
+ bvs G_M28334_IG04
+ b G_M28334_IG08
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M28334_IG07: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldrsw x2, [x0, #0x18]
+ adds x1, x1, x2
+ bvs G_M28334_IG04
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M28334_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
mov x2, #0xD1FFAB1E
cmp x1, x2
bhi G_M28334_IG10
@@ -186,11 +184,11 @@ G_M28334_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=80 bbWeight=0 PerfScore 0.00
RWD00 dd G_M28334_IG03 - G_M28334_IG02
- dd G_M28334_IG04 - G_M28334_IG02
- dd G_M28334_IG05 - G_M28334_IG02
+ dd G_M28334_IG06 - G_M28334_IG02
+ dd G_M28334_IG07 - G_M28334_IG02
-; Total bytes of code 380, prolog size 20, PerfScore 20.00, instruction count 95, allocated bytes for code 380 (MethodHash=db819151) for method System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
+; Total bytes of code 372, prolog size 20, PerfScore 20.00, instruction count 93, allocated bytes for code 372 (MethodHash=db819151) for method System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
; ============================================================
Unwind Info:
@@ -201,7 +199,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
+ Function Length : 69 (0x00045) Actual length = 276 (0x000114)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-2.11%) : 278222.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
@@ -35,7 +35,7 @@ G_M28334_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M28334_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
cmp w2, #2
- bhi G_M28334_IG07
+ bhi G_M28334_IG05
mov w2, w2
adr x3, [@RWD00]
ldr w3, [x3, x2, LSL #2]
@@ -46,24 +46,12 @@ G_M28334_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
G_M28334_IG03: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
b G_M28334_IG08
;; size=4 bbWeight=1 PerfScore 1.00
-G_M28334_IG04: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ldrsw x2, [x0, #0x1C]
- adds x1, x1, x2
- bvs G_M28334_IG06
- b G_M28334_IG08
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M28334_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ldrsw x2, [x0, #0x18]
- adds x1, x1, x2
- bvs G_M28334_IG06
- b G_M28334_IG08
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M28334_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28334_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
bl CORINFO_HELP_OVERFLOW
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M28334_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28334_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -95,10 +83,20 @@ G_M28334_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROW
; gcrRegs -[x0 x19]
; gcr arg pop 0
- brk_windows #0
- ;; size=80 bbWeight=0 PerfScore 0.00
-G_M28334_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ;; size=76 bbWeight=0 PerfScore 0.00
+G_M28334_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
+ ldrsw x2, [x0, #0x1C]
+ adds x1, x1, x2
+ bvs G_M28334_IG04
+ b G_M28334_IG08
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M28334_IG07: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldrsw x2, [x0, #0x18]
+ adds x1, x1, x2
+ bvs G_M28334_IG04
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M28334_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
mov x2, #0xD1FFAB1E
cmp x1, x2
bhi G_M28334_IG10
@@ -186,11 +184,11 @@ G_M28334_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=80 bbWeight=0 PerfScore 0.00
RWD00 dd G_M28334_IG03 - G_M28334_IG02
- dd G_M28334_IG04 - G_M28334_IG02
- dd G_M28334_IG05 - G_M28334_IG02
+ dd G_M28334_IG06 - G_M28334_IG02
+ dd G_M28334_IG07 - G_M28334_IG02
-; Total bytes of code 380, prolog size 20, PerfScore 20.00, instruction count 95, allocated bytes for code 380 (MethodHash=db819151) for method System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
+; Total bytes of code 372, prolog size 20, PerfScore 20.00, instruction count 93, allocated bytes for code 372 (MethodHash=db819151) for method System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
; ============================================================
Unwind Info:
@@ -201,7 +199,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
+ Function Length : 69 (0x00045) Actual length = 276 (0x000114)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+0.84%) : 638273.dasm - System.Runtime.CompilerServices.TaskAwaiter:ThrowForNonSuccess(System.Threading.Tasks.Task) (Tier1)
@@ -14,14 +14,14 @@
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.List`1[System.Runtime.ExceptionServices.ExceptionDispatchInfo]>
;* V03 loc2 [V03 ] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T18] ( 3, 0 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V05 tmp1 [V05,T18] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V06 tmp2 [V06 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V07 tmp3 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V09 tmp5 [V09,T02] ( 7, 6.00) int -> x21 "Inline stloc first use temp"
+; V09 tmp5 [V09,T03] ( 7, 6.00) int -> x21 "Inline stloc first use temp"
;* V10 tmp6 [V10,T15] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V12 tmp8 [V12,T03] ( 8, 6.01) int -> x0 "Inline stloc first use temp"
+; V12 tmp8 [V12,T02] ( 10, 6.01) int -> x0 "Inline stloc first use temp"
; V13 tmp9 [V13,T08] ( 9, 3.01) int -> x1 "Inline stloc first use temp"
; V14 tmp10 [V14,T16] ( 4, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Runtime.ExceptionServices.ExceptionDispatchInfo>
; V15 tmp11 [V15,T05] ( 3, 6 ) ref -> x1 class-hnd exact single-def "dup spill" <<unknown class>>
@@ -34,22 +34,22 @@
; V22 tmp18 [V22,T17] ( 2, 1 ) int -> x0
;* V23 tmp19 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp20 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V25 tmp21 [V25,T13] ( 3, 2 ) int -> x20
-; V26 tmp22 [V26,T14] ( 3, 2 ) ubyte -> x20 "Inline return value spill temp"
+; V25 tmp21 [V25,T13] ( 3, 2 ) int -> x21
+; V26 tmp22 [V26,T14] ( 3, 2 ) ubyte -> x21 "Inline return value spill temp"
; V27 tmp23 [V27,T09] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V28 tmp24 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.TaskExceptionHolder>
;* V29 tmp25 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V30 tmp26 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V31 tmp27 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Generic.List`1[System.Runtime.ExceptionServices.ExceptionDispatchInfo]>
; V32 tmp28 [V32,T01] ( 4, 8 ) ref -> x20 class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.TaskExceptionHolder>
-; V33 tmp29 [V33,T07] ( 5, 4 ) ref -> x21 class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Runtime.ExceptionServices.ExceptionDispatchInfo]>
+; V33 tmp29 [V33,T07] ( 5, 4 ) ref -> x22 class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Runtime.ExceptionServices.ExceptionDispatchInfo]>
;* V34 tmp30 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp31 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp32 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V37 tmp33 [V37,T19] ( 3, 0 ) ref -> x0 single-def "arr expr"
-; V38 cse0 [V38,T04] ( 6, 6 ) byref -> x20 "CSE - aggressive"
+; V38 cse0 [V38,T04] ( 7, 6 ) byref -> x20 "CSE - aggressive"
; V39 cse1 [V39,T10] ( 3, 3 ) byref -> x0 "CSE - aggressive"
-; V40 cse2 [V40,T11] ( 3, 3 ) byref -> x22 "CSE - aggressive"
+; V40 cse2 [V40,T11] ( 3, 3 ) byref -> x21 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -82,27 +82,31 @@ G_M30140_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
;; size=64 bbWeight=1 PerfScore 14.00
G_M30140_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
ldapr w21, [x20]
- tbnz w21, #21, G_M30140_IG11
+ tbnz w21, #21, G_M30140_IG12
;; size=8 bbWeight=1 PerfScore 4.00
G_M30140_IG04: ; bbWeight=1.01, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
- tbnz w21, #22, G_M30140_IG11
+ tbnz w21, #22, G_M30140_IG12
;; size=4 bbWeight=1.01 PerfScore 1.01
G_M30140_IG05: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
- tbnz w21, #24, G_M30140_IG10
+ tbnz w21, #24, G_M30140_IG11
;; size=4 bbWeight=1.00 PerfScore 1.00
G_M30140_IG06: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
- tbnz w21, #23, G_M30140_IG11
+ tbnz w21, #23, G_M30140_IG12
;; size=4 bbWeight=0.99 PerfScore 0.99
G_M30140_IG07: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
- tbnz w21, #17, G_M30140_IG11
+ tbnz w21, #17, G_M30140_IG12
;; size=4 bbWeight=0.99 PerfScore 0.99
G_M30140_IG08: ; bbWeight=0.02, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
- tbnz w21, #16, G_M30140_IG11
+ tbz w21, #16, G_M30140_IG12
;; size=4 bbWeight=0.02 PerfScore 0.02
-G_M30140_IG09: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
- b G_M30140_IG11
- ;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M30140_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+G_M30140_IG09: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+ ldapr w0, [x20]
+ tbz w0, #21, G_M30140_IG13
+ ;; size=8 bbWeight=0.00 PerfScore 0.01
+G_M30140_IG10: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+ b G_M30140_IG37
+ ;; size=4 bbWeight=0.00 PerfScore 0.00
+G_M30140_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -115,65 +119,44 @@ G_M30140_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20
ldr x2, [x2]
blr x2
;; size=44 bbWeight=1 PerfScore 8.50
-G_M30140_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+G_M30140_IG12: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
ldapr w0, [x20]
- tbnz w0, #21, G_M30140_IG20
- ;; size=8 bbWeight=1 PerfScore 4.00
-G_M30140_IG12: ; bbWeight=1.01, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
- tbnz w0, #22, G_M30140_IG19
+ tbnz w0, #21, G_M30140_IG37
+ ;; size=8 bbWeight=1.00 PerfScore 3.99
+G_M30140_IG13: ; bbWeight=1.01, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+ tbnz w0, #22, G_M30140_IG33
;; size=4 bbWeight=1.01 PerfScore 1.01
-G_M30140_IG13: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
- tbnz w0, #24, G_M30140_IG18
+G_M30140_IG14: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+ tbnz w0, #24, G_M30140_IG32
;; size=4 bbWeight=1.00 PerfScore 1.00
-G_M30140_IG14: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
- tbnz w0, #23, G_M30140_IG17
- ;; size=4 bbWeight=0.99 PerfScore 0.99
G_M30140_IG15: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
- tbz w0, #17, G_M30140_IG35
+ tbnz w0, #23, G_M30140_IG25
;; size=4 bbWeight=0.99 PerfScore 0.99
-G_M30140_IG16: ; bbWeight=0.97, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+G_M30140_IG16: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+ tbz w0, #17, G_M30140_IG34
+ ;; size=4 bbWeight=0.99 PerfScore 0.99
+G_M30140_IG17: ; bbWeight=0.97, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
mov w1, #3
- b G_M30140_IG22
- ;; size=8 bbWeight=0.97 PerfScore 1.46
-G_M30140_IG17: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
- mov w1, #4
- b G_M30140_IG22
- ;; size=8 bbWeight=0.00 PerfScore 0.00
-G_M30140_IG18: ; bbWeight=0.02, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
- mov w1, #5
- b G_M30140_IG22
- ;; size=8 bbWeight=0.02 PerfScore 0.03
-G_M30140_IG19: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
- mov w1, #6
- b G_M30140_IG22
- ;; size=8 bbWeight=0.00 PerfScore 0.00
-G_M30140_IG20: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
- mov w1, #7
- b G_M30140_IG22
- ;; size=8 bbWeight=0.00 PerfScore 0.00
-G_M30140_IG21: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
- tst w0, #0xD1FFAB1E
- cset x1, ne
- ;; size=8 bbWeight=0.01 PerfScore 0.01
-G_M30140_IG22: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+ ;; size=4 bbWeight=0.97 PerfScore 0.49
+G_M30140_IG18: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
cmp w1, #6
- beq G_M30140_IG29
+ beq G_M30140_IG26
cmp w1, #7
- bne G_M30140_IG37
+ bne G_M30140_IG38
ldapr w0, [x20]
- tbz w0, #21, G_M30140_IG41
+ tbz w0, #21, G_M30140_IG42
add x0, x19, #40
; byrRegs +[x0]
ldapr x0, [x0]
; gcrRegs +[x0]
; byrRegs -[x0]
- cbz x0, G_M30140_IG40
+ cbz x0, G_M30140_IG41
add x0, x0, #24
; gcrRegs -[x0]
; byrRegs +[x0]
ldapr x1, [x0]
; gcrRegs +[x1]
- cbz x1, G_M30140_IG40
+ cbz x1, G_M30140_IG41
ldapr x0, [x0]
; gcrRegs +[x0]
; byrRegs -[x0]
@@ -184,13 +167,13 @@ G_M30140_IG22: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20
; gcrRegs +[x0]
; byrRegs -[x0]
cmp x0, #0
- cset x20, ne
- ; byrRegs -[x20]
+ cset x21, ne
;; size=68 bbWeight=1 PerfScore 23.50
-G_M30140_IG23: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M30140_IG19: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0-x1]
- tst w20, #255
- bne G_M30140_IG24
+ ; byrRegs -[x20]
+ tst w21, #255
+ bne G_M30140_IG20
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -203,7 +186,7 @@ G_M30140_IG23: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x2, [x2]
blr x2
;; size=52 bbWeight=1 PerfScore 10.00
-G_M30140_IG24: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M30140_IG20: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x28]
; gcrRegs +[x0]
add x0, x0, #24
@@ -212,9 +195,9 @@ G_M30140_IG24: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldapr x20, [x0]
; gcrRegs +[x20]
add x0, x20, #16
- ldapr x21, [x0]
- ; gcrRegs +[x21]
- cbnz x21, G_M30140_IG25
+ ldapr x22, [x0]
+ ; gcrRegs +[x22]
+ cbnz x22, G_M30140_IG21
movz x0, #0xD1FFAB1E
; byrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
@@ -228,10 +211,10 @@ G_M30140_IG24: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x2, [x2]
blr x2
;; size=68 bbWeight=1 PerfScore 19.50
-G_M30140_IG25: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x21, #0x10]
+G_M30140_IG21: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x22, #0x10]
cmp w0, #0
- bgt G_M30140_IG26
+ bgt G_M30140_IG22
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -244,35 +227,39 @@ G_M30140_IG25: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
ldr x2, [x2]
blr x2
;; size=56 bbWeight=1 PerfScore 13.00
-G_M30140_IG26: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- add x22, x20, #32
- ; byrRegs +[x22]
- ldaprb w0, [x22]
- cbnz w0, G_M30140_IG27
+G_M30140_IG22: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+ add x21, x20, #32
+ ; byrRegs +[x21]
+ ldaprb w0, [x21]
+ cbnz w0, G_M30140_IG23
mov x0, x20
; gcrRegs +[x0]
bl <unknown method>
; gcrRegs -[x0 x20]
mov w0, #1
- stlrb w0, [x22]
+ stlrb w0, [x21]
;; size=28 bbWeight=1 PerfScore 7.50
...
+8 (+1.69%) : 633055.dasm - System.Threading.Tasks.Dataflow.Internal.QueuedMap2+ArrayBasedLinkedQueue
1[System.Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair
2[System.Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]):int:this (Tier1)
@@ -5,11 +5,11 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 6859
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 6859
; 3 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 13, 7.99) ref -> x19 this class-hnd single-def <System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]>
+; V00 this [V00,T00] ( 14, 7.99) ref -> x19 this class-hnd single-def <System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]>
; V02 loc0 [V02,T08] ( 6, 4 ) int -> x20
; V03 loc1 [V03 ] ( 5, 1.98) struct (24) [fp+0x48] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]>
@@ -80,7 +80,7 @@ G_M42120_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {},
; gcrRegs +[x1]
ldr w14, [x19, #0x18]
cmn w14, #1
- beq G_M42120_IG09
+ beq G_M42120_IG10
;; size=12 bbWeight=1 PerfScore 4.50
G_M42120_IG03: ; bbWeight=0.99, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
sxtw w20, w14
@@ -90,11 +90,11 @@ G_M42120_IG03: ; bbWeight=0.99, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
; gcrRegs +[x15]
ldr w12, [x15, #0x10]
cmp w14, w12
- bhs G_M42120_IG12
+ bhs G_M42120_IG13
ldr x15, [x15, #0x08]
ldr w12, [x15, #0x08]
cmp w14, w12
- bhs G_M42120_IG11
+ bhs G_M42120_IG12
mov w12, #24
mov xip0, #16
umaddl x14, w14, w12, xip0
@@ -126,25 +126,27 @@ G_M42120_IG05: ; bbWeight=0.99, extend
add w2, w1, #1
str w2, [x0, #0x14]
;; size=48 bbWeight=0.99 PerfScore 14.84
-G_M42120_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M42120_IG06: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
; byrRegs -[x3]
ldr w0, [x19, #0x10]
cmn w0, #1
- bne G_M42120_IG10
- str w20, [x19, #0x10]
- ;; size=16 bbWeight=1 PerfScore 5.50
+ bne G_M42120_IG11
+ ;; size=12 bbWeight=0.99 PerfScore 4.45
G_M42120_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ str w20, [x19, #0x10]
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M42120_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
str w20, [x19, #0x14]
mov w0, w20
;; size=8 bbWeight=1 PerfScore 1.50
-G_M42120_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M42120_IG09: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x70]
ldp x19, x20, [sp, #0x60]
ldp fp, lr, [sp], #0x80
ret lr
;; size=16 bbWeight=1 PerfScore 4.00
-G_M42120_IG09: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M42120_IG10: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1]
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
@@ -160,7 +162,7 @@ G_M42120_IG09: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=800
; gcrRegs +[x22]
ldr w1, [x22, #0x08]
cmp w1, w21
- bhi G_M42120_IG13
+ bhi G_M42120_IG14
add x1, fp, #24 // [V24 tmp20]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
@@ -168,9 +170,11 @@ G_M42120_IG09: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=800
ldr x2, [x2]
blr x2
; gcrRegs -[x0 x22]
- b G_M42120_IG06
- ;; size=76 bbWeight=0.01 PerfScore 0.30
-G_M42120_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ldr w0, [x19, #0x10]
+ cmn w0, #1
+ beq G_M42120_IG07
+ ;; size=84 bbWeight=0.01 PerfScore 0.33
+G_M42120_IG11: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x21, [x19, #0x08]
; gcrRegs +[x21]
ldr w22, [x19, #0x14]
@@ -203,12 +207,12 @@ G_M42120_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr wzr, [x0]
blr x3
; gcrRegs -[x0 x21]
- b G_M42120_IG07
+ b G_M42120_IG08
;; size=104 bbWeight=0 PerfScore 0.00
-G_M42120_IG11: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M42120_IG12: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M42120_IG12: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M42120_IG13: ; 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
@@ -216,7 +220,7 @@ G_M42120_IG12: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x0
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M42120_IG13: ; bbWeight=0, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, byref
+G_M42120_IG14: ; bbWeight=0, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs +[x0 x22]
add w14, w21, #1
str w14, [x0, #0x10]
@@ -236,7 +240,7 @@ G_M42120_IG13: ; bbWeight=0, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=000
b G_M42120_IG06
;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 472, prolog size 36, PerfScore 69.80, instruction count 118, allocated bytes for code 472 (MethodHash=31685b77) for method System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]):int:this (Tier1)
+; Total bytes of code 480, prolog size 36, PerfScore 69.78, instruction count 120, allocated bytes for code 480 (MethodHash=31685b77) for method System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]):int:this (Tier1)
; ============================================================
Unwind Info:
@@ -247,7 +251,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 118 (0x00076) Actual length = 472 (0x0001d8)
+ Function Length : 120 (0x00078) Actual length = 480 (0x0001e0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+40 (+2.10%) : 598322.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (Tier1)
@@ -5,15 +5,15 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 7747
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 7747
; 13 inlinees with PGO data; 42 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 46, 27.17) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser>
+; V00 this [V00,T00] ( 47, 27.17) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser>
; V01 arg1 [V01,T05] ( 5, 5 ) byref -> x20 single-def
-; V02 arg2 [V02 ] ( 10, 4 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op single-def <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax]>
+; V02 arg2 [V02 ] ( 10, 4 ) struct ( 8) [fp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op single-def <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax]>
; V03 arg3 [V03,T11] ( 4, 3 ) byref -> x21 single-def
-; V04 loc0 [V04,T41] ( 3, 0 ) ref -> x20 class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.OmittedTypeArgumentSyntax>
+; V04 loc0 [V04,T41] ( 3, 0 ) ref -> x27 class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.OmittedTypeArgumentSyntax>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T15] ( 2, 4 ) int -> x23 "impAppendStmt"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "location for address-of(RValue)" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax]>
@@ -27,30 +27,30 @@
; V15 tmp10 [V15,T25] ( 3, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V16 tmp11 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.ArrayElement`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]>
; V17 tmp12 [V17,T26] ( 3, 2 ) ref -> x15 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V18 tmp13 [V18,T19] ( 3, 3 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V18 tmp13 [V18,T20] ( 3, 3 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V19 tmp14 [V19,T27] ( 3, 2.00) ref -> x15 "guarded devirt return temp"
; V20 tmp15 [V20,T03] ( 5, 7.22) ref -> x0 single-def "guarded devirt arg temp"
;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+SyntaxTokenWithTrivia>
; V22 tmp17 [V22,T43] ( 2, 0 ) ref -> x0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V23 tmp18 [V23,T28] ( 3, 2 ) ref -> x15 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V24 tmp19 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnosticInfo>
-; V25 tmp20 [V25,T12] ( 3, 4 ) ref -> x25 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V25 tmp20 [V25,T12] ( 3, 4 ) ref -> x24 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V26 tmp21 [V26 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V27 tmp22 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer>
; V28 tmp23 [V28,T23] ( 5, 2 ) ref -> x1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnosticInfo>
-; V29 tmp24 [V29,T13] ( 3, 4 ) ref -> x26 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.CSharpParseOptions>
+; V29 tmp24 [V29,T13] ( 3, 4 ) ref -> x25 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.CSharpParseOptions>
;* V30 tmp25 [V30 ] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V31 tmp26 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
;* V32 tmp27 [V32 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
;* V33 tmp28 [V33 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V34 tmp29 [V34,T44] ( 2, 0 ) ref -> x1 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V35 tmp30 [V35,T45] ( 2, 0 ) ref -> x0 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V36 tmp31 [V36,T02] ( 7, 8.00) ref -> x24 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax>
-; V37 tmp32 [V37,T01] ( 10, 14.00) ref -> x27 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder>
+; V36 tmp31 [V36,T02] ( 7, 8.00) ref -> x22 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax>
+; V37 tmp32 [V37,T01] ( 10, 14.00) ref -> x26 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder>
; V38 tmp33 [V38,T06] ( 3, 6.00) ref -> x14 class-hnd exact single-def "impAppendStmt" <<unknown class>>
; V39 tmp34 [V39,T16] ( 4, 4.00) int -> x15 single-def "Inline stloc first use temp"
; V40 tmp35 [V40,T42] ( 3, 0 ) int -> x20 single-def "Inline stloc first use temp"
-; V41 tmp36 [V41,T40] ( 5, 0 ) int -> x22 "Inline stloc first use temp"
+; V41 tmp36 [V41,T40] ( 5, 0 ) int -> x23 "Inline stloc first use temp"
; V42 tmp37 [V42,T22] ( 3, 2.00) int -> x1 single-def "Inline stloc first use temp"
; V43 tmp38 [V43,T21] ( 6, 2.01) int -> x2 single-def "Inline stloc first use temp"
; V44 tmp39 [V44,T38] ( 4, 0.01) int -> x2
@@ -63,12 +63,12 @@
; V51 tmp46 [V51,T47] ( 2, 0 ) ref -> x1 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V52 tmp47 [V52,T48] ( 2, 0 ) ref -> x1 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax>
; V53 tmp48 [V53,T29] ( 3, 2 ) ref -> x15 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V54 tmp49 [V54,T20] ( 3, 3 ) ref -> x28 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V54 tmp49 [V54,T19] ( 5, 3 ) ref -> x27 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V55 tmp50 [V55,T30] ( 3, 2.00) ref -> x15 "guarded devirt return temp"
; V56 tmp51 [V56,T04] ( 5, 7.22) ref -> x0 single-def "guarded devirt arg temp"
;* V57 tmp52 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+SyntaxTokenWithTrivia>
; V58 tmp53 [V58,T49] ( 2, 0 ) ref -> x0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V59 tmp54 [V59 ] ( 10, 4 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed single-def "field V02._builder (fldOffset=0x0)" P-DEP
+; V59 tmp54 [V59 ] ( 10, 4 ) ref -> [fp+0x10] do-not-enreg[X] addr-exposed single-def "field V02._builder (fldOffset=0x0)" P-DEP
;* V60 tmp55 [V60 ] ( 0, 0 ) ref -> zero-ref "field V07._builder (fldOffset=0x0)" P-INDEP
;* V61 tmp56 [V61 ] ( 0, 0 ) ref -> zero-ref "field V08._builder (fldOffset=0x0)" P-INDEP
;* V62 tmp57 [V62 ] ( 0, 0 ) ref -> zero-ref "field V10._builder (fldOffset=0x0)" P-INDEP
@@ -85,20 +85,20 @@
; V73 tmp68 [V73,T36] ( 3, 0.04) int -> x1 "index expr"
; V74 tmp69 [V74,T50] ( 2, 0 ) ref -> x1 "argument with side effect"
; V75 tmp70 [V75,T51] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V76 tmp71 [V76,T52] ( 2, 0 ) ref -> x27 single-def "argument with side effect"
+; V76 tmp71 [V76,T52] ( 2, 0 ) ref -> x26 single-def "argument with side effect"
; V77 cse0 [V77,T17] ( 4, 3.38) int -> x23 "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M60245_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, #0x18]
+ stp x21, x22, [sp, #0x28]
+ stp x23, x24, [sp, #0x38]
+ stp x25, x26, [sp, #0x48]
+ str x27, [sp, #0x58]
mov fp, sp
- str x2, [fp, #0x18] // [V02 arg2]
+ str x2, [fp, #0x10] // [V02 arg2]
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
@@ -113,12 +113,12 @@ G_M60245_IG03: ; bbWeight=1.19, gcrefRegs=80000 {x19}, byrefRegs=300000 {
ldp w0, w1, [x19, #0x38]
add w23, w0, w22
cmp w23, w1
- bge G_M60245_IG29
+ bge G_M60245_IG30
;; size=16 bbWeight=1.19 PerfScore 5.96
G_M60245_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref, isz
ldr x0, [x19, #0x28]
; gcrRegs +[x0]
- cbnz x0, G_M60245_IG15
+ cbnz x0, G_M60245_IG32
;; size=8 bbWeight=1 PerfScore 4.00
G_M60245_IG05: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref, isz
; gcrRegs -[x0]
@@ -127,7 +127,7 @@ G_M60245_IG05: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=300000 {
sxtw w1, w23
ldr w2, [x0, #0x08]
cmp w1, w2
- bhs G_M60245_IG37
+ bhs G_M60245_IG39
ubfiz x1, x1, #3, #32
add x1, x1, #16
ldr x0, [x0, x1]
@@ -137,12 +137,12 @@ G_M60245_IG06: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=300000 {
; gcrRegs -[x0]
mov w1, #0xD1FFAB1E
cmp w0, w1
- beq G_M60245_IG40
+ beq G_M60245_IG41
;; size=16 bbWeight=1 PerfScore 5.00
G_M60245_IG07: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref, isz
ldr x0, [x19, #0x28]
; gcrRegs +[x0]
- cbnz x0, G_M60245_IG11
+ cbnz x0, G_M60245_IG31
;; size=8 bbWeight=1.00 PerfScore 4.00
G_M60245_IG08: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref, isz
; gcrRegs -[x0]
@@ -152,7 +152,7 @@ G_M60245_IG08: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=300000 {
add w1, w1, w22
ldr w2, [x0, #0x08]
cmp w1, w2
- bhs G_M60245_IG37
+ bhs G_M60245_IG39
ubfiz x1, x1, #3, #32
add x1, x1, #16
ldr x0, [x0, x1]
@@ -177,7 +177,7 @@ G_M60245_IG09: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=300000 {
; gcrRegs -[x0]
mov w1, #0xD1FFAB1E
cmp w0, w1
- bne G_M60245_IG41
+ bne G_M60245_IG42
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -185,35 +185,9 @@ G_M60245_IG09: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=300000 {
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M60245_IG12
+ beq G_M60245_IG27
;; size=88 bbWeight=1 PerfScore 25.00
-G_M60245_IG10: ; bbWeight=0.39, gcrefRegs=1080001 {x0 x19 x24}, byrefRegs=300000 {x20 x21}, byref
- ldr x15, [x0, #0x18]
- ; gcrRegs +[x15]
- b G_M60245_IG13
- ;; size=8 bbWeight=0.39 PerfScore 1.56
-G_M60245_IG11: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref, isz
- ; gcrRegs -[x0 x15 x24]
- ldr x0, [x19, #0x28]
- ; gcrRegs +[x0]
- ldr w1, [x19, #0x38]
- add w1, w1, w22
- ldr w2, [x0, #0x08]
- cmp w1, w2
- bhs G_M60245_IG37
- mov w2, #96
- mov x3, #16
- umaddl x1, w1, w2, x3
- add x0, x0, x1
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ldr x0, [x0, #0x08]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- b G_M60245_IG09
- ;; size=48 bbWeight=0.01 PerfScore 0.16
-G_M60245_IG12: ; bbWeight=0.61, gcrefRegs=1080001 {x0 x19 x24}, byrefRegs=300000 {x20 x21}, byref
- ; gcrRegs +[x24]
+G_M60245_IG10: ; bbWeight=0.61, gcrefRegs=1080001 {x0 x19 x24}, byrefRegs=300000 {x20 x21}, byref
ldr x1, [x0]
ldr x1, [x1, #0x68]
ldr x1, [x1, #0x28]
@@ -222,7 +196,7 @@ G_M60245_IG12: ; bbWeight=0.61, gcrefRegs=1080001 {x0 x19 x24}, byrefRegs
mov x15, x0
; gcrRegs +[x15]
;; size=20 bbWeight=0.61 PerfScore 6.40
-G_M60245_IG13: ; bbWeight=1.00, gcrefRegs=1088000 {x15 x19 x24}, byrefRegs=300000 {x20 x21}, byref, isz
+G_M60245_IG11: ; bbWeight=1.00, gcrefRegs=1088000 {x15 x19 x24}, byrefRegs=300000 {x20 x21}, byref, isz
; gcrRegs -[x0]
add x14, x19, #32
; byrRegs +[x14]
@@ -232,60 +206,30 @@ G_M60245_IG13: ; bbWeight=1.00, gcrefRegs=1088000 {x15 x19 x24}, byrefReg
str xzr, [x19, #0x10]
ldr x14, [x19, #0x28]
; gcrRegs +[x14]
- cbz x14, G_M60245_IG17
+ cbnz x14, G_M60245_IG28
;; size=20 bbWeight=1.00 PerfScore 6.50
-G_M60245_IG14: ; bbWeight=0.30, gcrefRegs=1080000 {x19 x24}, byrefRegs=300000 {x20 x21}, byref
+G_M60245_IG12: ; bbWeight=1, gcrefRegs=1080000 {x19 x24}, byrefRegs=300000 {x20 x21}, byref
; gcrRegs -[x14]
- b G_M60245_IG16
- ;; size=4 bbWeight=0.30 PerfScore 0.30
-G_M60245_IG15: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref, isz
- ; gcrRegs -[x24]
- ldr x0, [x19, #0x28]
- ; gcrRegs +[x0]
- ldr w1, [x0, #0x08]
- cmp w23, w1
- bhs G_M60245_IG37
- mov w1, #96
- mov x2, #16
- umaddl x1, w23, w1, x2
- add x0, x0, x1
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ldr x0, [x0, #0x08]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- b G_M60245_IG06
- ;; size=40 bbWeight=0.01 PerfScore 0.13
-G_M60245_IG16: ; bbWeight=0.30, gcrefRegs=1080000 {x19 x24}, byrefRegs=300000 {x20 x21}, byref
- ; gcrRegs -[x0] +[x24]
- stp xzr, xzr, [x19, #0xA8]
- stp xzr, xzr, [x19, #0xB8]
- stp xzr, xzr, [x19, #0xC8]
- stp xzr, xzr, [x19, #0xD8]
- stp xzr, xzr, [x19, #0xE8]
- stp xzr, xzr, [x19, #0xF8]
- ;; size=24 bbWeight=0.30 PerfScore 1.80
-G_M60245_IG17: ; bbWeight=1, gcrefRegs=1080000 {x19 x24}, byrefRegs=300000 {x20 x21}, byref
ldr w14, [x19, #0x38]
add w14, w14, #1
str w14, [x19, #0x38]
mov x15, x24
...
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
benchmarks.run_pgo.windows.arm64.checked.mch |
35 |
13 |
0 |
22 |
-152 |
+0 |
benchmarks.run_tiered.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
coreclr_tests.run.windows.arm64.checked.mch |
89 |
43 |
12 |
34 |
-840 |
+140 |
libraries.crossgen2.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
libraries.pmi.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
libraries_tests.run.windows.arm64.Release.mch |
180 |
45 |
14 |
121 |
-280 |
+132 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
realworld.run.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
smoke_tests.nativeaot.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
304 |
101 |
26 |
177 |
-1,272 |
+272 |
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,378 |
362,592 |
232,786 |
1 (0.00%) |
26 (0.00%) |
libraries.crossgen2.windows.arm64.checked.mch |
244,149 |
15 |
244,134 |
3 (0.00%) |
3 (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,083 |
938,449 |
1,402,634 |
9 (0.00%) |
34 (0.00%) |
jit-analyze output
benchmarks.run_pgo.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 45573032 (overridden on cmd)
Total bytes of diff: 45572880 (overridden on cmd)
Total bytes of delta: -152 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-16 : 38757.dasm (-3.77 % of base)
-16 : 51218.dasm (-3.77 % of base)
-16 : 66198.dasm (-3.77 % of base)
-16 : 71937.dasm (-3.77 % of base)
-16 : 91985.dasm (-3.77 % of base)
-16 : 89852.dasm (-3.77 % of base)
-16 : 66291.dasm (-3.77 % of base)
-16 : 73390.dasm (-3.77 % of base)
-8 : 50201.dasm (-0.73 % of base)
-4 : 64089.dasm (-2.50 % of base)
-4 : 50202.dasm (-0.41 % of base)
-4 : 48459.dasm (-0.94 % of base)
-4 : 51172.dasm (-0.94 % of base)
13 total files with Code Size differences (13 improved, 0 regressed), 22 unchanged.
Top method improvements (bytes):
-16 (-3.77 % of base) : 38757.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 51218.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 66198.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 71937.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 91985.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 89852.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 66291.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 73390.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-8 (-0.73 % of base) : 50201.dasm - System.Reflection.Emit.SignatureHelper:GetSignature(ubyte):ubyte[]:this (Tier1)
-4 (-2.50 % of base) : 64089.dasm - Microsoft.CodeAnalysis.CSharp.BoundStatementList:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
-4 (-0.94 % of base) : 48459.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-4 (-0.94 % of base) : 51172.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-4 (-0.41 % of base) : 50202.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)
Top method improvements (percentages):
-16 (-3.77 % of base) : 38757.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 51218.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 66198.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 71937.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 91985.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 89852.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 66291.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 73390.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-4 (-2.50 % of base) : 64089.dasm - Microsoft.CodeAnalysis.CSharp.BoundStatementList:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
-4 (-0.94 % of base) : 48459.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-4 (-0.94 % of base) : 51172.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-8 (-0.73 % of base) : 50201.dasm - System.Reflection.Emit.SignatureHelper:GetSignature(ubyte):ubyte[]:this (Tier1)
-4 (-0.41 % of base) : 50202.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)
13 total methods with Code Size differences (13 improved, 0 regressed).
coreclr_tests.run.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 495271268 (overridden on cmd)
Total bytes of diff: 495270568 (overridden on cmd)
Total bytes of delta: -700 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
32 : 250290.dasm (5.59 % of base)
20 : 250197.dasm (2.84 % of base)
16 : 250324.dasm (3.39 % of base)
16 : 250237.dasm (5.56 % of base)
12 : 250194.dasm (4.35 % of base)
8 : 586569.dasm (0.88 % of base)
8 : 591375.dasm (0.88 % of base)
8 : 250217.dasm (2.44 % of base)
8 : 250234.dasm (2.47 % of base)
4 : 250229.dasm (1.30 % of base)
4 : 250328.dasm (1.35 % of base)
4 : 250285.dasm (2.86 % of base)
Top file improvements (bytes):
-176 : 250236.dasm (-7.89 % of base)
-160 : 250317.dasm (-40.82 % of base)
-80 : 250227.dasm (-14.93 % of base)
-40 : 250223.dasm (-2.79 % of base)
-32 : 250279.dasm (-5.26 % of base)
-24 : 250244.dasm (-4.44 % of base)
-24 : 250325.dasm (-2.75 % of base)
-20 : 250191.dasm (-5.95 % of base)
-20 : 250330.dasm (-10.87 % of base)
-20 : 250333.dasm (-5.10 % of base)
-16 : 250262.dasm (-4.04 % of base)
-16 : 250329.dasm (-6.67 % of base)
-16 : 582444.dasm (-3.77 % of base)
-16 : 583128.dasm (-3.77 % of base)
-12 : 250210.dasm (-4.55 % of base)
-12 : 250312.dasm (-3.19 % of base)
-12 : 250327.dasm (-4.35 % of base)
-8 : 250289.dasm (-1.85 % of base)
-8 : 250335.dasm (-3.08 % of base)
-8 : 488327.dasm (-2.11 % of base)
42 total files with Code Size differences (30 improved, 12 regressed), 23 unchanged.
Top method regressions (bytes):
32 (5.59 % of base) : 250290.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (FullOpts)
20 (2.84 % of base) : 250197.dasm - System.Collections.Generic.ComparerHelpers:CreateDefaultEqualityComparer(System.Type):System.Object (FullOpts)
16 (3.39 % of base) : 250324.dasm - System.Runtime.Loader.AssemblyLoadContext:OnProcessExit() (FullOpts)
16 (5.56 % of base) : 250237.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
12 (4.35 % of base) : 250194.dasm - System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
8 (0.88 % of base) : 586569.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseTypeCode(ubyte):ubyte:this (Tier1)
8 (0.88 % of base) : 591375.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseTypeCode(ubyte):ubyte:this (Tier1)
8 (2.44 % of base) : 250217.dasm - System.AppContext:GetData(System.String):System.Object (FullOpts)
8 (2.47 % of base) : 250234.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiChar_Vector(ulong,ulong):ulong (FullOpts)
4 (1.35 % of base) : 250328.dasm - System.Collections.Generic.List`1[System.__Canon]:set_Capacity(int):this (FullOpts)
4 (2.86 % of base) : 250285.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef(System.Array,long,System.Object) (FullOpts)
4 (1.30 % of base) : 250229.dasm - System.Text.UTF8Encoding:SetDefaultFallbacks():this (FullOpts)
Top method improvements (bytes):
-176 (-7.89 % of base) : 250236.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
-160 (-40.82 % of base) : 250317.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
-80 (-14.93 % of base) : 250227.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (FullOpts)
-40 (-2.79 % of base) : 250223.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (FullOpts)
-32 (-5.26 % of base) : 250279.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (FullOpts)
-24 (-4.44 % of base) : 250244.dasm - System.Diagnostics.Tracing.EtwEventProvider:Register(System.Diagnostics.Tracing.EventSource):this (FullOpts)
-24 (-2.75 % of base) : 250325.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
-20 (-5.95 % of base) : 250191.dasm - System.AppContext:Setup(ulong,ulong,int) (FullOpts)
-20 (-5.10 % of base) : 250333.dasm - System.Diagnostics.Tracing.EventProvider:Dispose(ubyte):this (FullOpts)
-20 (-10.87 % of base) : 250330.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
-16 (-3.77 % of base) : 582444.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 583128.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-6.67 % of base) : 250329.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (FullOpts)
-16 (-4.04 % of base) : 250262.dasm - System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)
-12 (-4.35 % of base) : 250327.dasm - System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this (FullOpts)
-12 (-3.19 % of base) : 250312.dasm - System.Runtime.InteropServices.GCHandle:.ctor(System.Object,int):this (FullOpts)
-12 (-4.55 % of base) : 250210.dasm - System.String:GetNonRandomizedHashCode():int:this (FullOpts)
-8 (-1.85 % of base) : 250289.dasm - System.Array:Resize[System.__Canon](byref,int) (FullOpts)
-8 (-3.08 % of base) : 250335.dasm - System.Diagnostics.Tracing.EtwEventProvider:Unregister():this (FullOpts)
-8 (-1.80 % of base) : 250249.dasm - System.Diagnostics.Tracing.EventPipeEventProvider:Register(System.Diagnostics.Tracing.EventSource):this (FullOpts)
Top method regressions (percentages):
32 (5.59 % of base) : 250290.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (FullOpts)
16 (5.56 % of base) : 250237.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
12 (4.35 % of base) : 250194.dasm - System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
16 (3.39 % of base) : 250324.dasm - System.Runtime.Loader.AssemblyLoadContext:OnProcessExit() (FullOpts)
4 (2.86 % of base) : 250285.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef(System.Array,long,System.Object) (FullOpts)
20 (2.84 % of base) : 250197.dasm - System.Collections.Generic.ComparerHelpers:CreateDefaultEqualityComparer(System.Type):System.Object (FullOpts)
8 (2.47 % of base) : 250234.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiChar_Vector(ulong,ulong):ulong (FullOpts)
8 (2.44 % of base) : 250217.dasm - System.AppContext:GetData(System.String):System.Object (FullOpts)
4 (1.35 % of base) : 250328.dasm - System.Collections.Generic.List`1[System.__Canon]:set_Capacity(int):this (FullOpts)
4 (1.30 % of base) : 250229.dasm - System.Text.UTF8Encoding:SetDefaultFallbacks():this (FullOpts)
8 (0.88 % of base) : 586569.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseTypeCode(ubyte):ubyte:this (Tier1)
8 (0.88 % of base) : 591375.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseTypeCode(ubyte):ubyte:this (Tier1)
Top method improvements (percentages):
-160 (-40.82 % of base) : 250317.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
-80 (-14.93 % of base) : 250227.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (FullOpts)
-20 (-10.87 % of base) : 250330.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
-176 (-7.89 % of base) : 250236.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
-16 (-6.67 % of base) : 250329.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (FullOpts)
-20 (-5.95 % of base) : 250191.dasm - System.AppContext:Setup(ulong,ulong,int) (FullOpts)
-32 (-5.26 % of base) : 250279.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (FullOpts)
-20 (-5.10 % of base) : 250333.dasm - System.Diagnostics.Tracing.EventProvider:Dispose(ubyte):this (FullOpts)
-4 (-5.00 % of base) : 250242.dasm - System.Runtime.InteropServices.GCHandle:InternalAlloc(System.Object,int):long (FullOpts)
-12 (-4.55 % of base) : 250210.dasm - System.String:GetNonRandomizedHashCode():int:this (FullOpts)
-24 (-4.44 % of base) : 250244.dasm - System.Diagnostics.Tracing.EtwEventProvider:Register(System.Diagnostics.Tracing.EventSource):this (FullOpts)
-12 (-4.35 % of base) : 250327.dasm - System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this (FullOpts)
-16 (-4.04 % of base) : 250262.dasm - System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)
-4 (-3.85 % of base) : 250209.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer+OrdinalComparer:GetHashCode(System.String):int:this (FullOpts)
-16 (-3.77 % of base) : 582444.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-16 (-3.77 % of base) : 583128.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-4 (-3.45 % of base) : 250214.dasm - System.Diagnostics.Tracing.EventSource:.cctor() (FullOpts)
-12 (-3.19 % of base) : 250312.dasm - System.Runtime.InteropServices.GCHandle:.ctor(System.Object,int):this (FullOpts)
-8 (-3.08 % of base) : 250335.dasm - System.Diagnostics.Tracing.EtwEventProvider:Unregister():this (FullOpts)
-4 (-2.94 % of base) : 250219.dasm - System.Diagnostics.Tracing.RuntimeEventSource:Initialize() (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: 330811128 (overridden on cmd)
Total bytes of diff: 330810980 (overridden on cmd)
Total bytes of delta: -148 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
40 : 598322.dasm (2.10 % of base)
16 : 163292.dasm (0.59 % of base)
16 : 366288.dasm (0.83 % of base)
8 : 366369.dasm (0.56 % of base)
8 : 633055.dasm (1.69 % of base)
8 : 363319.dasm (0.63 % of base)
8 : 638273.dasm (0.84 % of base)
4 : 125949.dasm (0.40 % of base)
4 : 368049.dasm (0.49 % of base)
4 : 506055.dasm (0.50 % of base)
4 : 506587.dasm (0.46 % of base)
4 : 512128.dasm (0.38 % of base)
4 : 47243.dasm (0.43 % of base)
4 : 83928.dasm (0.43 % of base)
Top file improvements (bytes):
-36 : 156125.dasm (-4.11 % of base)
-20 : 386986.dasm (-1.67 % of base)
-12 : 407229.dasm (-0.89 % of base)
-8 : 278222.dasm (-2.11 % of base)
-8 : 297556.dasm (-1.52 % of base)
-8 : 358041.dasm (-2.11 % of base)
-8 : 504831.dasm (-1.52 % of base)
-8 : 163240.dasm (-0.97 % of base)
-8 : 176717.dasm (-1.49 % of base)
-8 : 404757.dasm (-0.78 % of base)
-8 : 157172.dasm (-0.82 % of base)
-8 : 296605.dasm (-0.78 % of base)
-8 : 297820.dasm (-2.11 % of base)
-8 : 523892.dasm (-1.52 % of base)
-4 : 524097.dasm (-0.36 % of base)
-4 : 80557.dasm (-0.42 % of base)
-4 : 109306.dasm (-1.14 % of base)
-4 : 595149.dasm (-0.70 % of base)
-4 : 613071.dasm (-0.63 % of base)
-4 : 613960.dasm (-0.64 % of base)
38 total files with Code Size differences (24 improved, 14 regressed), 24 unchanged.
Top method regressions (bytes):
40 (2.10 % of base) : 598322.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (Tier1)
16 (0.59 % of base) : 163292.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeArguments(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,System.Collections.Immutable.ImmutableArray`1[int],byref,byref,ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (Tier1)
16 (0.83 % of base) : 366288.dasm - System.IO.StreamBuffer:TryReadFromBuffer(System.Span`1[ubyte]):System.ValueTuple`2[ubyte,int]:this (Tier1)
8 (0.63 % of base) : 363319.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:GetStateMachineBox[System.Net.Security.SslStream+<ReadAsyncInternal>d__171`1[System.Net.Security.AsyncReadWriteAdapter]](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (Tier1)
8 (0.84 % of base) : 638273.dasm - System.Runtime.CompilerServices.TaskAwaiter:ThrowForNonSuccess(System.Threading.Tasks.Task) (Tier1)
8 (1.69 % of base) : 633055.dasm - System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]):int:this (Tier1)
8 (0.56 % of base) : 366369.dasm - System.Threading.Tasks.Task:WhenAll(System.Collections.Generic.IEnumerable`1[System.Threading.Tasks.Task]):System.Threading.Tasks.Task (Tier1)
4 (0.40 % of base) : 125949.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:.ctor(int,int,ubyte,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
4 (0.43 % of base) : 47243.dasm - System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:AddRange(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]):this (Tier1)
4 (0.43 % of base) : 83928.dasm - System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:AddRange(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]):this (Tier1)
4 (0.46 % of base) : 506587.dasm - System.Formats.Asn1.AsnWriter:WriteBoolean(ubyte,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
4 (0.38 % of base) : 512128.dasm - System.Formats.Asn1.AsnWriter:WriteInteger(System.Numerics.BigInteger,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
4 (0.50 % of base) : 506055.dasm - System.Formats.Asn1.AsnWriter:WriteNull(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
4 (0.49 % of base) : 368049.dasm - System.Net.NegotiateAuthenticationPal+WindowsNegotiateAuthenticationPal:.ctor(System.Net.Security.NegotiateAuthenticationServerOptions):this (Tier1)
Top method improvements (bytes):
-36 (-4.11 % of base) : 156125.dasm - Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__85:MoveNext():ubyte:this (Tier1)
-20 (-1.67 % of base) : 386986.dasm - System.Number:FormatHalf[ushort](byref,System.Half,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo):System.String (Tier1)
-12 (-0.89 % of base) : 407229.dasm - System.Xml.XmlTextReaderImpl:FinishPartialValue():this (Tier1)
-8 (-0.82 % of base) : 157172.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:GetAttributeBinder(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax],Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Binder:this (Tier1)
-8 (-0.97 % of base) : 163240.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetFlowAnalysisAnnotations(Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol):int (Tier1)
-8 (-0.78 % of base) : 404757.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-8 (-0.78 % of base) : 296605.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-8 (-2.11 % of base) : 278222.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-8 (-2.11 % of base) : 358041.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-8 (-2.11 % of base) : 297820.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-8 (-1.52 % of base) : 297556.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-8 (-1.52 % of base) : 504831.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-8 (-1.49 % of base) : 176717.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-8 (-1.52 % of base) : 523892.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-4 (-0.70 % of base) : 595149.dasm - Microsoft.CodeAnalysis.CSharp.BinderFactory:GetBinder(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbol):Microsoft.CodeAnalysis.CSharp.Binder:this (Tier1)
-4 (-0.63 % of base) : 89321.dasm - Microsoft.CodeAnalysis.PEModule:GetConstantFieldValue(System.Reflection.Metadata.FieldDefinitionHandle):Microsoft.CodeAnalysis.ConstantValue:this (Tier1)
-4 (-0.46 % of base) : 197549.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
-4 (-0.20 % of base) : 116957.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-4 (-0.64 % of base) : 613960.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Reflection.Metadata.DocumentHandle]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
-4 (-0.63 % of base) : 613071.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.ValueTuple`2[int,System.__Canon]]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
Top method regressions (percentages):
40 (2.10 % of base) : 598322.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (Tier1)
8 (1.69 % of base) : 633055.dasm - System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]):int:this (Tier1)
8 (0.84 % of base) : 638273.dasm - System.Runtime.CompilerServices.TaskAwaiter:ThrowForNonSuccess(System.Threading.Tasks.Task) (Tier1)
16 (0.83 % of base) : 366288.dasm - System.IO.StreamBuffer:TryReadFromBuffer(System.Span`1[ubyte]):System.ValueTuple`2[ubyte,int]:this (Tier1)
8 (0.63 % of base) : 363319.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:GetStateMachineBox[System.Net.Security.SslStream+<ReadAsyncInternal>d__171`1[System.Net.Security.AsyncReadWriteAdapter]](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (Tier1)
16 (0.59 % of base) : 163292.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeArguments(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,System.Collections.Immutable.ImmutableArray`1[int],byref,byref,ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (Tier1)
8 (0.56 % of base) : 366369.dasm - System.Threading.Tasks.Task:WhenAll(System.Collections.Generic.IEnumerable`1[System.Threading.Tasks.Task]):System.Threading.Tasks.Task (Tier1)
4 (0.50 % of base) : 506055.dasm - System.Formats.Asn1.AsnWriter:WriteNull(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
4 (0.49 % of base) : 368049.dasm - System.Net.NegotiateAuthenticationPal+WindowsNegotiateAuthenticationPal:.ctor(System.Net.Security.NegotiateAuthenticationServerOptions):this (Tier1)
4 (0.46 % of base) : 506587.dasm - System.Formats.Asn1.AsnWriter:WriteBoolean(ubyte,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
4 (0.43 % of base) : 47243.dasm - System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:AddRange(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]):this (Tier1)
4 (0.43 % of base) : 83928.dasm - System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:AddRange(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]):this (Tier1)
4 (0.40 % of base) : 125949.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:.ctor(int,int,ubyte,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
4 (0.38 % of base) : 512128.dasm - System.Formats.Asn1.AsnWriter:WriteInteger(System.Numerics.BigInteger,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
Top method improvements (percentages):
-36 (-4.11 % of base) : 156125.dasm - Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__85:MoveNext():ubyte:this (Tier1)
-8 (-2.11 % of base) : 278222.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-8 (-2.11 % of base) : 358041.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-8 (-2.11 % of base) : 297820.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-20 (-1.67 % of base) : 386986.dasm - System.Number:FormatHalf[ushort](byref,System.Half,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo):System.String (Tier1)
-8 (-1.52 % of base) : 297556.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-8 (-1.52 % of base) : 504831.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-8 (-1.52 % of base) : 523892.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-8 (-1.49 % of base) : 176717.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-4 (-1.16 % of base) : 474791.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)
-4 (-1.14 % of base) : 109306.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-8 (-0.97 % of base) : 163240.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetFlowAnalysisAnnotations(Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol):int (Tier1)
-12 (-0.89 % of base) : 407229.dasm - System.Xml.XmlTextReaderImpl:FinishPartialValue():this (Tier1)
-8 (-0.82 % of base) : 157172.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:GetAttributeBinder(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax],Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Binder:this (Tier1)
-8 (-0.78 % of base) : 404757.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-8 (-0.78 % of base) : 296605.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-4 (-0.70 % of base) : 595149.dasm - Microsoft.CodeAnalysis.CSharp.BinderFactory:GetBinder(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbol):Microsoft.CodeAnalysis.CSharp.Binder:this (Tier1)
-4 (-0.64 % of base) : 613960.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Reflection.Metadata.DocumentHandle]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
-4 (-0.63 % of base) : 89321.dasm - Microsoft.CodeAnalysis.PEModule:GetConstantFieldValue(System.Reflection.Metadata.FieldDefinitionHandle):Microsoft.CodeAnalysis.ConstantValue:this (Tier1)
-4 (-0.63 % of base) : 613071.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.ValueTuple`2[int,System.__Canon]]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
windows x64
Diffs are based on 2,512,183 contexts (997,391 MinOpts, 1,514,792 FullOpts).
MISSED contexts: base: 3 (0.00%), diff: 29 (0.00%)
Overall (+680 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
aspnet.run.windows.x64.checked.mch |
47,040,747 |
+54 |
benchmarks.run_pgo.windows.x64.checked.mch |
36,232,814 |
-2 |
coreclr_tests.run.windows.x64.checked.mch |
393,194,106 |
+72 |
libraries_tests.run.windows.x64.Release.mch |
282,128,846 |
+556 |
FullOpts (+680 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
aspnet.run.windows.x64.checked.mch |
28,549,698 |
+54 |
benchmarks.run_pgo.windows.x64.checked.mch |
22,062,158 |
-2 |
coreclr_tests.run.windows.x64.checked.mch |
120,405,526 |
+72 |
libraries_tests.run.windows.x64.Release.mch |
106,270,612 |
+556 |
Example diffs
aspnet.run.windows.x64.checked.mch
-12 (-1.64%) : 100361.dasm - System.Collections.Generic.ArraySortHelper1[System.__Canon]:IntroSort(System.Span
1[System.Canon],int,System.Comparison`1[System.Canon]) (Tier1)
@@ -80,27 +80,27 @@ G_M39096_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rsi, r9
; gcrRegs +[rsi]
;; size=64 bbWeight=1 PerfScore 14.83
-G_M39096_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+G_M39096_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
mov r14d, dword ptr [rbx+0x08]
cmp r14d, 1
- jle G_M39096_IG11
- ;; size=14 bbWeight=1 PerfScore 3.25
+ jle SHORT G_M39096_IG05
+ ;; size=10 bbWeight=1 PerfScore 3.25
G_M39096_IG03: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
cmp r14d, 16
- jg G_M39096_IG14
+ jg G_M39096_IG19
cmp r14d, 2
- jne SHORT G_M39096_IG05
+ jne SHORT G_M39096_IG07
;; size=16 bbWeight=1 PerfScore 2.50
G_M39096_IG04: ; bbWeight=0.86, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
mov r14, bword ptr [rbx]
; byrRegs +[r14]
mov r8d, dword ptr [rbx+0x08]
test r8d, r8d
- je G_M39096_IG13
+ je G_M39096_IG18
mov rdx, gword ptr [r14]
; gcrRegs +[rdx]
cmp r8d, 1
- jbe G_M39096_IG13
+ jbe G_M39096_IG18
mov r8, gword ptr [r14+0x08]
; gcrRegs +[r8]
mov rcx, gword ptr [rsi+0x08]
@@ -110,7 +110,7 @@ G_M39096_IG04: ; bbWeight=0.86, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx
; byrRegs -[rbx]
; gcr arg pop 0
test eax, eax
- jle G_M39096_IG11
+ jle SHORT G_M39096_IG05
mov rdi, gword ptr [r14]
; gcrRegs +[rdi]
mov rdx, gword ptr [r14+0x08]
@@ -127,56 +127,11 @@ G_M39096_IG04: ; bbWeight=0.86, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rdx rdi]
; byrRegs -[rcx r14]
- jmp SHORT G_M39096_IG11
- ;; size=77 bbWeight=0.86 PerfScore 22.05
-G_M39096_IG05: ; bbWeight=0.14, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- ; gcrRegs +[rsi]
- ; byrRegs +[rbx]
- cmp r14d, 3
- je G_M39096_IG23
- mov rcx, qword ptr [rdi+0x30]
- mov rcx, qword ptr [rcx]
- mov r8, qword ptr [rcx+0x50]
- test r8, r8
- je SHORT G_M39096_IG07
- ;; size=26 bbWeight=0.14 PerfScore 1.22
-G_M39096_IG06: ; bbWeight=0.11, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- jmp SHORT G_M39096_IG08
- ;; size=2 bbWeight=0.11 PerfScore 0.23
-G_M39096_IG07: ; bbWeight=0.03, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
- mov rcx, rdi
- mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- mov r8, rax
- ;; size=21 bbWeight=0.03 PerfScore 0.05
-G_M39096_IG08: ; bbWeight=0.14, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
- mov dword ptr [rsp+0x20], r14d
- lea rdx, [rsp+0x38]
- mov rcx, rbx
- ; byrRegs +[rcx]
- xor r9d, r9d
- call [System.Span`1[System.__Canon]:Slice(int,int):System.Span`1[System.__Canon]:this]
- ; byrRegs -[rcx rbx]
- ; gcr arg pop 0
- ;; size=22 bbWeight=0.14 PerfScore 0.72
-G_M39096_IG09: ; bbWeight=0.14, nogc, extend
- vmovdqu xmm0, xmmword ptr [rsp+0x38]
- vmovdqu xmmword ptr [rsp+0x28], xmm0
- ;; size=12 bbWeight=0.14 PerfScore 0.57
-G_M39096_IG10: ; bbWeight=0.14, extend
- lea rdx, [rsp+0x28]
- mov rcx, rdi
- mov r8, rsi
- ; gcrRegs +[r8]
- call [System.Collections.Generic.ArraySortHelper`1[System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon])]
- ; gcrRegs -[rsi r8]
- ; gcr arg pop 0
- ;; size=17 bbWeight=0.14 PerfScore 0.57
-G_M39096_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=71 bbWeight=0.86 PerfScore 20.34
+G_M39096_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M39096_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M39096_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 128
pop rbx
pop rbp
@@ -187,31 +142,117 @@ G_M39096_IG12: ; bbWeight=1, epilog, nogc, extend
pop r15
ret
;; size=18 bbWeight=1 PerfScore 4.75
-G_M39096_IG13: ; 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_M39096_IG14: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+G_M39096_IG07: ; bbWeight=0.14, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, gcvars, byref, isz
; gcrRegs +[rsi]
; byrRegs +[rbx]
- test ebp, ebp
- je G_M39096_IG29
- dec ebp
+ cmp r14d, 3
+ je G_M39096_IG28
mov rcx, qword ptr [rdi+0x30]
mov rcx, qword ptr [rcx]
mov r8, qword ptr [rcx+0x50]
test r8, r8
- je SHORT G_M39096_IG15
- jmp SHORT G_M39096_IG16
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M39096_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ je SHORT G_M39096_IG09
+ ;; size=26 bbWeight=0.14 PerfScore 1.22
+G_M39096_IG08: ; bbWeight=0.11, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+ jmp SHORT G_M39096_IG10
+ ;; size=2 bbWeight=0.11 PerfScore 0.23
+G_M39096_IG09: ; bbWeight=0.03, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ mov rcx, rdi
+ mov rdx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov r8, rax
+ ;; size=21 bbWeight=0.03 PerfScore 0.05
+G_M39096_IG10: ; bbWeight=0.14, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ mov dword ptr [rsp+0x20], r14d
+ lea rdx, [rsp+0x38]
+ mov rcx, rbx
+ ; byrRegs +[rcx]
+ xor r9d, r9d
+ call [System.Span`1[System.__Canon]:Slice(int,int):System.Span`1[System.__Canon]:this]
+ ; byrRegs -[rcx rbx]
+ ; gcr arg pop 0
+ ;; size=22 bbWeight=0.14 PerfScore 0.72
+G_M39096_IG11: ; bbWeight=0.14, nogc, extend
+ vmovdqu xmm0, xmmword ptr [rsp+0x38]
+ vmovdqu xmmword ptr [rsp+0x28], xmm0
+ ;; size=12 bbWeight=0.14 PerfScore 0.57
+G_M39096_IG12: ; bbWeight=0.14, isz, extend
+ lea rdx, [rsp+0x28]
+ mov rcx, rdi
+ mov r8, rsi
+ ; gcrRegs +[r8]
+ call [System.Collections.Generic.ArraySortHelper`1[System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon])]
+ ; gcrRegs -[rsi r8]
+ ; gcr arg pop 0
+ jmp SHORT G_M39096_IG05
+ ;; size=19 bbWeight=0.14 PerfScore 0.86
+G_M39096_IG13: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+ ; gcrRegs +[rsi]
+ ; byrRegs +[rbx]
+ mov rcx, qword ptr [rdi+0x30]
+ mov rcx, qword ptr [rcx]
+ mov r8, qword ptr [rcx+0x50]
+ test r8, r8
+ je SHORT G_M39096_IG14
+ jmp SHORT G_M39096_IG15
+ ;; size=18 bbWeight=0 PerfScore 0.00
+G_M39096_IG14: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
mov rcx, rdi
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov r8, rax
;; size=21 bbWeight=0 PerfScore 0.00
-G_M39096_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+G_M39096_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ mov dword ptr [rsp+0x20], r14d
+ lea rdx, [rsp+0x48]
+ mov rcx, rbx
+ ; byrRegs +[rcx]
+ xor r9d, r9d
+ call [System.Span`1[System.__Canon]:Slice(int,int):System.Span`1[System.__Canon]:this]
+ ; byrRegs -[rcx rbx]
+ ; gcr arg pop 0
+ ;; size=22 bbWeight=0 PerfScore 0.00
+G_M39096_IG16: ; bbWeight=0, nogc, extend
+ vmovdqu xmm0, xmmword ptr [rsp+0x48]
+ vmovdqu xmmword ptr [rsp+0x28], xmm0
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M39096_IG17: ; bbWeight=0, extend
+ lea rdx, [rsp+0x28]
+ mov rcx, rdi
+ mov r8, rsi
+ ; gcrRegs +[r8]
+ call [System.Collections.Generic.ArraySortHelper`1[System.__Canon]:HeapSort(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon])]
+ ; gcrRegs -[rsi r8]
+ ; gcr arg pop 0
+ jmp G_M39096_IG05
+ ;; size=22 bbWeight=0 PerfScore 0.00
+G_M39096_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M39096_IG19: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+ ; gcrRegs +[rsi]
+ ; byrRegs +[rbx]
+ test ebp, ebp
+ je SHORT G_M39096_IG13
+ dec ebp
+ mov rcx, qword ptr [rdi+0x30]
+ mov rcx, qword ptr [rcx]
+ mov r8, qword ptr [rcx+0x50]
+ test r8, r8
+ je SHORT G_M39096_IG20
+ jmp SHORT G_M39096_IG21
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M39096_IG20: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ mov rcx, rdi
+ mov rdx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov r8, rax
+ ;; size=21 bbWeight=0 PerfScore 0.00
+G_M39096_IG21: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
mov dword ptr [rsp+0x20], r14d
lea rdx, [rsp+0x68]
mov rcx, rbx
@@ -221,11 +262,11 @@ G_M39096_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx},
; byrRegs -[rcx]
; gcr arg pop 0
;; size=22 bbWeight=0 PerfScore 0.00
-G_M39096_IG17: ; bbWeight=0, nogc, extend
+G_M39096_IG22: ; bbWeight=0, nogc, extend
vmovdqu xmm0, xmmword ptr [rsp+0x68]
vmovdqu xmmword ptr [rsp+0x28], xmm0
;; size=12 bbWeight=0 PerfScore 0.00
-G_M39096_IG18: ; bbWeight=0, isz, extend
+G_M39096_IG23: ; bbWeight=0, isz, extend
lea rdx, [rsp+0x28]
mov rcx, rdi
mov r8, rsi
@@ -239,17 +280,17 @@ G_M39096_IG18: ; bbWeight=0, isz, extend
...
-12 (-1.64%) : 118276.dasm - System.Collections.Generic.ArraySortHelper1[System.__Canon]:IntroSort(System.Span
1[System.Canon],int,System.Comparison`1[System.Canon]) (Tier1)
@@ -80,27 +80,27 @@ G_M39096_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rsi, r9
; gcrRegs +[rsi]
;; size=64 bbWeight=1 PerfScore 14.83
-G_M39096_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+G_M39096_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
mov r14d, dword ptr [rbx+0x08]
cmp r14d, 1
- jle G_M39096_IG11
- ;; size=14 bbWeight=1 PerfScore 3.25
+ jle SHORT G_M39096_IG05
+ ;; size=10 bbWeight=1 PerfScore 3.25
G_M39096_IG03: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
cmp r14d, 16
- jg G_M39096_IG14
+ jg G_M39096_IG19
cmp r14d, 2
- jne SHORT G_M39096_IG05
+ jne SHORT G_M39096_IG07
;; size=16 bbWeight=1 PerfScore 2.50
G_M39096_IG04: ; bbWeight=0.86, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
mov r14, bword ptr [rbx]
; byrRegs +[r14]
mov r8d, dword ptr [rbx+0x08]
test r8d, r8d
- je G_M39096_IG13
+ je G_M39096_IG18
mov rdx, gword ptr [r14]
; gcrRegs +[rdx]
cmp r8d, 1
- jbe G_M39096_IG13
+ jbe G_M39096_IG18
mov r8, gword ptr [r14+0x08]
; gcrRegs +[r8]
mov rcx, gword ptr [rsi+0x08]
@@ -110,7 +110,7 @@ G_M39096_IG04: ; bbWeight=0.86, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx
; byrRegs -[rbx]
; gcr arg pop 0
test eax, eax
- jle G_M39096_IG11
+ jle SHORT G_M39096_IG05
mov rdi, gword ptr [r14]
; gcrRegs +[rdi]
mov rdx, gword ptr [r14+0x08]
@@ -127,56 +127,11 @@ G_M39096_IG04: ; bbWeight=0.86, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rdx rdi]
; byrRegs -[rcx r14]
- jmp SHORT G_M39096_IG11
- ;; size=77 bbWeight=0.86 PerfScore 22.06
-G_M39096_IG05: ; bbWeight=0.14, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- ; gcrRegs +[rsi]
- ; byrRegs +[rbx]
- cmp r14d, 3
- je G_M39096_IG23
- mov rcx, qword ptr [rdi+0x30]
- mov rcx, qword ptr [rcx]
- mov r8, qword ptr [rcx+0x50]
- test r8, r8
- je SHORT G_M39096_IG07
- ;; size=26 bbWeight=0.14 PerfScore 1.22
-G_M39096_IG06: ; bbWeight=0.11, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- jmp SHORT G_M39096_IG08
- ;; size=2 bbWeight=0.11 PerfScore 0.23
-G_M39096_IG07: ; bbWeight=0.03, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
- mov rcx, rdi
- mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- mov r8, rax
- ;; size=21 bbWeight=0.03 PerfScore 0.05
-G_M39096_IG08: ; bbWeight=0.14, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
- mov dword ptr [rsp+0x20], r14d
- lea rdx, [rsp+0x38]
- mov rcx, rbx
- ; byrRegs +[rcx]
- xor r9d, r9d
- call [System.Span`1[System.__Canon]:Slice(int,int):System.Span`1[System.__Canon]:this]
- ; byrRegs -[rcx rbx]
- ; gcr arg pop 0
- ;; size=22 bbWeight=0.14 PerfScore 0.72
-G_M39096_IG09: ; bbWeight=0.14, nogc, extend
- vmovdqu xmm0, xmmword ptr [rsp+0x38]
- vmovdqu xmmword ptr [rsp+0x28], xmm0
- ;; size=12 bbWeight=0.14 PerfScore 0.57
-G_M39096_IG10: ; bbWeight=0.14, extend
- lea rdx, [rsp+0x28]
- mov rcx, rdi
- mov r8, rsi
- ; gcrRegs +[r8]
- call [System.Collections.Generic.ArraySortHelper`1[System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon])]
- ; gcrRegs -[rsi r8]
- ; gcr arg pop 0
- ;; size=17 bbWeight=0.14 PerfScore 0.57
-G_M39096_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=71 bbWeight=0.86 PerfScore 20.34
+G_M39096_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M39096_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M39096_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 128
pop rbx
pop rbp
@@ -187,31 +142,117 @@ G_M39096_IG12: ; bbWeight=1, epilog, nogc, extend
pop r15
ret
;; size=18 bbWeight=1 PerfScore 4.75
-G_M39096_IG13: ; 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_M39096_IG14: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+G_M39096_IG07: ; bbWeight=0.14, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, gcvars, byref, isz
; gcrRegs +[rsi]
; byrRegs +[rbx]
- test ebp, ebp
- je G_M39096_IG29
- dec ebp
+ cmp r14d, 3
+ je G_M39096_IG28
mov rcx, qword ptr [rdi+0x30]
mov rcx, qword ptr [rcx]
mov r8, qword ptr [rcx+0x50]
test r8, r8
- je SHORT G_M39096_IG15
- jmp SHORT G_M39096_IG16
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M39096_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ je SHORT G_M39096_IG09
+ ;; size=26 bbWeight=0.14 PerfScore 1.22
+G_M39096_IG08: ; bbWeight=0.11, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+ jmp SHORT G_M39096_IG10
+ ;; size=2 bbWeight=0.11 PerfScore 0.23
+G_M39096_IG09: ; bbWeight=0.03, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ mov rcx, rdi
+ mov rdx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov r8, rax
+ ;; size=21 bbWeight=0.03 PerfScore 0.05
+G_M39096_IG10: ; bbWeight=0.14, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ mov dword ptr [rsp+0x20], r14d
+ lea rdx, [rsp+0x38]
+ mov rcx, rbx
+ ; byrRegs +[rcx]
+ xor r9d, r9d
+ call [System.Span`1[System.__Canon]:Slice(int,int):System.Span`1[System.__Canon]:this]
+ ; byrRegs -[rcx rbx]
+ ; gcr arg pop 0
+ ;; size=22 bbWeight=0.14 PerfScore 0.72
+G_M39096_IG11: ; bbWeight=0.14, nogc, extend
+ vmovdqu xmm0, xmmword ptr [rsp+0x38]
+ vmovdqu xmmword ptr [rsp+0x28], xmm0
+ ;; size=12 bbWeight=0.14 PerfScore 0.57
+G_M39096_IG12: ; bbWeight=0.14, isz, extend
+ lea rdx, [rsp+0x28]
+ mov rcx, rdi
+ mov r8, rsi
+ ; gcrRegs +[r8]
+ call [System.Collections.Generic.ArraySortHelper`1[System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon])]
+ ; gcrRegs -[rsi r8]
+ ; gcr arg pop 0
+ jmp SHORT G_M39096_IG05
+ ;; size=19 bbWeight=0.14 PerfScore 0.86
+G_M39096_IG13: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+ ; gcrRegs +[rsi]
+ ; byrRegs +[rbx]
+ mov rcx, qword ptr [rdi+0x30]
+ mov rcx, qword ptr [rcx]
+ mov r8, qword ptr [rcx+0x50]
+ test r8, r8
+ je SHORT G_M39096_IG14
+ jmp SHORT G_M39096_IG15
+ ;; size=18 bbWeight=0 PerfScore 0.00
+G_M39096_IG14: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
mov rcx, rdi
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov r8, rax
;; size=21 bbWeight=0 PerfScore 0.00
-G_M39096_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+G_M39096_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ mov dword ptr [rsp+0x20], r14d
+ lea rdx, [rsp+0x48]
+ mov rcx, rbx
+ ; byrRegs +[rcx]
+ xor r9d, r9d
+ call [System.Span`1[System.__Canon]:Slice(int,int):System.Span`1[System.__Canon]:this]
+ ; byrRegs -[rcx rbx]
+ ; gcr arg pop 0
+ ;; size=22 bbWeight=0 PerfScore 0.00
+G_M39096_IG16: ; bbWeight=0, nogc, extend
+ vmovdqu xmm0, xmmword ptr [rsp+0x48]
+ vmovdqu xmmword ptr [rsp+0x28], xmm0
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M39096_IG17: ; bbWeight=0, extend
+ lea rdx, [rsp+0x28]
+ mov rcx, rdi
+ mov r8, rsi
+ ; gcrRegs +[r8]
+ call [System.Collections.Generic.ArraySortHelper`1[System.__Canon]:HeapSort(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon])]
+ ; gcrRegs -[rsi r8]
+ ; gcr arg pop 0
+ jmp G_M39096_IG05
+ ;; size=22 bbWeight=0 PerfScore 0.00
+G_M39096_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M39096_IG19: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+ ; gcrRegs +[rsi]
+ ; byrRegs +[rbx]
+ test ebp, ebp
+ je SHORT G_M39096_IG13
+ dec ebp
+ mov rcx, qword ptr [rdi+0x30]
+ mov rcx, qword ptr [rcx]
+ mov r8, qword ptr [rcx+0x50]
+ test r8, r8
+ je SHORT G_M39096_IG20
+ jmp SHORT G_M39096_IG21
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M39096_IG20: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ mov rcx, rdi
+ mov rdx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov r8, rax
+ ;; size=21 bbWeight=0 PerfScore 0.00
+G_M39096_IG21: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
mov dword ptr [rsp+0x20], r14d
lea rdx, [rsp+0x68]
mov rcx, rbx
@@ -221,11 +262,11 @@ G_M39096_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx},
; byrRegs -[rcx]
; gcr arg pop 0
;; size=22 bbWeight=0 PerfScore 0.00
-G_M39096_IG17: ; bbWeight=0, nogc, extend
+G_M39096_IG22: ; bbWeight=0, nogc, extend
vmovdqu xmm0, xmmword ptr [rsp+0x68]
vmovdqu xmmword ptr [rsp+0x28], xmm0
;; size=12 bbWeight=0 PerfScore 0.00
-G_M39096_IG18: ; bbWeight=0, isz, extend
+G_M39096_IG23: ; bbWeight=0, isz, extend
lea rdx, [rsp+0x28]
mov rcx, rdi
mov r8, rsi
@@ -239,17 +280,17 @@ G_M39096_IG18: ; bbWeight=0, isz, extend
...
-12 (-1.64%) : 128356.dasm - System.Collections.Generic.ArraySortHelper1[System.__Canon]:IntroSort(System.Span
1[System.Canon],int,System.Comparison`1[System.Canon]) (Tier1)
@@ -80,27 +80,27 @@ G_M39096_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rsi, r9
; gcrRegs +[rsi]
;; size=64 bbWeight=1 PerfScore 14.83
-G_M39096_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+G_M39096_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
mov r14d, dword ptr [rbx+0x08]
cmp r14d, 1
- jle G_M39096_IG11
- ;; size=14 bbWeight=1 PerfScore 3.25
+ jle SHORT G_M39096_IG05
+ ;; size=10 bbWeight=1 PerfScore 3.25
G_M39096_IG03: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
cmp r14d, 16
- jg G_M39096_IG14
+ jg G_M39096_IG19
cmp r14d, 2
- jne SHORT G_M39096_IG05
+ jne SHORT G_M39096_IG07
;; size=16 bbWeight=1 PerfScore 2.50
G_M39096_IG04: ; bbWeight=0.86, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
mov r14, bword ptr [rbx]
; byrRegs +[r14]
mov r8d, dword ptr [rbx+0x08]
test r8d, r8d
- je G_M39096_IG13
+ je G_M39096_IG18
mov rdx, gword ptr [r14]
; gcrRegs +[rdx]
cmp r8d, 1
- jbe G_M39096_IG13
+ jbe G_M39096_IG18
mov r8, gword ptr [r14+0x08]
; gcrRegs +[r8]
mov rcx, gword ptr [rsi+0x08]
@@ -110,7 +110,7 @@ G_M39096_IG04: ; bbWeight=0.86, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx
; byrRegs -[rbx]
; gcr arg pop 0
test eax, eax
- jle G_M39096_IG11
+ jle SHORT G_M39096_IG05
mov rdi, gword ptr [r14]
; gcrRegs +[rdi]
mov rdx, gword ptr [r14+0x08]
@@ -127,56 +127,11 @@ G_M39096_IG04: ; bbWeight=0.86, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rdx rdi]
; byrRegs -[rcx r14]
- jmp SHORT G_M39096_IG11
- ;; size=77 bbWeight=0.86 PerfScore 22.02
-G_M39096_IG05: ; bbWeight=0.14, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- ; gcrRegs +[rsi]
- ; byrRegs +[rbx]
- cmp r14d, 3
- je G_M39096_IG23
- mov rcx, qword ptr [rdi+0x30]
- mov rcx, qword ptr [rcx]
- mov r8, qword ptr [rcx+0x50]
- test r8, r8
- je SHORT G_M39096_IG07
- ;; size=26 bbWeight=0.14 PerfScore 1.23
-G_M39096_IG06: ; bbWeight=0.12, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- jmp SHORT G_M39096_IG08
- ;; size=2 bbWeight=0.12 PerfScore 0.23
-G_M39096_IG07: ; bbWeight=0.03, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
- mov rcx, rdi
- mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- mov r8, rax
- ;; size=21 bbWeight=0.03 PerfScore 0.05
-G_M39096_IG08: ; bbWeight=0.14, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
- mov dword ptr [rsp+0x20], r14d
- lea rdx, [rsp+0x38]
- mov rcx, rbx
- ; byrRegs +[rcx]
- xor r9d, r9d
- call [System.Span`1[System.__Canon]:Slice(int,int):System.Span`1[System.__Canon]:this]
- ; byrRegs -[rcx rbx]
- ; gcr arg pop 0
- ;; size=22 bbWeight=0.14 PerfScore 0.72
-G_M39096_IG09: ; bbWeight=0.14, nogc, extend
- vmovdqu xmm0, xmmword ptr [rsp+0x38]
- vmovdqu xmmword ptr [rsp+0x28], xmm0
- ;; size=12 bbWeight=0.14 PerfScore 0.58
-G_M39096_IG10: ; bbWeight=0.14, extend
- lea rdx, [rsp+0x28]
- mov rcx, rdi
- mov r8, rsi
- ; gcrRegs +[r8]
- call [System.Collections.Generic.ArraySortHelper`1[System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon])]
- ; gcrRegs -[rsi r8]
- ; gcr arg pop 0
- ;; size=17 bbWeight=0.14 PerfScore 0.58
-G_M39096_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=71 bbWeight=0.86 PerfScore 20.31
+G_M39096_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M39096_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M39096_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 128
pop rbx
pop rbp
@@ -187,31 +142,117 @@ G_M39096_IG12: ; bbWeight=1, epilog, nogc, extend
pop r15
ret
;; size=18 bbWeight=1 PerfScore 4.75
-G_M39096_IG13: ; 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_M39096_IG14: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+G_M39096_IG07: ; bbWeight=0.14, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, gcvars, byref, isz
; gcrRegs +[rsi]
; byrRegs +[rbx]
- test ebp, ebp
- je G_M39096_IG29
- dec ebp
+ cmp r14d, 3
+ je G_M39096_IG28
mov rcx, qword ptr [rdi+0x30]
mov rcx, qword ptr [rcx]
mov r8, qword ptr [rcx+0x50]
test r8, r8
- je SHORT G_M39096_IG15
- jmp SHORT G_M39096_IG16
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M39096_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ je SHORT G_M39096_IG09
+ ;; size=26 bbWeight=0.14 PerfScore 1.23
+G_M39096_IG08: ; bbWeight=0.12, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+ jmp SHORT G_M39096_IG10
+ ;; size=2 bbWeight=0.12 PerfScore 0.23
+G_M39096_IG09: ; bbWeight=0.03, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ mov rcx, rdi
+ mov rdx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov r8, rax
+ ;; size=21 bbWeight=0.03 PerfScore 0.05
+G_M39096_IG10: ; bbWeight=0.14, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ mov dword ptr [rsp+0x20], r14d
+ lea rdx, [rsp+0x38]
+ mov rcx, rbx
+ ; byrRegs +[rcx]
+ xor r9d, r9d
+ call [System.Span`1[System.__Canon]:Slice(int,int):System.Span`1[System.__Canon]:this]
+ ; byrRegs -[rcx rbx]
+ ; gcr arg pop 0
+ ;; size=22 bbWeight=0.14 PerfScore 0.72
+G_M39096_IG11: ; bbWeight=0.14, nogc, extend
+ vmovdqu xmm0, xmmword ptr [rsp+0x38]
+ vmovdqu xmmword ptr [rsp+0x28], xmm0
+ ;; size=12 bbWeight=0.14 PerfScore 0.58
+G_M39096_IG12: ; bbWeight=0.14, isz, extend
+ lea rdx, [rsp+0x28]
+ mov rcx, rdi
+ mov r8, rsi
+ ; gcrRegs +[r8]
+ call [System.Collections.Generic.ArraySortHelper`1[System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon])]
+ ; gcrRegs -[rsi r8]
+ ; gcr arg pop 0
+ jmp SHORT G_M39096_IG05
+ ;; size=19 bbWeight=0.14 PerfScore 0.87
+G_M39096_IG13: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+ ; gcrRegs +[rsi]
+ ; byrRegs +[rbx]
+ mov rcx, qword ptr [rdi+0x30]
+ mov rcx, qword ptr [rcx]
+ mov r8, qword ptr [rcx+0x50]
+ test r8, r8
+ je SHORT G_M39096_IG14
+ jmp SHORT G_M39096_IG15
+ ;; size=18 bbWeight=0 PerfScore 0.00
+G_M39096_IG14: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
mov rcx, rdi
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov r8, rax
;; size=21 bbWeight=0 PerfScore 0.00
-G_M39096_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+G_M39096_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ mov dword ptr [rsp+0x20], r14d
+ lea rdx, [rsp+0x48]
+ mov rcx, rbx
+ ; byrRegs +[rcx]
+ xor r9d, r9d
+ call [System.Span`1[System.__Canon]:Slice(int,int):System.Span`1[System.__Canon]:this]
+ ; byrRegs -[rcx rbx]
+ ; gcr arg pop 0
+ ;; size=22 bbWeight=0 PerfScore 0.00
+G_M39096_IG16: ; bbWeight=0, nogc, extend
+ vmovdqu xmm0, xmmword ptr [rsp+0x48]
+ vmovdqu xmmword ptr [rsp+0x28], xmm0
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M39096_IG17: ; bbWeight=0, extend
+ lea rdx, [rsp+0x28]
+ mov rcx, rdi
+ mov r8, rsi
+ ; gcrRegs +[r8]
+ call [System.Collections.Generic.ArraySortHelper`1[System.__Canon]:HeapSort(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon])]
+ ; gcrRegs -[rsi r8]
+ ; gcr arg pop 0
+ jmp G_M39096_IG05
+ ;; size=22 bbWeight=0 PerfScore 0.00
+G_M39096_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M39096_IG19: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+ ; gcrRegs +[rsi]
+ ; byrRegs +[rbx]
+ test ebp, ebp
+ je SHORT G_M39096_IG13
+ dec ebp
+ mov rcx, qword ptr [rdi+0x30]
+ mov rcx, qword ptr [rcx]
+ mov r8, qword ptr [rcx+0x50]
+ test r8, r8
+ je SHORT G_M39096_IG20
+ jmp SHORT G_M39096_IG21
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M39096_IG20: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ mov rcx, rdi
+ mov rdx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov r8, rax
+ ;; size=21 bbWeight=0 PerfScore 0.00
+G_M39096_IG21: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
mov dword ptr [rsp+0x20], r14d
lea rdx, [rsp+0x68]
mov rcx, rbx
@@ -221,11 +262,11 @@ G_M39096_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx},
; byrRegs -[rcx]
; gcr arg pop 0
;; size=22 bbWeight=0 PerfScore 0.00
-G_M39096_IG17: ; bbWeight=0, nogc, extend
+G_M39096_IG22: ; bbWeight=0, nogc, extend
vmovdqu xmm0, xmmword ptr [rsp+0x68]
vmovdqu xmmword ptr [rsp+0x28], xmm0
;; size=12 bbWeight=0 PerfScore 0.00
-G_M39096_IG18: ; bbWeight=0, isz, extend
+G_M39096_IG23: ; bbWeight=0, isz, extend
lea rdx, [rsp+0x28]
mov rcx, rdi
mov r8, rsi
@@ -239,17 +280,17 @@ G_M39096_IG18: ; bbWeight=0, isz, extend
...
+16 (+3.17%) : 29334.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriter(System.Text.Json.JsonSerializerOptions,System.Text.Json.PooledByteBufferWriter):System.Text.Json.Utf8JsonWriter (Instrumented Tier1)
@@ -76,13 +76,13 @@ G_M63277_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
; byrRegs +[rax]
add rax, 16
;; size=53 bbWeight=1 PerfScore 14.50
-G_M63277_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0001 {rax}, byref, isz
+G_M63277_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0001 {rax}, byref
mov rax, gword ptr [rax]
; gcrRegs +[rax]
; byrRegs -[rax]
test rax, rax
- je SHORT G_M63277_IG06
- ;; size=8 bbWeight=1 PerfScore 3.25
+ je G_M63277_IG10
+ ;; size=12 bbWeight=1 PerfScore 3.25
G_M63277_IG04: ; bbWeight=1, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
mov edx, dword ptr [rax+0x18]
lea ecx, [rdx+0x01]
@@ -124,15 +124,39 @@ G_M63277_IG04: ; bbWeight=1, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000
mov ecx, dword ptr [rsp+0x44]
and ecx, 0x3F8
sar ecx, 3
- je SHORT G_M63277_IG08
+ je SHORT G_M63277_IG09
;; size=112 bbWeight=1 PerfScore 29.25
-G_M63277_IG05: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
+G_M63277_IG05: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
xor edx, edx
cmp ecx, 2
cmovne edx, ecx
- jmp SHORT G_M63277_IG09
- ;; size=10 bbWeight=0.50 PerfScore 1.39
-G_M63277_IG06: ; bbWeight=0.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=0.50 PerfScore 0.38
+G_M63277_IG06: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
+ mov dword ptr [rbp+0x2C], edx
+ cmp dword ptr [rbp+0x68], 0
+ je G_M63277_IG11
+ ;; size=13 bbWeight=1 PerfScore 5.00
+G_M63277_IG07: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E
+ call CORINFO_HELP_COUNTPROFILE32
+ ; gcr arg pop 0
+ mov rax, rbp
+ ; gcrRegs +[rax]
+ ;; size=18 bbWeight=1 PerfScore 1.50
+G_M63277_IG08: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 88
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ ret
+ ;; size=9 bbWeight=1 PerfScore 3.25
+G_M63277_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax]
+ mov edx, 2
+ jmp SHORT G_M63277_IG06
+ ;; size=7 bbWeight=0.50 PerfScore 1.13
+G_M63277_IG10: ; bbWeight=0.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp] +[rbx rsi]
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
@@ -159,8 +183,22 @@ G_M63277_IG06: ; bbWeight=0.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
mov rcx, bword ptr [rcx]
; byrRegs +[rcx]
add rcx, 16
- ;; size=95 bbWeight=0.00 PerfScore 0.02
-G_M63277_IG07: ; bbWeight=0.00, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0002 {rcx}, byref
+ jmp SHORT G_M63277_IG12
+ ;; size=97 bbWeight=0.00 PerfScore 0.02
+G_M63277_IG11: ; bbWeight=0.00, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx rsi rdi] +[rbp]
+ ; byrRegs -[rcx]
+ lea rcx, bword ptr [rbp+0x60]
+ ; byrRegs +[rcx]
+ mov edx, 0x3E8
+ call [System.Text.Json.JsonWriterOptions:set_MaxDepth(int):this]
+ ; byrRegs -[rcx]
+ ; gcr arg pop 0
+ jmp G_M63277_IG07
+ ;; size=20 bbWeight=0.00 PerfScore 0.00
+G_M63277_IG12: ; bbWeight=0.00, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0002 {rcx}, byref
+ ; gcrRegs -[rbp] +[rbx rsi rdi]
+ ; byrRegs +[rcx]
mov rdx, rdi
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
@@ -170,42 +208,8 @@ G_M63277_IG07: ; bbWeight=0.00, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
; gcrRegs +[rax]
jmp G_M63277_IG04
;; size=16 bbWeight=0.00 PerfScore 0.00
-G_M63277_IG08: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx rsi rdi] +[rbp]
- mov edx, 2
- ;; size=5 bbWeight=0.50 PerfScore 0.13
-G_M63277_IG09: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
- mov dword ptr [rbp+0x2C], edx
- cmp dword ptr [rbp+0x68], 0
- je SHORT G_M63277_IG12
- ;; size=9 bbWeight=1 PerfScore 5.00
-G_M63277_IG10: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E
- call CORINFO_HELP_COUNTPROFILE32
- ; gcr arg pop 0
- mov rax, rbp
- ; gcrRegs +[rax]
- ;; size=18 bbWeight=1 PerfScore 1.50
-G_M63277_IG11: ; bbWeight=1, epilog, nogc, extend
- add rsp, 88
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- ret
- ;; size=9 bbWeight=1 PerfScore 3.25
-G_M63277_IG12: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
- lea rcx, bword ptr [rbp+0x60]
- ; byrRegs +[rcx]
- mov edx, 0x3E8
- call [System.Text.Json.JsonWriterOptions:set_MaxDepth(int):this]
- ; byrRegs -[rcx]
- ; gcr arg pop 0
- jmp SHORT G_M63277_IG10
- ;; size=17 bbWeight=0.00 PerfScore 0.00
G_M63277_IG13: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbp] +[rbx rsi]
+ ; gcrRegs -[rax rdi]
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
@@ -227,7 +231,7 @@ G_M63277_IG14: ; bbWeight=0, nogc, extend
vmovdqu xmm0, xmmword ptr [rsp+0x48]
vmovdqu xmmword ptr [rsp+0x28], xmm0
;; size=12 bbWeight=0 PerfScore 0.00
-G_M63277_IG15: ; bbWeight=0, isz, extend
+G_M63277_IG15: ; bbWeight=0, extend
lea r8, [rsp+0x28]
mov rdx, rsi
; gcrRegs +[rdx]
@@ -236,8 +240,8 @@ G_M63277_IG15: ; bbWeight=0, isz, extend
call [System.Text.Json.Utf8JsonWriter:.ctor(System.Buffers.IBufferWriter`1[ubyte],System.Text.Json.JsonWriterOptions):this]
; gcrRegs -[rcx rdx rsi]
; gcr arg pop 0
- jmp SHORT G_M63277_IG10
- ;; size=19 bbWeight=0 PerfScore 0.00
+ jmp G_M63277_IG07
+ ;; size=22 bbWeight=0 PerfScore 0.00
G_M63277_IG16: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp] +[rbx rsi]
mov ecx, 5
@@ -255,10 +259,10 @@ G_M63277_IG17: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
; gcr arg pop 0
mov rcx, rax
; byrRegs +[rcx]
- jmp G_M63277_IG07
+ jmp G_M63277_IG12
;; size=18 bbWeight=0 PerfScore 0.00
-; Total bytes of code 504, prolog size 33, PerfScore 68.62, instruction count 120, allocated bytes for code 504 (MethodHash=ab5908d2) for method System.Text.Json.Utf8JsonWriterCache:RentWriter(System.Text.Json.JsonSerializerOptions,System.Text.Json.PooledByteBufferWriter):System.Text.Json.Utf8JsonWriter (Instrumented Tier1)
+; Total bytes of code 520, prolog size 33, PerfScore 68.61, instruction count 121, allocated bytes for code 520 (MethodHash=ab5908d2) for method System.Text.Json.Utf8JsonWriterCache:RentWriter(System.Text.Json.JsonSerializerOptions,System.Text.Json.PooledByteBufferWriter):System.Text.Json.Utf8JsonWriter (Instrumented Tier1)
; ============================================================
Unwind Info:
+11 (+3.35%) : 114046.dasm - System.Collections.Generic.Dictionary2[System.__Canon,ubyte]:.ctor(int,System.Collections.Generic.IEqualityComparer
1[System.__Canon]):this (Tier1)
@@ -18,7 +18,7 @@
; V06 tmp2 [V06,T07] ( 4, 3.52) ref -> rdx
; V07 tmp3 [V07,T06] ( 3, 3.99) long -> rdx "spilling helperCall"
;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 tmp5 [V09,T08] ( 5, 3.00) ref -> rsi class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
+; V09 tmp5 [V09,T08] ( 6, 3.00) ref -> rsi class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
; V10 tmp6 [V10,T03] ( 4, 5.43) ref -> rdx class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V11 cse0 [V11,T05] ( 6, 4.23) long -> rcx multi-def "CSE - aggressive"
; V12 rat0 [V12,T10] ( 3, 2.27) long -> rcx "Spilling to split statement for tree"
@@ -40,9 +40,9 @@ G_M55642_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=17 bbWeight=1 PerfScore 3.75
G_M55642_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
test edx, edx
- jl G_M55642_IG20
+ jl G_M55642_IG21
test edx, edx
- jg G_M55642_IG21
+ jg G_M55642_IG22
;; size=16 bbWeight=1 PerfScore 2.50
G_M55642_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, rsi
@@ -88,57 +88,52 @@ G_M55642_IG08: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {},
mov rdx, qword ptr [rdx]
mov rax, 0xD1FFAB1E ; System.String
cmp qword ptr [rdx], rax
- jne G_M55642_IG19
+ jne G_M55642_IG20
;; size=38 bbWeight=1 PerfScore 11.75
G_M55642_IG09: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [rbx+0x18]
; gcrRegs +[rdx]
mov rax, 0xD1FFAB1E ; const ptr
cmp rdx, gword ptr [rax]
- jne SHORT G_M55642_IG11
+ jne SHORT G_M55642_IG14
;; size=19 bbWeight=1.00 PerfScore 6.24
-G_M55642_IG10: ; bbWeight=0.57, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M55642_IG10: ; bbWeight=0.57, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
mov rdx, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rdx]
; gcrRegs +[rsi]
- jmp SHORT G_M55642_IG13
- ;; size=15 bbWeight=0.57 PerfScore 2.44
-G_M55642_IG11: ; bbWeight=0.43, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=13 bbWeight=0.57 PerfScore 1.29
+G_M55642_IG11: ; bbWeight=0.87, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ test rsi, rsi
+ je G_M55642_IG20
+ ;; size=9 bbWeight=0.87 PerfScore 1.08
+G_M55642_IG12: ; bbWeight=1.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ mov rdx, qword ptr [rcx+0x30]
+ mov rdx, qword ptr [rdx]
+ mov rdx, qword ptr [rdx+0x48]
+ test rdx, rdx
+ je SHORT G_M55642_IG16
+ ;; size=16 bbWeight=1.00 PerfScore 7.24
+G_M55642_IG13: ; bbWeight=0.80, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M55642_IG17
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M55642_IG14: ; bbWeight=0.43, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi] +[rdx]
mov rax, 0xD1FFAB1E ; const ptr
cmp rdx, gword ptr [rax]
- je SHORT G_M55642_IG15
+ je SHORT G_M55642_IG19
;; size=15 bbWeight=0.43 PerfScore 1.81
-G_M55642_IG12: ; bbWeight=0.29, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
+G_M55642_IG15: ; bbWeight=0.29, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
mov rax, 0xD1FFAB1E ; const ptr
xor rsi, rsi
; gcrRegs +[rsi]
mov r8, 0xD1FFAB1E ; const ptr
cmp rdx, gword ptr [rax]
cmove rsi, gword ptr [r8]
- ;; size=29 bbWeight=0.29 PerfScore 1.99
-G_M55642_IG13: ; bbWeight=1.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdx]
- test rsi, rsi
- je SHORT G_M55642_IG19
- mov rdx, qword ptr [rcx+0x30]
- mov rdx, qword ptr [rdx]
- mov rdx, qword ptr [rdx+0x48]
- test rdx, rdx
- je SHORT G_M55642_IG16
- ;; size=21 bbWeight=1.00 PerfScore 8.49
-G_M55642_IG14: ; bbWeight=0.80, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M55642_IG17
- ;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M55642_IG15: ; bbWeight=0.13, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rsi]
- mov rdx, 0xD1FFAB1E ; const ptr
- mov rsi, gword ptr [rdx]
- ; gcrRegs +[rsi]
- jmp SHORT G_M55642_IG13
- ;; size=15 bbWeight=0.13 PerfScore 0.56
+ jmp SHORT G_M55642_IG11
+ ;; size=31 bbWeight=0.29 PerfScore 2.58
G_M55642_IG16: ; bbWeight=0.20, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdx]
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
@@ -166,19 +161,27 @@ G_M55642_IG18: ; bbWeight=1.00, epilog, nogc, extend
pop rsi
ret
;; size=7 bbWeight=1.00 PerfScore 2.25
-G_M55642_IG19: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M55642_IG19: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ mov rdx, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rdx]
+ ; gcrRegs +[rsi]
+ test rsi, rsi
+ jne G_M55642_IG12
+ ;; size=22 bbWeight=0.13 PerfScore 0.46
+G_M55642_IG20: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rsi]
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=0.00 PerfScore 0.00
-G_M55642_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M55642_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
mov ecx, 22
call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)]
; gcr arg pop 0
int3
;; size=12 bbWeight=0 PerfScore 0.00
-G_M55642_IG21: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M55642_IG22: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -188,7 +191,7 @@ G_M55642_IG21: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
jmp G_M55642_IG03
;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 328, prolog size 11, PerfScore 56.20, instruction count 84, allocated bytes for code 328 (MethodHash=9feb26a5) for method System.Collections.Generic.Dictionary`2[System.__Canon,ubyte]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
+; Total bytes of code 339, prolog size 11, PerfScore 55.38, instruction count 85, allocated bytes for code 339 (MethodHash=9feb26a5) for method System.Collections.Generic.Dictionary`2[System.__Canon,ubyte]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
; ============================================================
Unwind Info:
+18 (+3.78%) : 57086.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriterAndBuffer(System.Text.Json.JsonWriterOptions,int,byref):System.Text.Json.Utf8JsonWriter (Tier1)
@@ -63,11 +63,11 @@ G_M54030_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi},
mov rcx, qword ptr GS:[0x0058]
mov rcx, qword ptr [rcx+0x48]
cmp dword ptr [rcx+0x190], 11
- jl G_M54030_IG12
+ jl G_M54030_IG13
mov rcx, qword ptr [rcx+0x198]
mov rcx, qword ptr [rcx+0x58]
test rcx, rcx
- je G_M54030_IG12
+ je G_M54030_IG13
mov rax, bword ptr [rcx]
; byrRegs +[rax]
add rax, 16
@@ -76,7 +76,7 @@ G_M54030_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0049 {rax rbx r
mov rbp, gword ptr [rax]
; gcrRegs +[rbp]
test rbp, rbp
- je G_M54030_IG06
+ je G_M54030_IG10
;; size=12 bbWeight=1 PerfScore 3.25
G_M54030_IG04: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0048 {rbx rsi}, byref, isz
; byrRegs -[rax]
@@ -84,7 +84,7 @@ G_M54030_IG04: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0048 {rbx rs
lea edx, [rcx+0x01]
mov dword ptr [rbp+0x18], edx
test ecx, ecx
- jne G_M54030_IG15
+ jne G_M54030_IG12
mov rdx, gword ptr [rbp+0x08]
; gcrRegs +[rdx]
mov rcx, rsi
@@ -138,15 +138,37 @@ G_M54030_IG04: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0048 {rbx rs
mov byte ptr [rbp+0x37], al
and ebx, 0x3F8
sar ebx, 3
- je SHORT G_M54030_IG08
+ je SHORT G_M54030_IG09
;; size=145 bbWeight=1 PerfScore 43.00
-G_M54030_IG05: ; bbWeight=0.51, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
+G_M54030_IG05: ; bbWeight=0.51, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
xor eax, eax
cmp ebx, 2
cmovne eax, ebx
- jmp SHORT G_M54030_IG09
- ;; size=10 bbWeight=0.51 PerfScore 1.40
-G_M54030_IG06: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
+ ;; size=8 bbWeight=0.51 PerfScore 0.38
+G_M54030_IG06: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
+ mov dword ptr [rbp+0x2C], eax
+ cmp dword ptr [rbp+0x68], 0
+ je G_M54030_IG14
+ ;; size=13 bbWeight=1 PerfScore 5.00
+G_M54030_IG07: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
+ mov rax, rbp
+ ; gcrRegs +[rax]
+ ;; size=3 bbWeight=1 PerfScore 0.25
+G_M54030_IG08: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 32
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r14
+ ret
+ ;; size=11 bbWeight=1 PerfScore 3.75
+G_M54030_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax]
+ mov eax, 2
+ jmp SHORT G_M54030_IG06
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
+G_M54030_IG10: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
; gcrRegs -[rbp]
; byrRegs +[rbx rsi]
mov rcx, 0xD1FFAB1E ; System.Text.Json.Utf8JsonWriterCache+ThreadLocalState
@@ -163,16 +185,16 @@ G_M54030_IG06: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rs
mov rcx, qword ptr GS:[0x0058]
mov rcx, qword ptr [rcx+0x48]
cmp dword ptr [rcx+0x190], 11
- jl SHORT G_M54030_IG13
+ jl G_M54030_IG15
mov rcx, qword ptr [rcx+0x198]
mov rcx, qword ptr [rcx+0x58]
test rcx, rcx
- je SHORT G_M54030_IG13
+ je G_M54030_IG15
mov rcx, bword ptr [rcx]
; byrRegs +[rcx]
add rcx, 16
- ;; size=72 bbWeight=0.00 PerfScore 0.00
-G_M54030_IG07: ; bbWeight=0.00, gcrefRegs=0020 {rbp}, byrefRegs=004A {rcx rbx rsi}, byref
+ ;; size=80 bbWeight=0.00 PerfScore 0.00
+G_M54030_IG11: ; bbWeight=0.00, gcrefRegs=0020 {rbp}, byrefRegs=004A {rcx rbx rsi}, byref
mov rdx, rbp
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
@@ -180,61 +202,8 @@ G_M54030_IG07: ; bbWeight=0.00, gcrefRegs=0020 {rbp}, byrefRegs=004A {rcx
; byrRegs -[rcx]
jmp G_M54030_IG04
;; size=13 bbWeight=0.00 PerfScore 0.00
-G_M54030_IG08: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
- ; byrRegs -[rbx rsi]
- mov eax, 2
- ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M54030_IG09: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
- mov dword ptr [rbp+0x2C], eax
- cmp dword ptr [rbp+0x68], 0
- je SHORT G_M54030_IG14
- ;; size=9 bbWeight=1 PerfScore 5.00
-G_M54030_IG10: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
- mov rax, rbp
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M54030_IG11: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r14
- ret
- ;; size=11 bbWeight=1 PerfScore 3.75
-G_M54030_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, gcvars, byref
- ; gcrRegs -[rax rbp]
- ; byrRegs +[rbx rsi]
- mov ecx, 11
- call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
- ; byrRegs +[rax]
- ; gcr arg pop 0
- jmp G_M54030_IG03
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M54030_IG13: ; bbWeight=0, gcrefRegs=0020 {rbp}, byrefRegs=0048 {rbx rsi}, byref, isz
- ; gcrRegs +[rbp]
- ; byrRegs -[rax]
- mov ecx, 11
- call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
- ; byrRegs +[rax]
- ; gcr arg pop 0
- mov rcx, rax
- ; byrRegs +[rcx]
- jmp SHORT G_M54030_IG07
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M54030_IG14: ; bbWeight=0, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rax rcx rbx rsi]
- lea rcx, bword ptr [rbp+0x60]
- ; byrRegs +[rcx]
- mov edx, 0x3E8
- call [System.Text.Json.JsonWriterOptions:set_MaxDepth(int):this]
- ; byrRegs -[rcx]
- ; gcr arg pop 0
- jmp SHORT G_M54030_IG10
- ;; size=17 bbWeight=0 PerfScore 0.00
-G_M54030_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
+G_M54030_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
; gcrRegs -[rbp]
- ; byrRegs +[rbx rsi]
mov rcx, 0xD1FFAB1E ; System.Text.Json.PooledByteBufferWriter
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -270,10 +239,40 @@ G_M54030_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi},
; gcrRegs -[rax rcx rdx]
; byrRegs -[rbx rsi r8]
; gcr arg pop 0
- jmp G_M54030_IG10
+ jmp G_M54030_IG07
;; size=78 bbWeight=0 PerfScore 0.00
+G_M54030_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
+ ; gcrRegs -[rbp]
+ ; byrRegs +[rbx rsi]
+ mov ecx, 11
+ call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
+ ; byrRegs +[rax]
+ ; gcr arg pop 0
+ jmp G_M54030_IG03
+ ;; size=15 bbWeight=0 PerfScore 0.00
+G_M54030_IG14: ; bbWeight=0, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbp]
+ ; byrRegs -[rax rbx rsi]
+ lea rcx, bword ptr [rbp+0x60]
+ ; byrRegs +[rcx]
+ mov edx, 0x3E8
+ call [System.Text.Json.JsonWriterOptions:set_MaxDepth(int):this]
+ ; byrRegs -[rcx]
+ ; gcr arg pop 0
+ jmp G_M54030_IG07
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M54030_IG15: ; bbWeight=0, gcrefRegs=0020 {rbp}, byrefRegs=0048 {rbx rsi}, byref
+ ; byrRegs +[rbx rsi]
+ mov ecx, 11
+ call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
+ ; byrRegs +[rax]
+ ; gcr arg pop 0
+ mov rcx, rax
+ ; byrRegs +[rcx]
+ jmp G_M54030_IG11
+ ;; size=18 bbWeight=0 PerfScore 0.00
-; Total bytes of code 476, prolog size 10, PerfScore 77.27, instruction count 122, allocated bytes for code 476 (MethodHash=778d2cf1) for method System.Text.Json.Utf8JsonWriterCache:RentWriterAndBuffer(System.Text.Json.JsonWriterOptions,int,byref):System.Text.Json.Utf8JsonWriter (Tier1)
+; Total bytes of code 494, prolog size 10, PerfScore 77.26, instruction count 122, allocated bytes for code 494 (MethodHash=778d2cf1) for method System.Text.Json.Utf8JsonWriterCache:RentWriterAndBuffer(System.Text.Json.JsonWriterOptions,int,byref):System.Text.Json.Utf8JsonWriter (Tier1)
; ============================================================
Unwind Info:
benchmarks.run_pgo.windows.x64.checked.mch
-4 (-1.69%) : 86915.dasm - System.Collections.Generic.ArraySortHelper1[int]:SwapIfGreater(System.Span
1[int],System.Comparison`1[int],int,int) (Tier1)
@@ -55,57 +55,51 @@ G_M64750_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0002 {rcx},
; byrRegs +[rbp]
mov r14d, dword ptr [rcx+0x08]
cmp ebx, esi
- je G_M64750_IG11
+ je G_M64750_IG12
;; size=15 bbWeight=1 PerfScore 5.25
G_M64750_IG03: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref, isz
; byrRegs -[rcx]
cmp ebx, r14d
- jae G_M64750_IG10
+ jae G_M64750_IG11
mov ecx, ebx
mov edx, dword ptr [rbp+4*rcx]
cmp esi, r14d
- jae G_M64750_IG10
+ jae G_M64750_IG11
mov ecx, esi
mov r8d, dword ptr [rbp+4*rcx]
mov rcx, 0xD1FFAB1E ; code for System.Linq.EnumerableSorter`2[System.Collections.IntStruct,System.Collections.IntStruct]:CompareAnyKeys_DefaultComparer_NoNext_Ascending(int,int):int:this
cmp qword ptr [rdi+0x18], rcx
- jne G_M64750_IG12
+ jne SHORT G_M64750_IG10
mov rcx, gword ptr [rdi+0x08]
; gcrRegs +[rcx]
mov rcx, gword ptr [rcx+0x20]
mov eax, dword ptr [rcx+0x08]
cmp edx, eax
- jae SHORT G_M64750_IG10
+ jae SHORT G_M64750_IG11
mov r10d, edx
mov r10d, dword ptr [rcx+4*r10+0x10]
cmp r8d, eax
- jae SHORT G_M64750_IG10
+ jae SHORT G_M64750_IG11
mov eax, r8d
mov ecx, dword ptr [rcx+4*rax+0x10]
; gcrRegs -[rcx]
cmp r10d, ecx
- jge SHORT G_M64750_IG05
- ;; size=91 bbWeight=1 PerfScore 25.50
-G_M64750_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
+ jge SHORT G_M64750_IG09
+ ;; size=87 bbWeight=1 PerfScore 25.50
+G_M64750_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref
; gcrRegs -[rdi]
mov eax, -1
- jmp SHORT G_M64750_IG06
- ;; size=7 bbWeight=0.64 PerfScore 1.43
-G_M64750_IG05: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref
- xor eax, eax
- cmp r10d, ecx
- setg al
- ;; size=8 bbWeight=0.36 PerfScore 0.54
-G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref
+ ;; size=5 bbWeight=0.64 PerfScore 0.16
+G_M64750_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref
sub edx, r8d
test eax, eax
cmovne edx, eax
;; size=8 bbWeight=1 PerfScore 0.75
-G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
+G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
test edx, edx
- jg SHORT G_M64750_IG09
+ jg SHORT G_M64750_IG08
;; size=4 bbWeight=1 PerfScore 1.25
-G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rbp]
add rsp, 32
pop rbx
@@ -115,7 +109,7 @@ G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
pop r14
ret
;; size=11 bbWeight=1 PerfScore 3.75
-G_M64750_IG09: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, gcvars, byref, isz
+G_M64750_IG08: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, gcvars, byref, isz
; byrRegs +[rbp]
mov ecx, ebx
mov ecx, dword ptr [rbp+4*rcx]
@@ -125,14 +119,30 @@ G_M64750_IG09: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=000
mov dword ptr [rbp+4*rdx], eax
mov edx, esi
mov dword ptr [rbp+4*rdx], ecx
- jmp SHORT G_M64750_IG08
+ jmp SHORT G_M64750_IG07
;; size=26 bbWeight=0.43 PerfScore 3.87
-G_M64750_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M64750_IG09: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
+ xor eax, eax
+ cmp r10d, ecx
+ setg al
+ jmp SHORT G_M64750_IG05
+ ;; size=10 bbWeight=0.36 PerfScore 1.27
+G_M64750_IG10: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref, isz
+ ; gcrRegs +[rdi]
+ mov rcx, gword ptr [rdi+0x08]
+ ; gcrRegs +[rcx]
+ call [rdi+0x18]System.Comparison`1[int]:Invoke(int,int):int:this
+ ; gcrRegs -[rcx rdi]
+ ; gcr arg pop 0
+ mov edx, eax
+ jmp SHORT G_M64750_IG06
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M64750_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbp]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M64750_IG11: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref
+G_M64750_IG12: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref
; gcrRegs +[rdi]
; byrRegs +[rbp]
mov rcx, 0xD1FFAB1E
@@ -144,17 +154,8 @@ G_M64750_IG11: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp},
; gcr arg pop 0
jmp G_M64750_IG03
;; size=31 bbWeight=0 PerfScore 0.00
-G_M64750_IG12: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref, isz
- mov rcx, gword ptr [rdi+0x08]
- ; gcrRegs +[rcx]
- call [rdi+0x18]System.Comparison`1[int]:Invoke(int,int):int:this
- ; gcrRegs -[rcx rdi]
- ; gcr arg pop 0
- mov edx, eax
- jmp SHORT G_M64750_IG07
- ;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 236, prolog size 10, PerfScore 48.35, instruction count 72, allocated bytes for code 236 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
+; Total bytes of code 232, prolog size 10, PerfScore 47.80, instruction count 72, allocated bytes for code 232 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
; ============================================================
Unwind Info:
-4 (-1.69%) : 85608.dasm - System.Collections.Generic.ArraySortHelper1[int]:SwapIfGreater(System.Span
1[int],System.Comparison`1[int],int,int) (Tier1)
@@ -55,57 +55,51 @@ G_M64750_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0002 {rcx},
; byrRegs +[rbp]
mov r14d, dword ptr [rcx+0x08]
cmp ebx, esi
- je G_M64750_IG11
+ je G_M64750_IG12
;; size=15 bbWeight=1 PerfScore 5.25
G_M64750_IG03: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref, isz
; byrRegs -[rcx]
cmp ebx, r14d
- jae G_M64750_IG10
+ jae G_M64750_IG11
mov ecx, ebx
mov edx, dword ptr [rbp+4*rcx]
cmp esi, r14d
- jae G_M64750_IG10
+ jae G_M64750_IG11
mov ecx, esi
mov r8d, dword ptr [rbp+4*rcx]
mov rcx, 0xD1FFAB1E ; code for System.Linq.EnumerableSorter`2[System.Collections.IntStruct,System.Collections.IntStruct]:CompareAnyKeys_DefaultComparer_NoNext_Ascending(int,int):int:this
cmp qword ptr [rdi+0x18], rcx
- jne G_M64750_IG12
+ jne SHORT G_M64750_IG10
mov rcx, gword ptr [rdi+0x08]
; gcrRegs +[rcx]
mov rcx, gword ptr [rcx+0x20]
mov eax, dword ptr [rcx+0x08]
cmp edx, eax
- jae SHORT G_M64750_IG10
+ jae SHORT G_M64750_IG11
mov r10d, edx
mov r10d, dword ptr [rcx+4*r10+0x10]
cmp r8d, eax
- jae SHORT G_M64750_IG10
+ jae SHORT G_M64750_IG11
mov eax, r8d
mov ecx, dword ptr [rcx+4*rax+0x10]
; gcrRegs -[rcx]
cmp r10d, ecx
- jge SHORT G_M64750_IG05
- ;; size=91 bbWeight=1 PerfScore 25.50
-G_M64750_IG04: ; bbWeight=0.63, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
+ jge SHORT G_M64750_IG09
+ ;; size=87 bbWeight=1 PerfScore 25.50
+G_M64750_IG04: ; bbWeight=0.63, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref
; gcrRegs -[rdi]
mov eax, -1
- jmp SHORT G_M64750_IG06
- ;; size=7 bbWeight=0.63 PerfScore 1.43
-G_M64750_IG05: ; bbWeight=0.37, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref
- xor eax, eax
- cmp r10d, ecx
- setg al
- ;; size=8 bbWeight=0.37 PerfScore 0.55
-G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref
+ ;; size=5 bbWeight=0.63 PerfScore 0.16
+G_M64750_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref
sub edx, r8d
test eax, eax
cmovne edx, eax
;; size=8 bbWeight=1 PerfScore 0.75
-G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
+G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
test edx, edx
- jg SHORT G_M64750_IG09
+ jg SHORT G_M64750_IG08
;; size=4 bbWeight=1 PerfScore 1.25
-G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rbp]
add rsp, 32
pop rbx
@@ -115,7 +109,7 @@ G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
pop r14
ret
;; size=11 bbWeight=1 PerfScore 3.75
-G_M64750_IG09: ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, gcvars, byref, isz
+G_M64750_IG08: ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, gcvars, byref, isz
; byrRegs +[rbp]
mov ecx, ebx
mov ecx, dword ptr [rbp+4*rcx]
@@ -125,14 +119,30 @@ G_M64750_IG09: ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=000
mov dword ptr [rbp+4*rdx], eax
mov edx, esi
mov dword ptr [rbp+4*rdx], ecx
- jmp SHORT G_M64750_IG08
+ jmp SHORT G_M64750_IG07
;; size=26 bbWeight=0.41 PerfScore 3.73
-G_M64750_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M64750_IG09: ; bbWeight=0.37, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
+ xor eax, eax
+ cmp r10d, ecx
+ setg al
+ jmp SHORT G_M64750_IG05
+ ;; size=10 bbWeight=0.37 PerfScore 1.28
+G_M64750_IG10: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref, isz
+ ; gcrRegs +[rdi]
+ mov rcx, gword ptr [rdi+0x08]
+ ; gcrRegs +[rcx]
+ call [rdi+0x18]System.Comparison`1[int]:Invoke(int,int):int:this
+ ; gcrRegs -[rcx rdi]
+ ; gcr arg pop 0
+ mov edx, eax
+ jmp SHORT G_M64750_IG06
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M64750_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbp]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M64750_IG11: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref
+G_M64750_IG12: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref
; gcrRegs +[rdi]
; byrRegs +[rbp]
mov rcx, 0xD1FFAB1E
@@ -144,17 +154,8 @@ G_M64750_IG11: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp},
; gcr arg pop 0
jmp G_M64750_IG03
;; size=31 bbWeight=0 PerfScore 0.00
-G_M64750_IG12: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref, isz
- mov rcx, gword ptr [rdi+0x08]
- ; gcrRegs +[rcx]
- call [rdi+0x18]System.Comparison`1[int]:Invoke(int,int):int:this
- ; gcrRegs -[rcx rdi]
- ; gcr arg pop 0
- mov edx, eax
- jmp SHORT G_M64750_IG07
- ;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 236, prolog size 10, PerfScore 48.21, instruction count 72, allocated bytes for code 236 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
+; Total bytes of code 232, prolog size 10, PerfScore 47.67, instruction count 72, allocated bytes for code 232 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
; ============================================================
Unwind Info:
-4 (-1.64%) : 39441.dasm - System.Collections.Generic.ArraySortHelper1[int]:SwapIfGreater(System.Span
1[int],System.Comparison`1[int],int,int) (Tier1)
@@ -55,59 +55,53 @@ G_M64750_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0002 {rcx},
; byrRegs +[rbp]
mov r14d, dword ptr [rcx+0x08]
cmp ebx, esi
- je G_M64750_IG11
+ je G_M64750_IG12
;; size=15 bbWeight=1 PerfScore 5.25
G_M64750_IG03: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref, isz
; byrRegs -[rcx]
cmp ebx, r14d
- jae G_M64750_IG10
+ jae G_M64750_IG11
mov ecx, ebx
mov edx, dword ptr [rbp+4*rcx]
cmp esi, r14d
- jae G_M64750_IG10
+ jae G_M64750_IG11
mov ecx, esi
mov r8d, dword ptr [rbp+4*rcx]
mov rcx, 0xD1FFAB1E ; code for System.Linq.EnumerableSorter`2[System.Collections.BigStruct,System.Collections.BigStruct]:CompareAnyKeys_DefaultComparer_NoNext_Ascending(int,int):int:this
cmp qword ptr [rdi+0x18], rcx
- jne G_M64750_IG12
+ jne SHORT G_M64750_IG10
mov rcx, gword ptr [rdi+0x08]
; gcrRegs +[rcx]
mov rcx, gword ptr [rcx+0x20]
mov eax, dword ptr [rcx+0x08]
cmp edx, eax
- jae SHORT G_M64750_IG10
+ jae SHORT G_M64750_IG11
mov r10d, edx
shl r10, 5
mov r10d, dword ptr [rcx+r10+0x1C]
cmp r8d, eax
- jae SHORT G_M64750_IG10
+ jae SHORT G_M64750_IG11
mov eax, r8d
shl rax, 5
mov ecx, dword ptr [rcx+rax+0x1C]
; gcrRegs -[rcx]
cmp r10d, ecx
- jge SHORT G_M64750_IG05
- ;; size=99 bbWeight=1 PerfScore 26.50
-G_M64750_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
+ jge SHORT G_M64750_IG09
+ ;; size=95 bbWeight=1 PerfScore 26.50
+G_M64750_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref
; gcrRegs -[rdi]
mov eax, -1
- jmp SHORT G_M64750_IG06
- ;; size=7 bbWeight=0.64 PerfScore 1.44
-G_M64750_IG05: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref
- xor eax, eax
- cmp r10d, ecx
- setg al
- ;; size=8 bbWeight=0.36 PerfScore 0.54
-G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref
+ ;; size=5 bbWeight=0.64 PerfScore 0.16
+G_M64750_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref
sub edx, r8d
test eax, eax
cmovne edx, eax
;; size=8 bbWeight=1 PerfScore 0.75
-G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
+G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
test edx, edx
- jg SHORT G_M64750_IG09
+ jg SHORT G_M64750_IG08
;; size=4 bbWeight=1 PerfScore 1.25
-G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rbp]
add rsp, 32
pop rbx
@@ -117,7 +111,7 @@ G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
pop r14
ret
;; size=11 bbWeight=1 PerfScore 3.75
-G_M64750_IG09: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, gcvars, byref, isz
+G_M64750_IG08: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, gcvars, byref, isz
; byrRegs +[rbp]
mov ecx, ebx
mov ecx, dword ptr [rbp+4*rcx]
@@ -127,14 +121,30 @@ G_M64750_IG09: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=000
mov dword ptr [rbp+4*rdx], eax
mov edx, esi
mov dword ptr [rbp+4*rdx], ecx
- jmp SHORT G_M64750_IG08
+ jmp SHORT G_M64750_IG07
;; size=26 bbWeight=0.46 PerfScore 4.12
-G_M64750_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M64750_IG09: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
+ xor eax, eax
+ cmp r10d, ecx
+ setg al
+ jmp SHORT G_M64750_IG05
+ ;; size=10 bbWeight=0.36 PerfScore 1.26
+G_M64750_IG10: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref, isz
+ ; gcrRegs +[rdi]
+ mov rcx, gword ptr [rdi+0x08]
+ ; gcrRegs +[rcx]
+ call [rdi+0x18]System.Comparison`1[int]:Invoke(int,int):int:this
+ ; gcrRegs -[rcx rdi]
+ ; gcr arg pop 0
+ mov edx, eax
+ jmp SHORT G_M64750_IG06
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M64750_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbp]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M64750_IG11: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref
+G_M64750_IG12: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref
; gcrRegs +[rdi]
; byrRegs +[rbp]
mov rcx, 0xD1FFAB1E
@@ -146,17 +156,8 @@ G_M64750_IG11: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp},
; gcr arg pop 0
jmp G_M64750_IG03
;; size=31 bbWeight=0 PerfScore 0.00
-G_M64750_IG12: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref, isz
- mov rcx, gword ptr [rdi+0x08]
- ; gcrRegs +[rcx]
- call [rdi+0x18]System.Comparison`1[int]:Invoke(int,int):int:this
- ; gcrRegs -[rcx rdi]
- ; gcr arg pop 0
- mov edx, eax
- jmp SHORT G_M64750_IG07
- ;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 10, PerfScore 49.60, instruction count 74, allocated bytes for code 244 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
+; Total bytes of code 240, prolog size 10, PerfScore 49.03, instruction count 74, allocated bytes for code 240 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
; ============================================================
Unwind Info:
+4 (+2.08%) : 77017.dasm - System.Collections.Generic.ArraySortHelper1[System.Collections.IntStruct]:SwapIfGreater(System.Span
1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
@@ -51,50 +51,44 @@ G_M8313_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov ebx, r8d
mov esi, r9d
;; size=25 bbWeight=1 PerfScore 9.00
-G_M8313_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0002 {rcx}, byref, isz
+G_M8313_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0002 {rcx}, byref
; byrRegs +[rcx]
mov rbp, bword ptr [rcx]
; byrRegs +[rbp]
mov r14d, dword ptr [rcx+0x08]
cmp ebx, esi
- je SHORT G_M8313_IG10
- ;; size=11 bbWeight=1 PerfScore 5.25
+ je G_M8313_IG11
+ ;; size=15 bbWeight=1 PerfScore 5.25
G_M8313_IG03: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref, isz
; byrRegs -[rcx]
cmp ebx, r14d
- jae SHORT G_M8313_IG09
+ jae SHORT G_M8313_IG10
mov ecx, ebx
lea r15, bword ptr [rbp+4*rcx]
; byrRegs +[r15]
mov edx, dword ptr [r15]
cmp esi, r14d
- jae SHORT G_M8313_IG09
+ jae SHORT G_M8313_IG10
mov ecx, esi
lea r13, bword ptr [rbp+4*rcx]
; byrRegs +[r13]
mov r8d, dword ptr [r13]
mov rcx, 0xD1FFAB1E ; code for System.Collections.Sort`1+ComparableComparerClass[System.Collections.IntStruct]:Compare(System.Collections.IntStruct,System.Collections.IntStruct):int:this
cmp qword ptr [rdi+0x18], rcx
- jne SHORT G_M8313_IG11
+ jne SHORT G_M8313_IG09
cmp edx, r8d
- jge SHORT G_M8313_IG05
+ jge SHORT G_M8313_IG08
;; size=52 bbWeight=1 PerfScore 16.50
-G_M8313_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref, isz
+G_M8313_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref
; gcrRegs -[rdi]
; byrRegs -[rbp]
mov r12d, -1
- jmp SHORT G_M8313_IG06
- ;; size=8 bbWeight=0.64 PerfScore 1.44
-G_M8313_IG05: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref
- xor r12d, r12d
- cmp edx, r8d
- setg r12b
- ;; size=10 bbWeight=0.36 PerfScore 0.54
-G_M8313_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref, isz
+ ;; size=6 bbWeight=0.64 PerfScore 0.16
+G_M8313_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref, isz
test r12d, r12d
- jg SHORT G_M8313_IG08
+ jg SHORT G_M8313_IG07
;; size=5 bbWeight=1 PerfScore 1.25
-G_M8313_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M8313_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r13 r15]
add rsp, 40
pop rbx
@@ -107,20 +101,36 @@ G_M8313_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
pop r15
ret
;; size=17 bbWeight=1 PerfScore 5.25
-G_M8313_IG08: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, gcvars, byref, isz
+G_M8313_IG07: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, gcvars, byref, isz
; byrRegs +[r13 r15]
mov ecx, dword ptr [r15]
mov edx, dword ptr [r13]
mov dword ptr [r15], edx
mov dword ptr [r13], ecx
- jmp SHORT G_M8313_IG07
+ jmp SHORT G_M8313_IG06
;; size=16 bbWeight=0.46 PerfScore 3.69
-G_M8313_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8313_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref, isz
+ xor r12d, r12d
+ cmp edx, r8d
+ setg r12b
+ jmp SHORT G_M8313_IG05
+ ;; size=12 bbWeight=0.36 PerfScore 1.27
+G_M8313_IG09: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=A000 {r13 r15}, byref, isz
+ ; gcrRegs +[rdi]
+ mov rcx, gword ptr [rdi+0x08]
+ ; gcrRegs +[rcx]
+ call [rdi+0x18]System.Comparison`1[System.Collections.IntStruct]:Invoke(System.Collections.IntStruct,System.Collections.IntStruct):int:this
+ ; gcrRegs -[rcx rdi]
+ ; gcr arg pop 0
+ mov r12d, eax
+ jmp SHORT G_M8313_IG05
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M8313_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r13 r15]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M8313_IG10: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref
+G_M8313_IG11: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref
; gcrRegs +[rdi]
; byrRegs +[rbp]
mov rcx, 0xD1FFAB1E
@@ -132,18 +142,8 @@ G_M8313_IG10: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, b
; gcr arg pop 0
jmp G_M8313_IG03
;; size=31 bbWeight=0 PerfScore 0.00
-G_M8313_IG11: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=A000 {r13 r15}, byref, isz
- ; byrRegs -[rbp] +[r13 r15]
- mov rcx, gword ptr [rdi+0x08]
- ; gcrRegs +[rcx]
- call [rdi+0x18]System.Comparison`1[System.Collections.IntStruct]:Invoke(System.Collections.IntStruct,System.Collections.IntStruct):int:this
- ; gcrRegs -[rcx rdi]
- ; gcr arg pop 0
- mov r12d, eax
- jmp SHORT G_M8313_IG06
- ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 192, prolog size 16, PerfScore 42.92, instruction count 62, allocated bytes for code 192 (MethodHash=3756df86) for method System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
+; Total bytes of code 196, prolog size 16, PerfScore 42.36, instruction count 62, allocated bytes for code 196 (MethodHash=3756df86) for method System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
; ============================================================
Unwind Info:
+4 (+2.08%) : 80647.dasm - System.Collections.Generic.ArraySortHelper1[System.Collections.IntStruct]:SwapIfGreater(System.Span
1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
@@ -51,50 +51,44 @@ G_M8313_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov ebx, r8d
mov esi, r9d
;; size=25 bbWeight=1 PerfScore 9.00
-G_M8313_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0002 {rcx}, byref, isz
+G_M8313_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0002 {rcx}, byref
; byrRegs +[rcx]
mov rbp, bword ptr [rcx]
; byrRegs +[rbp]
mov r14d, dword ptr [rcx+0x08]
cmp ebx, esi
- je SHORT G_M8313_IG10
- ;; size=11 bbWeight=1 PerfScore 5.25
+ je G_M8313_IG11
+ ;; size=15 bbWeight=1 PerfScore 5.25
G_M8313_IG03: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref, isz
; byrRegs -[rcx]
cmp ebx, r14d
- jae SHORT G_M8313_IG09
+ jae SHORT G_M8313_IG10
mov ecx, ebx
lea r15, bword ptr [rbp+4*rcx]
; byrRegs +[r15]
mov edx, dword ptr [r15]
cmp esi, r14d
- jae SHORT G_M8313_IG09
+ jae SHORT G_M8313_IG10
mov ecx, esi
lea r13, bword ptr [rbp+4*rcx]
; byrRegs +[r13]
mov r8d, dword ptr [r13]
mov rcx, 0xD1FFAB1E ; code for System.Collections.Sort`1+<>c[System.Collections.IntStruct]:<Array_Comparison>b__13_0(System.Collections.IntStruct,System.Collections.IntStruct):int:this
cmp qword ptr [rdi+0x18], rcx
- jne SHORT G_M8313_IG11
+ jne SHORT G_M8313_IG09
cmp edx, r8d
- jge SHORT G_M8313_IG05
+ jge SHORT G_M8313_IG08
;; size=52 bbWeight=1 PerfScore 16.50
-G_M8313_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref, isz
+G_M8313_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref
; gcrRegs -[rdi]
; byrRegs -[rbp]
mov r12d, -1
- jmp SHORT G_M8313_IG06
- ;; size=8 bbWeight=0.64 PerfScore 1.43
-G_M8313_IG05: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref
- xor r12d, r12d
- cmp edx, r8d
- setg r12b
- ;; size=10 bbWeight=0.36 PerfScore 0.55
-G_M8313_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref, isz
+ ;; size=6 bbWeight=0.64 PerfScore 0.16
+G_M8313_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref, isz
test r12d, r12d
- jg SHORT G_M8313_IG08
+ jg SHORT G_M8313_IG07
;; size=5 bbWeight=1 PerfScore 1.25
-G_M8313_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M8313_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r13 r15]
add rsp, 40
pop rbx
@@ -107,20 +101,36 @@ G_M8313_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
pop r15
ret
;; size=17 bbWeight=1 PerfScore 5.25
-G_M8313_IG08: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, gcvars, byref, isz
+G_M8313_IG07: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, gcvars, byref, isz
; byrRegs +[r13 r15]
mov ecx, dword ptr [r15]
mov edx, dword ptr [r13]
mov dword ptr [r15], edx
mov dword ptr [r13], ecx
- jmp SHORT G_M8313_IG07
+ jmp SHORT G_M8313_IG06
;; size=16 bbWeight=0.47 PerfScore 3.73
-G_M8313_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8313_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref, isz
+ xor r12d, r12d
+ cmp edx, r8d
+ setg r12b
+ jmp SHORT G_M8313_IG05
+ ;; size=12 bbWeight=0.36 PerfScore 1.28
+G_M8313_IG09: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=A000 {r13 r15}, byref, isz
+ ; gcrRegs +[rdi]
+ mov rcx, gword ptr [rdi+0x08]
+ ; gcrRegs +[rcx]
+ call [rdi+0x18]System.Comparison`1[System.Collections.IntStruct]:Invoke(System.Collections.IntStruct,System.Collections.IntStruct):int:this
+ ; gcrRegs -[rcx rdi]
+ ; gcr arg pop 0
+ mov r12d, eax
+ jmp SHORT G_M8313_IG05
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M8313_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r13 r15]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M8313_IG10: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref
+G_M8313_IG11: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref
; gcrRegs +[rdi]
; byrRegs +[rbp]
mov rcx, 0xD1FFAB1E
@@ -132,18 +142,8 @@ G_M8313_IG10: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, b
; gcr arg pop 0
jmp G_M8313_IG03
;; size=31 bbWeight=0 PerfScore 0.00
-G_M8313_IG11: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=A000 {r13 r15}, byref, isz
- ; byrRegs -[rbp] +[r13 r15]
- mov rcx, gword ptr [rdi+0x08]
- ; gcrRegs +[rcx]
- call [rdi+0x18]System.Comparison`1[System.Collections.IntStruct]:Invoke(System.Collections.IntStruct,System.Collections.IntStruct):int:this
- ; gcrRegs -[rcx rdi]
- ; gcr arg pop 0
- mov r12d, eax
- jmp SHORT G_M8313_IG06
- ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 192, prolog size 16, PerfScore 42.95, instruction count 62, allocated bytes for code 192 (MethodHash=3756df86) for method System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
+; Total bytes of code 196, prolog size 16, PerfScore 42.41, instruction count 62, allocated bytes for code 196 (MethodHash=3756df86) for method System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
; ============================================================
Unwind Info:
+15 (+4.50%) : 71662.dasm - System.Collections.Generic.Dictionary2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer
1[System.__Canon]):this (Tier1)
@@ -44,12 +44,12 @@ G_M21827_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
test edx, edx
jg G_M21827_IG21
;; size=16 bbWeight=1 PerfScore 2.50
-G_M21827_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M21827_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rdx, rsi
; gcrRegs +[rdx]
test rdx, rdx
- je SHORT G_M21827_IG09
- ;; size=8 bbWeight=1 PerfScore 1.50
+ je G_M21827_IG14
+ ;; size=12 bbWeight=1 PerfScore 1.50
G_M21827_IG04: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
lea rcx, bword ptr [rbx+0x18]
@@ -62,90 +62,52 @@ G_M21827_IG04: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {},
mov rdx, qword ptr [rdx]
mov rax, 0xD1FFAB1E ; System.String
cmp qword ptr [rdx], rax
- jne G_M21827_IG19
+ jne G_M21827_IG18
;; size=38 bbWeight=1 PerfScore 11.75
G_M21827_IG05: ; bbWeight=0.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [rbx+0x18]
; gcrRegs +[rdx]
mov rax, 0xD1FFAB1E ; const ptr
cmp rdx, gword ptr [rax]
- je SHORT G_M21827_IG08
+ je SHORT G_M21827_IG10
;; size=19 bbWeight=0.99 PerfScore 6.21
-G_M21827_IG06: ; bbWeight=0.98, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
+G_M21827_IG06: ; bbWeight=0.98, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
mov rax, 0xD1FFAB1E ; const ptr
cmp rdx, gword ptr [rax]
- jne SHORT G_M21827_IG13
- ;; size=15 bbWeight=0.98 PerfScore 4.18
-G_M21827_IG07: ; bbWeight=0.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne G_M21827_IG19
+ ;; size=19 bbWeight=0.98 PerfScore 4.18
+G_M21827_IG07: ; bbWeight=0.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
mov rdx, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rdx]
; gcrRegs +[rsi]
- jmp SHORT G_M21827_IG14
- ;; size=15 bbWeight=0.98 PerfScore 4.18
-G_M21827_IG08: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rsi]
- mov rdx, 0xD1FFAB1E ; const ptr
- mov rsi, gword ptr [rdx]
- ; gcrRegs +[rsi]
- jmp SHORT G_M21827_IG14
- ;; size=15 bbWeight=0.01 PerfScore 0.04
-G_M21827_IG09: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rsi]
- mov rcx, qword ptr [rbx]
- mov rdx, qword ptr [rcx+0x38]
- mov rdx, qword ptr [rdx]
- mov rdx, qword ptr [rdx+0x20]
- test rdx, rdx
- je SHORT G_M21827_IG11
- ;; size=19 bbWeight=0.01 PerfScore 0.06
-G_M21827_IG10: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M21827_IG12
- ;; size=2 bbWeight=0.00 PerfScore 0.01
-G_M21827_IG11: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- mov rdx, rax
- ;; size=18 bbWeight=0.00 PerfScore 0.00
-G_M21827_IG12: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov rcx, rdx
- call [System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]]
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov rdx, rax
- ; gcrRegs +[rdx]
- jmp G_M21827_IG04
- ;; size=17 bbWeight=0.01 PerfScore 0.03
-G_M21827_IG13: ; bbWeight=0.00, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, 0xD1FFAB1E ; const ptr
- xor rsi, rsi
- ; gcrRegs +[rsi]
- mov r8, 0xD1FFAB1E ; const ptr
- cmp rdx, gword ptr [rax]
- cmove rsi, gword ptr [r8]
- ;; size=29 bbWeight=0.00 PerfScore 0.01
-G_M21827_IG14: ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdx]
+ ;; size=13 bbWeight=0.98 PerfScore 2.21
+G_M21827_IG08: ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
test rsi, rsi
- je SHORT G_M21827_IG19
+ je G_M21827_IG18
mov rdx, qword ptr [rcx+0x38]
mov rdx, qword ptr [rdx]
mov rdx, qword ptr [rdx+0x18]
test rdx, rdx
- je SHORT G_M21827_IG16
- ;; size=21 bbWeight=0.99 PerfScore 8.45
-G_M21827_IG15: ; bbWeight=0.80, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M21827_IG17
+ je SHORT G_M21827_IG11
+ ;; size=25 bbWeight=0.99 PerfScore 8.45
+G_M21827_IG09: ; bbWeight=0.80, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M21827_IG12
;; size=2 bbWeight=0.80 PerfScore 1.59
-G_M21827_IG16: ; bbWeight=0.20, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M21827_IG10: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rsi]
+ mov rdx, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rdx]
+ ; gcrRegs +[rsi]
+ jmp SHORT G_M21827_IG08
+ ;; size=15 bbWeight=0.01 PerfScore 0.04
+G_M21827_IG11: ; bbWeight=0.20, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov rdx, rax
;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M21827_IG17: ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M21827_IG12: ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rcx, rdx
mov rdx, rsi
; gcrRegs +[rdx]
@@ -161,19 +123,57 @@ G_M21827_IG17: ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; byrRegs -[rcx]
nop
;; size=24 bbWeight=0.99 PerfScore 3.48
-G_M21827_IG18: ; bbWeight=0.99, epilog, nogc, extend
+G_M21827_IG13: ; bbWeight=0.99, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=0.99 PerfScore 2.24
-G_M21827_IG19: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M21827_IG14: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov rcx, qword ptr [rbx]
+ mov rdx, qword ptr [rcx+0x38]
+ mov rdx, qword ptr [rdx]
+ mov rdx, qword ptr [rdx+0x20]
+ test rdx, rdx
+ je SHORT G_M21827_IG16
+ ;; size=19 bbWeight=0.01 PerfScore 0.06
+G_M21827_IG15: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M21827_IG17
+ ;; size=2 bbWeight=0.00 PerfScore 0.01
+G_M21827_IG16: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rdx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov rdx, rax
+ ;; size=18 bbWeight=0.00 PerfScore 0.00
+G_M21827_IG17: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rcx, rdx
+ call [System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]]
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov rdx, rax
+ ; gcrRegs +[rdx]
+ jmp G_M21827_IG04
+ ;; size=17 bbWeight=0.01 PerfScore 0.03
+G_M21827_IG18: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rax rdx]
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=0.01 PerfScore 0.01
-G_M21827_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M21827_IG19: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rdx]
+ mov rax, 0xD1FFAB1E ; const ptr
+ xor rsi, rsi
+ ; gcrRegs +[rsi]
+ mov r8, 0xD1FFAB1E ; const ptr
+ cmp rdx, gword ptr [rax]
+ cmove rsi, gword ptr [r8]
+ jmp G_M21827_IG08
+ ;; size=34 bbWeight=0.00 PerfScore 0.01
+G_M21827_IG20: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdx rsi]
mov ecx, 22
call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)]
; gcr arg pop 0
@@ -189,7 +189,7 @@ G_M21827_IG21: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
jmp G_M21827_IG03
;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 333, prolog size 11, PerfScore 50.29, instruction count 85, allocated bytes for code 333 (MethodHash=b587aabc) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
+; Total bytes of code 348, prolog size 11, PerfScore 48.32, instruction count 85, allocated bytes for code 348 (MethodHash=b587aabc) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
; ============================================================
Unwind Info:
coreclr_tests.run.windows.x64.checked.mch
-19 (-14.39%) : 277925.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRefHelperNoCacheLookup(byref,ulong,System.Object) (FullOpts)
@@ -2,20 +2,22 @@
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
+; optimized using Unknown PGO
; rsp based frame
; fully interruptible
+; with Unknown PGO: edge weights are valid, and fgCalledCount is 154
; No matching PGO data
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 3, 2.82) byref -> rdi single-def
-; V01 arg1 [V01,T01] ( 4, 3 ) long -> rsi single-def
-; V02 arg2 [V02,T00] ( 10, 6.82) ref -> rbx class-hnd <System.Object>
+; V00 arg0 [V00,T01] ( 3, 3 ) byref -> rsi single-def
+; V01 arg1 [V01,T02] ( 3, 3 ) long -> rdi single-def
+; V02 arg2 [V02,T00] ( 7, 7 ) ref -> rbx class-hnd <System.Object>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T04] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V05 tmp2 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V06 tmp3 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V07 cse0 [V07,T03] ( 3, 0.02) ref -> rdx "CSE - conservative"
+; V07 cse0 [V07,T03] ( 3, 2.40) ref -> rdx "CSE - aggressive"
;
; Lcl frame size = 32
@@ -24,46 +26,17 @@ G_M14814_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbx
sub rsp, 32
- mov rdi, rcx
- ; byrRegs +[rdi]
- mov rsi, rdx
+ mov rsi, rcx
+ ; byrRegs +[rsi]
+ mov rdi, rdx
mov rbx, r8
; gcrRegs +[rbx]
;; size=16 bbWeight=1 PerfScore 4.00
-G_M14814_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+G_M14814_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
test rbx, rbx
- je SHORT G_M14814_IG06
+ jne SHORT G_M14814_IG04
;; size=5 bbWeight=1 PerfScore 1.25
-G_M14814_IG03: ; bbWeight=0.99, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
- mov rcx, rsi
- mov rdx, rbx
- ; gcrRegs +[rdx]
- call <unknown method>
- ; gcrRegs -[rdx rbx] +[rax]
- ; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
- test rbx, rbx
- je SHORT G_M14814_IG07
- ;; size=19 bbWeight=0.99 PerfScore 2.98
-G_M14814_IG04: ; bbWeight=0.82, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref
- ; gcrRegs -[rax]
- mov rcx, rdi
- ; byrRegs +[rcx]
- mov rdx, rbx
- ; gcrRegs +[rdx]
- ;; size=6 bbWeight=0.82 PerfScore 0.41
-G_M14814_IG05: ; bbWeight=0.82, epilog, nogc, extend
- add rsp, 32
- pop rbx
- pop rsi
- pop rdi
- jmp <unknown method>
- ; gcr arg pop 0
- ;; size=12 bbWeight=0.82 PerfScore 3.07
-G_M14814_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, gcvars, byref, isz
- ; gcrRegs -[rdx]
- ; byrRegs -[rcx]
+G_M14814_IG03: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
mov rcx, rdx
@@ -71,7 +44,9 @@ G_M14814_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=000
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- mov rcx, rsi
+ ;; size=19 bbWeight=0.80 PerfScore 2.80
+G_M14814_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
+ mov rcx, rdi
mov rdx, rbx
; gcrRegs +[rdx]
call <unknown method>
@@ -80,11 +55,23 @@ G_M14814_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=000
mov rbx, rax
; gcrRegs +[rbx]
test rbx, rbx
- jne SHORT G_M14814_IG04
- ;; size=38 bbWeight=0.01 PerfScore 0.04
-G_M14814_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
- ; byrRegs -[rdi]
+ je SHORT G_M14814_IG06
+ mov rcx, rsi
+ ; byrRegs +[rcx]
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ ;; size=25 bbWeight=1 PerfScore 3.50
+G_M14814_IG05: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 32
+ pop rbx
+ pop rsi
+ pop rdi
+ jmp <unknown method>
+ ; gcr arg pop 0
+ ;; size=12 bbWeight=1 PerfScore 3.75
+G_M14814_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rdx rbx]
+ ; byrRegs -[rcx rsi]
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -104,7 +91,7 @@ G_M14814_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 132, prolog size 16, PerfScore 11.75, instruction count 39, allocated bytes for code 132 (MethodHash=29c6c621) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
+; Total bytes of code 113, prolog size 16, PerfScore 15.30, instruction count 33, allocated bytes for code 113 (MethodHash=29c6c621) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
; ============================================================
Unwind Info:
-37 (-13.21%) : 277832.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
@@ -2,122 +2,121 @@
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
+; optimized using Unknown PGO
; rsp based frame
; fully interruptible
+; with Unknown PGO: edge weights are invalid, and fgCalledCount is 1
; No matching PGO data
; 0 inlinees with PGO data; 14 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 5, 4.05) long -> rcx single-def
-; V01 arg1 [V01,T03] ( 6, 3.94) long -> rbx single-def
-; V02 arg2 [V02,T05] ( 3, 3 ) long -> r8 single-def
-; V03 loc0 [V03,T00] ( 18, 38.26) long -> rsi
-; V04 loc1 [V04,T01] ( 14, 7.02) int -> r14
+; V00 arg0 [V00,T04] ( 5, 21.52) long -> rcx single-def
+; V01 arg1 [V01,T05] ( 6, 19.60) long -> rbx single-def
+; V02 arg2 [V02,T07] ( 3, 3 ) long -> r8 single-def
+; V03 loc0 [V03,T02] ( 18, 91.25) long -> rsi
+; V04 loc1 [V04,T08] ( 14, 4.44) int -> rdi
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref
-; V06 loc3 [V06,T08] ( 6, 0.49) long -> rbp
-; V07 loc4 [V07,T04] ( 5, 5.66) long -> r8
-; V08 loc5 [V08,T09] ( 2, 0.31) long -> rdi
+; V06 loc3 [V06,T03] ( 6, 72.07) long -> rdx
+; V07 loc4 [V07,T09] ( 5, 3.54) long -> r8
+; V08 loc5 [V08,T06] ( 2, 17.38) long -> rax
; V09 OutArgs [V09 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp2 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V12 tmp3 [V12,T11] ( 6, 0 ) long -> rbp "Inlining Arg"
-; V13 tmp4 [V13,T12] ( 5, 0 ) byref -> rax "Inlining Arg"
+; V12 tmp3 [V12,T00] ( 6,203.21) long -> rdx "Inlining Arg"
+; V13 tmp4 [V13,T01] ( 5,169.35) byref -> r10 "Inlining Arg"
;* V14 tmp5 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp6 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V16 tmp7 [V16,T06] ( 3, 4.43) byref -> rax single-def "Inlining Arg"
+; V16 tmp7 [V16,T11] ( 3, 1.01) byref -> rdx single-def "Inlining Arg"
;* V17 tmp8 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp9 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V19 tmp10 [V19,T13] ( 3, 0 ) byref -> rcx "Inlining Arg"
+; V19 tmp10 [V19,T10] ( 3, 1.17) byref -> rcx "Inlining Arg"
;* V20 tmp11 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp12 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V23 tmp14 [V23,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V24 cse0 [V24,T10] ( 2, 0.00) ref -> rdx "CSE - conservative"
+;* V23 tmp14 [V23,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V24 cse0 [V24,T13] ( 2, 0.85) ref -> rdx "CSE - aggressive"
;
; Lcl frame size = 32
G_M6063_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r14
push rdi
push rsi
- push rbp
push rbx
sub rsp, 32
mov rbx, rdx
- ;; size=13 bbWeight=1 PerfScore 5.50
+ ;; size=10 bbWeight=1 PerfScore 3.50
G_M6063_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
xor esi, esi
cmp r8, 4
- jae SHORT G_M6063_IG12
+ jae SHORT G_M6063_IG05
;; size=8 bbWeight=1 PerfScore 1.50
-G_M6063_IG03: ; bbWeight=2.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M6063_IG03: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
test r8b, 2
- je SHORT G_M6063_IG06
- ;; size=6 bbWeight=2.80 PerfScore 3.50
-G_M6063_IG04: ; bbWeight=1.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov r14d, dword ptr [rcx+2*rsi]
- test r14d, 0xD1FFAB1E
- jne SHORT G_M6063_IG10
- ;; size=13 bbWeight=1.80 PerfScore 5.85
-G_M6063_IG05: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rax, [rsi+rbx]
- mov byte ptr [rax], r14b
- shr r14d, 16
- mov byte ptr [rax+0x01], r14b
- add rsi, 2
- ;; size=19 bbWeight=0.74 PerfScore 2.40
-G_M6063_IG06: ; bbWeight=0.55, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- test r8b, 1
+ je SHORT G_M6063_IG13
+ ;; size=6 bbWeight=0.62 PerfScore 0.78
+G_M6063_IG04: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M6063_IG09
+ ;; size=2 bbWeight=0.32 PerfScore 0.65
+G_M6063_IG05: ; bbWeight=0.45, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ lea rax, [r8-0x04]
+ ;; size=4 bbWeight=0.45 PerfScore 0.22
+G_M6063_IG06: ; bbWeight=18.82, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rdx, qword ptr [rcx+2*rsi]
+ mov r10, 0xD1FFAB1E
+ test rdx, r10
jne G_M6063_IG18
- ;; size=10 bbWeight=0.55 PerfScore 0.69
-G_M6063_IG07: ; bbWeight=29.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=23 bbWeight=18.82 PerfScore 65.86
+G_M6063_IG07: ; bbWeight=16.93, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ lea r10, [rsi+rbx]
+ mov byte ptr [r10], dl
+ shr rdx, 16
+ mov byte ptr [r10+0x01], dl
+ shr rdx, 16
+ mov byte ptr [r10+0x02], dl
+ shr rdx, 16
+ mov byte ptr [r10+0x03], dl
+ add rsi, 4
+ cmp rax, rsi
+ jae SHORT G_M6063_IG06
+ ;; size=40 bbWeight=16.93 PerfScore 127.01
+G_M6063_IG08: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M6063_IG03
+ ;; size=2 bbWeight=0.62 PerfScore 1.25
+G_M6063_IG09: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov edi, dword ptr [rcx+2*rsi]
+ test edi, 0xD1FFAB1E
+ je SHORT G_M6063_IG12
+ ;; size=11 bbWeight=0.32 PerfScore 1.05
+G_M6063_IG10: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ test edi, 0xD1FFAB1E
+ jne SHORT G_M6063_IG17
+ ;; size=8 bbWeight=0.53 PerfScore 0.66
+G_M6063_IG11: ; bbWeight=0.43, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M6063_IG16
+ ;; size=2 bbWeight=0.43 PerfScore 0.85
+G_M6063_IG12: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ lea rdx, [rsi+rbx]
+ mov byte ptr [rdx], dil
+ mov eax, edi
+ shr eax, 16
+ mov byte ptr [rdx+0x01], al
+ add rsi, 2
+ ;; size=19 bbWeight=0.17 PerfScore 0.59
+G_M6063_IG13: ; bbWeight=0.47, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ test r8b, 1
+ jne SHORT G_M6063_IG20
+ ;; size=6 bbWeight=0.47 PerfScore 0.59
+G_M6063_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rax, rsi
- ;; size=3 bbWeight=29.40 PerfScore 7.35
-G_M6063_IG08: ; bbWeight=29.40, epilog, nogc, extend
+ ;; size=3 bbWeight=1 PerfScore 0.25
+G_M6063_IG15: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
- pop rbp
pop rsi
pop rdi
- pop r14
ret
- ;; size=11 bbWeight=29.40 PerfScore 110.25
-G_M6063_IG09: ; bbWeight=1.20, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- mov byte ptr [rsi+rbx], r14b
- inc rsi
- jmp SHORT G_M6063_IG07
- ;; size=9 bbWeight=1.20 PerfScore 3.90
-G_M6063_IG10: ; bbWeight=0.37, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- test r14d, 0xD1FFAB1E
- jne SHORT G_M6063_IG16
- ;; size=9 bbWeight=0.37 PerfScore 0.46
-G_M6063_IG11: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M6063_IG15
- ;; size=2 bbWeight=0.00 PerfScore 0.00
-G_M6063_IG12: ; bbWeight=0.31, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rdi, [r8-0x04]
- ;; size=4 bbWeight=0.31 PerfScore 0.15
-G_M6063_IG13: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rbp, qword ptr [rcx+2*rsi]
- mov rax, 0xD1FFAB1E
- test rbp, rax
- je SHORT G_M6063_IG19
- ;; size=19 bbWeight=0.25 PerfScore 0.86
-G_M6063_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov r14d, ebp
- test r14d, 0xD1FFAB1E
- jne SHORT G_M6063_IG10
- lea rcx, [rsi+rbx]
- mov byte ptr [rcx], r14b
- mov r8d, r14d
- shr r8d, 16
- mov byte ptr [rcx+0x01], r8b
- mov r14, rbp
- shr r14, 32
- add rsi, 2
- jmp SHORT G_M6063_IG10
- ;; size=43 bbWeight=0 PerfScore 0.00
-G_M6063_IG15: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=1 PerfScore 2.75
+G_M6063_IG16: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
@@ -125,37 +124,39 @@ G_M6063_IG15: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=26 bbWeight=0.00 PerfScore 0.01
-G_M6063_IG16: ; bbWeight=0.37, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- test r14d, 0xFF80
- je SHORT G_M6063_IG09
- ;; size=9 bbWeight=0.37 PerfScore 0.46
-G_M6063_IG17: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- jmp G_M6063_IG07
- ;; size=5 bbWeight=0.00 PerfScore 0.00
-G_M6063_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movzx r14, word ptr [rcx+2*rsi]
- cmp r14d, 127
- ja G_M6063_IG07
- jmp G_M6063_IG09
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M6063_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rax, [rsi+rbx]
- mov byte ptr [rax], bpl
- shr rbp, 16
- mov byte ptr [rax+0x01], bpl
- shr rbp, 16
- mov byte ptr [rax+0x02], bpl
- mov rdx, rbp
- shr rdx, 16
- mov byte ptr [rax+0x03], dl
- add rsi, 4
- cmp rdi, rsi
- jae G_M6063_IG13
- jmp G_M6063_IG03
- ;; size=51 bbWeight=0 PerfScore 0.00
+ ;; size=26 bbWeight=0.43 PerfScore 1.49
+G_M6063_IG17: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ test edi, 0xFF80
+ jne SHORT G_M6063_IG14
+ jmp SHORT G_M6063_IG21
+ ;; size=10 bbWeight=0.53 PerfScore 1.73
+G_M6063_IG18: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov edi, edx
+ test edi, 0xD1FFAB1E
+ jne SHORT G_M6063_IG10
+ ;; size=10 bbWeight=0.38 PerfScore 0.56
+G_M6063_IG19: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ lea rcx, [rsi+rbx]
+ mov byte ptr [rcx], dil
+ shr edi, 16
+ mov byte ptr [rcx+0x01], dil
+ mov rdi, rdx
...
-24 (-9.96%) : 277785.dasm - System.AppContext:Setup(ulong,ulong,int) (FullOpts)
@@ -2,24 +2,27 @@
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
+; optimized using Unknown PGO
; rsp based frame
; partially interruptible
+; with Unknown PGO: edge weights are valid, and fgCalledCount is 3
; No matching PGO data
; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T05] ( 3, 98 ) long -> rsi single-def
-; V01 arg1 [V01,T06] ( 3, 98 ) long -> rdi single-def
-; V02 arg2 [V02,T04] ( 5,100 ) int -> rbx single-def
-; V03 loc0 [V03,T01] ( 6,481 ) int -> r14
+; V00 arg0 [V00,T06] ( 3, 74.00) long -> rsi single-def
+; V01 arg1 [V01,T07] ( 3, 74.00) long -> rdi single-def
+; V02 arg2 [V02,T05] ( 5, 76.00) int -> rbx single-def
+; V03 loc0 [V03,T01] ( 6,361.00) int -> r14
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T08] ( 3, 6 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V05 tmp1 [V05,T09] ( 3, 6.00) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V06 tmp2 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V07 tmp3 [V07,T00] ( 3,576 ) ref -> r15 class-hnd "Inlining Arg" <<unknown class>>
-; V08 tmp4 [V08,T02] ( 2,384 ) ref -> r13 class-hnd exact "Inlining Arg" <System.String>
-; V09 tmp5 [V09,T03] ( 2,384 ) ref -> r8 class-hnd exact "Inlining Arg" <System.String>
+; V07 tmp3 [V07,T00] ( 3,432.00) ref -> r15 class-hnd "Inlining Arg" <<unknown class>>
+; V08 tmp4 [V08,T02] ( 2,288.00) ref -> r13 class-hnd exact "Inlining Arg" <System.String>
+; V09 tmp5 [V09,T03] ( 2,288.00) ref -> r8 class-hnd exact "Inlining Arg" <System.String>
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V11 cse0 [V11,T07] ( 4, 99 ) long -> rbp "CSE - aggressive"
+; V11 cse0 [V11,T08] ( 4, 75.00) long -> rbp "CSE - aggressive"
+; V12 cse1 [V12,T04] ( 5, 88.00) ref -> rdx multi-def "CSE - aggressive"
;
; Lcl frame size = 32
@@ -36,12 +39,21 @@ G_M44736_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rdi, rdx
mov ebx, r8d
;; size=23 bbWeight=1 PerfScore 8.00
-G_M44736_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M44736_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rbp, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
cmp gword ptr [rbp], 0
- jne G_M44736_IG07
- ;; size=21 bbWeight=1 PerfScore 4.25
-G_M44736_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ je SHORT G_M44736_IG04
+ ;; size=17 bbWeight=1 PerfScore 4.25
+G_M44736_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ ;; size=26 bbWeight=0.80 PerfScore 2.80
+G_M44736_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -63,9 +75,9 @@ G_M44736_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx r14]
xor r14d, r14d
test ebx, ebx
- jle G_M44736_IG08
- ;; size=54 bbWeight=1 PerfScore 8.25
-G_M44736_IG04: ; bbWeight=96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jle SHORT G_M44736_IG08
+ ;; size=50 bbWeight=1.00 PerfScore 8.25
+G_M44736_IG05: ; bbWeight=72.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov r15, gword ptr [rbp]
; gcrRegs +[r15]
movsxd rcx, r14d
@@ -91,35 +103,23 @@ G_M44736_IG04: ; bbWeight=96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rcx rdx r8 r13 r15]
; gcr arg pop 0
test eax, eax
- je SHORT G_M44736_IG06
- ;; size=59 bbWeight=96 PerfScore 1632.00
-G_M44736_IG05: ; bbWeight=96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M44736_IG07
+ ;; size=59 bbWeight=72.00 PerfScore 1224.00
+G_M44736_IG06: ; bbWeight=28.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ mov rcx, rdx
+ ; gcrRegs +[rcx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ ;; size=19 bbWeight=28.80 PerfScore 100.80
+G_M44736_IG07: ; bbWeight=72.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
inc r14d
- cmp ebx, r14d
- jle SHORT G_M44736_IG08
- jmp SHORT G_M44736_IG04
- ;; size=10 bbWeight=96 PerfScore 336.00
-G_M44736_IG06: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rcx, 0xD1FFAB1E
- ; gcrRegs +[rcx]
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx]
- ; gcr arg pop 0
- jmp SHORT G_M44736_IG05
- ;; size=28 bbWeight=0.32 PerfScore 1.74
-G_M44736_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E
- ; gcrRegs +[rcx]
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx]
- ; gcr arg pop 0
- jmp G_M44736_IG03
- ;; size=31 bbWeight=0.01 PerfScore 0.04
-G_M44736_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ cmp r14d, ebx
+ jl SHORT G_M44736_IG05
+ ;; size=8 bbWeight=72.00 PerfScore 108.00
+G_M44736_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
add rsp, 32
pop rbx
pop rbp
@@ -129,9 +129,9 @@ G_M44736_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
pop r14
pop r15
ret
- ;; size=15 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=1 PerfScore 4.75
-; Total bytes of code 241, prolog size 14, PerfScore 1990.27, instruction count 64, allocated bytes for code 241 (MethodHash=16ec513f) for method System.AppContext:Setup(ulong,ulong,int) (FullOpts)
+; Total bytes of code 217, prolog size 14, PerfScore 1460.85, instruction count 61, allocated bytes for code 217 (MethodHash=16ec513f) for method System.AppContext:Setup(ulong,ulong,int) (FullOpts)
; ============================================================
Unwind Info:
+30 (+5.38%) : 372160.dasm - Internal.NativeFormat.NativePrimitiveEncoder:WriteUnsigned(uint):this (Tier1)
@@ -33,7 +33,7 @@
;
; Lcl frame size = 40
-G_M60318_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M60318_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rsi
push rbx
sub rsp, 40
@@ -47,17 +47,17 @@ G_M60318_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=12 bbWeight=1 PerfScore 1.25
G_M60318_IG03: ; bbWeight=0.56, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
cmp esi, 0x4000
- jb G_M60318_IG10
+ jb G_M60318_IG11
;; size=12 bbWeight=0.56 PerfScore 0.70
G_M60318_IG04: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
cmp esi, 0xD1FFAB1E
- jae G_M60318_IG21
+ jae G_M60318_IG17
mov rdx, gword ptr [rbx]
; gcrRegs +[rdx]
mov edx, dword ptr [rdx+0x08]
; gcrRegs -[rdx]
cmp edx, dword ptr [rbx+0x08]
- je G_M60318_IG18
+ je G_M60318_IG14
;; size=27 bbWeight=0.40 PerfScore 3.70
G_M60318_IG05: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rdx, gword ptr [rbx]
@@ -66,7 +66,7 @@ G_M60318_IG05: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
lea eax, [rcx+0x01]
mov dword ptr [rbx+0x08], eax
cmp ecx, dword ptr [rdx+0x08]
- jae G_M60318_IG14
+ jae G_M60318_IG21
lea eax, [8*rsi]
add eax, 3
mov byte ptr [rdx+rcx+0x10], al
@@ -74,7 +74,7 @@ G_M60318_IG05: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
mov edx, dword ptr [rdx+0x08]
; gcrRegs -[rdx]
cmp edx, dword ptr [rbx+0x08]
- je G_M60318_IG19
+ je G_M60318_IG15
;; size=50 bbWeight=0.40 PerfScore 7.70
G_M60318_IG06: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rdx, gword ptr [rbx]
@@ -83,7 +83,7 @@ G_M60318_IG06: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
lea eax, [rcx+0x01]
mov dword ptr [rbx+0x08], eax
cmp ecx, dword ptr [rdx+0x08]
- jae G_M60318_IG14
+ jae G_M60318_IG21
mov eax, esi
shr eax, 5
mov byte ptr [rdx+rcx+0x10], al
@@ -91,7 +91,7 @@ G_M60318_IG06: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
mov edx, dword ptr [rdx+0x08]
; gcrRegs -[rdx]
cmp edx, dword ptr [rbx+0x08]
- je G_M60318_IG20
+ je G_M60318_IG16
;; size=45 bbWeight=0.40 PerfScore 7.70
G_M60318_IG07: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov rdx, gword ptr [rbx]
@@ -100,72 +100,33 @@ G_M60318_IG07: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
lea eax, [rcx+0x01]
mov dword ptr [rbx+0x08], eax
cmp ecx, dword ptr [rdx+0x08]
- jae G_M60318_IG14
+ jae G_M60318_IG21
mov eax, esi
shr eax, 13
mov byte ptr [rdx+rcx+0x10], al
- jmp SHORT G_M60318_IG13
+ jmp SHORT G_M60318_IG10
;; size=32 bbWeight=0.40 PerfScore 5.30
-G_M60318_IG08: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M60318_IG08: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rdx]
mov rdx, gword ptr [rbx]
; gcrRegs +[rdx]
mov edx, dword ptr [rdx+0x08]
; gcrRegs -[rdx]
cmp edx, dword ptr [rbx+0x08]
- je SHORT G_M60318_IG15
- ;; size=11 bbWeight=0.44 PerfScore 3.52
-G_M60318_IG09: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ je G_M60318_IG22
+ ;; size=15 bbWeight=0.44 PerfScore 3.52
+G_M60318_IG09: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rdx, gword ptr [rbx]
; gcrRegs +[rdx]
mov ecx, dword ptr [rbx+0x08]
lea eax, [rcx+0x01]
mov dword ptr [rbx+0x08], eax
cmp ecx, dword ptr [rdx+0x08]
- jae SHORT G_M60318_IG14
+ jae G_M60318_IG21
add esi, esi
mov byte ptr [rdx+rcx+0x10], sil
- jmp SHORT G_M60318_IG13
- ;; size=26 bbWeight=0.44 PerfScore 5.61
-G_M60318_IG10: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- ; gcrRegs -[rdx]
- mov rdx, gword ptr [rbx]
- ; gcrRegs +[rdx]
- mov edx, dword ptr [rdx+0x08]
- ; gcrRegs -[rdx]
- cmp edx, dword ptr [rbx+0x08]
- je SHORT G_M60318_IG16
- ;; size=11 bbWeight=0.16 PerfScore 1.28
-G_M60318_IG11: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- mov rdx, gword ptr [rbx]
- ; gcrRegs +[rdx]
- mov ecx, dword ptr [rbx+0x08]
- lea eax, [rcx+0x01]
- mov dword ptr [rbx+0x08], eax
- cmp ecx, dword ptr [rdx+0x08]
- jae SHORT G_M60318_IG14
- lea eax, [4*rsi]
- inc eax
- mov byte ptr [rdx+rcx+0x10], al
- mov rdx, gword ptr [rbx]
- mov edx, dword ptr [rdx+0x08]
- ; gcrRegs -[rdx]
- cmp edx, dword ptr [rbx+0x08]
- je SHORT G_M60318_IG17
- ;; size=41 bbWeight=0.16 PerfScore 3.08
-G_M60318_IG12: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- mov rdx, gword ptr [rbx]
- ; gcrRegs +[rdx]
- mov ecx, dword ptr [rbx+0x08]
- lea eax, [rcx+0x01]
- mov dword ptr [rbx+0x08], eax
- cmp ecx, dword ptr [rdx+0x08]
- jae SHORT G_M60318_IG14
- mov eax, esi
- shr eax, 6
- mov byte ptr [rdx+rcx+0x10], al
- ;; size=26 bbWeight=0.16 PerfScore 1.80
-G_M60318_IG13: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=28 bbWeight=0.44 PerfScore 4.73
+G_M60318_IG10: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdx]
; byrRegs -[rbx]
add rsp, 40
@@ -173,51 +134,47 @@ G_M60318_IG13: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
pop rsi
ret
;; size=7 bbWeight=0.44 PerfScore 0.99
-G_M60318_IG14: ; 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_M60318_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M60318_IG11: ; bbWeight=0.16, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
; byrRegs +[rbx]
mov rdx, gword ptr [rbx]
; gcrRegs +[rdx]
mov edx, dword ptr [rdx+0x08]
; gcrRegs -[rdx]
- add edx, edx
- mov rcx, rbx
- ; byrRegs +[rcx]
- call [System.Array:Resize[ubyte](byref,int)]
- ; byrRegs -[rcx]
- ; gcr arg pop 0
- jmp G_M60318_IG09
- ;; size=22 bbWeight=0 PerfScore 0.00
-G_M60318_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ cmp edx, dword ptr [rbx+0x08]
+ je G_M60318_IG23
+ ;; size=15 bbWeight=0.16 PerfScore 1.28
+G_M60318_IG12: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rdx, gword ptr [rbx]
; gcrRegs +[rdx]
+ mov ecx, dword ptr [rbx+0x08]
+ lea eax, [rcx+0x01]
+ mov dword ptr [rbx+0x08], eax
+ cmp ecx, dword ptr [rdx+0x08]
+ jae G_M60318_IG21
+ lea eax, [4*rsi]
+ inc eax
+ mov byte ptr [rdx+rcx+0x10], al
+ mov rdx, gword ptr [rbx]
mov edx, dword ptr [rdx+0x08]
; gcrRegs -[rdx]
- add edx, edx
- mov rcx, rbx
- ; byrRegs +[rcx]
- call [System.Array:Resize[ubyte](byref,int)]
- ; byrRegs -[rcx]
- ; gcr arg pop 0
- jmp SHORT G_M60318_IG11
- ;; size=19 bbWeight=0 PerfScore 0.00
-G_M60318_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ cmp edx, dword ptr [rbx+0x08]
+ je G_M60318_IG24
+ ;; size=49 bbWeight=0.16 PerfScore 3.08
+G_M60318_IG13: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov rdx, gword ptr [rbx]
; gcrRegs +[rdx]
- mov edx, dword ptr [rdx+0x08]
+ mov ecx, dword ptr [rbx+0x08]
+ lea eax, [rcx+0x01]
+ mov dword ptr [rbx+0x08], eax
+ cmp ecx, dword ptr [rdx+0x08]
+ jae G_M60318_IG21
+ mov eax, esi
+ shr eax, 6
+ mov byte ptr [rdx+rcx+0x10], al
+ jmp SHORT G_M60318_IG10
+ ;; size=32 bbWeight=0.16 PerfScore 2.12
+G_M60318_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rdx]
- add edx, edx
- mov rcx, rbx
- ; byrRegs +[rcx]
- call [System.Array:Resize[ubyte](byref,int)]
- ; byrRegs -[rcx]
- ; gcr arg pop 0
- jmp SHORT G_M60318_IG12
- ;; size=19 bbWeight=0 PerfScore 0.00
-G_M60318_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rdx, gword ptr [rbx]
; gcrRegs +[rdx]
mov edx, dword ptr [rdx+0x08]
@@ -230,7 +187,7 @@ G_M60318_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
; gcr arg pop 0
jmp G_M60318_IG05
;; size=22 bbWeight=0 PerfScore 0.00
-G_M60318_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M60318_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rdx, gword ptr [rbx]
; gcrRegs +[rdx]
mov edx, dword ptr [rdx+0x08]
@@ -243,7 +200,7 @@ G_M60318_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
; gcr arg pop 0
jmp G_M60318_IG06
;; size=22 bbWeight=0 PerfScore 0.00
-G_M60318_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M60318_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rdx, gword ptr [rbx]
; gcrRegs +[rdx]
mov edx, dword ptr [rdx+0x08]
@@ -256,9 +213,9 @@ G_M60318_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
; gcr arg pop 0
jmp G_M60318_IG07
...
+19 (+8.23%) : 277829.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiChar_Vector(ulong,ulong):ulong (FullOpts)
@@ -2,114 +2,52 @@
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
+; optimized using Unknown PGO
; rsp based frame
; fully interruptible
+; with Unknown PGO: edge weights are invalid, and fgCalledCount is 5
; No matching PGO data
; 0 inlinees with PGO data; 8 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 16,463.80) long -> rsi
-; V01 arg1 [V01,T00] ( 9,535.41) long -> rbx
-; V02 loc0 [V02,T04] ( 2, 1 ) long -> rdi
-; V03 loc1 [V03,T02] ( 8,144 ) int -> rbp
-; V04 loc2 [V04,T06] ( 3, 0 ) long -> rbp
+; V00 arg0 [V00,T00] ( 16,166.58) long -> rbx
+; V01 arg1 [V01,T01] ( 9,131.04) long -> rsi
+; V02 loc0 [V02,T05] ( 2, 2 ) long -> rdi
+; V03 loc1 [V03,T02] ( 8, 78.27) int -> rbp
+; V04 loc2 [V04,T04] ( 3, 3 ) long -> rbx
;* V05 loc3 [V05 ] ( 0, 0 ) long -> zero-ref
;* V06 loc4 [V06 ] ( 0, 0 ) long -> zero-ref
;* V07 loc5 [V07 ] ( 0, 0 ) long -> zero-ref
;* V08 loc6 [V08 ] ( 0, 0 ) long -> zero-ref
;* V09 loc7 [V09 ] ( 0, 0 ) long -> zero-ref
;* V10 loc8 [V10 ] ( 0, 0 ) long -> zero-ref
-; V11 loc9 [V11,T03] ( 3,144 ) int -> rcx
+; V11 loc9 [V11,T03] ( 3, 76.04) int -> r14
; V12 OutArgs [V12 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V13 tmp1 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp2 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V15 tmp3 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V16 tmp4 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V17 tmp5 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V18 tmp6 [V18,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V19 cse0 [V19,T05] ( 7, 0.02) ref -> rdx multi-def "CSE - conservative"
+;* V18 tmp6 [V18,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M42618_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 40
- mov rsi, rcx
- mov rbx, rdx
- ;; size=14 bbWeight=1 PerfScore 4.75
+ sub rsp, 32
+ mov rbx, rcx
+ mov rsi, rdx
+ ;; size=16 bbWeight=1 PerfScore 5.75
G_M42618_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdi, rsi
- test rbx, rbx
- jl SHORT G_M42618_IG10
+ mov rdi, rbx
+ test rsi, rsi
+ jge SHORT G_M42618_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M42618_IG03: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp rbx, 4
- jb SHORT G_M42618_IG06
- ;; size=6 bbWeight=0.01 PerfScore 0.01
-G_M42618_IG04: ; bbWeight=72, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov ebp, dword ptr [rsi]
- mov ecx, dword ptr [rsi+0x04]
- mov edx, ecx
- or edx, ebp
- test edx, 0xD1FFAB1E
- jne SHORT G_M42618_IG11
- ;; size=17 bbWeight=72 PerfScore 414.00
-G_M42618_IG05: ; bbWeight=158.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add rsi, 8
- add rbx, -4
- cmp rbx, 4
- jae SHORT G_M42618_IG04
- ;; size=14 bbWeight=158.40 PerfScore 277.20
-G_M42618_IG06: ; bbWeight=9.60, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- test bl, 2
- jne SHORT G_M42618_IG09
- ;; size=5 bbWeight=9.60 PerfScore 12.00
-G_M42618_IG07: ; bbWeight=47.60, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- test bl, 1
- je SHORT G_M42618_IG14
- ;; size=5 bbWeight=47.60 PerfScore 59.50
-G_M42618_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M42618_IG12
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M42618_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov ebp, dword ptr [rsi]
- test ebp, 0xD1FFAB1E
- jne SHORT G_M42618_IG17
- add rsi, 4
- jmp SHORT G_M42618_IG07
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M42618_IG10: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- mov rcx, rdx
- ; gcrRegs +[rcx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx]
- ; gcr arg pop 0
- jmp SHORT G_M42618_IG03
- ;; size=21 bbWeight=0.01 PerfScore 0.04
-G_M42618_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- test ebp, 0xD1FFAB1E
- jne SHORT G_M42618_IG17
- mov ebp, ecx
- add rsi, 4
- jmp SHORT G_M42618_IG17
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M42618_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp word ptr [rsi], 127
- ja SHORT G_M42618_IG14
- ;; size=6 bbWeight=0 PerfScore 0.00
-G_M42618_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add rsi, 2
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M42618_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rbp, rsi
- sub rbp, rdi
- test bpl, 1
- je SHORT G_M42618_IG15
+G_M42618_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
@@ -117,37 +55,111 @@ G_M42618_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=38 bbWeight=0 PerfScore 0.00
-G_M42618_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rax, rbp
+ ;; size=26 bbWeight=0.80 PerfScore 2.80
+G_M42618_IG04: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp rsi, 4
+ jb SHORT G_M42618_IG07
+ ;; size=6 bbWeight=0.80 PerfScore 1.00
+G_M42618_IG05: ; bbWeight=37.89, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov ebp, dword ptr [rbx]
+ mov r14d, dword ptr [rbx+0x04]
+ mov ecx, r14d
+ or ecx, ebp
+ test ecx, 0xD1FFAB1E
+ jne G_M42618_IG20
+ ;; size=23 bbWeight=37.89 PerfScore 217.89
+G_M42618_IG06: ; bbWeight=42.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ add rbx, 8
+ add rsi, -4
+ cmp rsi, 4
+ jae SHORT G_M42618_IG05
+ ;; size=14 bbWeight=42.11 PerfScore 73.68
+G_M42618_IG07: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ test sil, 2
+ jne SHORT G_M42618_IG11
+ ;; size=6 bbWeight=0.53 PerfScore 0.66
+G_M42618_IG08: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ test sil, 1
+ je SHORT G_M42618_IG15
+ ;; size=6 bbWeight=0.39 PerfScore 0.49
+G_M42618_IG09: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp word ptr [rbx], 127
+ ja SHORT G_M42618_IG15
+ ;; size=6 bbWeight=0.32 PerfScore 1.26
+G_M42618_IG10: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M42618_IG19
+ ;; size=2 bbWeight=0.25 PerfScore 0.51
+G_M42618_IG11: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov ebp, dword ptr [rbx]
+ test ebp, 0xD1FFAB1E
+ je SHORT G_M42618_IG22
+ ;; size=10 bbWeight=0.27 PerfScore 0.89
+G_M42618_IG12: ; bbWeight=0.61, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ test ebp, 0xD1FFAB1E
+ jne SHORT G_M42618_IG14
+ ;; size=8 bbWeight=0.61 PerfScore 0.76
+G_M42618_IG13: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ ;; size=26 bbWeight=0.48 PerfScore 1.69
+G_M42618_IG14: ; bbWeight=0.61, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ test ebp, 0xFF80
+ je SHORT G_M42618_IG19
+ ;; size=8 bbWeight=0.61 PerfScore 0.76
+G_M42618_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ sub rbx, rdi
+ test bl, 1
+ je SHORT G_M42618_IG17
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M42618_IG16: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ ;; size=26 bbWeight=0.80 PerfScore 2.80
+G_M42618_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rax, rbx
shr rax, 1
- ;; size=6 bbWeight=0 PerfScore 0.00
-G_M42618_IG16: ; bbWeight=0, epilog, nogc, extend
- add rsp, 40
+ ;; size=6 bbWeight=1 PerfScore 0.75
+G_M42618_IG18: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 32
pop rbx
pop rbp
pop rsi
pop rdi
+ pop r14
ret
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M42618_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=11 bbWeight=1 PerfScore 3.75
+G_M42618_IG19: ; bbWeight=0.61, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ add rbx, 2
+ jmp SHORT G_M42618_IG15
+ ;; size=6 bbWeight=0.61 PerfScore 1.36
+G_M42618_IG20: ; bbWeight=0.47, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
test ebp, 0xD1FFAB1E
- jne SHORT G_M42618_IG18
- mov rcx, 0xD1FFAB1E
- ; gcrRegs +[rcx]
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx]
- ; gcr arg pop 0
- ;; size=34 bbWeight=0 PerfScore 0.00
-G_M42618_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- test ebp, 0xFF80
- je SHORT G_M42618_IG13
- jmp SHORT G_M42618_IG14
- ;; size=10 bbWeight=0 PerfScore 0.00
+ jne SHORT G_M42618_IG12
...
+17 (+10.30%) : 277883.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:MergeWithGlobalListInOrder(System.Canon[]):this (FullOpts)
@@ -2,29 +2,35 @@
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
+; optimized using Unknown PGO
; rsp based frame
; fully interruptible
+; with Unknown PGO: edge weights are valid, and fgCalledCount is 112
; No matching PGO data
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 5, 29.84) ref -> rsi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 8, 3122.62) ref -> rbx class-hnd single-def <System.__Canon[]>
-; V02 loc0 [V02,T07] ( 3, 3.62) ref -> rdi class-hnd single-def <System.__Canon[]>
-; V03 loc1 [V03,T06] ( 4, 21.61) ref -> rdi class-hnd single-def <System.__Canon[]>
-; V04 loc2 [V04,T05] ( 5, 21.98) int -> rbp
-; V05 loc3 [V05,T02] ( 4, 3112.71) ref -> r14 class-hnd <System.__Canon>
-; V06 loc4 [V06,T03] ( 6, 3093.79) int -> r15
-;* V07 loc5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
-; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V09 tmp1 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V10 tmp2 [V10,T00] ( 3,18468 ) ref -> rcx "argument with side effect"
+; V00 this [V00,T08] ( 5, 4 ) ref -> rsi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V01 arg1 [V01,T04] ( 7, 553.71) ref -> rbx class-hnd single-def <System.__Canon[]>
+; V02 loc0 [V02,T09] ( 3, 2.80) ref -> rdi class-hnd single-def <System.__Canon[]>
+; V03 loc1 [V03,T07] ( 3, 31.92) ref -> rdi class-hnd single-def <System.__Canon[]>
+; V04 loc2 [V04,T05] ( 5, 132.17) int -> rbp
+; V05 loc3 [V05,T03] ( 4, 584.06) ref -> r15 class-hnd <System.__Canon>
+; V06 loc4 [V06,T01] ( 6,2273.92) int -> r13
+;* V07 loc5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
+; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V09 tmp1 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V10 tmp2 [V10,T00] ( 3,3101.78) ref -> rcx "argument with side effect"
+; V11 cse0 [V11,T02] ( 3, 628.97) int -> r12 "CSE - aggressive"
+; V12 cse1 [V12,T06] ( 3, 35.28) int -> r14 "CSE - aggressive"
;
; Lcl frame size = 40
G_M50755_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
push r14
+ push r13
+ push r12
push rdi
push rsi
push rbp
@@ -34,57 +40,37 @@ G_M50755_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rsi]
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=18 bbWeight=1 PerfScore 6.75
+ ;; size=22 bbWeight=1 PerfScore 8.75
G_M50755_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rsi+0x08]
; gcrRegs +[rdi]
test rdi, rdi
- jne SHORT G_M50755_IG05
+ je SHORT G_M50755_IG09
;; size=9 bbWeight=1 PerfScore 3.25
-G_M50755_IG03: ; bbWeight=0.80, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- lea rcx, bword ptr [rsi+0x08]
- ; byrRegs +[rcx]
- mov rdx, rbx
- ; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx rbx rsi]
- ; byrRegs -[rcx]
- nop
- ;; size=13 bbWeight=0.80 PerfScore 1.61
-G_M50755_IG04: ; bbWeight=0.80, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r14
- pop r15
- ret
- ;; size=13 bbWeight=0.80 PerfScore 3.42
-G_M50755_IG05: ; bbWeight=1.62, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx rsi rdi]
+G_M50755_IG03: ; bbWeight=0.80, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
xor ebp, ebp
- cmp dword ptr [rdi+0x08], 0
- jle SHORT G_M50755_IG11
- ;; size=8 bbWeight=1.62 PerfScore 6.91
-G_M50755_IG06: ; bbWeight=17.36, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ mov r14d, dword ptr [rdi+0x08]
+ test r14d, r14d
+ jle SHORT G_M50755_IG13
+ ;; size=11 bbWeight=0.80 PerfScore 2.80
+G_M50755_IG04: ; bbWeight=30.32, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov ecx, ebp
- mov r14, gword ptr [rdi+8*rcx+0x10]
- ; gcrRegs +[r14]
- test r14, r14
- je SHORT G_M50755_IG11
- ;; size=12 bbWeight=17.36 PerfScore 60.75
-G_M50755_IG07: ; bbWeight=15.79, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
- xor r15d, r15d
- cmp dword ptr [rbx+0x08], 0
- jle SHORT G_M50755_IG10
- ;; size=9 bbWeight=15.79 PerfScore 67.09
-G_M50755_IG08: ; bbWeight=3078, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
- mov ecx, r15d
+ mov r15, gword ptr [rdi+8*rcx+0x10]
+ ; gcrRegs +[r15]
+ test r15, r15
+ je SHORT G_M50755_IG13
+ ;; size=12 bbWeight=30.32 PerfScore 106.11
+G_M50755_IG05: ; bbWeight=27.28, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ xor r13d, r13d
+ mov r12d, dword ptr [rbx+0x08]
+ test r12d, r12d
+ jle SHORT G_M50755_IG12
+ ;; size=12 bbWeight=27.28 PerfScore 95.49
+G_M50755_IG06: ; bbWeight=516.96, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ mov ecx, r13d
mov rcx, gword ptr [rbx+8*rcx+0x10]
; gcrRegs +[rcx]
- mov rdx, r14
+ mov rdx, r15
; gcrRegs +[rdx]
mov rax, qword ptr [rcx]
mov rax, qword ptr [rax+0x48]
@@ -92,24 +78,18 @@ G_M50755_IG08: ; bbWeight=3078, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRe
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- je SHORT G_M50755_IG13
- ;; size=25 bbWeight=3078 PerfScore 33088.50
-G_M50755_IG09: ; bbWeight=0, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
- movsxd rdx, r15d
- mov rcx, rbx
- ; gcrRegs +[rcx]
- mov r8, r14
- ; gcrRegs +[r8]
- call CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[rcx r8 r14]
- ; gcr arg pop 0
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M50755_IG10: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- inc ebp
- cmp ebp, dword ptr [rdi+0x08]
- jl SHORT G_M50755_IG06
- ;; size=7 bbWeight=1 PerfScore 4.25
-G_M50755_IG11: ; bbWeight=26.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ jne SHORT G_M50755_IG11
+ ;; size=25 bbWeight=516.96 PerfScore 5557.36
+G_M50755_IG07: ; bbWeight=574.40, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ inc r13d
+ cmp r12d, r13d
+ jg SHORT G_M50755_IG06
+ ;; size=8 bbWeight=574.40 PerfScore 861.61
+G_M50755_IG08: ; bbWeight=1.80, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r15]
+ jmp SHORT G_M50755_IG12
+ ;; size=2 bbWeight=1.80 PerfScore 3.59
+G_M50755_IG09: ; bbWeight=0.20, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
lea rcx, bword ptr [rsi+0x08]
; byrRegs +[rcx]
@@ -119,26 +99,60 @@ G_M50755_IG11: ; bbWeight=26.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcrRegs -[rdx rbx rsi]
; byrRegs -[rcx]
nop
- ;; size=13 bbWeight=26.04 PerfScore 52.07
-G_M50755_IG12: ; bbWeight=26.04, epilog, nogc, extend
+ ;; size=13 bbWeight=0.20 PerfScore 0.40
+G_M50755_IG10: ; bbWeight=0.20, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
+ pop r12
+ pop r13
pop r14
pop r15
ret
- ;; size=13 bbWeight=26.04 PerfScore 110.65
-G_M50755_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx rsi rdi r14]
- inc r15d
- cmp r15d, dword ptr [rbx+0x08]
- jl SHORT G_M50755_IG08
- jmp SHORT G_M50755_IG10
- ;; size=11 bbWeight=0 PerfScore 0.00
+ ;; size=17 bbWeight=0.20 PerfScore 1.05
+G_M50755_IG11: ; bbWeight=6.46, gcVars=0000000000000000 {}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rbx rsi rdi r15]
+ movsxd rdx, r13d
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ mov r8, r15
+ ; gcrRegs +[r8]
+ call CORINFO_HELP_ARRADDR_ST
+ ; gcrRegs -[rcx r8 r15]
+ ; gcr arg pop 0
+ ;; size=14 bbWeight=6.46 PerfScore 11.31
+G_M50755_IG12: ; bbWeight=33.68, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ inc ebp
+ cmp r14d, ebp
+ jg SHORT G_M50755_IG04
+ ;; size=7 bbWeight=33.68 PerfScore 50.53
+G_M50755_IG13: ; bbWeight=0.80, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdi]
+ lea rcx, bword ptr [rsi+0x08]
+ ; byrRegs +[rcx]
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rdx rbx rsi]
+ ; byrRegs -[rcx]
+ nop
+ ;; size=13 bbWeight=0.80 PerfScore 1.60
+G_M50755_IG14: ; bbWeight=0.80, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ ret
+ ;; size=17 bbWeight=0.80 PerfScore 4.20
-; Total bytes of code 165, prolog size 18, PerfScore 33405.24, instruction count 65, allocated bytes for code 165 (MethodHash=8aec39bc) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (FullOpts)
+; Total bytes of code 182, prolog size 22, PerfScore 6708.04, instruction count 73, allocated bytes for code 182 (MethodHash=8aec39bc) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -146,15 +160,17 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0C
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x10
+ CountOfUnwindCodes: 9
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)
...
libraries_tests.run.windows.x64.Release.mch
-16 (-6.35%) : 626490.dasm - Microsoft.CodeAnalysis.CSharp.BoundUnconvertedObjectCreationExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray
1[System.Nullable1[System.ValueTuple
2[System.String,Microsoft.CodeAnalysis.Location]]],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte):this (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; rsp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1421
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1421
; 2 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -66,7 +66,7 @@ G_M15999_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r15, gword ptr [rsp+0x80]
; gcrRegs +[r15]
;; size=47 bbWeight=1 PerfScore 11.00
-G_M15999_IG02: ; bbWeight=1, gcrefRegs=C0EC {rdx rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref
+G_M15999_IG02: ; bbWeight=1, gcrefRegs=C0EC {rdx rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx]
mov rax, rdx
; gcrRegs +[rax]
@@ -75,16 +75,16 @@ G_M15999_IG02: ; bbWeight=1, gcrefRegs=C0EC {rdx rbx rbp rsi rdi r14 r15}
mov rcx, rsi
; gcrRegs +[rcx]
test rcx, rcx
- je G_M15999_IG10
- ;; size=29 bbWeight=1 PerfScore 4.75
-G_M15999_IG03: ; bbWeight=0.98, gcrefRegs=C0EB {rax rcx rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref
+ je SHORT G_M15999_IG06
+ ;; size=25 bbWeight=1 PerfScore 4.75
+G_M15999_IG03: ; bbWeight=0.98, gcrefRegs=C0EB {rax rcx rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx]
xor edx, edx
mov ecx, dword ptr [rcx+0x08]
; gcrRegs -[rcx]
test ecx, ecx
- jle G_M15999_IG10
- ;; size=13 bbWeight=0.98 PerfScore 3.44
+ jle SHORT G_M15999_IG06
+ ;; size=9 bbWeight=0.98 PerfScore 3.44
G_M15999_IG04: ; bbWeight=0.62, gcrefRegs=C0E9 {rax rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref
mov r8d, dword ptr [rsi+0x08]
;; size=4 bbWeight=0.62 PerfScore 1.23
@@ -93,17 +93,21 @@ G_M15999_IG05: ; bbWeight=1.64, gcrefRegs=C0E9 {rax rbx rbp rsi rdi r14 r
mov r8, gword ptr [rsi+8*r8+0x10]
; gcrRegs +[r8]
test byte ptr [r8+0x10], 1
- jne G_M15999_IG14
+ jne SHORT G_M15999_IG11
inc edx
cmp edx, ecx
jl SHORT G_M15999_IG05
- ;; size=25 bbWeight=1.64 PerfScore 12.74
-G_M15999_IG06: ; bbWeight=0.98, gcrefRegs=C0E9 {rax rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=21 bbWeight=1.64 PerfScore 12.74
+G_M15999_IG06: ; bbWeight=0.98, gcrefRegs=C0E9 {rax rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r8]
- jmp SHORT G_M15999_IG10
- ;; size=2 bbWeight=0.98 PerfScore 1.96
-G_M15999_IG07: ; bbWeight=1.00, gcrefRegs=C0EC {rdx rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax] +[rdx]
+ xor r13d, r13d
+ ;; size=3 bbWeight=0.98 PerfScore 0.25
+G_M15999_IG07: ; bbWeight=1, gcrefRegs=C0E9 {rax rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref
+ mov rdx, rax
+ ; gcrRegs +[rdx]
+ ;; size=3 bbWeight=1 PerfScore 0.25
+G_M15999_IG08: ; bbWeight=1.00, gcrefRegs=C0EC {rdx rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
mov byte ptr [rbx+0x12], 162
lea rcx, bword ptr [rbx+0x08]
; byrRegs +[rcx]
@@ -113,7 +117,7 @@ G_M15999_IG07: ; bbWeight=1.00, gcrefRegs=C0EC {rdx rbx rbp rsi rdi r14 r
test r13b, r13b
jne SHORT G_M15999_IG13
;; size=18 bbWeight=1.00 PerfScore 3.75
-G_M15999_IG08: ; bbWeight=1.00, gcrefRegs=C0E8 {rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref
+G_M15999_IG09: ; bbWeight=1.00, gcrefRegs=C0E8 {rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref
xor rcx, rcx
; gcrRegs +[rcx]
mov gword ptr [rbx+0x18], rcx
@@ -155,7 +159,7 @@ G_M15999_IG08: ; bbWeight=1.00, gcrefRegs=C0E8 {rbx rbp rsi rdi r14 r15},
; byrRegs -[rcx]
nop
;; size=67 bbWeight=1.00 PerfScore 10.25
-G_M15999_IG09: ; bbWeight=1.00, epilog, nogc, extend
+G_M15999_IG10: ; bbWeight=1.00, epilog, nogc, extend
add rsp, 32
pop rbx
pop rbp
@@ -166,32 +170,23 @@ G_M15999_IG09: ; bbWeight=1.00, epilog, nogc, extend
pop r15
ret
;; size=15 bbWeight=1.00 PerfScore 4.75
-G_M15999_IG10: ; bbWeight=0.98, gcVars=0000000000000000 {}, gcrefRegs=C0E9 {rax rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M15999_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=C0E9 {rax rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rax rbx rbp rsi rdi r14-r15]
- xor r13d, r13d
- ;; size=3 bbWeight=0.98 PerfScore 0.25
-G_M15999_IG11: ; bbWeight=1, gcrefRegs=C0E9 {rax rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
- mov rdx, rax
- ; gcrRegs +[rdx]
- jmp SHORT G_M15999_IG07
- ;; size=5 bbWeight=1 PerfScore 2.25
-G_M15999_IG12: ; bbWeight=0, gcrefRegs=C0EC {rdx rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
mov r13d, 1
jmp SHORT G_M15999_IG07
;; size=8 bbWeight=0 PerfScore 0.00
+G_M15999_IG12: ; bbWeight=0, gcrefRegs=C0EC {rdx rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax] +[rdx]
+ mov r13d, 1
+ jmp SHORT G_M15999_IG08
+ ;; size=8 bbWeight=0 PerfScore 0.00
G_M15999_IG13: ; bbWeight=0, gcrefRegs=C0E8 {rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx]
mov word ptr [rbx+0x10], 1
- jmp SHORT G_M15999_IG08
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M15999_IG14: ; bbWeight=0, gcrefRegs=C0E9 {rax rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rax]
- mov r13d, 1
- jmp SHORT G_M15999_IG11
+ jmp SHORT G_M15999_IG09
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 252, prolog size 47, PerfScore 56.37, instruction count 74, allocated bytes for code 252 (MethodHash=999cc180) for method Microsoft.CodeAnalysis.CSharp.BoundUnconvertedObjectCreationExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[System.ValueTuple`2[System.String,Microsoft.CodeAnalysis.Location]]],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte):this (Tier1)
+; Total bytes of code 236, prolog size 47, PerfScore 52.41, instruction count 72, allocated bytes for code 236 (MethodHash=999cc180) for method Microsoft.CodeAnalysis.CSharp.BoundUnconvertedObjectCreationExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[System.ValueTuple`2[System.String,Microsoft.CodeAnalysis.Location]]],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte):this (Tier1)
; ============================================================
Unwind Info:
-33 (-5.03%) : 166205.dasm - Microsoft.CodeAnalysis.PEModule+d__85:MoveNext():ubyte:this (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; rbp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 91344
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 91344
; 9 inlinees with PGO data; 32 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
@@ -15,7 +15,7 @@
; V03 loc2 [V03,T09] ( 6, 5.63) ref -> rbx class-hnd exact single-def <Microsoft.CodeAnalysis.PEModule>
;* V04 loc3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Reflection.Metadata.TypeDefinitionHandleCollection>
;* V05 loc4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Reflection.Metadata.TypeDefinitionHandle>
-; V06 loc5 [V06 ] ( 12, 10.70) struct (16) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.Metadata.TypeDefinition>
+; V06 loc5 [V06 ] ( 12, 10.70) struct (16) [rbp-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.Metadata.TypeDefinition>
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.PEModule+TypeDefToNamespace>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Reflection.Metadata.NamespaceDefinitionHandle>
@@ -24,11 +24,11 @@
;* V12 tmp5 [V12 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V13 tmp6 [V13 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V14 tmp7 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinitionHandle>
-; V15 tmp8 [V15,T04] ( 4, 9.25) ref -> r14 class-hnd exact "Inlining Arg" <System.Reflection.Metadata.MetadataReader>
+; V15 tmp8 [V15,T04] ( 4, 9.25) ref -> rdi class-hnd exact "Inlining Arg" <System.Reflection.Metadata.MetadataReader>
;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinition>
; V17 tmp10 [V17,T12] ( 3, 3.08) int -> rax "Inline return value spill temp"
;* V18 tmp11 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.TypeDefinitionHandle>
-; V19 tmp12 [V19,T15] ( 3, 3.07) int -> r14 "Inline return value spill temp"
+; V19 tmp12 [V19,T15] ( 3, 3.07) int -> rdi "Inline return value spill temp"
; V20 tmp13 [V20,T02] ( 4, 12.29) byref -> rax "impAppendStmt"
;* V21 tmp14 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Reflection.Metadata.TypeDefinitionHandle>
;* V22 tmp15 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -46,11 +46,11 @@
;* V34 tmp27 [V34 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinitionHandle>
;* V35 tmp28 [V35 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.TypeDefinitionHandle>
; V36 tmp29 [V36,T23] ( 2, 2.01) int -> rdx "Inline stloc first use temp"
-; V37 tmp30 [V37,T21] ( 3, 2.01) int -> rdx "Inline return value spill temp"
+; V37 tmp30 [V37,T21] ( 3, 2.01) int -> rax "Inline return value spill temp"
;* V38 tmp31 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V39 tmp32 [V39,T07] ( 5, 6.02) byref -> r14 "Inlining Arg"
+; V39 tmp32 [V39,T07] ( 5, 6.02) byref -> r8 "Inlining Arg"
; V40 tmp33 [V40,T08] ( 5, 6.02) int -> rdx "Inlining Arg"
-; V41 tmp34 [V41,T19] ( 3, 2.35) int -> rbx "Inline stloc first use temp"
+; V41 tmp34 [V41,T19] ( 3, 2.35) int -> rax "Inline stloc first use temp"
;* V42 tmp35 [V42 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp"
;* V43 tmp36 [V43 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp"
;* V44 tmp37 [V44 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
@@ -61,67 +61,188 @@
;* V49 tmp42 [V49 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V50 tmp43 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinitionHandle>
;* V51 tmp44 [V51,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V52 tmp45 [V52,T01] ( 5, 12.36) byref -> rsi "Inlining Arg"
+; V52 tmp45 [V52,T01] ( 5, 12.36) byref -> rax "Inlining Arg"
; V53 tmp46 [V53,T30] ( 2, 0.00) int -> rax "field V04._lastRowId (fldOffset=0x0)" P-INDEP
;* V54 tmp47 [V54 ] ( 0, 0 ) int -> zero-ref "field V05._rowId (fldOffset=0x0)" P-INDEP
-; V55 tmp48 [V55 ] ( 6, 4.08) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V06._reader (fldOffset=0x0)" P-DEP
-; V56 tmp49 [V56 ] ( 7, 6.62) int -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V06._treatmentAndRowId (fldOffset=0x8)" P-DEP
-; V57 tmp50 [V57,T24] ( 2, 2.01) int -> rdi "field V08.TypeDef (fldOffset=0x0)" P-INDEP
-; V58 tmp51 [V58,T25] ( 2, 2.01) int -> rdx "field V08.NamespaceHandle (fldOffset=0x4)" P-INDEP
+; V55 tmp48 [V55 ] ( 6, 4.08) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V06._reader (fldOffset=0x0)" P-DEP
+; V56 tmp49 [V56 ] ( 7, 6.62) int -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V06._treatmentAndRowId (fldOffset=0x8)" P-DEP
+; V57 tmp50 [V57,T24] ( 2, 2.01) int -> rsi "field V08.TypeDef (fldOffset=0x0)" P-INDEP
+; V58 tmp51 [V58,T25] ( 2, 2.01) int -> rax "field V08.NamespaceHandle (fldOffset=0x4)" P-INDEP
;* V59 tmp52 [V59 ] ( 0, 0 ) int -> zero-ref "field V09._value (fldOffset=0x0)" P-INDEP
; V60 tmp53 [V60,T31] ( 2, 0.00) int -> rax single-def "field V10._lastRowId (fldOffset=0x0)" P-INDEP
;* V61 tmp54 [V61,T32] ( 0, 0 ) int -> zero-ref single-def "field V10._currentRowId (fldOffset=0x4)" P-INDEP
-; V62 tmp55 [V62,T11] ( 4, 4.09) int -> rdi "field V14._rowId (fldOffset=0x0)" P-INDEP
-; V63 tmp56 [V63,T13] ( 2, 3.08) ref -> r14 "field V16._reader (fldOffset=0x0)" P-INDEP
+; V62 tmp55 [V62,T11] ( 4, 4.09) int -> rsi "field V14._rowId (fldOffset=0x0)" P-INDEP
+; V63 tmp56 [V63,T13] ( 2, 3.08) ref -> rdi "field V16._reader (fldOffset=0x0)" P-INDEP
; V64 tmp57 [V64,T14] ( 2, 3.08) int -> rax "field V16._treatmentAndRowId (fldOffset=0x8)" P-INDEP
;* V65 tmp58 [V65 ] ( 0, 0 ) int -> zero-ref "field V18._rowId (fldOffset=0x0)" P-INDEP
;* V66 tmp59 [V66 ] ( 0, 0 ) int -> zero-ref "field V21._rowId (fldOffset=0x0)" P-INDEP
; V67 tmp60 [V67,T17] ( 2, 3.07) int -> rdx "field V23._rowId (fldOffset=0x0)" P-INDEP
;* V68 tmp61 [V68 ] ( 0, 0 ) int -> zero-ref "field V24._rowId (fldOffset=0x0)" P-INDEP
-; V69 tmp62 [V69,T22] ( 3, 2.01) int -> rdx "field V30._value (fldOffset=0x0)" P-INDEP
+; V69 tmp62 [V69,T22] ( 3, 2.01) int -> rax "field V30._value (fldOffset=0x0)" P-INDEP
;* V70 tmp63 [V70 ] ( 0, 0 ) int -> zero-ref "field V32._rowId (fldOffset=0x0)" P-INDEP
; V71 tmp64 [V71,T26] ( 2, 2.01) int -> rdx "field V34._rowId (fldOffset=0x0)" P-INDEP
;* V72 tmp65 [V72 ] ( 0, 0 ) int -> zero-ref "field V35._rowId (fldOffset=0x0)" P-INDEP
-; V73 tmp66 [V73,T27] ( 2, 2.01) int -> rdx "field V46._value (fldOffset=0x0)" P-INDEP
+; V73 tmp66 [V73,T27] ( 2, 2.01) int -> rax "field V46._value (fldOffset=0x0)" P-INDEP
;* V74 tmp67 [V74 ] ( 0, 0 ) int -> zero-ref "field V48._rowId (fldOffset=0x0)" P-INDEP
; V75 tmp68 [V75,T34] ( 2, 0 ) int -> rax "field V50._rowId (fldOffset=0x0)" P-INDEP
-; V76 PSPSym [V76,T29] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
-; V77 cse0 [V77,T10] ( 3, 4.63) int -> rax "CSE - aggressive"
+; V76 PSPSym [V76,T29] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
+; V77 cse0 [V77,T10] ( 3, 4.63) int -> rdx "CSE - aggressive"
;
-; Lcl frame size = 64
+; Lcl frame size = 56
G_M11515_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r14
push rdi
push rsi
push rbx
- sub rsp, 64
- lea rbp, [rsp+0x60]
+ sub rsp, 56
+ lea rbp, [rsp+0x50]
xor eax, eax
- mov qword ptr [rbp-0x30], rax
mov qword ptr [rbp-0x28], rax
- mov qword ptr [rbp-0x40], rsp
+ mov qword ptr [rbp-0x20], rax
+ mov qword ptr [rbp-0x30], rsp
mov gword ptr [rbp+0x10], rcx
; GC ptr vars +{V00}
- ;; size=33 bbWeight=1 PerfScore 10.00
-G_M11515_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=31 bbWeight=1 PerfScore 9.00
+G_M11515_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx]
mov eax, dword ptr [rcx+0x10]
mov rbx, gword ptr [rcx+0x08]
; gcrRegs +[rbx]
test eax, eax
- je SHORT G_M11515_IG05
- ;; size=11 bbWeight=1 PerfScore 5.25
+ je G_M11515_IG14
+ ;; size=15 bbWeight=1 PerfScore 5.25
G_M11515_IG03: ; bbWeight=1.00, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
cmp eax, 1
- jne G_M11515_IG29
+ jne G_M11515_IG19
;; size=9 bbWeight=1.00 PerfScore 1.25
-G_M11515_IG04: ; bbWeight=1.00, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
+G_M11515_IG04: ; bbWeight=1.00, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
mov dword ptr [rcx+0x10], -3
- jmp SHORT G_M11515_IG07
- ;; size=9 bbWeight=1.00 PerfScore 3.01
-G_M11515_IG05: ; bbWeight=0.00, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=7 bbWeight=1.00 PerfScore 1.00
+G_M11515_IG05: ; bbWeight=1.54, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
+ lea rax, bword ptr [rcx+0x24]
+ ; byrRegs +[rax]
+ mov edx, dword ptr [rax+0x04]
+ cmp edx, dword ptr [rax]
+ jge G_M11515_IG15
+ inc edx
+ mov dword ptr [rax+0x04], edx
+ mov esi, dword ptr [rcx+0x28]
+ and esi, 0xD1FFAB1E
+ cmp gword ptr [rbx+0x18], 0
+ je G_M11515_IG16
+ ;; size=40 bbWeight=1.54 PerfScore 21.62
+G_M11515_IG06: ; bbWeight=1.54, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx]
+ ; byrRegs -[rax]
+ cmp byte ptr [rbx+0x6C], 0
+ jne G_M11515_IG22
+ mov rdi, gword ptr [rbx+0x18]
+ ; gcrRegs +[rdi]
+ cmp dword ptr [rdi+0x50], 0
+ jne G_M11515_IG20
+ mov eax, esi
+ ;; size=26 bbWeight=1.54 PerfScore 15.81
+G_M11515_IG07: ; bbWeight=1.54, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+ mov gword ptr [rbp-0x28], rdi
+ mov dword ptr [rbp-0x20], eax
+ mov rcx, gword ptr [rbp+0x10]
+ ; gcrRegs +[rcx]
+ cmp byte ptr [rcx+0x18], 0
+ je SHORT G_M11515_IG10
+ ;; size=17 bbWeight=1.54 PerfScore 10.80
+G_M11515_IG08: ; bbWeight=1.54, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdi]
+ mov eax, dword ptr [rbp-0x20]
+ shr eax, 24
+ movzx rax, al
+ test eax, eax
+ jne G_M11515_IG21
+ mov rax, gword ptr [rbp-0x28]
+ ; gcrRegs +[rax]
+ add rax, 280
+ ; gcrRegs -[rax]
+ ; byrRegs +[rax]
+ mov edx, dword ptr [rbp-0x20]
+ and edx, 0xD1FFAB1E
+ dec edx
+ imul edx, dword ptr [rax+0x20]
+ lea r8, bword ptr [rax+0x28]
+ ; byrRegs +[r8]
+ add edx, dword ptr [rax+0x08]
+ mov eax, edx
+ ; byrRegs -[rax]
+ add rax, 4
+ movsxd r10, dword ptr [r8+0x08]
+ cmp rax, r10
+ ja G_M11515_IG23
+ mov rax, qword ptr [r8]
+ movsxd rdx, edx
+ mov edi, dword ptr [rax+rdx]
+ ;; size=77 bbWeight=1.54 PerfScore 37.25
+G_M11515_IG09: ; bbWeight=1.54, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r8]
+ test dil, 6
+ jne G_M11515_IG05
+ ;; size=10 bbWeight=1.54 PerfScore 1.92
+G_M11515_IG10: ; bbWeight=1.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx]
+ mov eax, dword ptr [rbp-0x20]
+ shr eax, 24
+ movzx rax, al
+ test eax, eax
+ jne G_M11515_IG25
+ mov rax, gword ptr [rbp-0x28]
+ ; gcrRegs +[rax]
+ add rax, 280
+ ; gcrRegs -[rax]
+ ; byrRegs +[rax]
+ mov edx, dword ptr [rbp-0x20]
+ and edx, 0xD1FFAB1E
+ dec edx
+ imul edx, dword ptr [rax+0x20]
+ lea r8, bword ptr [rax+0x28]
+ ; byrRegs +[r8]
+ add edx, dword ptr [rax+0x10]
+ cmp byte ptr [rax+0x07], 0
+ jne SHORT G_M11515_IG13
+ ;; size=55 bbWeight=1.00 PerfScore 18.30
+G_M11515_IG11: ; bbWeight=0.78, gcrefRegs=0002 {rcx}, byrefRegs=0100 {r8}, byref
+ ; byrRegs -[rax]
+ mov eax, edx
+ add rax, 4
+ movsxd r10, dword ptr [r8+0x08]
+ cmp rax, r10
+ ja G_M11515_IG23
+ mov rax, qword ptr [r8]
+ movsxd rdx, edx
+ mov eax, dword ptr [rax+rdx]
+ test eax, 0xD1FFAB1E
+ jne G_M11515_IG24
+ ;; size=39 bbWeight=0.78 PerfScore 8.83
+G_M11515_IG12: ; bbWeight=1.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r8]
+ mov dword ptr [rcx+0x1C], esi
+ mov dword ptr [rcx+0x20], eax
+ mov dword ptr [rcx+0x10], 1
+ mov eax, 1
+ jmp G_M11515_IG26
+ ;; size=23 bbWeight=1.00 PerfScore 5.26
+G_M11515_IG13: ; bbWeight=0.22, gcrefRegs=0002 {rcx}, byrefRegs=0100 {r8}, byref, isz
+ ; byrRegs +[r8]
+ mov eax, edx
+ add rax, 2
+ movsxd r10, dword ptr [r8+0x08]
+ cmp rax, r10
...
-13 (-3.99%) : 632219.dasm - Microsoft.CodeAnalysis.CSharp.BoundCollectionElementInitializer:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,System.Collections.Immutable.ImmutableArray
1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; rsp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 225
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 225
; 3 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -73,24 +73,24 @@ G_M13084_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rsi, bword ptr [rsp+0xA8]
; byrRegs +[rsi]
;; size=41 bbWeight=1 PerfScore 11.00
-G_M13084_IG02: ; bbWeight=1, gcrefRegs=C02C {rdx rbx rbp r14 r15}, byrefRegs=0040 {rsi}, byref
+G_M13084_IG02: ; bbWeight=1, gcrefRegs=C02C {rdx rbx rbp r14 r15}, byrefRegs=0040 {rsi}, byref, isz
; gcrRegs +[rdx]
mov r13, gword ptr [rsp+0xC0]
; gcrRegs +[r13]
cmp byte ptr [rsp+0xC8], 0
- jne G_M13084_IG13
+ jne G_M13084_IG12
mov rcx, rbp
; gcrRegs +[rcx]
test rcx, rcx
- je G_M13084_IG11
- ;; size=34 bbWeight=1 PerfScore 5.50
-G_M13084_IG03: ; bbWeight=0.98, gcrefRegs=E02E {rcx rdx rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref
+ je SHORT G_M13084_IG06
+ ;; size=30 bbWeight=1 PerfScore 5.50
+G_M13084_IG03: ; bbWeight=0.98, gcrefRegs=E02E {rcx rdx rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref, isz
xor eax, eax
mov ecx, dword ptr [rcx+0x08]
; gcrRegs -[rcx]
test ecx, ecx
- jle G_M13084_IG11
- ;; size=13 bbWeight=0.98 PerfScore 3.44
+ jle SHORT G_M13084_IG06
+ ;; size=9 bbWeight=0.98 PerfScore 3.44
G_M13084_IG04: ; bbWeight=0.62, gcrefRegs=E02C {rdx rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref
mov r8d, dword ptr [rbp+0x08]
;; size=4 bbWeight=0.62 PerfScore 1.23
@@ -99,18 +99,20 @@ G_M13084_IG05: ; bbWeight=1.64, gcrefRegs=E02C {rdx rbx rbp r13 r14 r15},
mov r8, gword ptr [rbp+8*r8+0x10]
; gcrRegs +[r8]
test byte ptr [r8+0x10], 1
- jne G_M13084_IG13
+ jne G_M13084_IG12
inc eax
cmp eax, ecx
jl SHORT G_M13084_IG05
;; size=25 bbWeight=1.64 PerfScore 12.74
-G_M13084_IG06: ; bbWeight=0.98, gcrefRegs=E02C {rdx rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref
+G_M13084_IG06: ; bbWeight=1, gcrefRegs=E02C {rdx rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[r8]
- jmp G_M13084_IG11
- ;; size=5 bbWeight=0.98 PerfScore 1.96
-G_M13084_IG07: ; bbWeight=0.30, gcrefRegs=E02C {rdx rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref
- xor r12d, r12d
- ;; size=3 bbWeight=0.30 PerfScore 0.08
+ test r15, r15
+ je G_M13084_IG11
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M13084_IG07: ; bbWeight=0.70, gcrefRegs=E02C {rdx rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref
+ movsx r12, word ptr [r15+0x10]
+ and r12d, 1
+ ;; size=9 bbWeight=0.70 PerfScore 2.97
G_M13084_IG08: ; bbWeight=1, gcrefRegs=E02C {rdx rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref
mov byte ptr [rbx+0x12], 176
lea rcx, bword ptr [rbx+0x08]
@@ -119,7 +121,7 @@ G_M13084_IG08: ; bbWeight=1, gcrefRegs=E02C {rdx rbx rbp r13 r14 r15}, by
; gcrRegs -[rdx]
; byrRegs -[rcx]
test r12b, r12b
- jne G_M13084_IG14
+ jne G_M13084_IG13
;; size=22 bbWeight=1 PerfScore 3.75
G_M13084_IG09: ; bbWeight=1, gcrefRegs=E028 {rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref
lea rcx, bword ptr [rbx+0x18]
@@ -181,28 +183,23 @@ G_M13084_IG10: ; bbWeight=1, epilog, nogc, extend
pop r15
ret
;; size=17 bbWeight=1 PerfScore 5.25
-G_M13084_IG11: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=E02C {rdx rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, gcvars, byref
+G_M13084_IG11: ; bbWeight=0.30, gcVars=0000000000000000 {}, gcrefRegs=E02C {rdx rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, gcvars, byref
; gcrRegs +[rdx rbp r13-r15]
; byrRegs -[rdi]
- test r15, r15
- je G_M13084_IG07
- ;; size=9 bbWeight=1 PerfScore 1.25
-G_M13084_IG12: ; bbWeight=0.70, gcrefRegs=E02C {rdx rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref
- movsx r12, word ptr [r15+0x10]
- and r12d, 1
+ xor r12d, r12d
jmp G_M13084_IG08
- ;; size=14 bbWeight=0.70 PerfScore 4.37
-G_M13084_IG13: ; bbWeight=0, gcrefRegs=E02C {rdx rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref
+ ;; size=8 bbWeight=0.30 PerfScore 0.68
+G_M13084_IG12: ; bbWeight=0, gcrefRegs=E02C {rdx rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref
mov r12d, 1
jmp G_M13084_IG08
;; size=11 bbWeight=0 PerfScore 0.00
-G_M13084_IG14: ; bbWeight=0, gcrefRegs=E028 {rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref
+G_M13084_IG13: ; bbWeight=0, gcrefRegs=E028 {rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rdx]
mov word ptr [rbx+0x10], 1
jmp G_M13084_IG09
;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 326, prolog size 41, PerfScore 69.57, instruction count 83, allocated bytes for code 326 (MethodHash=d068cce3) for method Microsoft.CodeAnalysis.CSharp.BoundCollectionElementInitializer:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier1)
+; Total bytes of code 313, prolog size 41, PerfScore 66.81, instruction count 82, allocated bytes for code 313 (MethodHash=d068cce3) for method Microsoft.CodeAnalysis.CSharp.BoundCollectionElementInitializer:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier1)
; ============================================================
Unwind Info:
+20 (+3.95%) : 618416.dasm - Microsoft.CodeAnalysis.PEModule:GetConstantFieldValue(System.Reflection.Metadata.FieldDefinitionHandle):Microsoft.CodeAnalysis.ConstantValue:this (Tier1)
@@ -86,19 +86,19 @@ G_M34048_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcrRegs +[rbx]
mov esi, edx
;; size=30 bbWeight=1 PerfScore 10.25
-G_M34048_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M34048_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp gword ptr [rbx+0x18], 0
- je SHORT G_M34048_IG06
- ;; size=7 bbWeight=1 PerfScore 4.00
-G_M34048_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je G_M34048_IG22
+ ;; size=11 bbWeight=1 PerfScore 4.00
+G_M34048_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp byte ptr [rbx+0x6C], 0
- jne SHORT G_M34048_IG05
+ jne G_M34048_IG21
mov rdi, gword ptr [rbx+0x18]
; gcrRegs +[rdi]
cmp dword ptr [rdi+0x50], 0
- jne SHORT G_M34048_IG07
- ;; size=16 bbWeight=1 PerfScore 10.00
-G_M34048_IG04: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+ jne G_M34048_IG23
+ ;; size=24 bbWeight=1 PerfScore 10.00
+G_M34048_IG04: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
add rdi, 648
; gcrRegs -[rdi]
; byrRegs +[rdi]
@@ -117,80 +117,16 @@ G_M34048_IG04: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {},
mov r8d, dword ptr [rbp-0x40]
and r8d, 0xD1FFAB1E
cmp eax, 4
- jne SHORT G_M34048_IG08
+ jne G_M34048_IG24
shl r8d, 2
- jmp SHORT G_M34048_IG12
- ;; size=75 bbWeight=1 PerfScore 17.00
-G_M34048_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- ; byrRegs -[rdi r14]
- mov rax, 0xD1FFAB1E ; code for Microsoft.CodeAnalysis.PEModule:ThrowMetadataDisposed()
- call [rax]Microsoft.CodeAnalysis.PEModule:ThrowMetadataDisposed()
- ; gcr arg pop 0
- int3
- ;; size=13 bbWeight=0 PerfScore 0.00
-G_M34048_IG06: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx]
- mov rcx, rbx
- ; gcrRegs +[rcx]
- mov rax, 0xD1FFAB1E ; code for <unknown method>
- call [rax]<unknown method>
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- jmp SHORT G_M34048_IG03
- ;; size=17 bbWeight=0 PerfScore 0.00
-G_M34048_IG07: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rdi]
- mov rcx, rdi
- ; gcrRegs +[rcx]
- mov edx, esi
- mov rax, 0xD1FFAB1E ; code for <unknown method>
- call [rax]<unknown method>
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- mov esi, eax
- jmp SHORT G_M34048_IG04
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M34048_IG08: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=4080 {rdi r14}, byref, isz
- ; gcrRegs -[rdi]
- ; byrRegs +[rdi r14]
- cmp eax, 8
- jne SHORT G_M34048_IG11
- shl r8d, 2
- or r8d, 1
- jmp SHORT G_M34048_IG12
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M34048_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- ; byrRegs -[rdi r14]
- mov rax, 0xD1FFAB1E ; code for System.Reflection.Throw:OutOfBounds()
- call [rax]System.Reflection.Throw:OutOfBounds()
- ; gcr arg pop 0
- int3
- ;; size=13 bbWeight=0 PerfScore 0.00
-G_M34048_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rax, 0xD1FFAB1E ; const ptr
- mov rax, gword ptr [rax]
- ; gcrRegs +[rax]
- jmp G_M34048_IG25
- ;; size=18 bbWeight=0 PerfScore 0.00
-G_M34048_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=4080 {rdi r14}, byref
- ; gcrRegs -[rax] +[rbx]
- ; byrRegs +[rdi r14]
- xor ecx, ecx
- lea edx, [4*r8]
- or edx, 2
- cmp eax, 23
- mov r8d, edx
- cmovne r8d, ecx
- ;; size=23 bbWeight=0 PerfScore 0.00
-G_M34048_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=4080 {rdi r14}, byref
+ ;; size=77 bbWeight=1 PerfScore 15.00
+G_M34048_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=4080 {rdi r14}, byref
movzx rcx, byte ptr [rdi+0x04]
xor edx, edx
dec r15d
- js G_M34048_IG24
+ js G_M34048_IG18
;; size=15 bbWeight=1 PerfScore 3.50
-G_M34048_IG13: ; bbWeight=12.46, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
+G_M34048_IG06: ; bbWeight=12.46, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
; byrRegs -[rdi]
lea eax, [rdx+r15]
mov r10d, eax
@@ -201,80 +137,142 @@ G_M34048_IG13: ; bbWeight=12.46, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r1
imul r10d, r13d
add r10d, r12d
test ecx, ecx
- je SHORT G_M34048_IG20
+ je SHORT G_M34048_IG13
;; size=30 bbWeight=12.46 PerfScore 71.63
-G_M34048_IG14: ; bbWeight=7.70, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
+G_M34048_IG07: ; bbWeight=7.70, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
mov r9d, r10d
add r9, 2
movsxd r11, dword ptr [r14+0x08]
cmp r9, r11
- ja SHORT G_M34048_IG09
+ ja SHORT G_M34048_IG19
mov r9, qword ptr [r14]
movsxd r10, r10d
movzx r10, word ptr [r9+r10]
;; size=27 bbWeight=7.70 PerfScore 76.96
-G_M34048_IG15: ; bbWeight=12.46, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
+G_M34048_IG08: ; bbWeight=12.46, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
cmp r8d, r10d
- ja SHORT G_M34048_IG21
+ ja SHORT G_M34048_IG14
;; size=5 bbWeight=12.46 PerfScore 15.57
-G_M34048_IG16: ; bbWeight=8.57, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
+G_M34048_IG09: ; bbWeight=8.57, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
cmp r8d, r10d
- jae SHORT G_M34048_IG22
+ jae SHORT G_M34048_IG15
;; size=5 bbWeight=8.57 PerfScore 10.72
-G_M34048_IG17: ; bbWeight=7.80, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref
+G_M34048_IG10: ; bbWeight=7.80, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref
lea r15d, [rax-0x01]
;; size=4 bbWeight=7.80 PerfScore 3.90
-G_M34048_IG18: ; bbWeight=12.69, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
+G_M34048_IG11: ; bbWeight=12.69, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
cmp edx, r15d
- jle SHORT G_M34048_IG13
+ jle SHORT G_M34048_IG06
;; size=5 bbWeight=12.69 PerfScore 15.86
-G_M34048_IG19: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M34048_IG12: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r14]
- jmp SHORT G_M34048_IG24
+ jmp SHORT G_M34048_IG18
;; size=2 bbWeight=0.23 PerfScore 0.46
-G_M34048_IG20: ; bbWeight=4.76, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
+G_M34048_IG13: ; bbWeight=4.76, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
; byrRegs +[r14]
mov r9d, r10d
add r9, 4
movsxd r11, dword ptr [r14+0x08]
cmp r9, r11
- ja G_M34048_IG09
+ ja SHORT G_M34048_IG19
mov r9, qword ptr [r14]
movsxd r10, r10d
mov r10d, dword ptr [r9+r10]
- jmp SHORT G_M34048_IG15
- ;; size=32 bbWeight=4.76 PerfScore 57.14
-G_M34048_IG21: ; bbWeight=3.88, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
+ jmp SHORT G_M34048_IG08
+ ;; size=28 bbWeight=4.76 PerfScore 57.14
+G_M34048_IG14: ; bbWeight=3.88, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
lea edx, [rax+0x01]
- jmp SHORT G_M34048_IG18
+ jmp SHORT G_M34048_IG11
;; size=5 bbWeight=3.88 PerfScore 9.71
-G_M34048_IG22: ; bbWeight=0.77, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M34048_IG15: ; bbWeight=0.77, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; byrRegs -[r14]
mov edx, eax
;; size=2 bbWeight=0.77 PerfScore 0.19
-G_M34048_IG23: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M34048_IG16: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
inc edx
- je G_M34048_IG10
+ je SHORT G_M34048_IG20
mov rcx, rbx
; gcrRegs +[rcx]
mov rax, 0xD1FFAB1E ; code for Microsoft.CodeAnalysis.PEModule:GetConstantValueOrThrow(System.Reflection.Metadata.ConstantHandle):Microsoft.CodeAnalysis.ConstantValue:this
call [rax]Microsoft.CodeAnalysis.PEModule:GetConstantValueOrThrow(System.Reflection.Metadata.ConstantHandle):Microsoft.CodeAnalysis.ConstantValue:this
; gcrRegs -[rcx rbx] +[rax]
; gcr arg pop 0
- jmp SHORT G_M34048_IG25
- ;; size=25 bbWeight=1 PerfScore 6.75
-G_M34048_IG24: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax] +[rbx]
- mov edx, -1
- jmp SHORT G_M34048_IG23
- ;; size=7 bbWeight=0.23 PerfScore 0.52
-G_M34048_IG25: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx] +[rax]
+ ;; size=19 bbWeight=1 PerfScore 4.75
+G_M34048_IG17: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
mov gword ptr [rbp-0x48], rax
; GC ptr vars +{V04}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M34048_IG26: ; bbWeight=1, gcVars=0000000000080000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ jmp G_M34048_IG26
+ ;; size=9 bbWeight=1 PerfScore 3.00
+G_M34048_IG18: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax] +[rbx]
+ ; GC ptr vars -{V04}
+ mov edx, -1
+ jmp SHORT G_M34048_IG16
+ ;; size=7 bbWeight=0.23 PerfScore 0.52
+G_M34048_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
+ mov rax, 0xD1FFAB1E ; code for System.Reflection.Throw:OutOfBounds()
+ call [rax]System.Reflection.Throw:OutOfBounds()
+ ; gcr arg pop 0
+ int3
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M34048_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov rax, 0xD1FFAB1E ; const ptr
+ mov rax, gword ptr [rax]
+ ; gcrRegs +[rax]
+ jmp SHORT G_M34048_IG17
+ ;; size=15 bbWeight=0 PerfScore 0.00
+G_M34048_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
+ mov rax, 0xD1FFAB1E ; code for Microsoft.CodeAnalysis.PEModule:ThrowMetadataDisposed()
+ call [rax]Microsoft.CodeAnalysis.PEModule:ThrowMetadataDisposed()
+ ; gcr arg pop 0
+ int3
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M34048_IG22: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx]
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ mov rax, 0xD1FFAB1E ; code for <unknown method>
+ call [rax]<unknown method>
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
...
+16 (+4.73%) : 109454.dasm - System.Collections.Generic.Dictionary2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer
1[System.__Canon]):this (Tier1)
@@ -18,8 +18,8 @@
; V06 tmp2 [V06,T07] ( 4, 3.33) ref -> rdx
; V07 tmp3 [V07,T05] ( 3, 4 ) long -> rdx "spilling helperCall"
;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 tmp5 [V09,T08] ( 5, 3 ) ref -> rdi class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
-; V10 tmp6 [V10,T02] ( 4, 6 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V09 tmp5 [V09,T08] ( 6, 3 ) ref -> rdi class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
+; V10 tmp6 [V10,T02] ( 4, 6 ) ref -> rdx class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V11 cse0 [V11,T06] ( 6, 3.87) long -> rcx multi-def "CSE - aggressive"
; V12 rat0 [V12,T10] ( 3, 1.47) long -> rcx "Spilling to split statement for tree"
; V13 rat1 [V13,T11] ( 3, 1.33) long -> rdx "runtime lookup"
@@ -49,9 +49,9 @@ G_M21827_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
mov rdx, rsi
; gcrRegs +[rdx]
test rdx, rdx
- je SHORT G_M21827_IG06
+ je SHORT G_M21827_IG09
;; size=8 bbWeight=1 PerfScore 1.50
-G_M21827_IG04: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
+G_M21827_IG04: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
lea rcx, bword ptr [rbx+0x18]
; byrRegs +[rcx]
@@ -64,83 +64,67 @@ G_M21827_IG04: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {},
mov rax, 0xD1FFAB1E ; System.String
cmp qword ptr [rdx], rax
jne G_M21827_IG17
- mov rsi, gword ptr [rbx+0x18]
- ; gcrRegs +[rsi]
- mov rdx, 0xD1FFAB1E ; const ptr
- cmp rsi, gword ptr [rdx]
- jne SHORT G_M21827_IG13
- ;; size=57 bbWeight=1 PerfScore 18.00
-G_M21827_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rsi]
+ mov rdx, gword ptr [rbx+0x18]
+ ; gcrRegs +[rdx]
+ mov rax, 0xD1FFAB1E ; const ptr
+ cmp rdx, gword ptr [rax]
+ jne G_M21827_IG16
+ ;; size=61 bbWeight=1 PerfScore 18.00
+G_M21827_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdx]
mov rdx, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdx]
; gcrRegs +[rdi]
- jmp SHORT G_M21827_IG11
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M21827_IG06: ; bbWeight=0.33, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=13 bbWeight=0.50 PerfScore 1.12
+G_M21827_IG06: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ test rdi, rdi
+ je G_M21827_IG17
+ ;; size=9 bbWeight=0.50 PerfScore 0.62
+G_M21827_IG07: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+ mov rdx, qword ptr [rcx+0x38]
+ mov rdx, qword ptr [rdx]
+ mov rdx, qword ptr [rdx+0x58]
+ test rdx, rdx
+ je SHORT G_M21827_IG13
+ ;; size=16 bbWeight=1 PerfScore 7.25
+G_M21827_IG08: ; bbWeight=0.80, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M21827_IG14
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M21827_IG09: ; bbWeight=0.33, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
mov rcx, qword ptr [rbx]
mov rdx, qword ptr [rcx+0x38]
mov rdx, qword ptr [rdx]
mov rdx, qword ptr [rdx+0x60]
test rdx, rdx
- je SHORT G_M21827_IG08
+ je SHORT G_M21827_IG11
;; size=19 bbWeight=0.33 PerfScore 3.08
-G_M21827_IG07: ; bbWeight=0.27, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M21827_IG09
+G_M21827_IG10: ; bbWeight=0.27, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M21827_IG12
;; size=2 bbWeight=0.27 PerfScore 0.53
-G_M21827_IG08: ; bbWeight=0.07, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M21827_IG11: ; bbWeight=0.07, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov rdx, rax
;; size=18 bbWeight=0.07 PerfScore 0.10
-G_M21827_IG09: ; bbWeight=0.33, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M21827_IG12: ; bbWeight=0.33, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, rdx
call [System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]]
; gcrRegs +[rax]
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- jmp SHORT G_M21827_IG04
- ;; size=14 bbWeight=0.33 PerfScore 1.83
-G_M21827_IG10: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rdx] +[rsi]
- mov rax, 0xD1FFAB1E ; const ptr
- xor rdi, rdi
- ; gcrRegs +[rdi]
- mov rdx, 0xD1FFAB1E ; const ptr
- cmp rsi, gword ptr [rax]
- cmove rdi, gword ptr [rdx]
- ;; size=29 bbWeight=0.50 PerfScore 3.38
-G_M21827_IG11: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rsi]
- test rdi, rdi
- je SHORT G_M21827_IG17
- mov rdx, qword ptr [rcx+0x38]
- mov rdx, qword ptr [rdx]
- mov rdx, qword ptr [rdx+0x58]
- test rdx, rdx
- je SHORT G_M21827_IG14
- ;; size=21 bbWeight=1 PerfScore 8.50
-G_M21827_IG12: ; bbWeight=0.80, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M21827_IG15
- ;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M21827_IG13: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi] +[rsi]
- mov rdx, 0xD1FFAB1E ; const ptr
- cmp rsi, gword ptr [rdx]
- je SHORT G_M21827_IG20
- jmp SHORT G_M21827_IG10
- ;; size=17 bbWeight=0.50 PerfScore 3.12
-G_M21827_IG14: ; bbWeight=0.20, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi] +[rdi]
+ jmp G_M21827_IG04
+ ;; size=17 bbWeight=0.33 PerfScore 1.83
+G_M21827_IG13: ; bbWeight=0.20, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rdx] +[rdi]
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov rdx, rax
;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M21827_IG15: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+G_M21827_IG14: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
mov rcx, rdx
mov rdx, rdi
; gcrRegs +[rdx]
@@ -156,14 +140,29 @@ G_M21827_IG15: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {},
; byrRegs -[rcx]
nop
;; size=24 bbWeight=1 PerfScore 3.50
-G_M21827_IG16: ; bbWeight=1, epilog, nogc, extend
+G_M21827_IG15: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=1 PerfScore 2.75
+G_M21827_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rdx]
+ mov rax, 0xD1FFAB1E ; const ptr
+ cmp rdx, gword ptr [rax]
+ je SHORT G_M21827_IG20
+ mov rax, 0xD1FFAB1E ; const ptr
+ xor rdi, rdi
+ ; gcrRegs +[rdi]
+ mov r8, 0xD1FFAB1E ; const ptr
+ cmp rdx, gword ptr [rax]
+ cmove rdi, gword ptr [r8]
+ test rdi, rdi
+ jne G_M21827_IG07
+ ;; size=53 bbWeight=0.50 PerfScore 6.12
G_M21827_IG17: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rdx rdi]
add rsp, 48
pop rbx
pop rsi
@@ -190,10 +189,10 @@ G_M21827_IG20: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov rax, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rax]
; gcrRegs +[rdi]
- jmp G_M21827_IG11
+ jmp G_M21827_IG06
;; size=18 bbWeight=0 PerfScore 0.00
-; Total bytes of code 338, prolog size 12, PerfScore 57.58, instruction count 89, allocated bytes for code 338 (MethodHash=b587aabc) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
+; Total bytes of code 354, prolog size 12, PerfScore 55.57, instruction count 89, allocated bytes for code 354 (MethodHash=b587aabc) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
; ============================================================
Unwind Info:
+20 (+5.68%) : 616392.dasm - Microsoft.CodeAnalysis.SpecialTypeExtensions:FromRuntimeTypeOfLiteralValue(System.Object):byte (Tier1)
@@ -56,98 +56,98 @@ G_M2348_IG10: ; bbWeight=0.06, epilog, nogc, extend
G_M2348_IG11: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
mov rax, 0xD1FFAB1E ; <unknown class>
cmp rcx, rax
- jne SHORT G_M2348_IG13
+ jne SHORT G_M2348_IG15
;; size=15 bbWeight=0.04 PerfScore 0.06
-G_M2348_IG12: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M2348_IG12: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov edx, 8
- jmp SHORT G_M2348_IG14
- ;; size=7 bbWeight=0.04 PerfScore 0.09
-G_M2348_IG13: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdx, 0xD1FFAB1E ; <unknown class>
- cmp rcx, rdx
- je SHORT G_M2348_IG16
- mov rax, 0xD1FFAB1E ; <unknown class>
- cmp rcx, rax
- je SHORT G_M2348_IG17
- mov rax, 0xD1FFAB1E ; <unknown class>
- cmp rcx, rax
- jne SHORT G_M2348_IG18
- mov edx, 14
- ;; size=50 bbWeight=0.00 PerfScore 0.00
-G_M2348_IG14: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=5 bbWeight=0.04 PerfScore 0.01
+G_M2348_IG13: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movsx rax, dl
;; size=4 bbWeight=0.04 PerfScore 0.01
-G_M2348_IG15: ; bbWeight=0.04, epilog, nogc, extend
+G_M2348_IG14: ; bbWeight=0.04, epilog, nogc, extend
ret
;; size=1 bbWeight=0.04 PerfScore 0.04
-G_M2348_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- mov edx, 15
- jmp SHORT G_M2348_IG14
- ;; size=7 bbWeight=0 PerfScore 0.00
+G_M2348_IG15: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov rdx, 0xD1FFAB1E ; <unknown class>
+ cmp rcx, rdx
+ je G_M2348_IG24
+ mov rax, 0xD1FFAB1E ; <unknown class>
+ cmp rcx, rax
+ je G_M2348_IG25
+ mov rax, 0xD1FFAB1E ; <unknown class>
+ cmp rcx, rax
+ jne SHORT G_M2348_IG16
+ mov edx, 14
+ jmp SHORT G_M2348_IG13
+ ;; size=60 bbWeight=0.00 PerfScore 0.00
+G_M2348_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov rdx, 0xD1FFAB1E ; <unknown class>
+ cmp rcx, rdx
+ jne SHORT G_M2348_IG17
+ mov edx, 16
+ jmp SHORT G_M2348_IG13
+ ;; size=22 bbWeight=0 PerfScore 0.00
G_M2348_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov edx, 19
- jmp SHORT G_M2348_IG14
- ;; size=7 bbWeight=0 PerfScore 0.00
+ mov rdx, 0xD1FFAB1E ; <unknown class>
+ cmp rcx, rdx
+ jne SHORT G_M2348_IG18
+ mov edx, 18
+ jmp SHORT G_M2348_IG13
+ ;; size=22 bbWeight=0 PerfScore 0.00
G_M2348_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; <unknown class>
cmp rcx, rdx
jne SHORT G_M2348_IG19
- mov edx, 16
- jmp SHORT G_M2348_IG14
- ;; size=22 bbWeight=0 PerfScore 0.00
+ mov edx, 17
+ jmp G_M2348_IG13
+ ;; size=25 bbWeight=0 PerfScore 0.00
G_M2348_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; <unknown class>
cmp rcx, rdx
jne SHORT G_M2348_IG20
- mov edx, 18
- jmp SHORT G_M2348_IG14
- ;; size=22 bbWeight=0 PerfScore 0.00
+ mov edx, 11
+ jmp G_M2348_IG13
+ ;; size=25 bbWeight=0 PerfScore 0.00
G_M2348_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; <unknown class>
cmp rcx, rdx
jne SHORT G_M2348_IG21
- mov edx, 17
- jmp SHORT G_M2348_IG14
- ;; size=22 bbWeight=0 PerfScore 0.00
+ mov edx, 12
+ jmp G_M2348_IG13
+ ;; size=25 bbWeight=0 PerfScore 0.00
G_M2348_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; <unknown class>
cmp rcx, rdx
jne SHORT G_M2348_IG22
- mov edx, 11
- jmp SHORT G_M2348_IG14
- ;; size=22 bbWeight=0 PerfScore 0.00
+ mov edx, 33
+ jmp G_M2348_IG13
+ ;; size=25 bbWeight=0 PerfScore 0.00
G_M2348_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; <unknown class>
cmp rcx, rdx
jne SHORT G_M2348_IG23
- mov edx, 12
- jmp G_M2348_IG14
- ;; size=25 bbWeight=0 PerfScore 0.00
-G_M2348_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdx, 0xD1FFAB1E ; <unknown class>
- cmp rcx, rdx
- jne SHORT G_M2348_IG24
- mov edx, 33
- jmp G_M2348_IG14
- ;; size=25 bbWeight=0 PerfScore 0.00
-G_M2348_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdx, 0xD1FFAB1E ; <unknown class>
- cmp rcx, rdx
- jne SHORT G_M2348_IG25
mov edx, 10
- jmp G_M2348_IG14
+ jmp G_M2348_IG13
;; size=25 bbWeight=0 PerfScore 0.00
-G_M2348_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2348_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E ; <unknown class>
xor eax, eax
mov r8d, 9
cmp rcx, rdx
mov edx, r8d
cmovne edx, eax
- jmp G_M2348_IG14
+ jmp G_M2348_IG13
;; size=32 bbWeight=0 PerfScore 0.00
+G_M2348_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov edx, 15
+ jmp G_M2348_IG13
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M2348_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov edx, 19
+ jmp G_M2348_IG13
+ ;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 352, prolog size 0, PerfScore 6.20, instruction count 79, allocated bytes for code 352 (MethodHash=f326f6d3) for method Microsoft.CodeAnalysis.SpecialTypeExtensions:FromRuntimeTypeOfLiteralValue(System.Object):byte (Tier1)
+; Total bytes of code 372, prolog size 0, PerfScore 6.12, instruction count 79, allocated bytes for code 372 (MethodHash=f326f6d3) for method Microsoft.CodeAnalysis.SpecialTypeExtensions:FromRuntimeTypeOfLiteralValue(System.Object):byte (Tier1)
; ============================================================
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 |
68 |
13 |
23 |
32 |
-96 |
+150 |
benchmarks.run.windows.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
benchmarks.run_pgo.windows.x64.checked.mch |
24 |
9 |
6 |
9 |
-32 |
+30 |
benchmarks.run_tiered.windows.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
coreclr_tests.run.windows.x64.checked.mch |
95 |
35 |
39 |
21 |
-462 |
+534 |
libraries.crossgen2.windows.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
libraries.pmi.windows.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
libraries_tests.run.windows.x64.Release.mch |
314 |
90 |
154 |
70 |
-531 |
+1,087 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
realworld.run.windows.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
smoke_tests.nativeaot.windows.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
501 |
147 |
222 |
132 |
-1,121 |
+1,801 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
aspnet.run.windows.x64.checked.mch |
129,290 |
61,702 |
67,588 |
0 (0.00%) |
0 (0.00%) |
benchmarks.run.windows.x64.checked.mch |
27,926 |
4 |
27,922 |
0 (0.00%) |
0 (0.00%) |
benchmarks.run_pgo.windows.x64.checked.mch |
103,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 |
1 (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,183 |
997,391 |
1,514,792 |
3 (0.00%) |
29 (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: 47040747 (overridden on cmd)
Total bytes of diff: 47040801 (overridden on cmd)
Total bytes of delta: 54 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
18 : 57086.dasm (3.78 % of base)
16 : 29334.dasm (3.17 % of base)
11 : 79524.dasm (1.72 % of base)
11 : 114046.dasm (3.35 % of base)
7 : 113192.dasm (1.06 % of base)
6 : 28944.dasm (0.86 % of base)
6 : 64764.dasm (0.86 % of base)
6 : 84907.dasm (0.69 % of base)
6 : 22362.dasm (0.69 % of base)
6 : 55084.dasm (0.86 % of base)
6 : 68987.dasm (0.86 % of base)
6 : 117761.dasm (0.69 % of base)
6 : 19951.dasm (0.69 % of base)
6 : 21930.dasm (0.69 % of base)
6 : 116808.dasm (0.69 % of base)
5 : 70932.dasm (0.41 % of base)
4 : 29570.dasm (0.65 % of base)
4 : 33355.dasm (0.90 % of base)
3 : 21933.dasm (0.84 % of base)
3 : 54098.dasm (0.92 % of base)
Top file improvements (bytes):
-12 : 100361.dasm (-1.64 % of base)
-12 : 118276.dasm (-1.64 % of base)
-12 : 128356.dasm (-1.64 % of base)
-9 : 116660.dasm (-0.21 % of base)
-9 : 19567.dasm (-0.21 % of base)
-9 : 84280.dasm (-0.21 % of base)
-9 : 22249.dasm (-0.21 % of base)
-9 : 21781.dasm (-0.21 % of base)
-7 : 113284.dasm (-0.99 % of base)
-3 : 70933.dasm (-0.69 % of base)
-2 : 76192.dasm (-0.46 % of base)
-2 : 84915.dasm (-0.56 % of base)
-1 : 68260.dasm (-0.28 % of base)
36 total files with Code Size differences (13 improved, 23 regressed), 23 unchanged.
Top method regressions (bytes):
18 (3.78 % of base) : 57086.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriterAndBuffer(System.Text.Json.JsonWriterOptions,int,byref):System.Text.Json.Utf8JsonWriter (Tier1)
16 (3.17 % of base) : 29334.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriter(System.Text.Json.JsonSerializerOptions,System.Text.Json.PooledByteBufferWriter):System.Text.Json.Utf8JsonWriter (Instrumented Tier1)
11 (3.35 % of base) : 114046.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,ubyte]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
11 (1.72 % of base) : 79524.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriter(System.Text.Json.JsonSerializerOptions,System.Text.Json.PooledByteBufferWriter):System.Text.Json.Utf8JsonWriter (Tier1)
7 (1.06 % of base) : 113192.dasm - System.Reflection.RuntimeAssembly:InternalLoad(System.Reflection.AssemblyName,byref,System.Runtime.Loader.AssemblyLoadContext,System.Reflection.RuntimeAssembly,ubyte):System.Reflection.RuntimeAssembly (Tier1)
6 (0.86 % of base) : 28944.dasm - Npgsql.MultiplexingDataSource:<MultiplexingWriteLoop>g__Flush|11_1(Npgsql.Internal.NpgsqlConnector,byref):this (Tier1)
6 (0.86 % of base) : 64764.dasm - Npgsql.MultiplexingDataSource:<MultiplexingWriteLoop>g__Flush|11_1(Npgsql.Internal.NpgsqlConnector,byref):this (Tier1)
6 (0.86 % of base) : 55084.dasm - Npgsql.MultiplexingDataSource:<MultiplexingWriteLoop>g__Flush|11_1(Npgsql.Internal.NpgsqlConnector,byref):this (Tier1)
6 (0.86 % of base) : 68987.dasm - Npgsql.MultiplexingDataSource:<MultiplexingWriteLoop>g__Flush|11_1(Npgsql.Internal.NpgsqlConnector,byref):this (Tier1)
6 (0.69 % of base) : 84907.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
6 (0.69 % of base) : 22362.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
6 (0.69 % of base) : 117761.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
6 (0.69 % of base) : 19951.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
6 (0.69 % of base) : 21930.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
6 (0.69 % of base) : 116808.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
5 (0.41 % of base) : 70932.dasm - System.Text.Json.JsonSerializer:WriteString[System.__Canon](byref,System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]):System.String (Tier1)
4 (0.65 % of base) : 29570.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriter(System.Text.Json.JsonSerializerOptions,System.Text.Json.PooledByteBufferWriter):System.Text.Json.Utf8JsonWriter (Tier1)
4 (0.90 % of base) : 33355.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriterAndBuffer(System.Text.Json.JsonWriterOptions,int,byref):System.Text.Json.Utf8JsonWriter (Tier1)
3 (0.92 % of base) : 54098.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
3 (0.84 % of base) : 21933.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
Top method improvements (bytes):
-12 (-1.64 % of base) : 100361.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-12 (-1.64 % of base) : 118276.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-12 (-1.64 % of base) : 128356.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-9 (-0.21 % of base) : 116660.dasm - System.Net.Http.HttpConnectionPool+<ConnectAsync>d__103:MoveNext():this (Tier1)
-9 (-0.21 % of base) : 19567.dasm - System.Net.Http.HttpConnectionPool+<ConnectAsync>d__103:MoveNext():this (Tier1)
-9 (-0.21 % of base) : 84280.dasm - System.Net.Http.HttpConnectionPool+<ConnectAsync>d__103:MoveNext():this (Tier1)
-9 (-0.21 % of base) : 22249.dasm - System.Net.Http.HttpConnectionPool+<ConnectAsync>d__103:MoveNext():this (Tier1)
-9 (-0.21 % of base) : 21781.dasm - System.Net.Http.HttpConnectionPool+<ConnectAsync>d__103:MoveNext():this (Tier1)
-7 (-0.99 % of base) : 113284.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-3 (-0.69 % of base) : 70933.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriterAndBuffer(System.Text.Json.JsonWriterOptions,int,byref):System.Text.Json.Utf8JsonWriter (Tier1)
-2 (-0.46 % of base) : 76192.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
-2 (-0.56 % of base) : 84915.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
-1 (-0.28 % of base) : 68260.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
Top method regressions (percentages):
18 (3.78 % of base) : 57086.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriterAndBuffer(System.Text.Json.JsonWriterOptions,int,byref):System.Text.Json.Utf8JsonWriter (Tier1)
11 (3.35 % of base) : 114046.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,ubyte]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
16 (3.17 % of base) : 29334.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriter(System.Text.Json.JsonSerializerOptions,System.Text.Json.PooledByteBufferWriter):System.Text.Json.Utf8JsonWriter (Instrumented Tier1)
11 (1.72 % of base) : 79524.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriter(System.Text.Json.JsonSerializerOptions,System.Text.Json.PooledByteBufferWriter):System.Text.Json.Utf8JsonWriter (Tier1)
7 (1.06 % of base) : 113192.dasm - System.Reflection.RuntimeAssembly:InternalLoad(System.Reflection.AssemblyName,byref,System.Runtime.Loader.AssemblyLoadContext,System.Reflection.RuntimeAssembly,ubyte):System.Reflection.RuntimeAssembly (Tier1)
3 (0.92 % of base) : 54098.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
4 (0.90 % of base) : 33355.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriterAndBuffer(System.Text.Json.JsonWriterOptions,int,byref):System.Text.Json.Utf8JsonWriter (Tier1)
6 (0.86 % of base) : 28944.dasm - Npgsql.MultiplexingDataSource:<MultiplexingWriteLoop>g__Flush|11_1(Npgsql.Internal.NpgsqlConnector,byref):this (Tier1)
6 (0.86 % of base) : 64764.dasm - Npgsql.MultiplexingDataSource:<MultiplexingWriteLoop>g__Flush|11_1(Npgsql.Internal.NpgsqlConnector,byref):this (Tier1)
6 (0.86 % of base) : 55084.dasm - Npgsql.MultiplexingDataSource:<MultiplexingWriteLoop>g__Flush|11_1(Npgsql.Internal.NpgsqlConnector,byref):this (Tier1)
6 (0.86 % of base) : 68987.dasm - Npgsql.MultiplexingDataSource:<MultiplexingWriteLoop>g__Flush|11_1(Npgsql.Internal.NpgsqlConnector,byref):this (Tier1)
3 (0.84 % of base) : 21933.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
3 (0.84 % of base) : 19955.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
2 (0.75 % of base) : 76331.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)
6 (0.69 % of base) : 84907.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
6 (0.69 % of base) : 22362.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
6 (0.69 % of base) : 117761.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
6 (0.69 % of base) : 19951.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
6 (0.69 % of base) : 21930.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
6 (0.69 % of base) : 116808.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
Top method improvements (percentages):
-12 (-1.64 % of base) : 100361.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-12 (-1.64 % of base) : 118276.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-12 (-1.64 % of base) : 128356.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-7 (-0.99 % of base) : 113284.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-3 (-0.69 % of base) : 70933.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriterAndBuffer(System.Text.Json.JsonWriterOptions,int,byref):System.Text.Json.Utf8JsonWriter (Tier1)
-2 (-0.56 % of base) : 84915.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
-2 (-0.46 % of base) : 76192.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
-1 (-0.28 % of base) : 68260.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
-9 (-0.21 % of base) : 19567.dasm - System.Net.Http.HttpConnectionPool+<ConnectAsync>d__103:MoveNext():this (Tier1)
-9 (-0.21 % of base) : 22249.dasm - System.Net.Http.HttpConnectionPool+<ConnectAsync>d__103:MoveNext():this (Tier1)
-9 (-0.21 % of base) : 21781.dasm - System.Net.Http.HttpConnectionPool+<ConnectAsync>d__103:MoveNext():this (Tier1)
-9 (-0.21 % of base) : 116660.dasm - System.Net.Http.HttpConnectionPool+<ConnectAsync>d__103:MoveNext():this (Tier1)
-9 (-0.21 % of base) : 84280.dasm - System.Net.Http.HttpConnectionPool+<ConnectAsync>d__103:MoveNext():this (Tier1)
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: 36232814 (overridden on cmd)
Total bytes of diff: 36232812 (overridden on cmd)
Total bytes of delta: -2 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
15 : 71662.dasm (4.50 % of base)
4 : 77017.dasm (2.08 % of base)
4 : 80647.dasm (2.08 % of base)
3 : 46084.dasm (0.44 % of base)
3 : 99545.dasm (0.44 % of base)
1 : 98626.dasm (0.10 % of base)
Top file improvements (bytes):
-7 : 67576.dasm (-1.56 % of base)
-4 : 85608.dasm (-1.69 % of base)
-4 : 35391.dasm (-1.64 % of base)
-4 : 39441.dasm (-1.64 % of base)
-4 : 86915.dasm (-1.69 % of base)
-3 : 102548.dasm (-1.03 % of base)
-3 : 97873.dasm (-1.03 % of base)
-2 : 69051.dasm (-1.50 % of base)
-1 : 41852.dasm (-0.30 % of base)
15 total files with Code Size differences (9 improved, 6 regressed), 9 unchanged.
Top method regressions (bytes):
15 (4.50 % of base) : 71662.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
4 (2.08 % of base) : 77017.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
4 (2.08 % of base) : 80647.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
3 (0.44 % of base) : 46084.dasm - System.Text.RegularExpressions.RegexRunner:InitializeForScan(System.Text.RegularExpressions.Regex,System.ReadOnlySpan`1[ushort],int,int):this (Tier1)
3 (0.44 % of base) : 99545.dasm - System.Text.RegularExpressions.RegexRunner:InitializeForScan(System.Text.RegularExpressions.Regex,System.ReadOnlySpan`1[ushort],int,int):this (Tier1)
1 (0.10 % of base) : 98626.dasm - System.Text.RegularExpressions.RegexParser:AddGroup():this (Tier1)
Top method improvements (bytes):
-7 (-1.56 % of base) : 67576.dasm - Microsoft.CodeAnalysis.DiagnosticBag:ToReadOnlyCore[System.__Canon](System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
-4 (-1.69 % of base) : 85608.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
-4 (-1.64 % of base) : 35391.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
-4 (-1.64 % of base) : 39441.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
-4 (-1.69 % of base) : 86915.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
-3 (-1.03 % of base) : 102548.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:SwapIfGreater(System.Span`1[System.Collections.BigStruct],System.Comparison`1[System.Collections.BigStruct],int,int) (Tier1)
-3 (-1.03 % of base) : 97873.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:SwapIfGreater(System.Span`1[System.Collections.BigStruct],System.Comparison`1[System.Collections.BigStruct],int,int) (Tier1)
-2 (-1.50 % of base) : 69051.dasm - Microsoft.CodeAnalysis.CSharp.BoundStatementList:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
-1 (-0.30 % of base) : 41852.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
Top method regressions (percentages):
15 (4.50 % of base) : 71662.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
4 (2.08 % of base) : 77017.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
4 (2.08 % of base) : 80647.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
3 (0.44 % of base) : 99545.dasm - System.Text.RegularExpressions.RegexRunner:InitializeForScan(System.Text.RegularExpressions.Regex,System.ReadOnlySpan`1[ushort],int,int):this (Tier1)
3 (0.44 % of base) : 46084.dasm - System.Text.RegularExpressions.RegexRunner:InitializeForScan(System.Text.RegularExpressions.Regex,System.ReadOnlySpan`1[ushort],int,int):this (Tier1)
1 (0.10 % of base) : 98626.dasm - System.Text.RegularExpressions.RegexParser:AddGroup():this (Tier1)
Top method improvements (percentages):
-4 (-1.69 % of base) : 85608.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
-4 (-1.69 % of base) : 86915.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
-4 (-1.64 % of base) : 35391.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
-4 (-1.64 % of base) : 39441.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
-7 (-1.56 % of base) : 67576.dasm - Microsoft.CodeAnalysis.DiagnosticBag:ToReadOnlyCore[System.__Canon](System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
-2 (-1.50 % of base) : 69051.dasm - Microsoft.CodeAnalysis.CSharp.BoundStatementList:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
-3 (-1.03 % of base) : 102548.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:SwapIfGreater(System.Span`1[System.Collections.BigStruct],System.Comparison`1[System.Collections.BigStruct],int,int) (Tier1)
-3 (-1.03 % of base) : 97873.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:SwapIfGreater(System.Span`1[System.Collections.BigStruct],System.Comparison`1[System.Collections.BigStruct],int,int) (Tier1)
-1 (-0.30 % of base) : 41852.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
15 total methods with Code Size differences (9 improved, 6 regressed).
coreclr_tests.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 393194106 (overridden on cmd)
Total bytes of diff: 393194178 (overridden on cmd)
Total bytes of delta: 72 (0.00 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
62 : 277831.dasm (3.45 % of base)
52 : 277800.dasm (8.27 % of base)
51 : 277791.dasm (11.09 % of base)
30 : 372160.dasm (5.38 % of base)
29 : 277818.dasm (2.87 % of base)
26 : 366218.dasm (2.77 % of base)
25 : 366173.dasm (3.65 % of base)
24 : 277830.dasm (4.95 % of base)
19 : 277829.dasm (8.23 % of base)
19 : 370765.dasm (2.09 % of base)
18 : 370761.dasm (2.75 % of base)
17 : 277883.dasm (10.30 % of base)
17 : 277920.dasm (2.83 % of base)
11 : 277826.dasm (5.29 % of base)
10 : 277884.dasm (2.96 % of base)
10 : 368390.dasm (2.33 % of base)
10 : 371801.dasm (2.33 % of base)
9 : 277825.dasm (4.29 % of base)
8 : 277919.dasm (2.01 % of base)
8 : 371873.dasm (1.07 % of base)
Top file improvements (bytes):
-122 : 277912.dasm (-40.13 % of base)
-37 : 277832.dasm (-13.21 % of base)
-37 : 277839.dasm (-8.85 % of base)
-28 : 277874.dasm (-6.01 % of base)
-25 : 277822.dasm (-7.20 % of base)
-25 : 277907.dasm (-9.77 % of base)
-24 : 277785.dasm (-9.96 % of base)
-20 : 277828.dasm (-6.06 % of base)
-20 : 277928.dasm (-7.27 % of base)
-19 : 277925.dasm (-14.39 % of base)
-18 : 277794.dasm (-5.54 % of base)
-12 : 277848.dasm (-1.14 % of base)
-8 : 277840.dasm (-5.16 % of base)
-7 : 277844.dasm (-2.11 % of base)
-6 : 277805.dasm (-3.30 % of base)
-6 : 277833.dasm (-2.69 % of base)
-5 : 277799.dasm (-4.13 % of base)
-4 : 277873.dasm (-1.30 % of base)
-4 : 277797.dasm (-1.79 % of base)
-3 : 253141.dasm (-1.02 % of base)
52 total files with Code Size differences (28 improved, 24 regressed), 20 unchanged.
Top method regressions (bytes):
62 (3.45 % of base) : 277831.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
52 (8.27 % of base) : 277800.dasm - System.Buffer:Memmove(byref,byref,ulong) (FullOpts)
51 (11.09 % of base) : 277791.dasm - System.Collections.Generic.ComparerHelpers:CreateDefaultEqualityComparer(System.Type):System.Object (FullOpts)
30 (5.38 % of base) : 372160.dasm - Internal.NativeFormat.NativePrimitiveEncoder:WriteUnsigned(uint):this (Tier1)
29 (2.87 % of base) : 277818.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (FullOpts)
26 (2.77 % of base) : 366218.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseType():Internal.TypeSystem.TypeDesc:this (Tier1)
25 (3.65 % of base) : 366173.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseTypeCode(ubyte):ubyte:this (Tier1)
24 (4.95 % of base) : 277830.dasm - System.Text.UTF8Encoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
19 (2.09 % of base) : 370765.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseType():Internal.TypeSystem.TypeDesc:this (Tier1)
19 (8.23 % of base) : 277829.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiChar_Vector(ulong,ulong):ulong (FullOpts)
18 (2.75 % of base) : 370761.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseTypeCode(ubyte):ubyte:this (Tier1)
17 (2.83 % of base) : 277920.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
17 (10.30 % of base) : 277883.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (FullOpts)
11 (5.29 % of base) : 277826.dasm - System.Text.DecoderReplacementFallback:.ctor(System.String):this (FullOpts)
10 (2.96 % of base) : 277884.dasm - System.Array:Resize[System.__Canon](byref,int) (FullOpts)
10 (2.33 % of base) : 368390.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,uint]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
10 (2.33 % of base) : 371801.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,uint]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
9 (4.29 % of base) : 277825.dasm - System.Text.EncoderReplacementFallback:.ctor(System.String):this (FullOpts)
8 (1.07 % of base) : 371873.dasm - ILCompiler.DependencyAnalysis.SortableDependencyNode:CompareImpl(ILCompiler.DependencyAnalysis.SortableDependencyNode,ILCompiler.DependencyAnalysis.SortableDependencyNode,ILCompiler.DependencyAnalysis.CompilerComparer):int (Tier1)
8 (2.01 % of base) : 277919.dasm - System.Runtime.Loader.AssemblyLoadContext:OnProcessExit() (FullOpts)
Top method improvements (bytes):
-122 (-40.13 % of base) : 277912.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
-37 (-8.85 % of base) : 277839.dasm - System.Diagnostics.Tracing.EtwEventProvider:Register(System.Diagnostics.Tracing.EventSource):this (FullOpts)
-37 (-13.21 % of base) : 277832.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
-28 (-6.01 % of base) : 277874.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (FullOpts)
-25 (-9.77 % of base) : 277907.dasm - System.Runtime.InteropServices.GCHandle:.ctor(System.Object,int):this (FullOpts)
-25 (-7.20 % of base) : 277822.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (FullOpts)
-24 (-9.96 % of base) : 277785.dasm - System.AppContext:Setup(ulong,ulong,int) (FullOpts)
-20 (-7.27 % of base) : 277928.dasm - System.Diagnostics.Tracing.EventProvider:Dispose(ubyte):this (FullOpts)
-20 (-6.06 % of base) : 277828.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (FullOpts)
-19 (-14.39 % of base) : 277925.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
-18 (-5.54 % of base) : 277794.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:.cctor() (FullOpts)
-12 (-1.14 % of base) : 277848.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (FullOpts)
-8 (-5.16 % of base) : 277840.dasm - System.Diagnostics.Tracing.EventListener:get_EventListenersLock():System.Object (FullOpts)
-7 (-2.11 % of base) : 277844.dasm - System.Diagnostics.Tracing.EventPipeEventProvider:Register(System.Diagnostics.Tracing.EventSource):this (FullOpts)
-6 (-2.69 % of base) : 277833.dasm - System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte (FullOpts)
-6 (-3.30 % of base) : 277805.dasm - System.String:GetNonRandomizedHashCode():int:this (FullOpts)
-5 (-4.13 % of base) : 277799.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (FullOpts)
-4 (-1.79 % of base) : 277797.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (FullOpts)
-4 (-1.30 % of base) : 277873.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetMemberList(int,System.String,int):System.__Canon[]:this (FullOpts)
-3 (-1.02 % of base) : 253141.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
Top method regressions (percentages):
51 (11.09 % of base) : 277791.dasm - System.Collections.Generic.ComparerHelpers:CreateDefaultEqualityComparer(System.Type):System.Object (FullOpts)
17 (10.30 % of base) : 277883.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (FullOpts)
52 (8.27 % of base) : 277800.dasm - System.Buffer:Memmove(byref,byref,ulong) (FullOpts)
19 (8.23 % of base) : 277829.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiChar_Vector(ulong,ulong):ulong (FullOpts)
30 (5.38 % of base) : 372160.dasm - Internal.NativeFormat.NativePrimitiveEncoder:WriteUnsigned(uint):this (Tier1)
11 (5.29 % of base) : 277826.dasm - System.Text.DecoderReplacementFallback:.ctor(System.String):this (FullOpts)
24 (4.95 % of base) : 277830.dasm - System.Text.UTF8Encoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
9 (4.29 % of base) : 277825.dasm - System.Text.EncoderReplacementFallback:.ctor(System.String):this (FullOpts)
25 (3.65 % of base) : 366173.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseTypeCode(ubyte):ubyte:this (Tier1)
62 (3.45 % of base) : 277831.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
10 (2.96 % of base) : 277884.dasm - System.Array:Resize[System.__Canon](byref,int) (FullOpts)
5 (2.91 % of base) : 277788.dasm - System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
29 (2.87 % of base) : 277818.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (FullOpts)
17 (2.83 % of base) : 277920.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
26 (2.77 % of base) : 366218.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseType():Internal.TypeSystem.TypeDesc:this (Tier1)
18 (2.75 % of base) : 370761.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseTypeCode(ubyte):ubyte:this (Tier1)
6 (2.70 % of base) : 277923.dasm - System.Collections.Generic.List`1[System.__Canon]:set_Capacity(int):this (FullOpts)
10 (2.33 % of base) : 368390.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,uint]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
10 (2.33 % of base) : 371801.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,uint]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
6 (2.32 % of base) : 277857.dasm - System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)
Top method improvements (percentages):
-122 (-40.13 % of base) : 277912.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
-19 (-14.39 % of base) : 277925.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
-37 (-13.21 % of base) : 277832.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
-24 (-9.96 % of base) : 277785.dasm - System.AppContext:Setup(ulong,ulong,int) (FullOpts)
-25 (-9.77 % of base) : 277907.dasm - System.Runtime.InteropServices.GCHandle:.ctor(System.Object,int):this (FullOpts)
-37 (-8.85 % of base) : 277839.dasm - System.Diagnostics.Tracing.EtwEventProvider:Register(System.Diagnostics.Tracing.EventSource):this (FullOpts)
-20 (-7.27 % of base) : 277928.dasm - System.Diagnostics.Tracing.EventProvider:Dispose(ubyte):this (FullOpts)
-25 (-7.20 % of base) : 277822.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (FullOpts)
-20 (-6.06 % of base) : 277828.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (FullOpts)
-28 (-6.01 % of base) : 277874.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (FullOpts)
-18 (-5.54 % of base) : 277794.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:.cctor() (FullOpts)
-8 (-5.16 % of base) : 277840.dasm - System.Diagnostics.Tracing.EventListener:get_EventListenersLock():System.Object (FullOpts)
-5 (-4.13 % of base) : 277799.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (FullOpts)
-2 (-3.51 % of base) : 277804.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer+OrdinalComparer:GetHashCode(System.String):int:this (FullOpts)
-6 (-3.30 % of base) : 277805.dasm - System.String:GetNonRandomizedHashCode():int:this (FullOpts)
-6 (-2.69 % of base) : 277833.dasm - System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte (FullOpts)
-2 (-2.25 % of base) : 277814.dasm - System.Diagnostics.Tracing.RuntimeEventSource:Initialize() (FullOpts)
-1 (-2.17 % of base) : 277837.dasm - System.Runtime.InteropServices.GCHandle:InternalAlloc(System.Object,int):long (FullOpts)
-7 (-2.11 % of base) : 277844.dasm - System.Diagnostics.Tracing.EventPipeEventProvider:Register(System.Diagnostics.Tracing.EventSource):this (FullOpts)
-4 (-1.79 % of base) : 277797.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (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: 282128846 (overridden on cmd)
Total bytes of diff: 282129402 (overridden on cmd)
Total bytes of delta: 556 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
54 : 317605.dasm (0.81 % of base)
43 : 142267.dasm (2.19 % of base)
30 : 68734.dasm (1.53 % of base)
23 : 617288.dasm (1.44 % of base)
20 : 616392.dasm (5.68 % of base)
20 : 618416.dasm (3.95 % of base)
16 : 109454.dasm (4.73 % of base)
15 : 167212.dasm (2.14 % of base)
15 : 58347.dasm (3.15 % of base)
14 : 173494.dasm (0.64 % of base)
14 : 628010.dasm (2.49 % of base)
14 : 331935.dasm (3.62 % of base)
13 : 82070.dasm (1.45 % of base)
12 : 41134.dasm (1.60 % of base)
12 : 198341.dasm (1.90 % of base)
11 : 617670.dasm (2.33 % of base)
11 : 619830.dasm (2.05 % of base)
11 : 169315.dasm (3.04 % of base)
10 : 319222.dasm (2.94 % of base)
10 : 50322.dasm (2.27 % of base)
Top file improvements (bytes):
-33 : 166205.dasm (-5.03 % of base)
-16 : 626490.dasm (-6.35 % of base)
-15 : 170089.dasm (-2.69 % of base)
-13 : 239711.dasm (-1.00 % of base)
-13 : 632219.dasm (-3.99 % of base)
-13 : 624390.dasm (-3.41 % of base)
-12 : 126281.dasm (-1.53 % of base)
-12 : 318005.dasm (-2.85 % of base)
-12 : 417106.dasm (-1.12 % of base)
-12 : 528513.dasm (-2.85 % of base)
-12 : 208220.dasm (-2.85 % of base)
-12 : 317402.dasm (-1.53 % of base)
-12 : 323180.dasm (-2.85 % of base)
-12 : 197859.dasm (-2.85 % of base)
-12 : 219017.dasm (-2.85 % of base)
-12 : 460192.dasm (-2.85 % of base)
-12 : 460198.dasm (-2.74 % of base)
-12 : 501173.dasm (-2.85 % of base)
-12 : 539792.dasm (-2.85 % of base)
-12 : 603508.dasm (-1.12 % of base)
58 total files with Code Size differences (26 improved, 32 regressed), 20 unchanged.
Top method regressions (bytes):
54 (0.81 % of base) : 317605.dasm - System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_OpenExisting:OpenCreatedFromFile(System.String,int,int):this (Tier1)
43 (2.19 % of base) : 142267.dasm - System.Text.RegularExpressions.RegexParser:ScanCharClass(ubyte,ubyte):System.Text.RegularExpressions.RegexCharClass:this (Tier1)
30 (1.53 % of base) : 68734.dasm - System.Text.RegularExpressions.RegexParser:ScanCharClass(ubyte,ubyte):System.Text.RegularExpressions.RegexCharClass:this (Tier1)
23 (1.44 % of base) : 617288.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (Tier1)
20 (3.95 % of base) : 618416.dasm - Microsoft.CodeAnalysis.PEModule:GetConstantFieldValue(System.Reflection.Metadata.FieldDefinitionHandle):Microsoft.CodeAnalysis.ConstantValue:this (Tier1)
20 (5.68 % of base) : 616392.dasm - Microsoft.CodeAnalysis.SpecialTypeExtensions:FromRuntimeTypeOfLiteralValue(System.Object):byte (Tier1)
16 (4.73 % of base) : 109454.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
15 (2.14 % of base) : 167212.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:GetAttributeBinder(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax],Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Binder:this (Tier1)
15 (3.15 % of base) : 58347.dasm - System.IO.TextWriter:WriteLine(System.String):this (Tier1)
14 (2.49 % of base) : 628010.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]:LoopTail(Microsoft.CodeAnalysis.CSharp.BoundLoopStatement):this (Tier1)
14 (0.64 % of base) : 173494.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeArguments(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,System.Collections.Immutable.ImmutableArray`1[int],byref,byref,ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (Tier1)
14 (3.62 % of base) : 331935.dasm - System.Threading.Tasks.Task:FinishSlow(ubyte):this (Tier1)
13 (1.45 % of base) : 82070.dasm - System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:AddRange(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]):this (Tier1)
12 (1.90 % of base) : 198341.dasm - System.Collections.Concurrent.ConcurrentQueue`1[int]:CopyTo(int[],int):this (Tier1)
12 (1.60 % of base) : 41134.dasm - System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:AddRange(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]):this (Tier1)
11 (3.04 % of base) : 169315.dasm - Microsoft.CodeAnalysis.AnalyzerConfigSet:MergeGlobalConfigs(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.AnalyzerConfig],byref):Microsoft.CodeAnalysis.AnalyzerConfigSet+GlobalAnalyzerConfig (Tier1)
11 (2.33 % of base) : 617670.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.Reflection.Metadata.BlobHandle,System.Collections.Immutable.ImmutableArray`1[ubyte]]]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
11 (2.05 % of base) : 619830.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState,ubyte]]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
10 (2.19 % of base) : 298188.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,int]:get_Item(System.__Canon):int:this (Tier1)
10 (2.33 % of base) : 601366.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,int]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
Top method improvements (bytes):
-33 (-5.03 % of base) : 166205.dasm - Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__85:MoveNext():ubyte:this (Tier1)
-16 (-6.35 % of base) : 626490.dasm - Microsoft.CodeAnalysis.CSharp.BoundUnconvertedObjectCreationExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[System.ValueTuple`2[System.String,Microsoft.CodeAnalysis.Location]]],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte):this (Tier1)
-15 (-2.69 % of base) : 170089.dasm - Microsoft.CodeAnalysis.CSharp.DiagnosticsPass:IssueDiagnostics(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol) (Tier1)
-13 (-3.99 % of base) : 632219.dasm - Microsoft.CodeAnalysis.CSharp.BoundCollectionElementInitializer:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier1)
-13 (-3.41 % of base) : 624390.dasm - Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.BoundObjectInitializerExpressionBase,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier1)
-13 (-1.00 % of base) : 239711.dasm - System.Reflection.Associates:AssignAssociates(System.Reflection.MetadataImport,int,System.RuntimeType,System.RuntimeType,byref,byref,byref,byref,byref,byref,byref,byref) (Tier1)
-12 (-1.53 % of base) : 126281.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-12 (-1.53 % of base) : 317402.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-12 (-1.12 % of base) : 417106.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (Tier1)
-12 (-1.12 % of base) : 603508.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (Tier1)
-12 (-2.85 % of base) : 318005.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-12 (-2.85 % of base) : 528513.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-12 (-2.85 % of base) : 208220.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-12 (-2.85 % of base) : 323180.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-12 (-2.85 % of base) : 197859.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-12 (-2.85 % of base) : 219017.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-12 (-2.85 % of base) : 460192.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-12 (-2.85 % of base) : 501173.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-12 (-2.85 % of base) : 539792.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-12 (-2.74 % of base) : 460198.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
Top method regressions (percentages):
20 (5.68 % of base) : 616392.dasm - Microsoft.CodeAnalysis.SpecialTypeExtensions:FromRuntimeTypeOfLiteralValue(System.Object):byte (Tier1)
16 (4.73 % of base) : 109454.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
20 (3.95 % of base) : 618416.dasm - Microsoft.CodeAnalysis.PEModule:GetConstantFieldValue(System.Reflection.Metadata.FieldDefinitionHandle):Microsoft.CodeAnalysis.ConstantValue:this (Tier1)
14 (3.62 % of base) : 331935.dasm - System.Threading.Tasks.Task:FinishSlow(ubyte):this (Tier1)
15 (3.15 % of base) : 58347.dasm - System.IO.TextWriter:WriteLine(System.String):this (Tier1)
11 (3.04 % of base) : 169315.dasm - Microsoft.CodeAnalysis.AnalyzerConfigSet:MergeGlobalConfigs(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.AnalyzerConfig],byref):Microsoft.CodeAnalysis.AnalyzerConfigSet+GlobalAnalyzerConfig (Tier1)
10 (2.94 % of base) : 319222.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
8 (2.69 % of base) : 66261.dasm - Microsoft.CodeAnalysis.CSharp.ClsComplianceChecker:CheckForMeaninglessOnReturn(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):this (Tier1)
10 (2.62 % of base) : 483805.dasm - System.Reflection.Emit.SignatureHelper:InternalGetSignatureArray():ubyte[]:this (Tier1)
14 (2.49 % of base) : 628010.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]:LoopTail(Microsoft.CodeAnalysis.CSharp.BoundLoopStatement):this (Tier1)
10 (2.33 % of base) : 601366.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,int]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
10 (2.33 % of base) : 256123.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,int]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
11 (2.33 % of base) : 617670.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.Reflection.Metadata.BlobHandle,System.Collections.Immutable.ImmutableArray`1[ubyte]]]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
10 (2.32 % of base) : 83366.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
10 (2.32 % of base) : 51342.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
10 (2.31 % of base) : 63380.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.ValueTuple`2[uint,uint]]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
6 (2.28 % of base) : 30675.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)
6 (2.28 % of base) : 69443.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)
6 (2.28 % of base) : 203024.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)
10 (2.27 % of base) : 50322.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.ValueTuple`2[System.__Canon,int]]]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
Top method improvements (percentages):
-16 (-6.35 % of base) : 626490.dasm - Microsoft.CodeAnalysis.CSharp.BoundUnconvertedObjectCreationExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[System.ValueTuple`2[System.String,Microsoft.CodeAnalysis.Location]]],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte):this (Tier1)
-33 (-5.03 % of base) : 166205.dasm - Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__85:MoveNext():ubyte:this (Tier1)
-13 (-3.99 % of base) : 632219.dasm - Microsoft.CodeAnalysis.CSharp.BoundCollectionElementInitializer:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier1)
-10 (-3.82 % of base) : 619265.dasm - Microsoft.CodeAnalysis.CSharp.BoundStatementList:Update(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement]):Microsoft.CodeAnalysis.CSharp.BoundStatementList:this (Tier1)
-13 (-3.41 % of base) : 624390.dasm - Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.BoundObjectInitializerExpressionBase,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier1)
-4 (-3.01 % of base) : 634051.dasm - Microsoft.CodeAnalysis.CSharp.BoundMultipleLocalDeclarations:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration],ubyte):this (Tier1)
-4 (-3.01 % of base) : 619179.dasm - Microsoft.CodeAnalysis.CSharp.BoundStatementList:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
-4 (-3.01 % of base) : 624492.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeOrInstanceInitializers:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
-4 (-2.88 % of base) : 627642.dasm - Microsoft.CodeAnalysis.CSharp.BoundUnconvertedCollectionExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundNode],ubyte):this (Tier1)
-12 (-2.85 % of base) : 318005.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-12 (-2.85 % of base) : 528513.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-12 (-2.85 % of base) : 208220.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-12 (-2.85 % of base) : 323180.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-12 (-2.85 % of base) : 197859.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-12 (-2.85 % of base) : 219017.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-12 (-2.85 % of base) : 460192.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-12 (-2.85 % of base) : 501173.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-12 (-2.85 % of base) : 539792.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-12 (-2.74 % of base) : 460198.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
-15 (-2.69 % of base) : 170089.dasm - Microsoft.CodeAnalysis.CSharp.DiagnosticsPass:IssueDiagnostics(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol) (Tier1)