Assembly Diffs
linux arm64
Diffs are based on 2,507,302 contexts (1,007,092 MinOpts, 1,500,210 FullOpts).
MISSED contexts: base: 8 (0.00%), diff: 16 (0.00%)
Overall (-16,436 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.arm64.checked.mch |
15,555,200 |
-468 |
benchmarks.run_pgo.linux.arm64.checked.mch |
80,093,860 |
+168 |
benchmarks.run_tiered.linux.arm64.checked.mch |
24,598,456 |
-372 |
coreclr_tests.run.linux.arm64.checked.mch |
508,732,352 |
-2,216 |
libraries.crossgen2.linux.arm64.checked.mch |
55,844,108 |
-1,320 |
libraries.pmi.linux.arm64.checked.mch |
76,289,160 |
-1,424 |
libraries_tests.run.linux.arm64.Release.mch |
395,683,916 |
-7,804 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
164,998,512 |
-2,712 |
realworld.run.linux.arm64.checked.mch |
15,903,660 |
-172 |
smoke_tests.nativeaot.linux.arm64.checked.mch |
2,946,792 |
-116 |
FullOpts (-16,436 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.arm64.checked.mch |
15,250,272 |
-468 |
benchmarks.run_pgo.linux.arm64.checked.mch |
54,159,076 |
+168 |
benchmarks.run_tiered.linux.arm64.checked.mch |
4,860,020 |
-372 |
coreclr_tests.run.linux.arm64.checked.mch |
160,584,200 |
-2,216 |
libraries.crossgen2.linux.arm64.checked.mch |
55,842,472 |
-1,320 |
libraries.pmi.linux.arm64.checked.mch |
76,169,176 |
-1,424 |
libraries_tests.run.linux.arm64.Release.mch |
180,551,964 |
-7,804 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
151,501,048 |
-2,712 |
realworld.run.linux.arm64.checked.mch |
15,322,736 |
-172 |
smoke_tests.nativeaot.linux.arm64.checked.mch |
2,945,804 |
-116 |
Example diffs
benchmarks.run.linux.arm64.checked.mch
-36 (-21.95%) : 27942.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -11,12 +11,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
; V02 loc0 [V02,T00] ( 7, 24.50) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> x5 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x4 "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> x6 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> x5 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -33,51 +35,39 @@ G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x2]
cmp w1, w3
blt G_M264_IG11
- b G_M264_IG09
+ b G_M264_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
; byrRegs +[x0 x2]
sxtw w4, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1
- sxtw w4, w5
- tbnz w4, #31, G_M264_IG06
+ sub w4, w4, #1
+ tbnz w4, #31, G_M264_IG09
cmp w4, w1
bhs G_M264_IG13
- ubfiz x6, x4, #2, #32
- ldr w7, [x0, x6]
+ ubfiz x5, x4, #2, #32
+ ldr w6, [x0, x5]
cmp w4, w3
bhs G_M264_IG13
- ldr w6, [x2, x6]
- cmp w7, w6
+ ldr w5, [x2, x5]
+ cmp w6, w5
beq G_M264_IG05
- ;; size=48 bbWeight=4 PerfScore 54.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- tbz w5, #31, G_M264_IG08
- mov w0, wzr
- ; byrRegs -[x0]
+ ;; size=44 bbWeight=4 PerfScore 52.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0 x2]
+ cmp w5, w6
+ bhi G_M264_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref, isz
- ; byrRegs +[x0]
- cmp w5, w1
- bhs G_M264_IG13
- ubfiz x6, x5, #2, #32
- ldr w0, [x0, x6]
- ; byrRegs -[x0]
- cmp w5, w3
- bhs G_M264_IG13
- ldr w1, [x2, x6]
- cmp w0, w1
- blo G_M264_IG11
- ;; size=36 bbWeight=0.50 PerfScore 5.75
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
- mov w0, #1
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
@@ -96,7 +86,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 8, PerfScore 68.50, instruction count 41, allocated bytes for code 164 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 128, prolog size 8, PerfScore 61.00, instruction count 32, allocated bytes for code 128 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -107,7 +97,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-48 (-7.64%) : 19004.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan1[ushort],System.Span
1[ubyte],byref,byref):this (FullOpts)
@@ -9,12 +9,12 @@
; Final local variable assignments
;
; V00 this [V00,T10] ( 6, 6 ) ref -> x0 this class-hnd single-def <System.Xml.Base64Decoder>
-; V01 arg1 [V01 ] ( 20, 43 ) struct (16) [fp+0x10] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V01 arg1 [V01 ] ( 19, 42.50) struct (16) [fp+0x10] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
; V03 arg3 [V03,T13] ( 3, 3 ) byref -> x5 single-def
; V04 arg4 [V04,T14] ( 3, 3 ) byref -> x6 single-def
; V05 loc0 [V05,T06] ( 6, 12 ) int -> registers
-; V06 loc1 [V06,T00] ( 19, 56 ) int -> registers
+; V06 loc1 [V06,T00] ( 18, 55.50) int -> registers
; V07 loc2 [V07,T11] ( 5, 8 ) int -> x7
; V08 loc3 [V08,T04] ( 8, 12.50) int -> x8
;* V09 loc4 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
@@ -36,7 +36,7 @@
;* V25 tmp13 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V26 tmp14 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
; V27 tmp15 [V27 ] ( 9, 15.50) byref -> [fp+0x10] do-not-enreg[X] addr-exposed single-def "field V01._reference (fldOffset=0x0)" P-DEP
-; V28 tmp16 [V28 ] ( 15, 29.50) int -> [fp+0x18] do-not-enreg[X] addr-exposed single-def "field V01._length (fldOffset=0x8)" P-DEP
+; V28 tmp16 [V28 ] ( 14, 29 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed single-def "field V01._length (fldOffset=0x8)" P-DEP
; V29 tmp17 [V29,T15] ( 2, 3 ) byref -> x3 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
; V30 tmp18 [V30,T09] ( 3, 7 ) int -> x4 single-def "field V02._length (fldOffset=0x8)" P-INDEP
; V31 tmp19 [V31,T16] ( 2, 3 ) byref -> x9 single-def "field V09._reference (fldOffset=0x0)" P-INDEP
@@ -84,7 +84,7 @@ G_M19254_IG03: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0268 {x3 x5 x
bhs G_M19254_IG06
ldr w10, [fp, #0x18] // [V28 tmp16]
cmp w2, w10
- bhs G_M19254_IG17
+ bhs G_M19254_IG12
ldr x10, [fp, #0x10] // [V27 tmp15]
; byrRegs +[x10]
ldrh w10, [x10, w2, UXTW #2]
@@ -100,10 +100,10 @@ G_M19254_IG03: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0268 {x3 x5 x
;; size=60 bbWeight=4 PerfScore 70.00
G_M19254_IG04: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0268 {x3 x5 x6 x9}, byref, isz
cmp w10, #123
- bge G_M19254_IG18
+ bge G_M19254_IG13
ldrb w10, [x9, w10, UXTW #2]
cmp w10, #255
- beq G_M19254_IG18
+ beq G_M19254_IG13
orr w7, w10, w7, LSL #6
add w8, w8, #6
cmp w8, #8
@@ -114,7 +114,7 @@ G_M19254_IG04: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0268 {x3 x5 x
strb w11, [x3, w1, UXTW #2]
cmp w10, w4
mov w1, w10
- beq G_M19254_IG16
+ beq G_M19254_IG10
;; size=64 bbWeight=2 PerfScore 27.00
G_M19254_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0268 {x3 x5 x6 x9}, byref, isz
ldr w10, [fp, #0x18] // [V28 tmp16]
@@ -125,26 +125,26 @@ G_M19254_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x
; byrRegs -[x3 x9]
ldr w3, [fp, #0x18] // [V28 tmp16]
cmp w2, w3
- bhs G_M19254_IG15
+ bhs G_M19254_IG10
ldr w3, [fp, #0x18] // [V28 tmp16]
cmp w2, w3
- bhs G_M19254_IG17
+ bhs G_M19254_IG12
ldr x3, [fp, #0x10] // [V27 tmp15]
; byrRegs +[x3]
ldrh w3, [x3, w2, UXTW #2]
; byrRegs -[x3]
cmp w3, #61
- bne G_M19254_IG14
+ bne G_M19254_IG10
mov w8, wzr
;; size=44 bbWeight=0.50 PerfScore 7.00
G_M19254_IG07: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref, isz
add w2, w2, #1
ldr w3, [fp, #0x18] // [V28 tmp16]
cmp w2, w3
- bhs G_M19254_IG08
+ bhs G_M19254_IG10
ldr w3, [fp, #0x18] // [V28 tmp16]
cmp w2, w3
- bhs G_M19254_IG17
+ bhs G_M19254_IG12
ldr x3, [fp, #0x10] // [V27 tmp15]
; byrRegs +[x3]
ldrh w3, [x3, w2, UXTW #2]
@@ -152,66 +152,44 @@ G_M19254_IG07: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6},
cmp w3, #61
beq G_M19254_IG07
;; size=44 bbWeight=4 PerfScore 56.00
-G_M19254_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref, isz
- ldr w3, [fp, #0x18] // [V28 tmp16]
- cmp w2, w3
- bhs G_M19254_IG13
+G_M19254_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref
movz x11, #0xD1FFAB1E
movk x11, #0xD1FFAB1E LSL #16
movk x11, #0xD1FFAB1E LSL #32
- ;; size=24 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 0.75
G_M19254_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref, isz
add w3, w2, #1
ldr w4, [fp, #0x18] // [V28 tmp16]
cmp w2, w4
- bhs G_M19254_IG17
+ bhs G_M19254_IG12
ldr x4, [fp, #0x10] // [V27 tmp15]
; byrRegs +[x4]
ldrh w2, [x4, w2, UXTW #2]
ldrb w2, [x11, w2, UXTW #2]
- tbz w2, #0, G_M19254_IG19
+ tbz w2, #0, G_M19254_IG14
ldr w2, [fp, #0x18] // [V28 tmp16]
cmp w3, w2
- blo G_M19254_IG12
- ;; size=44 bbWeight=4 PerfScore 66.00
+ mov w2, w3
+ blo G_M19254_IG09
+ ;; size=48 bbWeight=4 PerfScore 68.00
G_M19254_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref
; byrRegs -[x4]
stp w7, w8, [x0, #0x1C]
str w1, [x6]
- str w3, [x5]
+ str w2, [x5]
;; size=12 bbWeight=1 PerfScore 3.00
G_M19254_IG11: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M19254_IG12: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, gcvars, byref
- mov w2, w3
- b G_M19254_IG09
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M19254_IG13: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref
- mov w3, w2
- b G_M19254_IG10
- ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M19254_IG14: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref
- mov w3, w2
- b G_M19254_IG10
- ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M19254_IG15: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref
- mov w3, w2
- b G_M19254_IG10
- ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M19254_IG16: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref
- mov w3, w2
- b G_M19254_IG10
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19254_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19254_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
; byrRegs -[x5-x6]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M19254_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19254_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for <unknown method>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -257,7 +235,7 @@ G_M19254_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x20]
; gcr arg pop 0
;; size=108 bbWeight=0 PerfScore 0.00
-G_M19254_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19254_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for <unknown method>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -305,7 +283,7 @@ G_M19254_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=112 bbWeight=0 PerfScore 0.00
-; Total bytes of code 628, prolog size 16, PerfScore 266.12, instruction count 157, allocated bytes for code 628 (MethodHash=6376b4c9) for method System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
+; Total bytes of code 580, prolog size 16, PerfScore 260.75, instruction count 145, allocated bytes for code 580 (MethodHash=6376b4c9) for method System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
; ============================================================
Unwind Info:
@@ -316,7 +294,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 157 (0x0009d) Actual length = 628 (0x000274)
+ Function Length : 145 (0x00091) Actual length = 580 (0x000244)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-7.04%) : 24352.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
@@ -7,20 +7,21 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T05] ( 6, 22 ) int -> x0
-; V01 arg1 [V01,T06] ( 6, 19 ) int -> x19 single-def
-; V02 arg2 [V02,T08] ( 5, 11 ) ref -> x20 class-hnd single-def <int[]>
-; V03 loc0 [V03,T00] ( 17,112 ) int -> x23
-; V04 loc1 [V04,T01] ( 13,100 ) int -> x1
+; V00 arg0 [V00,T06] ( 6, 22 ) int -> x0
+; V01 arg1 [V01,T07] ( 6, 19 ) int -> x19 single-def
+; V02 arg2 [V02,T09] ( 5, 11 ) ref -> x20 class-hnd single-def <int[]>
+; V03 loc0 [V03,T00] ( 16,110 ) int -> x23
+; V04 loc1 [V04,T01] ( 10, 94 ) int -> x1
; V05 loc2 [V05,T04] ( 4, 38 ) int -> x3
-; V06 loc3 [V06,T09] ( 4, 8 ) int -> x4
+; V06 loc3 [V06,T10] ( 4, 8 ) int -> x5
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T10] ( 2, 8 ) int -> x5 "Strict ordering of exceptions for Array store"
-; V09 tmp2 [V09,T07] ( 2, 16 ) int -> x0 "arg temp"
-; V10 cse0 [V10,T11] ( 3, 7 ) long -> x22 hoist "CSE - aggressive"
-; V11 cse1 [V11,T12] ( 3, 6 ) long -> x1 "CSE - aggressive"
-; V12 cse2 [V12,T02] ( 11, 51 ) byref -> x21 hoist "CSE - aggressive"
-; V13 cse3 [V13,T03] ( 7, 46 ) int -> x2 "CSE - aggressive"
+; V08 tmp1 [V08,T11] ( 2, 8 ) int -> x4 "Strict ordering of exceptions for Array store"
+; V09 tmp2 [V09,T08] ( 2, 16 ) int -> x0 "arg temp"
+; V10 cse0 [V10,T05] ( 3, 34 ) int -> x4 "CSE - aggressive"
+; V11 cse1 [V11,T12] ( 3, 7 ) long -> x22 hoist "CSE - aggressive"
+; V12 cse2 [V12,T13] ( 3, 6 ) long -> x1 "CSE - aggressive"
+; V13 cse3 [V13,T02] ( 10, 49 ) byref -> x21 hoist "CSE - aggressive"
+; V14 cse4 [V14,T03] ( 6, 44 ) int -> x2 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -72,7 +73,7 @@ G_M36260_IG08: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=200000 {x2
;; size=4 bbWeight=8 PerfScore 4.00
G_M36260_IG09: ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
cmp w1, w23
- ble G_M36260_IG10
+ ble G_M36260_IG11
cmp w1, w2
bhs G_M36260_IG15
ldr w4, [x21, w1, UXTW #2]
@@ -80,17 +81,12 @@ G_M36260_IG09: ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=200000 {x
bge G_M36260_IG08
;; size=28 bbWeight=16 PerfScore 120.00
G_M36260_IG10: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
- cmp w23, w1
- bge G_M36260_IG11
cmp w23, w2
bhs G_M36260_IG15
- ldr w4, [x21, w23, UXTW #2]
- cmp w1, w2
- bhs G_M36260_IG15
- ldr w5, [x21, w1, UXTW #2]
- str w5, [x21, w23, UXTW #2]
- str w4, [x21, w1, UXTW #2]
- ;; size=40 bbWeight=2 PerfScore 25.00
+ ldr w5, [x21, w23, UXTW #2]
+ str w4, [x21, w23, UXTW #2]
+ str w5, [x21, w1, UXTW #2]
+ ;; size=20 bbWeight=2 PerfScore 13.00
G_M36260_IG11: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
cmp w23, w1
blt G_M36260_IG06
@@ -101,9 +97,9 @@ G_M36260_IG12: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=200000 {x2
cmp w23, w2
bhs G_M36260_IG15
ubfiz x1, x23, #2, #32
- ldr w4, [x21, x1]
+ ldr w5, [x21, x1]
str w3, [x21, x1]
- str w4, [x21, x22]
+ str w5, [x21, x22]
;; size=24 bbWeight=2 PerfScore 15.00
G_M36260_IG13: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref
sub w1, w23, #1
@@ -134,7 +130,7 @@ G_M36260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 284, prolog size 28, PerfScore 399.00, instruction count 71, allocated bytes for code 284 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
+; Total bytes of code 264, prolog size 28, PerfScore 387.00, instruction count 66, allocated bytes for code 264 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
; ============================================================
Unwind Info:
@@ -145,7 +141,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
+ Function Length : 66 (0x00042) Actual length = 264 (0x000108)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+1.11%) : 12182.dasm - System.Enum+<>c__631[uint]:<FormatNumberAsHex>b__63_0(System.Span
1[ushort],long):this (FullOpts)
@@ -10,32 +10,32 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Enum+<>c__63`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ushort]>
-; V02 arg2 [V02,T02] ( 3, 2.50) long -> x3 single-def
+; V02 arg2 [V02,T01] ( 3, 2.50) long -> x3 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) ubyte -> zero-ref
;* V04 loc1 [V04,T17] ( 0, 0 ) int -> zero-ref ld-addr-op
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
; V08 tmp3 [V08,T08] ( 5, 2.50) int -> x0 "Inline stloc first use temp"
-; V09 tmp4 [V09,T04] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V09 tmp4 [V09,T03] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V10 tmp5 [V10,T09] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
; V11 tmp6 [V11,T10] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V13 tmp8 [V13,T05] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V13 tmp8 [V13,T04] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V14 tmp9 [V14,T11] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
; V15 tmp10 [V15,T12] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V17 tmp12 [V17,T06] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V17 tmp12 [V17,T05] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V18 tmp13 [V18,T13] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
; V19 tmp14 [V19,T14] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
;* V20 tmp15 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V21 tmp16 [V21,T07] ( 3, 3 ) ubyte -> x0 "Inlining Arg"
+; V21 tmp16 [V21,T06] ( 3, 3 ) ubyte -> x0 "Inlining Arg"
; V22 tmp17 [V22,T15] ( 3, 1.50) int -> x0 "Inline stloc first use temp"
; V23 tmp18 [V23,T16] ( 3, 1.50) int -> x0 "Inline stloc first use temp"
;* V24 tmp19 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V25 tmp20 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V26 tmp21 [V26,T00] ( 9, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp22 [V27,T03] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V27 tmp22 [V27,T02] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp24 [V29 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
@@ -46,14 +46,15 @@
;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
;* V36 tmp31 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
-; V38 cse0 [V38,T01] ( 6, 6 ) ref -> x1 multi-def "CSE - aggressive"
+; V38 cse0 [V38,T07] ( 5, 2.50) ref -> x19 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M18375_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M18375_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
cmp w2, #8
@@ -127,48 +128,50 @@ G_M18375_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, b
strh w0, [x1, #0x0C]
b G_M18375_IG05
;; size=264 bbWeight=0.50 PerfScore 23.75
-G_M18375_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M18375_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x1]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1
+ movz x19, #0xD1FFAB1E
+ movk x19, #0xD1FFAB1E LSL #16
+ movk x19, #0xD1FFAB1E LSL #32
+ mov x0, x19
; gcrRegs +[x0]
+ mov x1, x19
+ ; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- ; gcrRegs -[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1
+ ; gcrRegs -[x0-x1] +[x19]
+ mov x0, x19
; gcrRegs +[x0]
+ mov x1, x19
+ ; gcrRegs +[x1]
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=72 bbWeight=1 PerfScore 15.00
+ ; gcrRegs -[x0-x1 x19]
+ ;; size=68 bbWeight=0.50 PerfScore 7.25
G_M18375_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 360, prolog size 8, PerfScore 43.75, instruction count 90, allocated bytes for code 360 (MethodHash=1579b838) for method System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
+; Total bytes of code 364, prolog size 12, PerfScore 39.00, instruction count 91, allocated bytes for code 364 (MethodHash=1579b838) for method System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 90 (0x0005a) Actual length = 360 (0x000168)
+ Function Length : 91 (0x0005b) Actual length = 364 (0x00016c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -176,7 +179,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
+4 (+1.22%) : 4504.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
@@ -8,34 +8,37 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T10] ( 5, 15 ) ref -> x20 class-hnd single-def <System.Reflection.ParameterInfo[]>
-; V01 arg1 [V01,T11] ( 5, 11 ) ref -> x21 class-hnd single-def <System.Type[]>
-; V02 arg2 [V02,T06] ( 5, 23 ) byref -> x19 single-def
+; V00 arg0 [V00,T10] ( 4, 11 ) ref -> x20 class-hnd single-def <System.Reflection.ParameterInfo[]>
+; V01 arg1 [V01,T14] ( 4, 4 ) ref -> x21 class-hnd single-def <System.Type[]>
+; V02 arg2 [V02,T05] ( 5, 23 ) byref -> x19 single-def
; V03 loc0 [V03,T09] ( 6, 21 ) int -> x23
-;* V04 loc1 [V04,T13] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc2 [V05,T12] ( 2, 12 ) ref -> x24 class-hnd <System.Type>
-; V06 loc3 [V06,T01] ( 7, 88 ) int -> x25
+;* V04 loc1 [V04,T12] ( 0, 0 ) ubyte -> zero-ref
+; V05 loc2 [V05,T11] ( 2, 12 ) ref -> x25 class-hnd <System.Type>
+; V06 loc3 [V06,T01] ( 7, 88 ) int -> x26
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-; V09 tmp2 [V09,T07] ( 3, 24 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
+; V09 tmp2 [V09,T06] ( 3, 24 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
;* V10 tmp3 [V10 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V11 tmp4 [V11,T15] ( 0, 0 ) ubyte -> zero-ref "field V08.hasValue (fldOffset=0x0)" P-INDEP
-; V12 tmp5 [V12,T14] ( 2, 8 ) int -> x1 "field V08.value (fldOffset=0x4)" P-INDEP
+;* V11 tmp4 [V11,T17] ( 0, 0 ) ubyte -> zero-ref "field V08.hasValue (fldOffset=0x0)" P-INDEP
+; V12 tmp5 [V12,T13] ( 2, 8 ) int -> x1 "field V08.value (fldOffset=0x4)" P-INDEP
; V13 tmp6 [V13,T00] ( 3, 96 ) ref -> x0 "arr expr"
; V14 tmp7 [V14,T02] ( 3, 48 ) ref -> x0 "argument with side effect"
; V15 tmp8 [V15,T03] ( 3, 48 ) ref -> x0 "argument with side effect"
-; V16 tmp9 [V16,T08] ( 3, 24 ) byref -> x0 "BlockOp address local"
-; V17 cse0 [V17,T04] ( 4, 44 ) long -> x26 "CSE - aggressive"
-; V18 cse1 [V18,T05] ( 5, 26 ) int -> x22 multi-def "CSE - aggressive"
+; V16 tmp9 [V16,T07] ( 3, 24 ) byref -> x0 "BlockOp address local"
+; V17 cse0 [V17,T04] ( 4, 44 ) long -> x27 "CSE - aggressive"
+; V18 cse1 [V18,T08] ( 4, 22 ) int -> x22 "CSE - aggressive"
+; V19 cse2 [V19,T16] ( 2, 5 ) byref -> x21 hoist "CSE - aggressive"
+; V20 cse3 [V20,T15] ( 3, 6 ) int -> x24 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M59545_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x10]
- stp x21, x22, [sp, #0x20]
- stp x23, x24, [sp, #0x30]
- stp x25, x26, [sp, #0x40]
+ 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
mov x20, x0
; gcrRegs +[x20]
@@ -43,7 +46,7 @@ G_M59545_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x21]
mov x19, x2
; byrRegs +[x19]
- ;; size=36 bbWeight=1 PerfScore 7.00
+ ;; size=40 bbWeight=1 PerfScore 8.00
G_M59545_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref, isz
ldr w22, [x20, #0x08]
mov w1, w22
@@ -61,37 +64,36 @@ G_M59545_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=80000
; gcrRegs -[x0 x15]
; byrRegs -[x14]
mov w23, wzr
- ldr w0, [x21, #0x08]
- cmp w0, #0
+ ldr w24, [x21, #0x08]
+ cmp w24, #0
ble G_M59545_IG09
- ;; size=52 bbWeight=1 PerfScore 13.00
-G_M59545_IG03: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref, isz
- add x0, x21, #16
- ; byrRegs +[x0]
- ldr x24, [x0, w23, UXTW #3]
- ; gcrRegs +[x24]
- mov w25, wzr
- ldr w22, [x20, #0x08]
+ add x21, x21, #16
+ ; gcrRegs -[x21]
+ ; byrRegs +[x21]
+ ;; size=56 bbWeight=1 PerfScore 13.50
+G_M59545_IG03: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=280000 {x19 x21}, byref, isz
+ ldr x25, [x21, w23, UXTW #3]
+ ; gcrRegs +[x25]
+ mov w26, wzr
cmp w22, #0
ble G_M59545_IG11
- ;; size=24 bbWeight=4 PerfScore 34.00
-G_M59545_IG04: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=80000 {x19}, byref, isz
- ; byrRegs -[x0]
+ ;; size=16 bbWeight=4 PerfScore 20.00
+G_M59545_IG04: ; bbWeight=16, gcrefRegs=2100000 {x20 x25}, byrefRegs=280000 {x19 x21}, byref, isz
ldr x0, [x19]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
- cmp w25, w1
+ cmp w26, w1
bhs G_M59545_IG13
- ubfiz x26, x25, #3, #32
- add x1, x26, #16
+ ubfiz x27, x26, #3, #32
+ add x1, x27, #16
ldrb w0, [x0, x1]
; gcrRegs -[x0]
cbnz w0, G_M59545_IG06
;; size=32 bbWeight=16 PerfScore 208.00
-G_M59545_IG05: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=80000 {x19}, byref, isz
+G_M59545_IG05: ; bbWeight=8, gcrefRegs=2100000 {x20 x25}, byrefRegs=280000 {x19 x21}, byref, isz
add x0, x20, #16
; byrRegs +[x0]
- ldr x0, [x0, x26]
+ ldr x0, [x0, x27]
; gcrRegs +[x0]
; byrRegs -[x0]
ldr x1, [x0]
@@ -99,7 +101,7 @@ G_M59545_IG05: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
ldr x1, [x1, #0x38]
blr x1
; gcr arg pop 0
- mov x1, x24
+ mov x1, x25
; gcrRegs +[x1]
ldr x2, [x0]
ldr x2, [x2, #0xB8]
@@ -109,26 +111,26 @@ G_M59545_IG05: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
; gcr arg pop 0
cbnz w0, G_M59545_IG08
;; size=48 bbWeight=8 PerfScore 200.00
-G_M59545_IG06: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=80000 {x19}, byref, isz
- add w25, w25, #1
- cmp w22, w25
+G_M59545_IG06: ; bbWeight=16, gcrefRegs=2100000 {x20 x25}, byrefRegs=280000 {x19 x21}, byref, isz
+ add w26, w26, #1
+ cmp w22, w26
bgt G_M59545_IG04
;; size=12 bbWeight=16 PerfScore 32.00
G_M59545_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20-x21 x24]
- ; byrRegs -[x19]
+ ; gcrRegs -[x20 x25]
+ ; byrRegs -[x19 x21]
b G_M59545_IG11
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M59545_IG08: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref, isz
- ; gcrRegs +[x20-x21]
- ; byrRegs +[x19]
+G_M59545_IG08: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=280000 {x19 x21}, byref, isz
+ ; gcrRegs +[x20]
+ ; byrRegs +[x19 x21]
ldr x0, [x19]
; gcrRegs +[x0]
sxtw w1, w23
ldr w2, [x0, #0x08]
- cmp w25, w2
+ cmp w26, w2
bhs G_M59545_IG13
- add x2, x26, #16
+ add x2, x27, #16
add x0, x0, x2
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -136,53 +138,53 @@ G_M59545_IG08: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=80000
strb w2, [x0]
str w1, [x0, #0x04]
add w23, w23, #1
- ldr w0, [x21, #0x08]
- ; byrRegs -[x0]
- cmp w0, w23
+ cmp w24, w23
bgt G_M59545_IG03
- ;; size=56 bbWeight=4 PerfScore 66.00
+ ;; size=52 bbWeight=4 PerfScore 54.00
G_M59545_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20-x21]
- ; byrRegs -[x19]
+ ; gcrRegs -[x20]
+ ; byrRegs -[x0 x19 x21]
mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M59545_IG10: ; bbWeight=0.50, epilog, nogc, extend
- 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
+ ldr x27, [sp, #0x58]
+ ldp x25, x26, [sp, #0x48]
+ ldp x23, x24, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=24 bbWeight=0.50 PerfScore 3.00
+ ;; size=28 bbWeight=0.50 PerfScore 4.00
G_M59545_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M59545_IG12: ; bbWeight=0.50, epilog, nogc, extend
- 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
+ ldr x27, [sp, #0x58]
+ ldp x25, x26, [sp, #0x48]
+ ldp x23, x24, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=24 bbWeight=0.50 PerfScore 3.00
+ ;; size=28 bbWeight=0.50 PerfScore 4.00
G_M59545_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 328, prolog size 36, PerfScore 567.00, instruction count 82, allocated bytes for code 328 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
+; Total bytes of code 332, prolog size 40, PerfScore 544.50, instruction count 83, allocated bytes for code 332 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 3
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 82 (0x00052) Actual length = 328 (0x000148)
+ Function Length : 83 (0x00053) Actual length = 332 (0x00014c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -193,10 +195,13 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+ D2 0B save_reg X#8 Z#11 (0x0B); str x27, [sp, #88]
E6 save_next
E6 save_next
E6 save_next
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
...
+16 (+1.39%) : 3932.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
@@ -11,10 +11,10 @@
; V00 arg0 [V00,T07] ( 22, 23 ) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[System.String]>
; V01 loc0 [V01,T19] ( 7, 3.50) ref -> x20 class-hnd exact single-def <System.String>
; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [fp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 39,149.08) int -> x22
+; V03 loc2 [V03,T00] ( 41,183.08) int -> x22
; V04 loc3 [V04,T22] ( 4, 2 ) int -> x0
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
-; V06 loc5 [V06,T06] ( 9, 25.50) int -> x21
+; V06 loc5 [V06,T06] ( 9, 25.50) int -> x23
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V09 tmp2 [V09,T04] ( 5, 28 ) ref -> x0 class-hnd exact "impAppendStmt" <System.String>
@@ -44,12 +44,12 @@
; V33 cse0 [V33,T14] ( 3, 10 ) int -> x0 "CSE - aggressive"
; V34 cse1 [V34,T28] ( 3, 1.50) long -> x24 "CSE - moderate"
; V35 cse2 [V35,T31] ( 2, 1 ) int -> x12 "CSE - moderate"
-; V36 cse3 [V36,T01] ( 3, 48 ) long -> x1 "CSE - aggressive"
+; V36 cse3 [V36,T02] ( 3, 48 ) long -> x1 "CSE - aggressive"
; V37 cse4 [V37,T11] ( 3, 12 ) long -> x1 "CSE - aggressive"
; V38 cse5 [V38,T12] ( 3, 12 ) int -> x2 "CSE - aggressive"
; V39 cse6 [V39,T10] ( 3, 12 ) ref -> x1 "CSE - aggressive"
-; V40 cse7 [V40,T03] ( 15, 30.54) int -> x21 "CSE - aggressive"
-; V41 cse8 [V41,T02] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
+; V40 cse7 [V40,T01] ( 17, 64.54) int -> x21 "CSE - aggressive"
+; V41 cse8 [V41,T03] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
; V42 cse9 [V42,T27] ( 3, 1.50) ref -> x1 "CSE - aggressive"
; V43 cse10 [V43,T17] ( 2, 8 ) int -> x3 "CSE - aggressive"
; V44 cse11 [V44,T13] ( 3, 11.88) int -> x0 "CSE - aggressive"
@@ -77,19 +77,19 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=56 bbWeight=1 PerfScore 10.50
G_M28069_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x10]
- cbz w0, G_M28069_IG28
+ cbz w0, G_M28069_IG27
;; size=8 bbWeight=1 PerfScore 4.00
G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w1, #0
- bls G_M28069_IG30
+ bls G_M28069_IG29
ldr x20, [x0, #0x10]
; gcrRegs +[x20]
ldr w21, [x20, #0x08]
cmp w21, #100
- bgt G_M28069_IG28
+ bgt G_M28069_IG27
add w0, w21, #2
; gcrRegs -[x0]
mov w1, #2
@@ -116,109 +116,107 @@ G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
mov x1, sp
;; size=8 bbWeight=0.50 PerfScore 0.50
G_M28069_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w0, #31, G_M28069_IG31
+ tbnz w0, #31, G_M28069_IG30
str x1, [fp, #-0x48] // [V23 tmp16]
str w0, [fp, #-0x40] // [V24 tmp17]
mov w22, wzr
cmp w21, #0
- ble G_M28069_IG15
+ ble G_M28069_IG14
add x23, x20, #12
; byrRegs +[x23]
;; size=28 bbWeight=0.50 PerfScore 2.75
G_M28069_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldrh w0, [x23, w22, UXTW #2]
cmp w0, #39
- bne G_M28069_IG11
+ bne G_M28069_IG10
;; size=12 bbWeight=4 PerfScore 18.00
G_M28069_IG08: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V24 tmp17]
cmp w22, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
ubfiz x1, x22, #1, #32
add x0, x0, x1
+ cmp w22, w21
+ bhs G_M28069_IG29
ldrh w1, [x23, x1]
strh w1, [x0]
add w22, w22, #1
cmp w21, w22
- ble G_M28069_IG09
+ ble G_M28069_IG27
+ cmp w22, w21
+ bhs G_M28069_IG29
ldrh w0, [x23, w22, UXTW #2]
; byrRegs -[x0]
cmp w0, #39
bne G_M28069_IG08
- ;; size=56 bbWeight=16 PerfScore 280.00
-G_M28069_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
- cmp w21, w22
- bgt G_M28069_IG12
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19-x20]
- ; byrRegs -[x23]
- b G_M28069_IG28
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
- ; gcrRegs +[x19-x20]
- ; byrRegs +[x23]
+ ;; size=72 bbWeight=16 PerfScore 328.00
+G_M28069_IG09: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref
+ b G_M28069_IG11
+ ;; size=4 bbWeight=4 PerfScore 4.00
+G_M28069_IG10: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
cmp w0, #121
- beq G_M28069_IG14
+ beq G_M28069_IG13
;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V24 tmp17]
cmp w22, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
ubfiz x1, x22, #1, #32
add x0, x0, x1
+ cmp w22, w21
+ bhs G_M28069_IG29
ldrh w1, [x23, x1]
strh w1, [x0]
add w22, w22, #1
cmp w21, w22
bgt G_M28069_IG07
- ;; size=44 bbWeight=4 PerfScore 52.00
-G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=52 bbWeight=4 PerfScore 58.00
+G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x23]
- b G_M28069_IG15
+ b G_M28069_IG14
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #-0x40] // [V24 tmp17]
cmp w22, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
mov w1, #121
strh w1, [x0, w22, UXTW #2]
;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
sub w0, w21, #1
cmp w0, w22
- ble G_M28069_IG28
+ ble G_M28069_IG27
add w0, w22, #1
cmp w0, w21
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
add x23, x20, #12
; byrRegs +[x23]
add w0, w22, #1
ubfiz x24, x0, #1, #32
ldrh w0, [x23, x24]
cmp w0, #121
- bne G_M28069_IG28
+ bne G_M28069_IG27
add w25, w22, #2
cmp w21, w25
- ble G_M28069_IG16
+ ble G_M28069_IG15
cmp w25, w21
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldrh w0, [x23, w25, UXTW #2]
cmp w0, #121
- beq G_M28069_IG28
+ beq G_M28069_IG27
;; size=80 bbWeight=0.50 PerfScore 9.25
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w0, w22, #3
ldr w1, [fp, #-0x40] // [V24 tmp17]
cmp w0, w1
- blt G_M28069_IG17
+ blt G_M28069_IG16
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -232,11 +230,11 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
; gcrRegs -[x0]
; gcr arg pop 0
;; size=52 bbWeight=0.50 PerfScore 5.75
-G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w0, w22, #1
ldr w1, [fp, #-0x40] // [V24 tmp17]
cmp w0, w1
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
mov w1, #121
@@ -244,7 +242,7 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
ldr w0, [fp, #-0x40] // [V24 tmp17]
; byrRegs -[x0]
cmp w25, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
strh w1, [x0, w25, UXTW #2]
@@ -252,7 +250,7 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
; byrRegs -[x0]
ldr w1, [fp, #-0x40] // [V24 tmp17]
cmp w0, w1
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
add w1, w22, #3
@@ -260,15 +258,15 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
strh w2, [x0, w1, UXTW #2]
sxtw w22, w25
cmp w21, w22
- ble G_M28069_IG21
- tbnz w22, #31, G_M28069_IG20
+ ble G_M28069_IG20
+ tbnz w22, #31, G_M28069_IG19
;; size=96 bbWeight=0.50 PerfScore 12.50
-G_M28069_IG18: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0]
add w0, w22, #2
ldr w1, [fp, #-0x40] // [V24 tmp17]
cmp w0, w1
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x1, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x1]
ubfiz x0, x0, #1, #32
@@ -279,32 +277,32 @@ G_M28069_IG18: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800
strh w1, [x0]
add w22, w22, #1
...
benchmarks.run_pgo.linux.arm64.checked.mch
-32 (-20.51%) : 130937.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (Tier1)
@@ -5,19 +5,21 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 8512
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 8512
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T02] ( 7, 6.96) int -> x4
+; V02 loc0 [V02,T00] ( 7, 6.96) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 6, 11.74) int -> x5 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 2.97) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T03] ( 5, 4.00) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 2.97) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T01] ( 6, 4.97) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T04] ( 6, 5.90) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T05] ( 2, 3.99) int -> x4 "dup spill"
+; V05 tmp2 [V05,T03] ( 2, 2.00) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T02] ( 4, 3.03) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T04] ( 2, 2.00) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T01] ( 5, 4.00) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T07] ( 3, 2.96) int -> x6 "CSE - aggressive"
+; V10 cse1 [V10,T08] ( 3, 2.96) int -> x5 "CSE - aggressive"
+; V11 cse2 [V11,T06] ( 3, 2.99) long -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -28,72 +30,63 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
; byrRegs +[x0 x2]
cmp w1, w3
- bne G_M264_IG09
+ bne G_M264_IG11
;; size=8 bbWeight=1 PerfScore 1.50
G_M264_IG03: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
sxtw w4, w3
;; size=4 bbWeight=0.97 PerfScore 0.48
G_M264_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1
- sxtw w4, w5
- tbnz w4, #31, G_M264_IG06
- ;; size=12 bbWeight=1.00 PerfScore 2.00
+ sub w4, w4, #1
+ tbnz w4, #31, G_M264_IG09
+ ;; size=8 bbWeight=1.00 PerfScore 1.50
G_M264_IG05: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
cmp w4, w1
- bhs G_M264_IG12
- ubfiz x6, x4, #2, #32
- ldr w7, [x0, x6]
+ bhs G_M264_IG14
+ ubfiz x5, x4, #2, #32
+ ldr w6, [x0, x5]
cmp w4, w3
- bhs G_M264_IG12
- ldr w6, [x2, x6]
- cmp w7, w6
+ bhs G_M264_IG14
+ ldr w5, [x2, x5]
+ cmp w6, w5
beq G_M264_IG04
;; size=36 bbWeight=1.00 PerfScore 11.47
-G_M264_IG06: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- tbnz w5, #31, G_M264_IG13
- cmp w5, w1
- bhs G_M264_IG12
- ubfiz x6, x5, #2, #32
- ldr w0, [x0, x6]
- ; byrRegs -[x0]
- cmp w5, w3
- bhs G_M264_IG12
- ldr w1, [x2, x6]
- cmp w0, w1
- blo G_M264_IG10
- ;; size=40 bbWeight=0.97 PerfScore 12.11
+G_M264_IG06: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0 x2]
+ cmp w5, w6
+ bhi G_M264_IG12
+ ;; size=8 bbWeight=0.97 PerfScore 1.45
G_M264_IG07: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
mov w0, #1
;; size=4 bbWeight=0.74 PerfScore 0.37
G_M264_IG08: ; bbWeight=0.74, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.74 PerfScore 1.47
-G_M264_IG09: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M264_IG09: ; bbWeight=0.97, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.97 PerfScore 0.48
+G_M264_IG10: ; bbWeight=0.97, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.97 PerfScore 1.94
+G_M264_IG11: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp w1, w3
bge G_M264_IG07
;; size=8 bbWeight=0.03 PerfScore 0.05
-G_M264_IG10: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M264_IG12: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movn w0, #0
;; size=4 bbWeight=0.26 PerfScore 0.13
-G_M264_IG11: ; bbWeight=0.26, epilog, nogc, extend
+G_M264_IG13: ; bbWeight=0.26, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.26 PerfScore 0.53
-G_M264_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG14: ; 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_M264_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov w0, wzr
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M264_IG14: ; bbWeight=0, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
+ brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 156, prolog size 8, PerfScore 31.61, instruction count 39, allocated bytes for code 156 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 124, prolog size 8, PerfScore 22.88, instruction count 31, allocated bytes for code 124 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================
Unwind Info:
@@ -104,7 +97,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-6.94%) : 46656.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
@@ -9,18 +9,19 @@
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 300.17
; Final local variable assignments
;
-; V00 arg0 [V00,T09] ( 6, 24.15) ref -> x20 class-hnd single-def <int[]>
-; V01 arg1 [V01,T10] ( 3, 12.07) int -> x1 single-def
-; V02 arg2 [V02,T07] ( 6, 71.82) int -> x19 single-def
-; V03 loc0 [V03,T00] ( 14,724.24) int -> x21
-; V04 loc1 [V04,T01] ( 10,701.19) int -> x2
-; V05 loc2 [V05,T04] ( 3,213.47) int -> x0
-; V06 loc3 [V06,T08] ( 4, 63.54) int -> x6
+; V00 arg0 [V00,T10] ( 6, 24.15) ref -> x20 class-hnd single-def <int[]>
+; V01 arg1 [V01,T11] ( 3, 12.07) int -> x1 single-def
+; V02 arg2 [V02,T08] ( 6, 71.82) int -> x19 single-def
+; V03 loc0 [V03,T00] ( 13,690.22) int -> x21
+; V04 loc1 [V04,T01] ( 7,619.28) int -> x2
+; V05 loc2 [V05,T05] ( 3,213.47) int -> x0
+; V06 loc3 [V06,T09] ( 4, 63.54) int -> x7
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T05] ( 2, 95.79) int -> x7 "Strict ordering of exceptions for Array store"
-; V09 cse0 [V09,T06] ( 6, 95.32) long -> x5 multi-def "CSE - aggressive"
-; V10 cse1 [V10,T03] ( 7,270.19) int -> x3 hoist "CSE - aggressive"
-; V11 cse2 [V11,T02] ( 10,325.91) byref -> x4 hoist "CSE - aggressive"
+; V08 tmp1 [V08,T06] ( 2, 95.79) int -> x5 "Strict ordering of exceptions for Array store"
+; V09 cse0 [V09,T04] ( 3,235.24) int -> x5 "CSE - aggressive"
+; V10 cse1 [V10,T07] ( 6, 95.32) long -> x6 multi-def "CSE - aggressive"
+; V11 cse2 [V11,T03] ( 6,246.24) int -> x3 hoist "CSE - aggressive"
+; V12 cse3 [V12,T02] ( 9,301.96) byref -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 8
@@ -50,7 +51,7 @@ G_M63260_IG04: ; bbWeight=104.92, gcrefRegs=100000 {x20}, byrefRegs=0010
;; size=8 bbWeight=104.92 PerfScore 157.38
G_M63260_IG05: ; bbWeight=100, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16
+ bhs G_M63260_IG15
ldr w5, [x4, w21, UXTW #2]
cmp w5, w0
ble G_M63260_IG03
@@ -63,46 +64,39 @@ G_M63260_IG07: ; bbWeight=81.70, gcrefRegs=100000 {x20}, byrefRegs=0010 {
;; size=4 bbWeight=81.70 PerfScore 40.85
G_M63260_IG08: ; bbWeight=115.72, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w2, w21
- ble G_M63260_IG10
+ ble G_M63260_IG11
;; size=8 bbWeight=115.72 PerfScore 173.58
G_M63260_IG09: ; bbWeight=105.65, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w2, w3
- bhs G_M63260_IG16
+ bhs G_M63260_IG15
ldr w5, [x4, w2, UXTW #2]
cmp w5, w0
bge G_M63260_IG07
;; size=20 bbWeight=105.65 PerfScore 633.88
-G_M63260_IG10: ; bbWeight=34.02, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
- cmp w21, w2
- bge G_M63260_IG12
- ;; size=8 bbWeight=34.02 PerfScore 51.03
-G_M63260_IG11: ; bbWeight=23.95, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+G_M63260_IG10: ; bbWeight=23.95, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16
- ubfiz x5, x21, #2, #32
- ldr w6, [x4, x5]
- cmp w2, w3
- bhs G_M63260_IG16
- ldr w7, [x4, w2, UXTW #2]
- str w7, [x4, x5]
- str w6, [x4, w2, UXTW #2]
+ bhs G_M63260_IG15
+ ubfiz x6, x21, #2, #32
+ ldr w7, [x4, x6]
+ str w5, [x4, x6]
+ str w7, [x4, w2, UXTW #2]
b G_M63260_IG04
- ;; size=40 bbWeight=23.95 PerfScore 311.30
-G_M63260_IG12: ; bbWeight=44.10, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+ ;; size=28 bbWeight=23.95 PerfScore 203.54
+G_M63260_IG11: ; bbWeight=44.10, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w19
- beq G_M63260_IG14
+ beq G_M63260_IG13
;; size=8 bbWeight=44.10 PerfScore 66.15
-G_M63260_IG13: ; bbWeight=7.83, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+G_M63260_IG12: ; bbWeight=7.83, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16
- ubfiz x5, x21, #2, #32
- ldr w6, [x4, x5]
- str w0, [x4, x5]
+ bhs G_M63260_IG15
+ ubfiz x6, x21, #2, #32
+ ldr w7, [x4, x6]
+ str w0, [x4, x6]
cmp w19, w3
- bhs G_M63260_IG16
- str w6, [x4, w19, UXTW #2]
+ bhs G_M63260_IG15
+ str w7, [x4, w19, UXTW #2]
;; size=32 bbWeight=7.83 PerfScore 70.43
-G_M63260_IG14: ; bbWeight=10.07, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M63260_IG13: ; bbWeight=10.07, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; byrRegs -[x4]
sub w2, w21, #1
mov x0, x20
@@ -126,20 +120,20 @@ G_M63260_IG14: ; bbWeight=10.07, gcrefRegs=100000 {x20}, byrefRegs=0000 {
; gcrRegs -[x0 x20]
; gcr arg pop 0
;; size=60 bbWeight=10.07 PerfScore 136.00
-G_M63260_IG15: ; bbWeight=10.07, epilog, nogc, extend
+G_M63260_IG14: ; bbWeight=10.07, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
add sp, sp, #64
ret lr
;; size=20 bbWeight=10.07 PerfScore 55.41
-G_M63260_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M63260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 288, prolog size 32, PerfScore 2376.56, instruction count 72, allocated bytes for code 288 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
+; Total bytes of code 268, prolog size 32, PerfScore 2217.77, instruction count 67, allocated bytes for code 268 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -150,7 +144,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 72 (0x00048) Actual length = 288 (0x000120)
+ Function Length : 67 (0x00043) Actual length = 268 (0x00010c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-6.94%) : 46672.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
@@ -9,18 +9,19 @@
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 237690.9
; Final local variable assignments
;
-; V00 arg0 [V00,T09] ( 6, 24.35) ref -> x20 class-hnd single-def <int[]>
-; V01 arg1 [V01,T10] ( 3, 12.17) int -> x1 single-def
-; V02 arg2 [V02,T07] ( 6, 72.66) int -> x19 single-def
-; V03 loc0 [V03,T00] ( 14,724.21) int -> x21
-; V04 loc1 [V04,T01] ( 10,700.36) int -> x2
-; V05 loc2 [V05,T04] ( 3,213.77) int -> x0
-; V06 loc3 [V06,T08] ( 4, 63.59) int -> x6
+; V00 arg0 [V00,T10] ( 6, 24.35) ref -> x20 class-hnd single-def <int[]>
+; V01 arg1 [V01,T11] ( 3, 12.17) int -> x1 single-def
+; V02 arg2 [V02,T08] ( 6, 72.66) int -> x19 single-def
+; V03 loc0 [V03,T00] ( 13,690.08) int -> x21
+; V04 loc1 [V04,T01] ( 7,618.82) int -> x2
+; V05 loc2 [V05,T05] ( 3,213.77) int -> x0
+; V06 loc3 [V06,T09] ( 4, 63.59) int -> x7
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T06] ( 2, 94.81) int -> x7 "Strict ordering of exceptions for Array store"
-; V09 cse0 [V09,T05] ( 6, 95.38) long -> x5 multi-def "CSE - aggressive"
-; V10 cse1 [V10,T03] ( 7,270.27) int -> x3 hoist "CSE - aggressive"
-; V11 cse2 [V11,T02] ( 10,325.77) byref -> x4 hoist "CSE - aggressive"
+; V08 tmp1 [V08,T07] ( 2, 94.81) int -> x5 "Strict ordering of exceptions for Array store"
+; V09 cse0 [V09,T04] ( 3,235.07) int -> x5 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 6, 95.38) long -> x6 multi-def "CSE - aggressive"
+; V11 cse2 [V11,T03] ( 6,246.57) int -> x3 hoist "CSE - aggressive"
+; V12 cse3 [V12,T02] ( 9,302.07) byref -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 8
@@ -50,7 +51,7 @@ G_M63260_IG04: ; bbWeight=104.78, gcrefRegs=100000 {x20}, byrefRegs=0010
;; size=8 bbWeight=104.78 PerfScore 157.18
G_M63260_IG05: ; bbWeight=100, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16
+ bhs G_M63260_IG15
ldr w5, [x4, w21, UXTW #2]
cmp w5, w0
ble G_M63260_IG03
@@ -63,46 +64,39 @@ G_M63260_IG07: ; bbWeight=81.61, gcrefRegs=100000 {x20}, byrefRegs=0010 {
;; size=4 bbWeight=81.61 PerfScore 40.81
G_M63260_IG08: ; bbWeight=115.74, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w2, w21
- ble G_M63260_IG10
+ ble G_M63260_IG11
;; size=8 bbWeight=115.74 PerfScore 173.62
G_M63260_IG09: ; bbWeight=105.68, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w2, w3
- bhs G_M63260_IG16
+ bhs G_M63260_IG15
ldr w5, [x4, w2, UXTW #2]
cmp w5, w0
bge G_M63260_IG07
;; size=20 bbWeight=105.68 PerfScore 634.09
-G_M63260_IG10: ; bbWeight=34.13, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
- cmp w21, w2
- bge G_M63260_IG12
- ;; size=8 bbWeight=34.13 PerfScore 51.20
-G_M63260_IG11: ; bbWeight=23.70, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+G_M63260_IG10: ; bbWeight=23.70, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16
- ubfiz x5, x21, #2, #32
- ldr w6, [x4, x5]
- cmp w2, w3
- bhs G_M63260_IG16
- ldr w7, [x4, w2, UXTW #2]
- str w7, [x4, x5]
- str w6, [x4, w2, UXTW #2]
+ bhs G_M63260_IG15
+ ubfiz x6, x21, #2, #32
+ ldr w7, [x4, x6]
+ str w5, [x4, x6]
+ str w7, [x4, w2, UXTW #2]
b G_M63260_IG04
- ;; size=40 bbWeight=23.70 PerfScore 308.14
-G_M63260_IG12: ; bbWeight=44.30, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+ ;; size=28 bbWeight=23.70 PerfScore 201.48
+G_M63260_IG11: ; bbWeight=44.30, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w19
- beq G_M63260_IG14
+ beq G_M63260_IG13
;; size=8 bbWeight=44.30 PerfScore 66.46
-G_M63260_IG13: ; bbWeight=8.09, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+G_M63260_IG12: ; bbWeight=8.09, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16
- ubfiz x5, x21, #2, #32
- ldr w6, [x4, x5]
- str w0, [x4, x5]
+ bhs G_M63260_IG15
+ ubfiz x6, x21, #2, #32
+ ldr w7, [x4, x6]
+ str w0, [x4, x6]
cmp w19, w3
- bhs G_M63260_IG16
- str w6, [x4, w19, UXTW #2]
+ bhs G_M63260_IG15
+ str w7, [x4, w19, UXTW #2]
;; size=32 bbWeight=8.09 PerfScore 72.83
-G_M63260_IG14: ; bbWeight=10.17, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M63260_IG13: ; bbWeight=10.17, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; byrRegs -[x4]
sub w2, w21, #1
mov x0, x20
@@ -126,20 +120,20 @@ G_M63260_IG14: ; bbWeight=10.17, gcrefRegs=100000 {x20}, byrefRegs=0000 {
; gcrRegs -[x0 x20]
; gcr arg pop 0
;; size=60 bbWeight=10.17 PerfScore 137.34
-G_M63260_IG15: ; bbWeight=10.17, epilog, nogc, extend
+G_M63260_IG14: ; bbWeight=10.17, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
add sp, sp, #64
ret lr
;; size=20 bbWeight=10.17 PerfScore 55.95
-G_M63260_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M63260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 288, prolog size 32, PerfScore 2378.29, instruction count 72, allocated bytes for code 288 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
+; Total bytes of code 268, prolog size 32, PerfScore 2220.43, instruction count 67, allocated bytes for code 268 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -150,7 +144,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 72 (0x00048) Actual length = 288 (0x000120)
+ Function Length : 67 (0x00043) Actual length = 268 (0x00010c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+6.56%) : 82712.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
@@ -9,19 +9,19 @@
; 3 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 9, 5 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V00 this [V00,T00] ( 9, 5 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
;* V01 loc0 [V01,T09] ( 0, 0 ) ubyte -> zero-ref single-def
-; V02 loc1 [V02,T03] ( 5, 5 ) ubyte -> x20
+; V02 loc1 [V02,T06] ( 5, 3 ) ubyte -> x20
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V06 tmp2 [V06,T06] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
-; V07 tmp3 [V07,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V06 tmp2 [V06,T05] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
+; V07 tmp3 [V07,T03] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
; V08 tmp4 [V08,T07] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V09 tmp5 [V09,T00] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V10 tmp6 [V10,T05] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
-; V11 tmp7 [V11,T08] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V12 tmp8 [V12,T01] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V09 tmp5 [V09,T01] ( 5, 5.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V10 tmp6 [V10,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V11 tmp7 [V11,T08] ( 3, 2.50) long -> x2 "fgMakeTemp is creating a new local variable"
+; V12 tmp8 [V12,T02] ( 5, 5.50) ref -> x3 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;
; Lcl frame size = 8
@@ -38,16 +38,16 @@ G_M43843_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
mov w20, wzr
ldr x21, [x19, #0x80]
; gcrRegs +[x21]
- cbz x21, G_M43843_IG14
+ cbz x21, G_M43843_IG12
ldrb w0, [x21, #0x18]
- tbz w0, #1, G_M43843_IG14
+ tbz w0, #1, G_M43843_IG12
;; size=20 bbWeight=1 PerfScore 8.50
G_M43843_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr x1, [x21, #0x08]
; gcrRegs +[x1]
mov x2, x1
; gcrRegs +[x2]
- cbz x2, G_M43843_IG07
+ cbz x2, G_M43843_IG06
;; size=12 bbWeight=1 PerfScore 4.50
G_M43843_IG04: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x21]
@@ -56,7 +56,7 @@ G_M43843_IG04: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=00
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
cmp x0, x3
- beq G_M43843_IG06
+ beq G_M43843_IG13
;; size=24 bbWeight=0.50 PerfScore 3.00
G_M43843_IG05: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
@@ -65,60 +65,54 @@ G_M43843_IG05: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
; gcrRegs -[x1] +[x0]
mov x2, x0
; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M43843_IG06: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldrb w20, [x2, #0x84]
- ;; size=4 bbWeight=1 PerfScore 3.00
-G_M43843_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
- cbnz w20, G_M43843_IG12
+ b G_M43843_IG13
+ ;; size=16 bbWeight=0.25 PerfScore 0.75
+G_M43843_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0 x2]
+ cbnz w20, G_M43843_IG10
ldr x0, [x19, #0x88]
; gcrRegs +[x0]
- cbz x0, G_M43843_IG15
+ cbz x0, G_M43843_IG14
;; size=12 bbWeight=1 PerfScore 5.00
-G_M43843_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M43843_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x0, [x19, #0x88]
; gcrRegs +[x0]
ldr x1, [x0, #0x08]
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M43843_IG12
+ mov x3, x1
+ ; gcrRegs +[x3]
+ cbz x3, G_M43843_IG10
;; size=16 bbWeight=1 PerfScore 7.50
-G_M43843_IG09: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M43843_IG08: ; bbWeight=0.50, gcrefRegs=000A {x1 x3}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x19]
- ldr x0, [x2]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- cmp x0, x3
- beq G_M43843_IG11
+ ldr x0, [x3]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x0, x2
+ beq G_M43843_IG15
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M43843_IG10: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
- mov x0, x3
+G_M43843_IG09: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x3]
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M43843_IG11: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldrb w20, [x2, #0x84]
- ;; size=4 bbWeight=1 PerfScore 3.00
-G_M43843_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
+ mov x3, x0
+ ; gcrRegs +[x3]
+ b G_M43843_IG15
+ ;; size=16 bbWeight=0.25 PerfScore 0.75
+G_M43843_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x3]
mov w0, w20
;; size=4 bbWeight=1 PerfScore 0.50
-G_M43843_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M43843_IG11: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-G_M43843_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M43843_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
mov x0, x19
; gcrRegs +[x0]
@@ -132,8 +126,13 @@ G_M43843_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
; gcrRegs +[x21]
b G_M43843_IG03
;; size=32 bbWeight=0 PerfScore 0.00
-G_M43843_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x21]
+G_M43843_IG13: ; bbWeight=0, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x21] +[x2]
+ ldrb w20, [x2, #0x84]
+ b G_M43843_IG06
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M43843_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x2]
add x1, x19, #136
; byrRegs +[x1]
mov x0, x19
@@ -145,10 +144,15 @@ G_M43843_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x2
; gcrRegs -[x0]
; byrRegs -[x1]
- b G_M43843_IG08
+ b G_M43843_IG07
;; size=32 bbWeight=0 PerfScore 0.00
+G_M43843_IG15: ; bbWeight=0, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19] +[x3]
+ ldrb w20, [x3, #0x84]
+ b G_M43843_IG10
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 16, PerfScore 48.00, instruction count 61, allocated bytes for code 244 (MethodHash=f14d54bc) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
+; Total bytes of code 260, prolog size 16, PerfScore 42.50, instruction count 65, allocated bytes for code 260 (MethodHash=f14d54bc) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -159,7 +163,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
+ Function Length : 65 (0x00041) Actual length = 260 (0x000104)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+36 (+8.11%) : 135054.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
@@ -5,22 +5,22 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 41032
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 41032
; 8 inlinees with PGO data; 19 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) ref -> x20 this class-hnd single-def <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]>
-; V01 arg1 [V01,T03] ( 3, 3 ) byref -> x21 single-def
-; V02 arg2 [V02,T00] ( 5, 4 ) int -> x19 single-def
-; V03 arg3 [V03,T04] ( 3, 3 ) byref -> x22 single-def
+; V00 this [V00,T02] ( 4, 3 ) ref -> x20 this class-hnd single-def <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]>
+; V01 arg1 [V01,T03] ( 4, 3 ) byref -> x21 single-def
+; V02 arg2 [V02,T00] ( 6, 4 ) int -> x19 single-def
+; V03 arg3 [V03,T04] ( 4, 3 ) byref -> x22 single-def
; V04 arg4 [V04,T06] ( 3, 3 ) int -> x4 single-def
; V05 arg5 [V05,T05] ( 3, 3 ) byref -> x23 single-def
-; V06 loc0 [V06,T08] ( 3, 3 ) int -> x24
-; V07 loc1 [V07,T10] ( 2, 2 ) byref -> x22
+; V06 loc0 [V06,T09] ( 4, 3 ) int -> x24
+; V07 loc1 [V07,T10] ( 4, 2 ) byref -> x25
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp2 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 tmp3 [V11,T07] ( 3, 4 ) int -> x25 "Inlining Arg"
+; V11 tmp3 [V11,T07] ( 4, 4 ) int -> x26 "Inlining Arg"
;* V12 tmp4 [V12 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V13 tmp5 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -29,7 +29,7 @@
;* V17 tmp9 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp10 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V19 tmp11 [V19 ] ( 0, 0 ) byref -> zero-ref "Spilling op1 side effects for Unsafe.ByteOffset"
-; V20 tmp12 [V20,T01] ( 8, 5 ) long -> x26 "Inline stloc first use temp"
+; V20 tmp12 [V20,T01] ( 10, 5 ) long -> x28 "Inline stloc first use temp"
;* V21 tmp13 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V22 tmp14 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V23 tmp15 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -61,16 +61,17 @@
;* V49 tmp41 [V49 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
;* V50 tmp42 [V50 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP
;* V51 tmp43 [V51 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
-; V52 cse0 [V52,T09] ( 3, 3 ) long -> x22 "CSE - aggressive"
+; V52 cse0 [V52,T08] ( 5, 3 ) long -> x27 "CSE - aggressive"
;
; Lcl frame size = 0
G_M44984_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
stp x19, x20, [sp, #0x10]
stp x21, x22, [sp, #0x20]
stp x23, x24, [sp, #0x30]
stp x25, x26, [sp, #0x40]
+ stp x27, x28, [sp, #0x50]
mov fp, sp
mov x20, x0
; gcrRegs +[x20]
@@ -81,73 +82,52 @@ G_M44984_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; byrRegs +[x22]
mov x23, x5
; byrRegs +[x23]
- ;; size=44 bbWeight=1 PerfScore 8.00
+ ;; size=48 bbWeight=1 PerfScore 9.00
G_M44984_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=E00000 {x21 x22 x23}, byref, isz
rbit w0, w4
clz w24, w0
tbnz w24, #0, G_M44984_IG08
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M44984_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=E00000 {x21 x22 x23}, byref, isz
sxtw x0, w24
- add x22, x22, x0
+ add x25, x22, x0
+ ; byrRegs +[x25]
ldr x0, [x20, #0x10]
; gcrRegs +[x0]
- ldr w25, [x0, #0x08]
- tbz w19, #31, G_M44984_IG04
- movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- movz x1, #0xD1FFAB1E
- 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
- ; gcrRegs -[x20]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- movz x1, #0xD1FFAB1E
- 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=108 bbWeight=1 PerfScore 25.00
-G_M44984_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=E00000 {x21 x22 x23}, byref, isz
- sub x22, x22, x21
+ ldr w26, [x0, #0x08]
+ tbnz w19, #31, G_M44984_IG09
+ ;; size=32 bbWeight=1 PerfScore 10.50
+G_M44984_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=2A00000 {x21 x23 x25}, byref, isz
+ ; gcrRegs -[x0 x20]
; byrRegs -[x22]
- mov x26, x22
- tbnz x26, #63, G_M44984_IG09
- tbnz w26, #0, G_M44984_IG10
- ;; size=16 bbWeight=1 PerfScore 3.00
+ sub x27, x25, x21
+ mov x28, x27
+ tbnz x28, #63, G_M44984_IG10
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M44984_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
+ ; byrRegs -[x21 x25]
+ tbnz w28, #0, G_M44984_IG11
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M44984_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
- ; byrRegs -[x21]
- add x0, x26, x26, LSR #63
+ add x0, x28, x28, LSR #63
asr x0, x0, #1
sub w0, w19, w0
- cmp w0, w25
- blt G_M44984_IG11
+ cmp w0, w26
+ blt G_M44984_IG12
;; size=20 bbWeight=1 PerfScore 4.00
G_M44984_IG06: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
- lsr x0, x22, #1
+ lsr x0, x27, #1
str w0, [x23]
mov w0, #1
;; size=12 bbWeight=1.00 PerfScore 2.50
G_M44984_IG07: ; bbWeight=1.00, epilog, nogc, extend
+ ldp x27, x28, [sp, #0x50]
ldp x25, x26, [sp, #0x40]
ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=24 bbWeight=1.00 PerfScore 6.00
-G_M44984_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=E00000 {x21 x22 x23}, gcvars, byref
+ ;; size=28 bbWeight=1.00 PerfScore 7.00
+G_M44984_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=E00000 {x21 x22 x23}, gcvars, byref, isz
; gcrRegs +[x20]
; byrRegs +[x21-x22]
movz x0, #0xD1FFAB1E
@@ -161,11 +141,17 @@ G_M44984_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- b G_M44984_IG03
- ;; size=48 bbWeight=0 PerfScore 0.00
-G_M44984_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
- ; gcrRegs -[x20]
- ; byrRegs -[x21-x22]
+ sxtw x0, w24
+ add x25, x22, x0
+ ; byrRegs +[x25]
+ ldr x0, [x20, #0x10]
+ ; gcrRegs +[x0]
+ ldr w26, [x0, #0x08]
+ tbz w19, #31, G_M44984_IG03
+ ;; size=64 bbWeight=0 PerfScore 0.00
+G_M44984_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=2A00000 {x21 x23 x25}, byref, isz
+ ; gcrRegs -[x0 x20]
+ ; byrRegs -[x22]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -177,9 +163,23 @@ G_M44984_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- tbz w26, #0, G_M44984_IG05
- ;; size=48 bbWeight=0 PerfScore 0.00
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ movz x1, #0xD1FFAB1E
+ 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
+ sub x27, x25, x21
+ mov x28, x27
+ tbz x28, #63, G_M44984_IG04
+ ;; size=100 bbWeight=0 PerfScore 0.00
G_M44984_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
+ ; byrRegs -[x21 x25]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -191,13 +191,27 @@ G_M44984_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- add x0, x26, x26, LSR #63
+ tbz w28, #0, G_M44984_IG05
+ ;; size=48 bbWeight=0 PerfScore 0.00
+G_M44984_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ movz x1, #0xD1FFAB1E
+ 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
+ add x0, x28, x28, LSR #63
asr x0, x0, #1
sub w0, w19, w0
- cmp w0, w25
+ cmp w0, w26
bge G_M44984_IG06
;; size=64 bbWeight=0 PerfScore 0.00
-G_M44984_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
+G_M44984_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -212,18 +226,18 @@ G_M44984_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b
b G_M44984_IG06
;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 444, prolog size 24, PerfScore 51.00, instruction count 111, allocated bytes for code 444 (MethodHash=d0aa5047) for method System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
+; Total bytes of code 480, prolog size 28, PerfScore 36.00, instruction count 120, allocated bytes for code 480 (MethodHash=d0aa5047) for method System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
...
+20 (+8.20%) : 86693.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
@@ -9,18 +9,18 @@
; 3 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 9, 5 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
-; V01 loc0 [V01,T03] ( 5, 5 ) int -> x20
+; V00 this [V00,T00] ( 10, 5 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V01 loc0 [V01,T08] ( 5, 2 ) int -> x20
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V05 tmp2 [V05,T06] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
-; V06 tmp3 [V06,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
-; V07 tmp4 [V07,T07] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V08 tmp5 [V08,T00] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V09 tmp6 [V09,T05] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
-; V10 tmp7 [V10,T08] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V11 tmp8 [V11,T01] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V05 tmp2 [V05,T05] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
+; V06 tmp3 [V06,T03] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V07 tmp4 [V07,T06] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
+; V08 tmp5 [V08,T01] ( 5, 5.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V09 tmp6 [V09,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V10 tmp7 [V10,T07] ( 3, 2.50) long -> x2 "fgMakeTemp is creating a new local variable"
+; V11 tmp8 [V11,T02] ( 5, 5.50) ref -> x3 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;
; Lcl frame size = 8
@@ -37,16 +37,16 @@ G_M4380_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
mov w20, wzr
ldr x21, [x19, #0x80]
; gcrRegs +[x21]
- cbz x21, G_M4380_IG14
+ cbz x21, G_M4380_IG12
ldrb w0, [x21, #0x18]
- tbz w0, #1, G_M4380_IG14
+ tbz w0, #1, G_M4380_IG12
;; size=20 bbWeight=1 PerfScore 8.50
G_M4380_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr x1, [x21, #0x08]
; gcrRegs +[x1]
mov x2, x1
; gcrRegs +[x2]
- cbz x2, G_M4380_IG07
+ cbz x2, G_M4380_IG06
;; size=12 bbWeight=1 PerfScore 4.50
G_M4380_IG04: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x21]
@@ -55,7 +55,7 @@ G_M4380_IG04: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=000
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
cmp x0, x3
- beq G_M4380_IG06
+ beq G_M4380_IG13
;; size=24 bbWeight=0.50 PerfScore 3.00
G_M4380_IG05: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
@@ -64,60 +64,53 @@ G_M4380_IG05: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {
; gcrRegs -[x1] +[x0]
mov x2, x0
; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M4380_IG06: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr w20, [x2, #0x80]
- ;; size=4 bbWeight=1 PerfScore 3.00
-G_M4380_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
+ b G_M4380_IG13
+ ;; size=16 bbWeight=0.25 PerfScore 0.75
+G_M4380_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0 x2]
ldr x0, [x19, #0x88]
; gcrRegs +[x0]
- cbz x0, G_M4380_IG15
+ cbz x0, G_M4380_IG14
;; size=8 bbWeight=1 PerfScore 4.00
-G_M4380_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x0, [x19, #0x88]
; gcrRegs +[x0]
ldr x1, [x0, #0x08]
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M4380_IG12
+ mov x3, x1
+ ; gcrRegs +[x3]
+ cbz x3, G_M4380_IG10
;; size=16 bbWeight=1 PerfScore 7.50
-G_M4380_IG09: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG08: ; bbWeight=0.50, gcrefRegs=000A {x1 x3}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x19]
- ldr x0, [x2]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- cmp x0, x3
- beq G_M4380_IG11
+ ldr x0, [x3]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x0, x2
+ beq G_M4380_IG15
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M4380_IG10: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
- mov x0, x3
+G_M4380_IG09: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x3]
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M4380_IG11: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr w0, [x2, #0x80]
- orr w20, w20, w0
- ;; size=8 bbWeight=1 PerfScore 3.50
-G_M4380_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
+ mov x3, x0
+ ; gcrRegs +[x3]
+ b G_M4380_IG15
+ ;; size=16 bbWeight=0.25 PerfScore 0.75
+G_M4380_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x3]
mov w0, w20
;; size=4 bbWeight=1 PerfScore 0.50
-G_M4380_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M4380_IG11: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-G_M4380_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M4380_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
mov x0, x19
; gcrRegs +[x0]
@@ -131,8 +124,15 @@ G_M4380_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {
; gcrRegs +[x21]
b G_M4380_IG03
;; size=32 bbWeight=0 PerfScore 0.00
-G_M4380_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x21]
+G_M4380_IG13: ; bbWeight=0, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x21] +[x2]
+ ldr w20, [x2, #0x80]
+ ldr x1, [x19, #0x88]
+ ; gcrRegs +[x1]
+ cbnz x1, G_M4380_IG07
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M4380_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1-x2]
add x1, x19, #136
; byrRegs +[x1]
mov x0, x19
@@ -144,10 +144,16 @@ G_M4380_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
blr x2
; gcrRegs -[x0]
; byrRegs -[x1]
- b G_M4380_IG08
+ b G_M4380_IG07
;; size=32 bbWeight=0 PerfScore 0.00
+G_M4380_IG15: ; bbWeight=0, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19] +[x3]
+ ldr w0, [x3, #0x80]
+ orr w20, w20, w0
+ b G_M4380_IG10
+ ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 16, PerfScore 47.50, instruction count 61, allocated bytes for code 244 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
+; Total bytes of code 264, prolog size 16, PerfScore 41.50, instruction count 66, allocated bytes for code 264 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
; ============================================================
Unwind Info:
@@ -158,7 +164,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
+ Function Length : 66 (0x00042) Actual length = 264 (0x000108)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run_tiered.linux.arm64.checked.mch
-36 (-21.95%) : 54999.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (Tier1)
@@ -11,12 +11,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
; V02 loc0 [V02,T00] ( 7, 24.50) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> x5 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x4 "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> x6 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> x5 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -33,51 +35,39 @@ G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x2]
cmp w1, w3
blt G_M264_IG11
- b G_M264_IG09
+ b G_M264_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
; byrRegs +[x0 x2]
sxtw w4, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1
- sxtw w4, w5
- tbnz w4, #31, G_M264_IG06
+ sub w4, w4, #1
+ tbnz w4, #31, G_M264_IG09
cmp w4, w1
bhs G_M264_IG13
- ubfiz x6, x4, #2, #32
- ldr w7, [x0, x6]
+ ubfiz x5, x4, #2, #32
+ ldr w6, [x0, x5]
cmp w4, w3
bhs G_M264_IG13
- ldr w6, [x2, x6]
- cmp w7, w6
+ ldr w5, [x2, x5]
+ cmp w6, w5
beq G_M264_IG05
- ;; size=48 bbWeight=4 PerfScore 54.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- tbz w5, #31, G_M264_IG08
- mov w0, wzr
- ; byrRegs -[x0]
+ ;; size=44 bbWeight=4 PerfScore 52.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0 x2]
+ cmp w5, w6
+ bhi G_M264_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref, isz
- ; byrRegs +[x0]
- cmp w5, w1
- bhs G_M264_IG13
- ubfiz x6, x5, #2, #32
- ldr w0, [x0, x6]
- ; byrRegs -[x0]
- cmp w5, w3
- bhs G_M264_IG13
- ldr w1, [x2, x6]
- cmp w0, w1
- blo G_M264_IG11
- ;; size=36 bbWeight=0.50 PerfScore 5.75
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
- mov w0, #1
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
@@ -96,7 +86,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 8, PerfScore 68.50, instruction count 41, allocated bytes for code 164 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 128, prolog size 8, PerfScore 61.00, instruction count 32, allocated bytes for code 128 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================
Unwind Info:
@@ -107,7 +97,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-6.94%) : 27729.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
@@ -8,18 +8,19 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T08] ( 6, 4.02) ref -> x20 class-hnd single-def <int[]>
-; V01 arg1 [V01,T10] ( 3, 3 ) int -> x1 single-def
-; V02 arg2 [V02,T05] ( 6, 12 ) int -> x19 single-def
-; V03 loc0 [V03,T00] ( 14,227 ) int -> x21
-; V04 loc1 [V04,T01] ( 10,134 ) int -> x2
+; V00 arg0 [V00,T09] ( 6, 4.02) ref -> x20 class-hnd single-def <int[]>
+; V01 arg1 [V01,T11] ( 3, 3 ) int -> x1 single-def
+; V02 arg2 [V02,T06] ( 6, 12 ) int -> x19 single-def
+; V03 loc0 [V03,T00] ( 13,219 ) int -> x21
+; V04 loc1 [V04,T01] ( 7,122 ) int -> x2
; V05 loc2 [V05,T04] ( 3, 80.50) int -> x0
-; V06 loc3 [V06,T09] ( 4, 5 ) int -> x6
+; V06 loc3 [V06,T10] ( 4, 5 ) int -> x7
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T06] ( 2, 8 ) int -> x7 "Strict ordering of exceptions for Array store"
-; V09 cse0 [V09,T07] ( 6, 7.50) long -> x5 multi-def "CSE - aggressive"
-; V10 cse1 [V10,T03] ( 7, 85.01) int -> x3 hoist "CSE - aggressive"
-; V11 cse2 [V11,T02] ( 10, 89.51) byref -> x4 hoist "CSE - aggressive"
+; V08 tmp1 [V08,T07] ( 2, 8 ) int -> x5 "Strict ordering of exceptions for Array store"
+; V09 cse0 [V09,T05] ( 3, 34 ) int -> x5 "CSE - aggressive"
+; V10 cse1 [V10,T08] ( 6, 7.50) long -> x6 multi-def "CSE - aggressive"
+; V11 cse2 [V11,T03] ( 6, 83.01) int -> x3 hoist "CSE - aggressive"
+; V12 cse3 [V12,T02] ( 9, 87.51) byref -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 8
@@ -49,7 +50,7 @@ G_M63260_IG04: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4},
;; size=8 bbWeight=8 PerfScore 12.00
G_M63260_IG05: ; bbWeight=64, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16
+ bhs G_M63260_IG15
ldr w5, [x4, w21, UXTW #2]
cmp w5, w0
ble G_M63260_IG03
@@ -62,46 +63,39 @@ G_M63260_IG07: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4},
;; size=4 bbWeight=8 PerfScore 4.00
G_M63260_IG08: ; bbWeight=64, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w2, w21
- ble G_M63260_IG10
+ ble G_M63260_IG11
;; size=8 bbWeight=64 PerfScore 96.00
G_M63260_IG09: ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w2, w3
- bhs G_M63260_IG16
+ bhs G_M63260_IG15
ldr w5, [x4, w2, UXTW #2]
cmp w5, w0
bge G_M63260_IG07
;; size=20 bbWeight=16 PerfScore 96.00
-G_M63260_IG10: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
- cmp w21, w2
- bge G_M63260_IG12
- ;; size=8 bbWeight=8 PerfScore 12.00
-G_M63260_IG11: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+G_M63260_IG10: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16
- ubfiz x5, x21, #2, #32
- ldr w6, [x4, x5]
- cmp w2, w3
- bhs G_M63260_IG16
- ldr w7, [x4, w2, UXTW #2]
- str w7, [x4, x5]
- str w6, [x4, w2, UXTW #2]
+ bhs G_M63260_IG15
+ ubfiz x6, x21, #2, #32
+ ldr w7, [x4, x6]
+ str w5, [x4, x6]
+ str w7, [x4, w2, UXTW #2]
b G_M63260_IG04
- ;; size=40 bbWeight=2 PerfScore 26.00
-G_M63260_IG12: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+ ;; size=28 bbWeight=2 PerfScore 17.00
+G_M63260_IG11: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w19
- beq G_M63260_IG14
+ beq G_M63260_IG13
;; size=8 bbWeight=8 PerfScore 12.00
-G_M63260_IG13: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+G_M63260_IG12: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16
- ubfiz x5, x21, #2, #32
- ldr w6, [x4, x5]
- str w0, [x4, x5]
+ bhs G_M63260_IG15
+ ubfiz x6, x21, #2, #32
+ ldr w7, [x4, x6]
+ str w0, [x4, x6]
cmp w19, w3
- bhs G_M63260_IG16
- str w6, [x4, w19, UXTW #2]
+ bhs G_M63260_IG15
+ str w7, [x4, w19, UXTW #2]
;; size=32 bbWeight=0.50 PerfScore 4.50
-G_M63260_IG14: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M63260_IG13: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; byrRegs -[x4]
sub w2, w21, #1
mov x0, x20
@@ -125,20 +119,20 @@ G_M63260_IG14: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcrRegs -[x0 x20]
; gcr arg pop 0
;; size=60 bbWeight=1 PerfScore 13.50
-G_M63260_IG15: ; bbWeight=1, epilog, nogc, extend
+G_M63260_IG14: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
add sp, sp, #64
ret lr
;; size=20 bbWeight=1 PerfScore 5.50
-G_M63260_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M63260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 288, prolog size 32, PerfScore 668.66, instruction count 72, allocated bytes for code 288 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
+; Total bytes of code 268, prolog size 32, PerfScore 647.66, instruction count 67, allocated bytes for code 268 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -149,7 +143,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 72 (0x00048) Actual length = 288 (0x000120)
+ Function Length : 67 (0x00043) Actual length = 268 (0x00010c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-5.83%) : 63013.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
@@ -9,13 +9,13 @@
; 0 inlinees with PGO data; 4 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T09] ( 5, 3.02) struct (16) [fp+0x80] do-not-enreg[SFA] multireg-arg ld-addr-op single-def tier0-frame <System.Span`1[int]>
+; V00 arg0 [V00,T10] ( 5, 3.02) struct (16) [fp+0x80] do-not-enreg[SFA] multireg-arg ld-addr-op single-def tier0-frame <System.Span`1[int]>
;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref
-; V02 loc1 [V02,T05] ( 3, 9 ) int -> x2
-; V03 loc2 [V03,T00] ( 16,229 ) int -> x19
-; V04 loc3 [V04,T01] ( 10,134 ) int -> x0
+; V02 loc1 [V02,T06] ( 3, 9 ) int -> x2
+; V03 loc2 [V03,T00] ( 15,221 ) int -> x19
+; V04 loc3 [V04,T01] ( 7,122 ) int -> x0
; V05 loc4 [V05,T04] ( 3, 80.50) int -> x1
-; V06 loc5 [V06,T10] ( 4, 5 ) int -> x4
+; V06 loc5 [V06,T11] ( 4, 5 ) int -> x5
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
@@ -23,24 +23,25 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V12 tmp5 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp6 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp7 [V14,T06] ( 4, 8 ) int -> x0 "Inlining Arg"
+; V14 tmp7 [V14,T07] ( 4, 8 ) int -> x0 "Inlining Arg"
;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
-; V16 tmp9 [V16,T08] ( 3, 6 ) int -> x20 "Inlining Arg"
-; V17 tmp10 [V17,T11] ( 2, 4 ) byref -> x19 single-def "Inlining Arg"
+; V16 tmp9 [V16,T09] ( 3, 6 ) int -> x20 "Inlining Arg"
+; V17 tmp10 [V17,T12] ( 2, 4 ) byref -> x19 single-def "Inlining Arg"
;* V18 tmp11 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp13 [V20 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
;* V21 tmp14 [V21 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
;* V22 tmp15 [V22 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp16 [V23 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-;* V24 tmp17 [V24,T16] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
-; V25 tmp18 [V25,T14] ( 2, 2 ) int -> x1 single-def "field V10._length (fldOffset=0x8)" P-INDEP
-; V26 tmp19 [V26,T13] ( 2, 2 ) byref -> x0 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T15] ( 2, 2 ) int -> x1 single-def "field V15._length (fldOffset=0x8)" P-INDEP
-; V28 tmp21 [V28,T02] ( 12, 91.51) byref -> x20 single-def "V00.[000..008)"
-; V29 tmp22 [V29,T03] ( 10, 88.01) int -> x21 single-def "V00.[008..012)"
-; V30 cse0 [V30,T07] ( 6, 7.50) long -> x3 multi-def "CSE - aggressive"
-; V31 cse1 [V31,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
+;* V24 tmp17 [V24,T17] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
+; V25 tmp18 [V25,T15] ( 2, 2 ) int -> x1 single-def "field V10._length (fldOffset=0x8)" P-INDEP
+; V26 tmp19 [V26,T14] ( 2, 2 ) byref -> x0 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+; V27 tmp20 [V27,T16] ( 2, 2 ) int -> x1 single-def "field V15._length (fldOffset=0x8)" P-INDEP
+; V28 tmp21 [V28,T02] ( 11, 89.51) byref -> x20 single-def "V00.[000..008)"
+; V29 tmp22 [V29,T03] ( 9, 86.01) int -> x21 single-def "V00.[008..012)"
+; V30 cse0 [V30,T05] ( 3, 34 ) int -> x3 "CSE - aggressive"
+; V31 cse1 [V31,T08] ( 6, 7.50) long -> x4 multi-def "CSE - aggressive"
+; V32 cse2 [V32,T13] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
;
; Lcl frame size = 8
@@ -67,7 +68,7 @@ G_M24415_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, b
;; size=8 bbWeight=8 PerfScore 12.00
G_M24415_IG05: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
cmp w19, w21
- bhs G_M24415_IG20
+ bhs G_M24415_IG19
ldr w3, [x20, w19, UXTW #2]
cmp w3, w1
ble G_M24415_IG03
@@ -80,54 +81,44 @@ G_M24415_IG07: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, b
;; size=4 bbWeight=8 PerfScore 4.00
G_M24415_IG08: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
cmp w0, w19
- ble G_M24415_IG10
+ ble G_M24415_IG11
;; size=8 bbWeight=64 PerfScore 96.00
G_M24415_IG09: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
cmp w0, w21
- bhs G_M24415_IG20
+ bhs G_M24415_IG19
ldr w3, [x20, w0, UXTW #2]
cmp w3, w1
bge G_M24415_IG07
;; size=20 bbWeight=16 PerfScore 96.00
-G_M24415_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
- cmp w19, w0
- bge G_M24415_IG12
- ;; size=8 bbWeight=8 PerfScore 12.00
-G_M24415_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
+G_M24415_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
cmp w19, w21
- bhs G_M24415_IG20
- ubfiz x3, x19, #2, #32
- ldr w4, [x20, x3]
- add x3, x20, x3
- ; byrRegs +[x3]
- cmp w0, w21
- bhs G_M24415_IG20
- ldr w5, [x20, w0, UXTW #2]
- str w5, [x3]
- str w4, [x20, w0, UXTW #2]
+ bhs G_M24415_IG19
+ ubfiz x4, x19, #2, #32
+ ldr w5, [x20, x4]
+ str w3, [x20, x4]
+ str w5, [x20, w0, UXTW #2]
b G_M24415_IG04
- ;; size=44 bbWeight=2 PerfScore 27.00
-G_M24415_IG12: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
- ; byrRegs -[x3]
+ ;; size=28 bbWeight=2 PerfScore 17.00
+G_M24415_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
cmp w19, w2
- beq G_M24415_IG14
+ beq G_M24415_IG13
;; size=8 bbWeight=8 PerfScore 12.00
-G_M24415_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
+G_M24415_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
cmp w19, w21
- bhs G_M24415_IG20
- ubfiz x3, x19, #2, #32
- ldr w4, [x20, x3]
- str w1, [x20, x3]
+ bhs G_M24415_IG19
+ ubfiz x4, x19, #2, #32
+ ldr w5, [x20, x4]
+ str w1, [x20, x4]
cmp w2, w21
- bhs G_M24415_IG20
- str w4, [x20, w2, UXTW #2]
+ bhs G_M24415_IG19
+ str w5, [x20, w2, UXTW #2]
;; size=32 bbWeight=0.50 PerfScore 4.50
-G_M24415_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
+G_M24415_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
cmp w19, w21
- bhi G_M24415_IG21
- tbz w19, #31, G_M24415_IG16
+ bhi G_M24415_IG20
+ tbz w19, #31, G_M24415_IG15
;; size=12 bbWeight=1 PerfScore 2.50
-G_M24415_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
+G_M24415_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -141,7 +132,7 @@ G_M24415_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}
; gcrRegs -[x0]
; gcr arg pop 0
;; size=36 bbWeight=0.50 PerfScore 3.75
-G_M24415_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
+G_M24415_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
sxtw w1, w19
mov x0, x20
; byrRegs +[x0]
@@ -154,15 +145,15 @@ G_M24415_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, b
; gcr arg pop 0
add w0, w19, #1
cmp w0, w21
- bhi G_M24415_IG21
+ bhi G_M24415_IG20
ubfiz x1, x0, #2, #32
add x19, x20, x1
; byrRegs +[x19]
sub w20, w21, w0
; byrRegs -[x20]
- tbz w20, #31, G_M24415_IG18
+ tbz w20, #31, G_M24415_IG17
;; size=56 bbWeight=1 PerfScore 11.50
-G_M24415_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M24415_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -176,7 +167,7 @@ G_M24415_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
; gcrRegs -[x0]
; gcr arg pop 0
;; size=36 bbWeight=0.50 PerfScore 3.75
-G_M24415_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M24415_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
mov x0, x19
; byrRegs +[x0]
sxtw w1, w20
@@ -188,18 +179,18 @@ G_M24415_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
; byrRegs -[x0 x19]
; gcr arg pop 0
;; size=28 bbWeight=1 PerfScore 6.50
-G_M24415_IG19: ; bbWeight=1, epilog, nogc, extend
+G_M24415_IG18: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
add sp, sp, #96
ret lr
;; size=20 bbWeight=1 PerfScore 5.50
-G_M24415_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M24415_IG19: ; 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_M24415_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M24415_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -209,7 +200,7 @@ G_M24415_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 412, prolog size 24, PerfScore 684.12, instruction count 103, allocated bytes for code 412 (MethodHash=e254a0a0) for method Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
+; Total bytes of code 388, prolog size 24, PerfScore 662.12, instruction count 97, allocated bytes for code 388 (MethodHash=e254a0a0) for method Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -220,7 +211,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 103 (0x00067) Actual length = 412 (0x00019c)
+ Function Length : 97 (0x00061) Actual length = 388 (0x000184)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+0.60%) : 22969.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
@@ -106,11 +106,11 @@ G_M62513_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
ldr w1, [x0, #0x14]
- cbz w1, G_M62513_IG18
+ cbz w1, G_M62513_IG19
ldr w1, [x0, #0x18]
cbnz w1, G_M62513_IG10
str w21, [x0, #0x18]
- b G_M62513_IG18
+ b G_M62513_IG19
;; size=28 bbWeight=0.50 PerfScore 6.00
G_M62513_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
@@ -134,7 +134,7 @@ G_M62513_IG10: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
; gcrRegs +[x0]
sub w1, w21, w1
cmp w1, w23
- ble G_M62513_IG18
+ ble G_M62513_IG19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -236,30 +236,33 @@ G_M62513_IG14: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
; gcrRegs +[x0]
ldr w20, [x0, #0x14]
cmp w20, #0
- ble G_M62513_IG15
+ ble G_M62513_IG16
sub w1, w24, #1
sxtw w22, w1
cmp w24, #0
bgt G_M62513_IG12
;; size=32 bbWeight=4 PerfScore 36.00
-G_M62513_IG15: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M62513_IG15: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs -[x21]
- cmp w20, #0
- bgt G_M62513_IG16
- mov w1, wzr
b G_M62513_IG17
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M62513_IG16: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ cmp w20, #0
+ bgt G_M62513_IG17
+ mov w1, wzr
+ b G_M62513_IG18
;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M62513_IG16: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M62513_IG17: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
asr w1, w23, #31
and w1, w1, #3
add w1, w1, w23
ldr w2, [x0, #0x18]
add w1, w2, w1, ASR #2
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M62513_IG17: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
str w1, [x0, #0x18]
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M62513_IG19: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldrb w1, [fp, #0x20] // [V08 loc3]
cbz w1, G_M62513_IG03
; GC ptr vars -{V00 V01}
@@ -268,7 +271,7 @@ G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
; gcr arg pop 0
b G_M62513_IG03
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M62513_IG19: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M62513_IG20: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01}
stp fp, lr, [sp, #-0x50]!
stp x19, x20, [sp, #0x20]
@@ -277,9 +280,9 @@ G_M62513_IG19: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=000
add x3, fp, #96
str x3, [sp, #0x18]
;; size=24 bbWeight=0 PerfScore 0.00
-G_M62513_IG20: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M62513_IG21: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w0, [fp, #0x20] // [V08 loc3]
- cbz w0, G_M62513_IG21
+ cbz w0, G_M62513_IG22
ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
; GC ptr vars -{V00 V01}
@@ -287,7 +290,7 @@ G_M62513_IG20: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=000
; gcrRegs -[x0]
; gcr arg pop 0
;; size=16 bbWeight=0 PerfScore 0.00
-G_M62513_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M62513_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
@@ -295,7 +298,7 @@ G_M62513_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 668, prolog size 48, PerfScore 215.00, instruction count 167, allocated bytes for code 668 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
+; Total bytes of code 672, prolog size 48, PerfScore 215.50, instruction count 168, allocated bytes for code 672 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
; ============================================================
Unwind Info:
@@ -306,7 +309,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 152 (0x00098) Actual length = 608 (0x000260)
+ Function Length : 153 (0x00099) Actual length = 612 (0x000264)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -343,4 +346,4 @@ Unwind Info:
*************** EH table for System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M62513_IG05..G_M62513_IG18) handled by [G_M62513_IG19..END) (fault)
+EH#0: try [G_M62513_IG05..G_M62513_IG19) handled by [G_M62513_IG20..END) (fault)
+4 (+0.89%) : 44500.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+d__118:MoveNext():ubyte:this (Tier1)
@@ -8,29 +8,30 @@
; 0 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 17, 9.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118>
-; V01 loc0 [V01,T04] ( 4, 2.50) ubyte -> registers
+; V00 this [V00,T00] ( 16, 9 ) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118>
+; V01 loc0 [V01,T04] ( 4, 2.50) ubyte -> x2
; V02 loc1 [V02,T05] ( 3, 2.50) int -> x1 single-def
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
-; V04 loc3 [V04,T08] ( 3, 1.50) ref -> x19 class-hnd exact single-def <Microsoft.CodeAnalysis.SecurityWellKnownAttributeData>
+; V04 loc3 [V04,T08] ( 3, 1.50) ref -> x20 class-hnd exact single-def <Microsoft.CodeAnalysis.SecurityWellKnownAttributeData>
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <Microsoft.Cci.SecurityAttribute>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T06] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V08 tmp2 [V08,T09] ( 3, 1.25) long -> x4 "fgMakeTemp is creating a new local variable"
+; V08 tmp2 [V08,T10] ( 3, 1.25) long -> x4 "fgMakeTemp is creating a new local variable"
; V09 tmp3 [V09,T02] ( 5, 3.75) ref -> x2 class-hnd "spilling QMark2" <<unknown class>>
;* V10 tmp4 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <Microsoft.Cci.SecurityAttribute>
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V13 tmp7 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
; V14 tmp8 [V14,T01] ( 6, 6 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V15 tmp9 [V15,T10] ( 2, 1 ) ref -> x15 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP
-; V16 tmp10 [V16,T12] ( 2, 1 ) short -> x1 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP
-; V17 tmp11 [V17,T11] ( 2, 1 ) ref -> x20 single-def "field V10.array (fldOffset=0x0)" P-INDEP
+; V15 tmp9 [V15,T11] ( 2, 1 ) ref -> x15 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP
+; V16 tmp10 [V16,T13] ( 2, 1 ) short -> x1 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP
+; V17 tmp11 [V17,T12] ( 2, 1 ) ref -> x19 single-def "field V10.array (fldOffset=0x0)" P-INDEP
;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref "field V11.<Attribute>k__BackingField (fldOffset=0x0)" P-DEP
;* V19 tmp13 [V19 ] ( 0, 0 ) short -> zero-ref "field V11.<Action>k__BackingField (fldOffset=0x8)" P-DEP
-; V20 PSPSym [V20,T13] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
-; V21 cse0 [V21,T03] ( 5, 2.50) ref -> x0 multi-def "CSE - aggressive"
-; V22 cse1 [V22,T07] ( 4, 2 ) long -> x19 "CSE - aggressive"
+; V20 PSPSym [V20,T14] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
+; V21 cse0 [V21,T09] ( 3, 1.50) ref -> x19 "CSE - moderate"
+; V22 cse1 [V22,T03] ( 5, 2.50) ref -> x1 multi-def "CSE - aggressive"
+; V23 cse2 [V23,T07] ( 4, 2 ) long -> x19 "CSE - aggressive"
;
; Lcl frame size = 24
@@ -57,14 +58,15 @@ G_M21908_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
G_M21908_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
movn w1, #0
str w1, [x0, #0x20]
- ldr x1, [x0, #0x08]
+ ldr x19, [x0, #0x08]
+ ; gcrRegs +[x19]
+ ldr x1, [x19, #0x08]
; gcrRegs +[x1]
- ldr x1, [x1, #0x08]
mov x2, x1
; gcrRegs +[x2]
cbz x2, G_M21908_IG11
;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x3, [x2]
movz x4, #0xD1FFAB1E
@@ -73,7 +75,7 @@ G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}
cmp x3, x4
beq G_M21908_IG07
;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
mov x0, x4
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
@@ -82,23 +84,17 @@ G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, b
mov x2, x0
; gcrRegs +[x2]
;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x19, [x2, #0x70]
- ; gcrRegs +[x19]
- cbz x19, G_M21908_IG11
- ldr x0, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x0]
- ldr x1, [x0, #0x08]
- ; gcrRegs +[x1]
- ldr x20, [x1, #0x20]
+ ldr x20, [x2, #0x70]
; gcrRegs +[x20]
+ cbz x20, G_M21908_IG11
+ ldr x19, [x19, #0x20]
movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
- ; gcrRegs -[x1-x2] +[x0]
+ ; gcrRegs -[x2] +[x0]
; gcr arg pop 0
mov x21, x0
; gcrRegs +[x21]
@@ -110,18 +106,18 @@ G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b
str w0, [x21, #0x14]
add x14, x21, #8
; byrRegs +[x14]
- mov x15, x19
- ; gcrRegs +[x15]
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x19]
- ; byrRegs -[x14]
- add x14, x21, #56
- ; byrRegs +[x14]
mov x15, x20
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x20]
; byrRegs -[x14]
+ add x14, x21, #56
+ ; byrRegs +[x14]
+ mov x15, x19
+ ; gcrRegs +[x15]
+ bl CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[x15 x19]
+ ; byrRegs -[x14]
mov x0, x21
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -131,20 +127,20 @@ G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b
blr x1
; gcrRegs -[x21]
; gcr arg pop 0
- ldr x19, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x19]
- add x14, x19, #24
+ ldr x1, [fp, #0x18] // [V00 this]
+ ; gcrRegs +[x1]
+ add x14, x1, #24
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- mov x0, x19
+ mov x0, x1
; gcrRegs +[x0]
- ;; size=124 bbWeight=0.50 PerfScore 16.50
+ ;; size=116 bbWeight=0.50 PerfScore 14.00
G_M21908_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19]
+ ; gcrRegs -[x1]
movn w11, #2
str w11, [x0, #0x20]
ldr x0, [x0, #0x18]
@@ -157,50 +153,56 @@ G_M21908_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
; gcrRegs -[x0]
; gcr arg pop 0
cbz w0, G_M21908_IG09
- ldr x20, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x20]
- ldr x0, [x20, #0x18]
+ ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
+ ldr x1, [x0, #0x18]
+ ; gcrRegs +[x1]
+ mov x0, x1
add x11, x19, #8
ldr x1, [x11]
+ ; gcrRegs -[x1]
blr x1
; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
- add x14, x20, #40
+ ldr x0, [fp, #0x18] // [V00 this]
+ add x14, x0, #40
; byrRegs +[x14]
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15]
+ ; gcrRegs -[x15]
; byrRegs -[x14]
- strh w1, [x20, #0x30]
- mov w0, #1
- str w0, [x20, #0x20]
- mov w2, w0
+ strh w1, [x0, #0x30]
+ mov w11, #1
+ str w11, [x0, #0x20]
+ sxtw w2, w11
b G_M21908_IG12
- ;; size=92 bbWeight=0.50 PerfScore 13.50
+ ;; size=100 bbWeight=0.50 PerfScore 14.75
G_M21908_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x20]
- movn w0, #0
- ldr x20, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x20]
- str w0, [x20, #0x20]
- ldr x0, [x20, #0x18]
+ ; gcrRegs -[x0]
+ movn w11, #0
+ ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
- cbz x0, G_M21908_IG10
+ str w11, [x0, #0x20]
+ ldr x1, [x0, #0x18]
+ ; gcrRegs +[x1]
+ cbz x1, G_M21908_IG10
+ mov x0, x1
add x11, x19, #16
ldr x1, [x11]
+ ; gcrRegs -[x1]
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=32 bbWeight=0.50 PerfScore 6.00
-G_M21908_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- str xzr, [x20, #0x18]
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=36 bbWeight=0.50 PerfScore 6.25
+G_M21908_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x0, [fp, #0x18] // [V00 this]
+ ; gcrRegs +[x0]
+ str xzr, [x0, #0x18]
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M21908_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
- mov w1, wzr
- mov w2, w1
- ;; size=8 bbWeight=0.50 PerfScore 0.50
+ ; gcrRegs -[x0]
+ mov w2, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M21908_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V00}
mov w0, w2
@@ -238,7 +240,7 @@ G_M21908_IG16: ; bbWeight=0, funclet epilog, nogc, extend
ret lr
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 448, prolog size 24, PerfScore 59.25, instruction count 112, allocated bytes for code 448 (MethodHash=1a3daa6b) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (Tier1)
+; Total bytes of code 452, prolog size 24, PerfScore 59.00, instruction count 113, allocated bytes for code 452 (MethodHash=1a3daa6b) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -249,7 +251,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 98 (0x00062) Actual length = 392 (0x000188)
---- Epilog scopes ----
---- Scope 0
...
+16 (+1.39%) : 8134.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
@@ -11,10 +11,10 @@
; V00 arg0 [V00,T07] ( 22, 23 ) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[System.String]>
; V01 loc0 [V01,T19] ( 7, 3.50) ref -> x20 class-hnd exact single-def <System.String>
; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [fp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 39,149.08) int -> x22
+; V03 loc2 [V03,T00] ( 41,183.08) int -> x22
; V04 loc3 [V04,T22] ( 4, 2 ) int -> x0
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
-; V06 loc5 [V06,T06] ( 9, 25.50) int -> x21
+; V06 loc5 [V06,T06] ( 9, 25.50) int -> x23
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V09 tmp2 [V09,T04] ( 5, 28 ) ref -> x0 class-hnd exact "impAppendStmt" <System.String>
@@ -44,12 +44,12 @@
; V33 cse0 [V33,T14] ( 3, 10 ) int -> x0 "CSE - aggressive"
; V34 cse1 [V34,T28] ( 3, 1.50) long -> x24 "CSE - moderate"
; V35 cse2 [V35,T31] ( 2, 1 ) int -> x12 "CSE - moderate"
-; V36 cse3 [V36,T01] ( 3, 48 ) long -> x1 "CSE - aggressive"
+; V36 cse3 [V36,T02] ( 3, 48 ) long -> x1 "CSE - aggressive"
; V37 cse4 [V37,T11] ( 3, 12 ) long -> x1 "CSE - aggressive"
; V38 cse5 [V38,T12] ( 3, 12 ) int -> x2 "CSE - aggressive"
; V39 cse6 [V39,T10] ( 3, 12 ) ref -> x1 "CSE - aggressive"
-; V40 cse7 [V40,T03] ( 15, 30.54) int -> x21 "CSE - aggressive"
-; V41 cse8 [V41,T02] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
+; V40 cse7 [V40,T01] ( 17, 64.54) int -> x21 "CSE - aggressive"
+; V41 cse8 [V41,T03] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
; V42 cse9 [V42,T27] ( 3, 1.50) ref -> x1 "CSE - aggressive"
; V43 cse10 [V43,T17] ( 2, 8 ) int -> x3 "CSE - aggressive"
; V44 cse11 [V44,T13] ( 3, 11.88) int -> x0 "CSE - aggressive"
@@ -77,19 +77,19 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=56 bbWeight=1 PerfScore 10.50
G_M28069_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x10]
- cbz w0, G_M28069_IG28
+ cbz w0, G_M28069_IG27
;; size=8 bbWeight=1 PerfScore 4.00
G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w1, #0
- bls G_M28069_IG30
+ bls G_M28069_IG29
ldr x20, [x0, #0x10]
; gcrRegs +[x20]
ldr w21, [x20, #0x08]
cmp w21, #100
- bgt G_M28069_IG28
+ bgt G_M28069_IG27
add w0, w21, #2
; gcrRegs -[x0]
mov w1, #2
@@ -116,109 +116,107 @@ G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
mov x1, sp
;; size=8 bbWeight=0.50 PerfScore 0.50
G_M28069_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w0, #31, G_M28069_IG31
+ tbnz w0, #31, G_M28069_IG30
str x1, [fp, #-0x48] // [V23 tmp16]
str w0, [fp, #-0x40] // [V24 tmp17]
mov w22, wzr
cmp w21, #0
- ble G_M28069_IG15
+ ble G_M28069_IG14
add x23, x20, #12
; byrRegs +[x23]
;; size=28 bbWeight=0.50 PerfScore 2.75
G_M28069_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldrh w0, [x23, w22, UXTW #2]
cmp w0, #39
- bne G_M28069_IG11
+ bne G_M28069_IG10
;; size=12 bbWeight=4 PerfScore 18.00
G_M28069_IG08: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V24 tmp17]
cmp w22, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
ubfiz x1, x22, #1, #32
add x0, x0, x1
+ cmp w22, w21
+ bhs G_M28069_IG29
ldrh w1, [x23, x1]
strh w1, [x0]
add w22, w22, #1
cmp w21, w22
- ble G_M28069_IG09
+ ble G_M28069_IG27
+ cmp w22, w21
+ bhs G_M28069_IG29
ldrh w0, [x23, w22, UXTW #2]
; byrRegs -[x0]
cmp w0, #39
bne G_M28069_IG08
- ;; size=56 bbWeight=16 PerfScore 280.00
-G_M28069_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
- cmp w21, w22
- bgt G_M28069_IG12
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19-x20]
- ; byrRegs -[x23]
- b G_M28069_IG28
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
- ; gcrRegs +[x19-x20]
- ; byrRegs +[x23]
+ ;; size=72 bbWeight=16 PerfScore 328.00
+G_M28069_IG09: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref
+ b G_M28069_IG11
+ ;; size=4 bbWeight=4 PerfScore 4.00
+G_M28069_IG10: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
cmp w0, #121
- beq G_M28069_IG14
+ beq G_M28069_IG13
;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V24 tmp17]
cmp w22, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
ubfiz x1, x22, #1, #32
add x0, x0, x1
+ cmp w22, w21
+ bhs G_M28069_IG29
ldrh w1, [x23, x1]
strh w1, [x0]
add w22, w22, #1
cmp w21, w22
bgt G_M28069_IG07
- ;; size=44 bbWeight=4 PerfScore 52.00
-G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=52 bbWeight=4 PerfScore 58.00
+G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x23]
- b G_M28069_IG15
+ b G_M28069_IG14
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #-0x40] // [V24 tmp17]
cmp w22, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
mov w1, #121
strh w1, [x0, w22, UXTW #2]
;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
sub w0, w21, #1
cmp w0, w22
- ble G_M28069_IG28
+ ble G_M28069_IG27
add w0, w22, #1
cmp w0, w21
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
add x23, x20, #12
; byrRegs +[x23]
add w0, w22, #1
ubfiz x24, x0, #1, #32
ldrh w0, [x23, x24]
cmp w0, #121
- bne G_M28069_IG28
+ bne G_M28069_IG27
add w25, w22, #2
cmp w21, w25
- ble G_M28069_IG16
+ ble G_M28069_IG15
cmp w25, w21
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldrh w0, [x23, w25, UXTW #2]
cmp w0, #121
- beq G_M28069_IG28
+ beq G_M28069_IG27
;; size=80 bbWeight=0.50 PerfScore 9.25
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w0, w22, #3
ldr w1, [fp, #-0x40] // [V24 tmp17]
cmp w0, w1
- blt G_M28069_IG17
+ blt G_M28069_IG16
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -232,11 +230,11 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
; gcrRegs -[x0]
; gcr arg pop 0
;; size=52 bbWeight=0.50 PerfScore 5.75
-G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w0, w22, #1
ldr w1, [fp, #-0x40] // [V24 tmp17]
cmp w0, w1
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
mov w1, #121
@@ -244,7 +242,7 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
ldr w0, [fp, #-0x40] // [V24 tmp17]
; byrRegs -[x0]
cmp w25, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
strh w1, [x0, w25, UXTW #2]
@@ -252,7 +250,7 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
; byrRegs -[x0]
ldr w1, [fp, #-0x40] // [V24 tmp17]
cmp w0, w1
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
add w1, w22, #3
@@ -260,15 +258,15 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
strh w2, [x0, w1, UXTW #2]
sxtw w22, w25
cmp w21, w22
- ble G_M28069_IG21
- tbnz w22, #31, G_M28069_IG20
+ ble G_M28069_IG20
+ tbnz w22, #31, G_M28069_IG19
;; size=96 bbWeight=0.50 PerfScore 12.50
-G_M28069_IG18: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0]
add w0, w22, #2
ldr w1, [fp, #-0x40] // [V24 tmp17]
cmp w0, w1
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x1, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x1]
ubfiz x0, x0, #1, #32
@@ -279,32 +277,32 @@ G_M28069_IG18: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800
strh w1, [x0]
add w22, w22, #1
...
coreclr_tests.run.linux.arm64.checked.mch
-36 (-21.95%) : 203183.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -11,12 +11,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
; V02 loc0 [V02,T00] ( 7, 24.50) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> x5 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x4 "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> x6 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> x5 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -33,51 +35,39 @@ G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x2]
cmp w1, w3
blt G_M264_IG11
- b G_M264_IG09
+ b G_M264_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
; byrRegs +[x0 x2]
sxtw w4, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1
- sxtw w4, w5
- tbnz w4, #31, G_M264_IG06
+ sub w4, w4, #1
+ tbnz w4, #31, G_M264_IG09
cmp w4, w1
bhs G_M264_IG13
- ubfiz x6, x4, #2, #32
- ldr w7, [x0, x6]
+ ubfiz x5, x4, #2, #32
+ ldr w6, [x0, x5]
cmp w4, w3
bhs G_M264_IG13
- ldr w6, [x2, x6]
- cmp w7, w6
+ ldr w5, [x2, x5]
+ cmp w6, w5
beq G_M264_IG05
- ;; size=48 bbWeight=4 PerfScore 54.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- tbz w5, #31, G_M264_IG08
- mov w0, wzr
- ; byrRegs -[x0]
+ ;; size=44 bbWeight=4 PerfScore 52.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0 x2]
+ cmp w5, w6
+ bhi G_M264_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref, isz
- ; byrRegs +[x0]
- cmp w5, w1
- bhs G_M264_IG13
- ubfiz x6, x5, #2, #32
- ldr w0, [x0, x6]
- ; byrRegs -[x0]
- cmp w5, w3
- bhs G_M264_IG13
- ldr w1, [x2, x6]
- cmp w0, w1
- blo G_M264_IG11
- ;; size=36 bbWeight=0.50 PerfScore 5.75
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
- mov w0, #1
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
@@ -96,7 +86,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 8, PerfScore 68.50, instruction count 41, allocated bytes for code 164 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 128, prolog size 8, PerfScore 61.00, instruction count 32, allocated bytes for code 128 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -107,7 +97,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-7.04%) : 203201.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
@@ -7,20 +7,21 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T05] ( 6, 22 ) int -> x0
-; V01 arg1 [V01,T06] ( 6, 19 ) int -> x19 single-def
-; V02 arg2 [V02,T08] ( 5, 11 ) ref -> x20 class-hnd single-def <int[]>
-; V03 loc0 [V03,T00] ( 17,112 ) int -> x23
-; V04 loc1 [V04,T01] ( 13,100 ) int -> x1
+; V00 arg0 [V00,T06] ( 6, 22 ) int -> x0
+; V01 arg1 [V01,T07] ( 6, 19 ) int -> x19 single-def
+; V02 arg2 [V02,T09] ( 5, 11 ) ref -> x20 class-hnd single-def <int[]>
+; V03 loc0 [V03,T00] ( 16,110 ) int -> x23
+; V04 loc1 [V04,T01] ( 10, 94 ) int -> x1
; V05 loc2 [V05,T04] ( 4, 38 ) int -> x3
-; V06 loc3 [V06,T09] ( 4, 8 ) int -> x4
+; V06 loc3 [V06,T10] ( 4, 8 ) int -> x5
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T10] ( 2, 8 ) int -> x5 "Strict ordering of exceptions for Array store"
-; V09 tmp2 [V09,T07] ( 2, 16 ) int -> x0 "arg temp"
-; V10 cse0 [V10,T11] ( 3, 7 ) long -> x22 hoist "CSE - aggressive"
-; V11 cse1 [V11,T12] ( 3, 6 ) long -> x1 "CSE - aggressive"
-; V12 cse2 [V12,T02] ( 11, 51 ) byref -> x21 hoist "CSE - aggressive"
-; V13 cse3 [V13,T03] ( 7, 46 ) int -> x2 "CSE - aggressive"
+; V08 tmp1 [V08,T11] ( 2, 8 ) int -> x4 "Strict ordering of exceptions for Array store"
+; V09 tmp2 [V09,T08] ( 2, 16 ) int -> x0 "arg temp"
+; V10 cse0 [V10,T05] ( 3, 34 ) int -> x4 "CSE - aggressive"
+; V11 cse1 [V11,T12] ( 3, 7 ) long -> x22 hoist "CSE - aggressive"
+; V12 cse2 [V12,T13] ( 3, 6 ) long -> x1 "CSE - aggressive"
+; V13 cse3 [V13,T02] ( 10, 49 ) byref -> x21 hoist "CSE - aggressive"
+; V14 cse4 [V14,T03] ( 6, 44 ) int -> x2 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -72,7 +73,7 @@ G_M36260_IG08: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=200000 {x2
;; size=4 bbWeight=8 PerfScore 4.00
G_M36260_IG09: ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
cmp w1, w23
- ble G_M36260_IG10
+ ble G_M36260_IG11
cmp w1, w2
bhs G_M36260_IG15
ldr w4, [x21, w1, UXTW #2]
@@ -80,17 +81,12 @@ G_M36260_IG09: ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=200000 {x
bge G_M36260_IG08
;; size=28 bbWeight=16 PerfScore 120.00
G_M36260_IG10: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
- cmp w23, w1
- bge G_M36260_IG11
cmp w23, w2
bhs G_M36260_IG15
- ldr w4, [x21, w23, UXTW #2]
- cmp w1, w2
- bhs G_M36260_IG15
- ldr w5, [x21, w1, UXTW #2]
- str w5, [x21, w23, UXTW #2]
- str w4, [x21, w1, UXTW #2]
- ;; size=40 bbWeight=2 PerfScore 25.00
+ ldr w5, [x21, w23, UXTW #2]
+ str w4, [x21, w23, UXTW #2]
+ str w5, [x21, w1, UXTW #2]
+ ;; size=20 bbWeight=2 PerfScore 13.00
G_M36260_IG11: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
cmp w23, w1
blt G_M36260_IG06
@@ -101,9 +97,9 @@ G_M36260_IG12: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=200000 {x2
cmp w23, w2
bhs G_M36260_IG15
ubfiz x1, x23, #2, #32
- ldr w4, [x21, x1]
+ ldr w5, [x21, x1]
str w3, [x21, x1]
- str w4, [x21, x22]
+ str w5, [x21, x22]
;; size=24 bbWeight=2 PerfScore 15.00
G_M36260_IG13: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref
sub w1, w23, #1
@@ -134,7 +130,7 @@ G_M36260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 284, prolog size 28, PerfScore 399.00, instruction count 71, allocated bytes for code 284 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
+; Total bytes of code 264, prolog size 28, PerfScore 387.00, instruction count 66, allocated bytes for code 264 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
; ============================================================
Unwind Info:
@@ -145,7 +141,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
+ Function Length : 66 (0x00042) Actual length = 264 (0x000108)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-6.36%) : 203747.dasm - Span.SpanBench:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
@@ -10,11 +10,11 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[int]>
;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref single-def
-; V02 loc1 [V02,T10] ( 3, 1.50) int -> x0 single-def
-; V03 loc2 [V03,T00] ( 19, 26.50) int -> x21
-; V04 loc3 [V04,T01] ( 13, 23.50) int -> x1
+; V02 loc1 [V02,T11] ( 3, 1.50) int -> x0 single-def
+; V03 loc2 [V03,T00] ( 18, 26 ) int -> x21
+; V04 loc3 [V04,T01] ( 10, 22 ) int -> x1
; V05 loc4 [V05,T04] ( 4, 9 ) int -> x3 single-def
-; V06 loc5 [V06,T08] ( 4, 2 ) int -> x4
+; V06 loc5 [V06,T09] ( 4, 2 ) int -> x5
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
@@ -22,25 +22,26 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V12 tmp5 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp6 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp7 [V14,T05] ( 4, 4 ) int -> x0 "Inlining Arg"
+; V14 tmp7 [V14,T06] ( 4, 4 ) int -> x0 "Inlining Arg"
;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
-; V16 tmp9 [V16,T07] ( 3, 3 ) int -> x20 "Inlining Arg"
-; V17 tmp10 [V17,T09] ( 2, 2 ) byref -> x19 single-def "Inlining Arg"
+; V16 tmp9 [V16,T08] ( 3, 3 ) int -> x20 "Inlining Arg"
+; V17 tmp10 [V17,T10] ( 2, 2 ) byref -> x19 single-def "Inlining Arg"
;* V18 tmp11 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V20 tmp13 [V20,T02] ( 13, 14 ) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V21 tmp14 [V21,T03] ( 11, 13.50) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V20 tmp13 [V20,T02] ( 12, 13.50) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V21 tmp14 [V21,T03] ( 10, 13 ) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V22 tmp15 [V22 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp16 [V23 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
;* V24 tmp17 [V24 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V25 tmp18 [V25 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-;* V26 tmp19 [V26,T16] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T14] ( 2, 1 ) int -> x1 single-def "field V10._length (fldOffset=0x8)" P-INDEP
-; V28 tmp21 [V28,T13] ( 2, 1 ) byref -> x0 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
-; V29 tmp22 [V29,T15] ( 2, 1 ) int -> x1 single-def "field V15._length (fldOffset=0x8)" P-INDEP
-; V30 cse0 [V30,T11] ( 3, 1.50) long -> x0 "CSE - moderate"
-; V31 cse1 [V31,T12] ( 3, 1.50) long -> x2 "CSE - moderate"
-; V32 cse2 [V32,T06] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
+;* V26 tmp19 [V26,T17] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
+; V27 tmp20 [V27,T15] ( 2, 1 ) int -> x1 single-def "field V10._length (fldOffset=0x8)" P-INDEP
+; V28 tmp21 [V28,T14] ( 2, 1 ) byref -> x0 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+; V29 tmp22 [V29,T16] ( 2, 1 ) int -> x1 single-def "field V15._length (fldOffset=0x8)" P-INDEP
+; V30 cse0 [V30,T05] ( 3, 8.50) int -> x4 "CSE - aggressive"
+; V31 cse1 [V31,T12] ( 3, 1.50) long -> x0 "CSE - moderate"
+; V32 cse2 [V32,T13] ( 3, 1.50) long -> x2 "CSE - moderate"
+; V33 cse3 [V33,T07] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
;
; Lcl frame size = 8
@@ -93,7 +94,7 @@ G_M11915_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M11915_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w1, w21
- ble G_M11915_IG10
+ ble G_M11915_IG11
cmp w1, w20
bhs G_M11915_IG16
ldr w4, [x19, w1, UXTW #2]
@@ -101,22 +102,13 @@ G_M11915_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
bge G_M11915_IG08
;; size=28 bbWeight=4 PerfScore 30.00
G_M11915_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- cmp w21, w1
- bge G_M11915_IG11
cmp w21, w20
bhs G_M11915_IG16
- ldr w4, [x19, w21, UXTW #2]
- ubfiz x5, x21, #2, #32
- add x5, x19, x5
- ; byrRegs +[x5]
- cmp w1, w20
- bhs G_M11915_IG16
- ldr w6, [x19, w1, UXTW #2]
- str w6, [x5]
- str w4, [x19, w1, UXTW #2]
- ;; size=48 bbWeight=0.50 PerfScore 7.00
+ ldr w5, [x19, w21, UXTW #2]
+ str w4, [x19, w21, UXTW #2]
+ str w5, [x19, w1, UXTW #2]
+ ;; size=20 bbWeight=0.50 PerfScore 3.25
G_M11915_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- ; byrRegs -[x5]
cmp w21, w1
blt G_M11915_IG06
cmp w21, w0
@@ -124,9 +116,9 @@ G_M11915_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
cmp w21, w20
bhs G_M11915_IG16
ubfiz x0, x21, #2, #32
- ldr w4, [x19, x0]
+ ldr w5, [x19, x0]
str w3, [x19, x0]
- str w4, [x19, x2]
+ str w5, [x19, x2]
;; size=40 bbWeight=0.50 PerfScore 5.25
G_M11915_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w21, w20
@@ -208,7 +200,7 @@ G_M11915_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 440, prolog size 24, PerfScore 107.25, instruction count 110, allocated bytes for code 440 (MethodHash=8081d174) for method Span.SpanBench:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
+; Total bytes of code 412, prolog size 24, PerfScore 103.50, instruction count 103, allocated bytes for code 412 (MethodHash=8081d174) for method Span.SpanBench:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
; ============================================================
Unwind Info:
@@ -219,7 +211,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 110 (0x0006e) Actual length = 440 (0x0001b8)
+ Function Length : 103 (0x00067) Actual length = 412 (0x00019c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+0.89%) : 200551.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+d__118:MoveNext():ubyte:this (FullOpts)
@@ -8,29 +8,30 @@
; 0 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 17, 9.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118>
-; V01 loc0 [V01,T04] ( 4, 2.50) ubyte -> registers
+; V00 this [V00,T00] ( 16, 9 ) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118>
+; V01 loc0 [V01,T04] ( 4, 2.50) ubyte -> x2
; V02 loc1 [V02,T05] ( 3, 2.50) int -> x1 single-def
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
-; V04 loc3 [V04,T08] ( 3, 1.50) ref -> x19 class-hnd exact single-def <Microsoft.CodeAnalysis.SecurityWellKnownAttributeData>
+; V04 loc3 [V04,T08] ( 3, 1.50) ref -> x20 class-hnd exact single-def <Microsoft.CodeAnalysis.SecurityWellKnownAttributeData>
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <Microsoft.Cci.SecurityAttribute>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T06] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V08 tmp2 [V08,T09] ( 3, 1.25) long -> x4 "fgMakeTemp is creating a new local variable"
+; V08 tmp2 [V08,T10] ( 3, 1.25) long -> x4 "fgMakeTemp is creating a new local variable"
; V09 tmp3 [V09,T02] ( 5, 3.75) ref -> x2 class-hnd "spilling QMark2" <<unknown class>>
;* V10 tmp4 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <Microsoft.Cci.SecurityAttribute>
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V13 tmp7 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
; V14 tmp8 [V14,T01] ( 6, 6 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V15 tmp9 [V15,T10] ( 2, 1 ) ref -> x15 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP
-; V16 tmp10 [V16,T12] ( 2, 1 ) short -> x1 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP
-; V17 tmp11 [V17,T11] ( 2, 1 ) ref -> x20 single-def "field V10.array (fldOffset=0x0)" P-INDEP
+; V15 tmp9 [V15,T11] ( 2, 1 ) ref -> x15 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP
+; V16 tmp10 [V16,T13] ( 2, 1 ) short -> x1 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP
+; V17 tmp11 [V17,T12] ( 2, 1 ) ref -> x19 single-def "field V10.array (fldOffset=0x0)" P-INDEP
;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref "field V11.<Attribute>k__BackingField (fldOffset=0x0)" P-DEP
;* V19 tmp13 [V19 ] ( 0, 0 ) short -> zero-ref "field V11.<Action>k__BackingField (fldOffset=0x8)" P-DEP
-; V20 PSPSym [V20,T13] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
-; V21 cse0 [V21,T03] ( 5, 2.50) ref -> x0 multi-def "CSE - aggressive"
-; V22 cse1 [V22,T07] ( 4, 2 ) long -> x19 "CSE - aggressive"
+; V20 PSPSym [V20,T14] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
+; V21 cse0 [V21,T09] ( 3, 1.50) ref -> x19 "CSE - moderate"
+; V22 cse1 [V22,T03] ( 5, 2.50) ref -> x1 multi-def "CSE - aggressive"
+; V23 cse2 [V23,T07] ( 4, 2 ) long -> x19 "CSE - aggressive"
;
; Lcl frame size = 24
@@ -57,14 +58,15 @@ G_M21908_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
G_M21908_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
movn w1, #0
str w1, [x0, #0x20]
- ldr x1, [x0, #0x08]
+ ldr x19, [x0, #0x08]
+ ; gcrRegs +[x19]
+ ldr x1, [x19, #0x08]
; gcrRegs +[x1]
- ldr x1, [x1, #0x08]
mov x2, x1
; gcrRegs +[x2]
cbz x2, G_M21908_IG11
;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x3, [x2]
movz x4, #0xD1FFAB1E
@@ -73,7 +75,7 @@ G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}
cmp x3, x4
beq G_M21908_IG07
;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
mov x0, x4
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
@@ -82,23 +84,17 @@ G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, b
mov x2, x0
; gcrRegs +[x2]
;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x19, [x2, #0x70]
- ; gcrRegs +[x19]
- cbz x19, G_M21908_IG11
- ldr x0, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x0]
- ldr x1, [x0, #0x08]
- ; gcrRegs +[x1]
- ldr x20, [x1, #0x20]
+ ldr x20, [x2, #0x70]
; gcrRegs +[x20]
+ cbz x20, G_M21908_IG11
+ ldr x19, [x19, #0x20]
movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
- ; gcrRegs -[x1-x2] +[x0]
+ ; gcrRegs -[x2] +[x0]
; gcr arg pop 0
mov x21, x0
; gcrRegs +[x21]
@@ -110,18 +106,18 @@ G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b
str w0, [x21, #0x14]
add x14, x21, #8
; byrRegs +[x14]
- mov x15, x19
- ; gcrRegs +[x15]
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x19]
- ; byrRegs -[x14]
- add x14, x21, #56
- ; byrRegs +[x14]
mov x15, x20
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x20]
; byrRegs -[x14]
+ add x14, x21, #56
+ ; byrRegs +[x14]
+ mov x15, x19
+ ; gcrRegs +[x15]
+ bl CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[x15 x19]
+ ; byrRegs -[x14]
mov x0, x21
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -131,20 +127,20 @@ G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b
blr x1
; gcrRegs -[x21]
; gcr arg pop 0
- ldr x19, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x19]
- add x14, x19, #24
+ ldr x1, [fp, #0x18] // [V00 this]
+ ; gcrRegs +[x1]
+ add x14, x1, #24
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- mov x0, x19
+ mov x0, x1
; gcrRegs +[x0]
- ;; size=124 bbWeight=0.50 PerfScore 16.50
+ ;; size=116 bbWeight=0.50 PerfScore 14.00
G_M21908_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19]
+ ; gcrRegs -[x1]
movn w11, #2
str w11, [x0, #0x20]
ldr x0, [x0, #0x18]
@@ -157,50 +153,56 @@ G_M21908_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
; gcrRegs -[x0]
; gcr arg pop 0
cbz w0, G_M21908_IG09
- ldr x20, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x20]
- ldr x0, [x20, #0x18]
+ ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
+ ldr x1, [x0, #0x18]
+ ; gcrRegs +[x1]
+ mov x0, x1
add x11, x19, #8
ldr x1, [x11]
+ ; gcrRegs -[x1]
blr x1
; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
- add x14, x20, #40
+ ldr x0, [fp, #0x18] // [V00 this]
+ add x14, x0, #40
; byrRegs +[x14]
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15]
+ ; gcrRegs -[x15]
; byrRegs -[x14]
- strh w1, [x20, #0x30]
- mov w0, #1
- str w0, [x20, #0x20]
- mov w2, w0
+ strh w1, [x0, #0x30]
+ mov w11, #1
+ str w11, [x0, #0x20]
+ sxtw w2, w11
b G_M21908_IG12
- ;; size=92 bbWeight=0.50 PerfScore 13.50
+ ;; size=100 bbWeight=0.50 PerfScore 14.75
G_M21908_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x20]
- movn w0, #0
- ldr x20, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x20]
- str w0, [x20, #0x20]
- ldr x0, [x20, #0x18]
+ ; gcrRegs -[x0]
+ movn w11, #0
+ ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
- cbz x0, G_M21908_IG10
+ str w11, [x0, #0x20]
+ ldr x1, [x0, #0x18]
+ ; gcrRegs +[x1]
+ cbz x1, G_M21908_IG10
+ mov x0, x1
add x11, x19, #16
ldr x1, [x11]
+ ; gcrRegs -[x1]
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=32 bbWeight=0.50 PerfScore 6.00
-G_M21908_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- str xzr, [x20, #0x18]
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=36 bbWeight=0.50 PerfScore 6.25
+G_M21908_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x0, [fp, #0x18] // [V00 this]
+ ; gcrRegs +[x0]
+ str xzr, [x0, #0x18]
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M21908_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
- mov w1, wzr
- mov w2, w1
- ;; size=8 bbWeight=0.50 PerfScore 0.50
+ ; gcrRegs -[x0]
+ mov w2, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M21908_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V00}
mov w0, w2
@@ -238,7 +240,7 @@ G_M21908_IG16: ; bbWeight=0, funclet epilog, nogc, extend
ret lr
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 448, prolog size 24, PerfScore 59.25, instruction count 112, allocated bytes for code 448 (MethodHash=1a3daa6b) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 452, prolog size 24, PerfScore 59.00, instruction count 113, allocated bytes for code 452 (MethodHash=1a3daa6b) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -249,7 +251,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 98 (0x00062) Actual length = 392 (0x000188)
---- Epilog scopes ----
---- Scope 0
...
+4 (+0.90%) : 482216.dasm - System.TimeZoneInfo:GetUtcOffset(System.DateTime,System.TimeZoneInfo):System.TimeSpan (Instrumented Tier1)
@@ -13,7 +13,7 @@
; V01 arg1 [V01,T00] ( 5, 4 ) ref -> x19 class-hnd single-def <System.TimeZoneInfo>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref <System.TimeSpan>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.TimeZoneInfo+AdjustmentRule>
-; V04 loc2 [V04 ] ( 3, 2 ) struct ( 8) [fp+0x48] do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
+; V04 loc2 [V04 ] ( 3, 1 ) struct ( 8) [fp+0x48] do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
; V05 loc3 [V05 ] ( 2, 0 ) struct (24) [fp+0x30] do-not-enreg[XS] addr-exposed <System.Globalization.DaylightTimeStruct>
; V06 loc4 [V06,T06] ( 2, 0 ) ubyte -> x0
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -24,13 +24,13 @@
;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "folding static readonly field struct" <System.TimeSpan>
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.TimeZoneInfo+AdjustmentRule>
;* V14 tmp7 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.DateTime>
-; V15 tmp8 [V15,T01] ( 7, 4 ) ref -> x21 class-hnd exact single-def "Inline stloc first use temp" <System.TimeZoneInfo+AdjustmentRule>
-; V16 tmp9 [V16,T03] ( 2, 2 ) int -> x0
+; V15 tmp8 [V15,T01] ( 7, 2 ) ref -> x21 class-hnd exact single-def "Inline stloc first use temp" <System.TimeZoneInfo+AdjustmentRule>
+; V16 tmp9 [V16,T04] ( 2, 0 ) int -> x0
;* V17 tmp10 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp11 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V19 tmp12 [V19 ] ( 6, 4 ) long -> [fp+0x50] do-not-enreg[X] addr-exposed single-def "field V00._dateData (fldOffset=0x0)" P-DEP
-; V20 tmp13 [V20,T02] ( 6, 4 ) long -> x20 "field V02._ticks (fldOffset=0x0)" P-INDEP
-; V21 tmp14 [V21 ] ( 3, 2 ) ubyte -> [fp+0x48] do-not-enreg[X] addr-exposed "field V04.hasValue (fldOffset=0x0)" P-DEP
+; V20 tmp13 [V20,T02] ( 6, 2 ) long -> x20 "field V02._ticks (fldOffset=0x0)" P-INDEP
+; V21 tmp14 [V21 ] ( 3, 1 ) ubyte -> [fp+0x48] do-not-enreg[X] addr-exposed "field V04.hasValue (fldOffset=0x0)" P-DEP
; V22 tmp15 [V22 ] ( 2, 1 ) int -> [fp+0x4C] do-not-enreg[X] addr-exposed "field V04.value (fldOffset=0x4)" P-DEP
; V23 tmp16 [V23 ] ( 2, 0 ) long -> [fp+0x30] do-not-enreg[X] addr-exposed "field V05.Start (fldOffset=0x0)" P-DEP
; V24 tmp17 [V24 ] ( 2, 0 ) long -> [fp+0x38] do-not-enreg[X] addr-exposed "field V05.End (fldOffset=0x8)" P-DEP
@@ -40,7 +40,7 @@
;* V28 tmp21 [V28 ] ( 0, 0 ) long -> zero-ref "field V10._ticks (fldOffset=0x0)" P-INDEP
; V29 tmp22 [V29,T05] ( 3, 0 ) long -> x19 "field V11._ticks (fldOffset=0x0)" P-INDEP
;* V30 tmp23 [V30,T10] ( 0, 0 ) long -> zero-ref "field V12._ticks (fldOffset=0x0)" P-INDEP
-; V31 tmp24 [V31,T04] ( 2, 2 ) long -> x1 "field V14._dateData (fldOffset=0x0)" P-INDEP
+; V31 tmp24 [V31,T03] ( 2, 2 ) long -> x1 "field V14._dateData (fldOffset=0x0)" P-INDEP
; V32 tmp25 [V32,T07] ( 2, 0 ) struct ( 8) [fp+0x28] do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
; V33 tmp26 [V33,T08] ( 2, 0 ) int -> x1 "argument with side effect"
; V34 tmp27 [V34 ] ( 2, 0 ) struct (24) [fp+0x10] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Globalization.DaylightTimeStruct>
@@ -71,11 +71,27 @@ G_M64406_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x4
mov x21, x0
; gcrRegs +[x21]
- cbz x21, G_M64406_IG07
+ cbnz x21, G_M64406_IG05
+ ;; size=48 bbWeight=1 PerfScore 13.50
+G_M64406_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x19 x21]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_COUNTPROFILE32
+ mov x0, x20
+ ;; size=20 bbWeight=1 PerfScore 3.00
+G_M64406_IG04: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x68]
+ ldp x19, x20, [sp, #0x58]
+ ldp fp, lr, [sp], #0x70
+ ret lr
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M64406_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19 x21]
ldrb w0, [fp, #0x48] // [V21 tmp14]
- ; gcrRegs -[x0]
tst w0, #255
- bne G_M64406_IG03
+ bne G_M64406_IG06
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -87,8 +103,8 @@ G_M64406_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- ;; size=104 bbWeight=1 PerfScore 25.50
-G_M64406_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=56 bbWeight=0 PerfScore 0.00
+G_M64406_IG06: ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr x1, [x21, #0x58]
mov x0, x20
movz x2, #0xD1FFAB1E // code for System.TimeSpan:op_Addition(System.TimeSpan,System.TimeSpan):System.TimeSpan
@@ -105,54 +121,7 @@ G_M64406_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
- cbnz w0, G_M64406_IG09
- ;; size=60 bbWeight=1 PerfScore 16.50
-G_M64406_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19 x21]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_COUNTPROFILE32
- b G_M64406_IG07
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M64406_IG05: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x21]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_COUNTPROFILE32
- ldr x19, [x21, #0x20]
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M64406_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x21]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_COUNTPROFILE32
- mov x0, x20
- mov x1, x19
- movz x2, #0xD1FFAB1E // code for System.TimeSpan:op_Addition(System.TimeSpan,System.TimeSpan):System.TimeSpan
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- mov x20, x0
- ;; size=48 bbWeight=0 PerfScore 0.00
-G_M64406_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_COUNTPROFILE32
- mov x0, x20
- ;; size=20 bbWeight=1 PerfScore 3.00
-G_M64406_IG08: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x68]
- ldp x19, x20, [sp, #0x58]
- ldp fp, lr, [sp], #0x70
- ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M64406_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19 x21]
+ cbz w0, G_M64406_IG07
add x0, fp, #80 // [V00 arg0]
movz x1, #0xD1FFAB1E // code for System.DateTime:get_Year():int:this
movk x1, #0xD1FFAB1E LSL #16
@@ -188,12 +157,44 @@ G_M64406_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=280000
ldr x3, [x3]
blr x3
; gcrRegs -[x1]
- cbnz w0, G_M64406_IG05
+ cbnz w0, G_M64406_IG08
mov x19, xzr
- b G_M64406_IG06
- ;; size=132 bbWeight=0 PerfScore 0.00
+ b G_M64406_IG09
+ ;; size=192 bbWeight=0 PerfScore 0.00
+G_M64406_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x21]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_COUNTPROFILE32
+ b G_M64406_IG03
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M64406_IG08: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x21]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_COUNTPROFILE32
+ ldr x19, [x21, #0x20]
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M64406_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x21]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_COUNTPROFILE32
+ mov x0, x20
+ mov x1, x19
+ movz x2, #0xD1FFAB1E // code for System.TimeSpan:op_Addition(System.TimeSpan,System.TimeSpan):System.TimeSpan
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ mov x20, x0
+ b G_M64406_IG03
+ ;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 444, prolog size 16, PerfScore 55.00, instruction count 111, allocated bytes for code 444 (MethodHash=9cf60469) for method System.TimeZoneInfo:GetUtcOffset(System.DateTime,System.TimeZoneInfo):System.TimeSpan (Instrumented Tier1)
+; Total bytes of code 448, prolog size 16, PerfScore 26.50, instruction count 112, allocated bytes for code 448 (MethodHash=9cf60469) for method System.TimeZoneInfo:GetUtcOffset(System.DateTime,System.TimeZoneInfo):System.TimeSpan (Instrumented Tier1)
; ============================================================
Unwind Info:
@@ -204,7 +205,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 111 (0x0006f) Actual length = 444 (0x0001bc)
+ Function Length : 112 (0x00070) Actual length = 448 (0x0001c0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+1.08%) : 464818.dasm - System.Reflection.TypeNameParser:GetType(System.String,ubyte,ubyte,System.Reflection.Assembly):System.Type (Instrumented Tier1)
@@ -18,8 +18,8 @@
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V10 tmp5 [V10,T20] ( 2, 2 ) int -> x5 "Inlining Arg"
-; V11 tmp6 [V11,T18] ( 2, 2 ) byref -> x4 single-def "Inlining Arg"
+; V10 tmp5 [V10,T19] ( 2, 2 ) int -> x5 "Inlining Arg"
+; V11 tmp6 [V11,T17] ( 2, 2 ) byref -> x4 single-def "Inlining Arg"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp9 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -30,7 +30,7 @@
; V19 tmp14 [V19,T24] ( 3, 1 ) ref -> x0 "guarded devirt return temp"
;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.TypeNameParser+NamespaceTypeName>
;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V22 tmp17 [V22,T15] ( 4, 2 ) int -> x21 "Inline stloc first use temp"
+; V22 tmp17 [V22,T20] ( 4, 1.50) int -> x21 "Inline stloc first use temp"
; V23 tmp18 [V23,T30] ( 3, 0 ) int -> x0 "Span.get_Item index"
; V24 tmp19 [V24,T25] ( 3, 1 ) int -> x1
;* V25 tmp20 [V25 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp"
@@ -55,11 +55,11 @@
;* V44 tmp39 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V45 tmp40 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V46 tmp41 [V46 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[System.String]>
-; V47 tmp42 [V47,T19] ( 2, 2 ) ref -> x1 class-hnd exact single-def "impAppendStmt" <System.String>
+; V47 tmp42 [V47,T18] ( 2, 2 ) ref -> x1 class-hnd exact single-def "impAppendStmt" <System.String>
;* V48 tmp43 [V48 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
;* V49 tmp44 [V49 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
-; V50 tmp45 [V50,T16] ( 3, 2 ) byref -> x4 "field V07._reference (fldOffset=0x0)" P-INDEP
-; V51 tmp46 [V51,T17] ( 3, 2 ) int -> x5 "field V07._length (fldOffset=0x8)" P-INDEP
+; V50 tmp45 [V50,T15] ( 3, 2 ) byref -> x4 "field V07._reference (fldOffset=0x0)" P-INDEP
+; V51 tmp46 [V51,T16] ( 3, 2 ) int -> x5 "field V07._length (fldOffset=0x8)" P-INDEP
; V52 tmp47 [V52,T26] ( 2, 1 ) byref -> x4 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
; V53 tmp48 [V53,T28] ( 2, 1 ) int -> x5 "field V08._length (fldOffset=0x8)" P-INDEP
;* V54 tmp49 [V54 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
@@ -152,7 +152,7 @@ G_M33298_IG05: ; bbWeight=1, gcrefRegs=0008 {x3}, byrefRegs=0010 {x4}, by
; gcr arg pop 0
mov x19, x0
; gcrRegs +[x19]
- cbz x19, G_M33298_IG23
+ cbz x19, G_M33298_IG21
;; size=84 bbWeight=1 PerfScore 20.50
G_M33298_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
@@ -169,7 +169,7 @@ G_M33298_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
;; size=16 bbWeight=4 PerfScore 22.00
G_M33298_IG08: ; bbWeight=3.85, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cmp w0, w1
- bhs G_M33298_IG22
+ bhs G_M33298_IG20
ldr x1, [fp, #0x48] // [V04 loc0+0x30]
; byrRegs +[x1]
ldrh w0, [x1, w0, UXTW #2]
@@ -182,7 +182,7 @@ G_M33298_IG08: ; bbWeight=3.85, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbnz w0, G_M33298_IG24
+ cbnz w0, G_M33298_IG22
;; size=48 bbWeight=3.85 PerfScore 55.78
G_M33298_IG09: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
b G_M33298_IG11
@@ -192,13 +192,13 @@ G_M33298_IG10: ; bbWeight=3.85, gcrefRegs=180000 {x19 x20}, byrefRegs=000
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldrb w0, [x1, w0, UXTW #2]
- tbnz w0, #7, G_M33298_IG24
+ tbnz w0, #7, G_M33298_IG22
;; size=20 bbWeight=3.85 PerfScore 21.16
G_M33298_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #0x38] // [V04 loc0+0x20]
ldr w1, [fp, #0x50] // [V04 loc0+0x38]
cmp w0, w1
- blt G_M33298_IG25
+ blt G_M33298_IG23
mov w1, wzr
;; size=20 bbWeight=0.50 PerfScore 3.00
G_M33298_IG12: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
@@ -210,9 +210,9 @@ G_M33298_IG12: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
blr x1
; gcr arg pop 0
sxtw w21, w0
- cbz w21, G_M33298_IG20
+ cbz w21, G_M33298_IG18
cmp w21, #7
- beq G_M33298_IG18
+ beq G_M33298_IG25
;; size=40 bbWeight=0.50 PerfScore 4.50
G_M33298_IG13: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20]
@@ -223,7 +223,7 @@ G_M33298_IG13: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
;; size=16 bbWeight=4 PerfScore 22.00
G_M33298_IG14: ; bbWeight=3.85, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w0, w1
- bhs G_M33298_IG22
+ bhs G_M33298_IG20
ldr x1, [fp, #0x48] // [V04 loc0+0x30]
; byrRegs +[x1]
ldrh w0, [x1, w0, UXTW #2]
@@ -236,7 +236,7 @@ G_M33298_IG14: ; bbWeight=3.85, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbnz w0, G_M33298_IG26
+ cbnz w0, G_M33298_IG24
;; size=48 bbWeight=3.85 PerfScore 55.78
G_M33298_IG15: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
b G_M33298_IG17
@@ -246,64 +246,25 @@ G_M33298_IG16: ; bbWeight=3.85, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldrb w0, [x1, w0, UXTW #2]
- tbnz w0, #7, G_M33298_IG26
+ tbnz w0, #7, G_M33298_IG24
;; size=20 bbWeight=3.85 PerfScore 21.16
G_M33298_IG17: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w2, [fp, #0x38] // [V04 loc0+0x20]
ldr w3, [fp, #0x50] // [V04 loc0+0x38]
cmp w2, w3
- bge G_M33298_IG18
+ bge G_M33298_IG25
add w2, w2, #1
str w2, [fp, #0x38] // [V04 loc0+0x20]
- ;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M33298_IG18: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cmp w21, #3
- bne G_M33298_IG27
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M33298_IG19: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- add x0, fp, #24 // [V04 loc0]
- movz x1, #0xD1FFAB1E // code for System.Reflection.TypeNameParser:CheckTopLevelAssemblyQualifiedName():ubyte:this
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- ; gcr arg pop 0
- cbz w0, G_M33298_IG23
- add x0, fp, #24 // [V04 loc0]
- movz x1, #0xD1FFAB1E // code for System.Reflection.TypeNameParser:GetNextAssemblyName():System.String:this
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- ; gcrRegs +[x0]
- ; gcr arg pop 0
- mov x20, x0
+ b G_M33298_IG25
+ ;; size=28 bbWeight=0.50 PerfScore 4.00
+G_M33298_IG18: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x20]
- cbz x20, G_M33298_IG23
- add x0, fp, #24 // [V04 loc0]
- ; gcrRegs -[x0]
- movz x1, #0xD1FFAB1E // code for System.Reflection.TypeNameParser:get_Peek():int:this
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- ; gcr arg pop 0
- cmp w0, #0
- cset x0, eq
- movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte)
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- ; gcr arg pop 0
- ;; size=112 bbWeight=0 PerfScore 0.00
-G_M33298_IG20: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x2, [x19]
movz x3, #0xD1FFAB1E
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
cmp x2, x3
- bne G_M33298_IG28
+ bne G_M33298_IG27
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
mov x2, xzr
@@ -321,60 +282,100 @@ G_M33298_IG20: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; byrRegs -[x2]
; gcr arg pop 0
;; size=64 bbWeight=0.50 PerfScore 8.25
-G_M33298_IG21: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M33298_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x21, [sp, #0x68]
ldp x19, x20, [sp, #0x58]
ldp fp, lr, [sp], #0x70
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-G_M33298_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M33298_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M33298_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M33298_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov x0, xzr
; gcrRegs +[x0]
- b G_M33298_IG21
+ b G_M33298_IG19
;; size=8 bbWeight=0 PerfScore 0.00
-G_M33298_IG24: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M33298_IG22: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] +[x19-x20]
ldr w0, [fp, #0x38] // [V04 loc0+0x20]
add w0, w0, #1
str w0, [fp, #0x38] // [V04 loc0+0x20]
b G_M33298_IG07
;; size=16 bbWeight=0 PerfScore 0.00
-G_M33298_IG25: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M33298_IG23: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #0x38] // [V04 loc0+0x20]
ldr w1, [fp, #0x50] // [V04 loc0+0x38]
cmp w0, w1
- bhs G_M33298_IG22
+ bhs G_M33298_IG20
ldr x1, [fp, #0x48] // [V04 loc0+0x30]
; byrRegs +[x1]
ldrh w1, [x1, w0, UXTW #2]
; byrRegs -[x1]
b G_M33298_IG12
;; size=28 bbWeight=0 PerfScore 0.00
-G_M33298_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M33298_IG24: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20]
ldr w0, [fp, #0x38] // [V04 loc0+0x20]
add w0, w0, #1
str w0, [fp, #0x38] // [V04 loc0+0x20]
b G_M33298_IG13
;; size=16 bbWeight=0 PerfScore 0.00
-G_M33298_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
+G_M33298_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ cmp w21, #3
+ beq G_M33298_IG26
add x0, fp, #24 // [V04 loc0]
movz x1, #0xD1FFAB1E // code for System.Reflection.TypeNameParser:ParseError():this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
+ ; gcrRegs -[x19]
; gcr arg pop 0
- b G_M33298_IG23
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M33298_IG28: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x19-x20]
+ b G_M33298_IG21
...
libraries.crossgen2.linux.arm64.checked.mch
-48 (-26.09%) : 176291.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
@@ -8,15 +8,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 6, 11 ) ref -> x1 class-hnd single-def <System.String>
-; V02 arg2 [V02,T05] ( 4, 6.50) int -> x2 single-def
-; V03 arg3 [V03,T07] ( 5, 4.50) int -> x3 single-def
-; V04 loc0 [V04,T03] ( 6, 13 ) int -> x5
-; V05 loc1 [V05,T00] ( 11, 27.50) int -> x6
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> x1 class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 3, 6 ) int -> x2 single-def
+; V03 arg3 [V03,T08] ( 5, 4.50) int -> x3 single-def
+; V04 loc0 [V04,T01] ( 5, 12 ) int -> x5
+; V05 loc1 [V05,T00] ( 7, 25 ) int -> x6
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> x4 "CSE - aggressive"
-; V08 cse1 [V08,T01] ( 6, 13.50) int -> x8 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> x8 "CSE - aggressive"
+; V08 cse1 [V08,T06] ( 3, 8.50) int -> x7 "CSE - aggressive"
+; V09 cse2 [V09,T09] ( 4, 6.50) int -> x4 "CSE - aggressive"
+; V10 cse3 [V10,T03] ( 3, 12 ) int -> x8 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -38,11 +40,11 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M6389_IG04: ; bbWeight=8, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
cmp w6, w5
- bge G_M6389_IG06
+ bge G_M6389_IG08
;; size=8 bbWeight=8 PerfScore 12.00
G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
cmp w6, w4
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x7, x0, #12
; byrRegs +[x7]
ldrh w7, [x7, w6, UXTW #2]
@@ -50,49 +52,30 @@ G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by
add w8, w2, w6
ldr w9, [x1, #0x08]
cmp w8, w9
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x9, x1, #12
; byrRegs +[x9]
ldrh w8, [x9, w8, UXTW #2]
cmp w7, w8
beq G_M6389_IG03
;; size=48 bbWeight=4 PerfScore 60.00
-G_M6389_IG06: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0-x1]
; byrRegs -[x9]
- cmp w6, w5
- bge G_M6389_IG09
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- cmp w6, w4
- bhs G_M6389_IG11
- add x0, x0, #12
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ldrh w0, [x0, w6, UXTW #2]
- ; byrRegs -[x0]
- add w8, w2, w6
- ldr w3, [x1, #0x08]
- cmp w8, w3
- bhs G_M6389_IG11
- add x4, x1, #12
- ; byrRegs +[x4]
- ldrh w1, [x4, w8, UXTW #2]
- ; gcrRegs -[x1]
- sub w0, w0, w1
- ;; size=44 bbWeight=0.50 PerfScore 7.00
-G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ sub w0, w7, w8
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[x4]
+G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub w0, w4, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
@@ -101,7 +84,7 @@ G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
brk_unix #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 184, prolog size 8, PerfScore 91.25, instruction count 46, allocated bytes for code 184 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 136, prolog size 8, PerfScore 83.00, instruction count 34, allocated bytes for code 136 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -112,7 +95,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
+ Function Length : 34 (0x00022) Actual length = 136 (0x000088)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-36 (-20.45%) : 212588.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -12,12 +12,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
; V02 loc0 [V02,T00] ( 7, 24.50) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> x5 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x4 "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> x6 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> x5 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -34,51 +36,39 @@ G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x2]
cmp w1, w3
blt G_M264_IG11
- b G_M264_IG09
+ b G_M264_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
; byrRegs +[x0 x2]
sxtw w4, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1
- sxtw w4, w5
- tbnz w4, #31, G_M264_IG06
+ sub w4, w4, #1
+ tbnz w4, #31, G_M264_IG09
cmp w4, w1
bhs G_M264_IG13
- ubfiz x6, x4, #2, #32
- ldr w7, [x0, x6]
+ ubfiz x5, x4, #2, #32
+ ldr w6, [x0, x5]
cmp w4, w3
bhs G_M264_IG13
- ldr w6, [x2, x6]
- cmp w7, w6
+ ldr w5, [x2, x5]
+ cmp w6, w5
beq G_M264_IG05
- ;; size=48 bbWeight=4 PerfScore 54.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- tbz w5, #31, G_M264_IG08
- mov w0, wzr
- ; byrRegs -[x0]
+ ;; size=44 bbWeight=4 PerfScore 52.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0 x2]
+ cmp w5, w6
+ bhi G_M264_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref, isz
- ; byrRegs +[x0]
- cmp w5, w1
- bhs G_M264_IG13
- ubfiz x6, x5, #2, #32
- ldr w0, [x0, x6]
- ; byrRegs -[x0]
- cmp w5, w3
- bhs G_M264_IG13
- ldr w1, [x2, x6]
- cmp w0, w1
- blo G_M264_IG11
- ;; size=36 bbWeight=0.50 PerfScore 5.75
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
- mov w0, #1
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
@@ -100,7 +90,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
brk_unix #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 8, PerfScore 68.50, instruction count 44, allocated bytes for code 176 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 140, prolog size 8, PerfScore 61.00, instruction count 35, allocated bytes for code 140 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -111,7 +101,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-9.86%) : 140889.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
@@ -9,14 +9,15 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 11, 21 ) ref -> x0 this class-hnd single-def <System.Data.ExpressionParser>
-; V01 loc0 [V01,T04] ( 6, 14 ) ref -> x3 class-hnd single-def <<unknown class>>
+; V01 loc0 [V01,T04] ( 5, 13 ) ref -> x3 class-hnd single-def <<unknown class>>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 24 ) int -> x1 "index expr"
-; V04 tmp2 [V04,T05] ( 3, 6 ) int -> x1 "index expr"
-; V05 tmp3 [V05,T06] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V06 tmp4 [V06,T07] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V07 cse0 [V07,T00] ( 9, 31 ) int -> x19 "CSE - aggressive"
-; V08 cse1 [V08,T03] ( 5, 22 ) int -> x2 "CSE - aggressive"
+;* V04 tmp2 [V04,T06] ( 0, 0 ) int -> zero-ref "index expr"
+; V05 tmp3 [V05,T07] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V06 tmp4 [V06,T08] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V07 cse0 [V07,T05] ( 3, 9 ) int -> x2 "CSE - aggressive"
+; V08 cse1 [V08,T00] ( 7, 29 ) int -> x19 "CSE - aggressive"
+; V09 cse2 [V09,T03] ( 3, 20 ) int -> x2 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -36,22 +37,9 @@ G_M44374_IG03: ; bbWeight=8, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, b
str w19, [x0, #0x30]
ldr w2, [x3, #0x08]
cmp w2, w19
- ble G_M44374_IG05
+ ble G_M44374_IG08
;; size=24 bbWeight=8 PerfScore 72.00
G_M44374_IG04: ; bbWeight=4, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref, isz
- sxtw w1, w19
- cmp w1, w2
- bhs G_M44374_IG07
- add x11, x3, #16
- ; byrRegs +[x11]
- ldrh w1, [x11, w1, UXTW #2]
- cmp w1, #35
- bne G_M44374_IG03
- ;; size=28 bbWeight=4 PerfScore 28.00
-G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x11]
- cmp w2, w19
- ble G_M44374_IG08
sxtw w1, w19
cmp w1, w2
bhs G_M44374_IG07
@@ -59,13 +47,17 @@ G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, b
; byrRegs +[x2]
ldrh w2, [x2, w1, UXTW #2]
; byrRegs -[x2]
+ cmp w2, #35
+ bne G_M44374_IG03
+ ;; size=28 bbWeight=4 PerfScore 28.00
+G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref, isz
cmp w2, #35
bne G_M44374_IG09
mov w2, #7
str w2, [x0, #0x38]
add w2, w19, #1
str w2, [x0, #0x30]
- ;; size=52 bbWeight=1 PerfScore 11.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M44374_IG06: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
@@ -130,7 +122,7 @@ G_M44374_IG09: ; bbWeight=0, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, b
brk_unix #0
;; size=68 bbWeight=0 PerfScore 0.00
-; Total bytes of code 284, prolog size 12, PerfScore 121.00, instruction count 71, allocated bytes for code 284 (MethodHash=962252a9) for method System.Data.ExpressionParser:ScanDate():this (FullOpts)
+; Total bytes of code 256, prolog size 12, PerfScore 114.00, instruction count 64, allocated bytes for code 256 (MethodHash=962252a9) for method System.Data.ExpressionParser:ScanDate():this (FullOpts)
; ============================================================
Unwind Info:
@@ -141,7 +133,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
+ 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)
+8 (+2.15%) : 41986.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
@@ -8,45 +8,47 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 7, 4.50) ref -> x19 this class-hnd single-def <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 8, 4.38) ref -> x20 class-hnd single-def <System.Object>
+; V00 this [V00,T01] ( 6, 4 ) ref -> x20 this class-hnd single-def <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
+; V01 arg1 [V01,T00] ( 8, 4.38) ref -> x19 class-hnd single-def <System.Object>
; V02 arg2 [V02,T03] ( 3, 2.50) ref -> x21 class-hnd single-def <System.Collections.IComparer>
;* V03 loc0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
-; V04 loc1 [V04,T10] ( 2, 1 ) ref -> x20 class-hnd single-def <System.__Canon>
-; V05 loc2 [V05,T11] ( 2, 1 ) ref -> x22 class-hnd single-def <System.__Canon>
+; V04 loc1 [V04,T11] ( 2, 1 ) ref -> x19 class-hnd single-def <System.__Canon>
+; V05 loc2 [V05,T12] ( 2, 1 ) ref -> x22 class-hnd single-def <System.__Canon>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T07] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
+; V07 tmp1 [V07,T08] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
; V08 tmp2 [V08,T02] ( 5, 5.75) ref -> x22 class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
-; V09 tmp3 [V09,T08] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
+; V09 tmp3 [V09,T09] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
; V10 tmp4 [V10,T04] ( 3, 2.50) ref -> x0 class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
-; V11 tmp5 [V11,T09] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
+; V11 tmp5 [V11,T10] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
; V12 tmp6 [V12,T05] ( 3, 2.50) ref -> x0 class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
; V13 tmp7 [V13,T06] ( 2, 2 ) long -> x0 "argument with side effect"
+; V14 cse0 [V14,T07] ( 5, 1.50) long -> x24 multi-def "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M49351_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x50]!
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
+ stp x23, x24, [sp, #0x40]
mov fp, sp
- str x0, [fp, #0x10]
- mov x19, x0
- ; gcrRegs +[x19]
- mov x20, x1
+ str x0, [fp, #0x18]
+ mov x20, x0
; gcrRegs +[x20]
+ mov x19, x1
+ ; gcrRegs +[x19]
mov x21, x2
; gcrRegs +[x21]
;; size=36 bbWeight=1 PerfScore 7.00
G_M49351_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- mov x22, x20
+ mov x22, x19
; gcrRegs +[x22]
cbz x22, G_M49351_IG05
;; size=8 bbWeight=1 PerfScore 1.50
G_M49351_IG03: ; bbWeight=0.25, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr x23, [x22]
- ldr x0, [x19]
+ ldr x24, [x20]
+ mov x0, x24
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
@@ -54,10 +56,10 @@ G_M49351_IG03: ; bbWeight=0.25, gcrefRegs=780000 {x19 x20 x21 x22}, byref
; gcr arg pop 0
cmp x23, x0
beq G_M49351_IG05
- ;; size=32 bbWeight=0.25 PerfScore 3.12
+ ;; size=36 bbWeight=0.25 PerfScore 3.25
G_M49351_IG04: ; bbWeight=0.12, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
- mov x1, x20
+ mov x1, x19
; gcrRegs +[x1]
adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address
add x2, x2, [LOW RELOC #0xD1FFAB1E]
@@ -70,16 +72,17 @@ G_M49351_IG04: ; bbWeight=0.12, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
;; size=24 bbWeight=0.12 PerfScore 0.75
G_M49351_IG05: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz x19, G_M49351_IG13
+ cbz x20, G_M49351_IG13
;; size=4 bbWeight=1 PerfScore 1.00
G_M49351_IG06: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
cbz x0, G_M49351_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M49351_IG07: ; bbWeight=0.25, gcrefRegs=780001 {x0 x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr x23, [x0]
- ldr x0, [x19]
+ ldr x24, [x20]
+ mov x0, x24
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -88,23 +91,23 @@ G_M49351_IG07: ; bbWeight=0.25, gcrefRegs=780001 {x0 x19 x20 x21 x22}, by
; gcr arg pop 0
cmp x23, x0
beq G_M49351_IG09
- ;; size=32 bbWeight=0.25 PerfScore 3.12
+ ;; size=36 bbWeight=0.25 PerfScore 3.25
G_M49351_IG08: ; bbWeight=0.12, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- mov x1, x20
+ mov x1, x19
; gcrRegs +[x1]
adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address
add x2, x2, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x2]
blr x2
- ; gcrRegs -[x1 x20] +[x0]
+ ; gcrRegs -[x1 x19] +[x0]
; gcr arg pop 0
;; size=20 bbWeight=0.12 PerfScore 0.69
-G_M49351_IG09: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref
+G_M49351_IG09: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- ldr x20, [x19, #0x08]
- ; gcrRegs +[x20]
+ ldr x19, [x20, #0x08]
+ ; gcrRegs +[x19]
ldr x22, [x22, #0x08]
- ldr x0, [x19]
+ mov x0, x24
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
@@ -114,34 +117,34 @@ G_M49351_IG09: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs
; gcrRegs +[x3]
mov x1, x21
; gcrRegs +[x1]
- mov x2, x20
+ mov x2, x19
; gcrRegs +[x2]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x4, [x11]
- ;; size=52 bbWeight=0.50 PerfScore 9.75
+ ;; size=52 bbWeight=0.50 PerfScore 8.50
G_M49351_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x40
+ ldp x23, x24, [sp, #0x40]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x50
br x4
; gcr arg pop 0
- ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M49351_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x1-x3 x20-x22]
+ ;; size=20 bbWeight=0.50 PerfScore 2.50
+G_M49351_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x1-x3 x19 x21-x22]
mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M49351_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x40
+ ldp x23, x24, [sp, #0x40]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x50
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=20 bbWeight=0.50 PerfScore 2.50
G_M49351_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x20]
- mov x0, x20
+ ; gcrRegs +[x19]
+ mov x0, x19
; gcrRegs +[x0]
cbz x0, G_M49351_IG18
;; size=8 bbWeight=0.50 PerfScore 0.75
@@ -159,38 +162,38 @@ G_M49351_IG14: ; bbWeight=0.25, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=
beq G_M49351_IG16
;; size=36 bbWeight=0.25 PerfScore 3.25
G_M49351_IG15: ; bbWeight=0.12, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x1, x20
+ mov x1, x19
; gcrRegs +[x1]
adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address
add x2, x2, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x2]
blr x2
- ; gcrRegs -[x1 x20] +[x0]
+ ; gcrRegs -[x1 x19] +[x0]
; gcr arg pop 0
;; size=20 bbWeight=0.12 PerfScore 0.69
-G_M49351_IG16: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M49351_IG16: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movn w0, #0
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M49351_IG17: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x40
+ ldp x23, x24, [sp, #0x40]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x50
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M49351_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=0.50 PerfScore 2.50
+G_M49351_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M49351_IG19: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x40
+ ldp x23, x24, [sp, #0x40]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x50
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=20 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 372, prolog size 36, PerfScore 45.12, instruction count 93, allocated bytes for code 372 (MethodHash=56213f38) for method Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
+; Total bytes of code 380, prolog size 36, PerfScore 42.12, instruction count 95, allocated bytes for code 380 (MethodHash=56213f38) for method Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -201,7 +204,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 93 (0x0005d) Actual length = 372 (0x000174)
+ Function Length : 95 (0x0005f) Actual length = 380 (0x00017c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -218,9 +221,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
...
+8 (+4.35%) : 37896.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
@@ -11,8 +11,8 @@
;
; V00 this [V00,T03] ( 4, 3.50) ref -> x0 this class-hnd single-def <System.Threading.PortableThreadPool>
; V01 arg1 [V01,T01] ( 4, 7 ) ref -> x1 class-hnd single-def <System.Threading.PortableThreadPool+WaitThread>
-; V02 loc0 [V02,T00] ( 9, 19.50) ref -> registers class-hnd <System.Threading.PortableThreadPool+WaitThreadNode>
-; V03 loc1 [V03,T02] ( 3, 8.50) ref -> x19 class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
+; V02 loc0 [V02,T00] ( 8, 19 ) ref -> registers class-hnd <System.Threading.PortableThreadPool+WaitThreadNode>
+; V03 loc1 [V03,T02] ( 3, 8.50) ref -> registers class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V06 tmp2 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -56,22 +56,33 @@ G_M1296_IG05: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=80002 {
; gcrRegs +[x1 x19]
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
- cbz x0, G_M1296_IG06
+ cbz x0, G_M1296_IG08
ldr x11, [x0, #0x08]
; gcrRegs +[x11]
cmp x11, x1
bne G_M1296_IG07
;; size=20 bbWeight=4 PerfScore 34.00
-G_M1296_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M1296_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x1 x11]
- cbnz x0, G_M1296_IG08
+ mov x14, x19
+ ; gcrRegs +[x14]
+ mov x19, x0
+ b G_M1296_IG09
+ ;; size=12 bbWeight=0.50 PerfScore 1.00
+G_M1296_IG07: ; bbWeight=2, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x14 x19] +[x1]
+ mov x19, x0
+ ; gcrRegs +[x19]
+ b G_M1296_IG05
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M1296_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0-x1 x19]
adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x1, x1, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x1]
ldr x1, [x1]
; gcrRegs +[x1]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
- ; gcrRegs -[x0]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
ldr x0, [x0]
@@ -80,36 +91,31 @@ G_M1296_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
blr x2
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1]
; gcr arg pop 0
- b G_M1296_IG09
- ;; size=56 bbWeight=0.50 PerfScore 10.50
-G_M1296_IG07: ; bbWeight=2, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0-x1]
- mov x19, x0
- ; gcrRegs +[x19]
- b G_M1296_IG05
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M1296_IG08: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1]
- ldr x15, [x0, #0x10]
+ b G_M1296_IG10
+ ;; size=52 bbWeight=0.50 PerfScore 10.00
+G_M1296_IG09: ; bbWeight=0.50, gcrefRegs=84000 {x14 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x14 x19]
+ ldr x15, [x19, #0x10]
; gcrRegs +[x15]
- add x14, x19, #16
+ add x14, x14, #16
+ ; gcrRegs -[x14]
; byrRegs +[x14]
adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_ASSIGN_REF
add x12, x12, [LOW RELOC #0xD1FFAB1E]
ldr x12, [x12]
blr x12
- ; gcrRegs -[x0 x15 x19]
+ ; gcrRegs -[x15 x19]
; byrRegs -[x14]
;; size=24 bbWeight=0.50 PerfScore 4.25
-G_M1296_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M1296_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 184, prolog size 12, PerfScore 70.00, instruction count 46, allocated bytes for code 184 (MethodHash=2a35faef) for method System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
+; Total bytes of code 192, prolog size 12, PerfScore 70.50, instruction count 48, allocated bytes for code 192 (MethodHash=2a35faef) for method System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
; ============================================================
Unwind Info:
@@ -120,7 +126,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+32 (+8.25%) : 42001.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
@@ -8,7 +8,7 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 7, 4.50) ref -> x20 this class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
+; V00 this [V00,T01] ( 6, 4 ) ref -> x20 this class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
; V01 arg1 [V01,T00] ( 7, 4.75) ref -> x19 class-hnd single-def <System.Object>
; V02 arg2 [V02,T03] ( 3, 2.50) ref -> x21 class-hnd single-def <System.Collections.IComparer>
; V03 loc0 [V03,T04] ( 5, 2.38) ref -> x22 class-hnd exact single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
@@ -16,35 +16,37 @@
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
;* V06 loc3 [V06 ] ( 0, 0 ) int -> zero-ref single-def
;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
-; V08 loc5 [V08,T13] ( 2, 1 ) ref -> x19 class-hnd single-def <System.__Canon>
-; V09 loc6 [V09,T14] ( 2, 1 ) ref -> x22 class-hnd single-def <System.__Canon>
+; V08 loc5 [V08,T14] ( 2, 1 ) ref -> x19 class-hnd single-def <System.__Canon>
+; V09 loc6 [V09,T15] ( 2, 1 ) ref -> x22 class-hnd single-def <System.__Canon>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T09] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
+; V11 tmp1 [V11,T10] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
; V12 tmp2 [V12,T02] ( 3, 4.50) ref -> x0 class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
-; V13 tmp3 [V13,T10] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
+; V13 tmp3 [V13,T11] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
; V14 tmp4 [V14,T05] ( 3, 2.50) ref -> x0 class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
-; V15 tmp5 [V15,T11] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
-;* V16 tmp6 [V16,T12] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
-;* V17 tmp7 [V17,T15] ( 0, 0 ) int -> zero-ref single-def
-; V18 tmp8 [V18,T08] ( 3, 1.50) int -> x19
+; V15 tmp5 [V15,T12] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V16 tmp6 [V16,T13] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
+;* V17 tmp7 [V17,T16] ( 0, 0 ) int -> zero-ref single-def
+; V18 tmp8 [V18,T09] ( 3, 1.50) int -> x19
; V19 tmp9 [V19,T06] ( 2, 2 ) int -> x0 "Single return block return value"
; V20 tmp10 [V20,T07] ( 2, 2 ) long -> x0 "argument with side effect"
+; V21 cse0 [V21,T08] ( 5, 1.50) long -> x23 multi-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M56277_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
+ stp x19, x20, [sp, #0x18]
+ stp x21, x22, [sp, #0x28]
+ str x23, [sp, #0x38]
mov fp, sp
- str x0, [fp, #0x18]
+ str x0, [fp, #0x10]
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
; gcrRegs +[x19]
mov x21, x2
; gcrRegs +[x21]
- ;; size=32 bbWeight=1 PerfScore 6.00
+ ;; size=36 bbWeight=1 PerfScore 7.00
G_M56277_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
@@ -52,7 +54,8 @@ G_M56277_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
;; size=8 bbWeight=1 PerfScore 1.50
G_M56277_IG03: ; bbWeight=0.25, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
ldr x22, [x0]
- ldr x0, [x20]
+ ldr x23, [x20]
+ mov x0, x23
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -61,7 +64,7 @@ G_M56277_IG03: ; bbWeight=0.25, gcrefRegs=380001 {x0 x19 x20 x21}, byrefR
; gcr arg pop 0
cmp x22, x0
beq G_M56277_IG05
- ;; size=32 bbWeight=0.25 PerfScore 3.12
+ ;; size=36 bbWeight=0.25 PerfScore 3.25
G_M56277_IG04: ; bbWeight=0.12, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
@@ -84,7 +87,8 @@ G_M56277_IG06: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M56277_IG07: ; bbWeight=0.25, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr x19, [x22]
- ldr x0, [x20]
+ ldr x23, [x20]
+ mov x0, x23
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
@@ -92,7 +96,7 @@ G_M56277_IG07: ; bbWeight=0.25, gcrefRegs=700000 {x20 x21 x22}, byrefRegs
; gcr arg pop 0
cmp x19, x0
beq G_M56277_IG09
- ;; size=32 bbWeight=0.25 PerfScore 3.12
+ ;; size=36 bbWeight=0.25 PerfScore 3.25
G_M56277_IG08: ; bbWeight=0.12, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
mov x1, x22
; gcrRegs +[x1]
@@ -111,7 +115,7 @@ G_M56277_IG09: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs
ldr x19, [x20, #0x08]
; gcrRegs +[x19]
ldr x22, [x22, #0x08]
- ldr x0, [x20]
+ mov x0, x23
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
@@ -126,14 +130,15 @@ G_M56277_IG09: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x4, [x11]
- ;; size=64 bbWeight=0.50 PerfScore 10.75
+ ;; size=64 bbWeight=0.50 PerfScore 9.50
G_M56277_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
br x4
; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M56277_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x1-x3 x19 x21-x22]
mov w0, #1
@@ -144,11 +149,12 @@ G_M56277_IG12: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M56277_IG13: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M56277_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19]
mov x0, x19
@@ -183,28 +189,31 @@ G_M56277_IG17: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
movn w0, #0
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M56277_IG18: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M56277_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M56277_IG20: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M56277_IG21: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, epilog, nogc
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
-; Total bytes of code 388, prolog size 32, PerfScore 44.31, instruction count 97, allocated bytes for code 388 (MethodHash=ba80242a) for method Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
+; Total bytes of code 420, prolog size 36, PerfScore 49.31, instruction count 105, allocated bytes for code 420 (MethodHash=ba80242a) for method Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -215,7 +224,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 105 (0x00069) Actual length = 420 (0x0001a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -235,10 +244,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end
- E4 end
- E4 end
libraries.pmi.linux.arm64.checked.mch
-48 (-27.91%) : 177575.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
@@ -7,15 +7,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 6, 11 ) ref -> x1 class-hnd single-def <System.String>
-; V02 arg2 [V02,T05] ( 4, 6.50) int -> x2 single-def
-; V03 arg3 [V03,T07] ( 5, 4.50) int -> x3 single-def
-; V04 loc0 [V04,T03] ( 6, 13 ) int -> x5
-; V05 loc1 [V05,T00] ( 11, 27.50) int -> x6
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> x1 class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 3, 6 ) int -> x2 single-def
+; V03 arg3 [V03,T08] ( 5, 4.50) int -> x3 single-def
+; V04 loc0 [V04,T01] ( 5, 12 ) int -> x5
+; V05 loc1 [V05,T00] ( 7, 25 ) int -> x6
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> x4 "CSE - aggressive"
-; V08 cse1 [V08,T01] ( 6, 13.50) int -> x8 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> x8 "CSE - aggressive"
+; V08 cse1 [V08,T06] ( 3, 8.50) int -> x7 "CSE - aggressive"
+; V09 cse2 [V09,T09] ( 4, 6.50) int -> x4 "CSE - aggressive"
+; V10 cse3 [V10,T03] ( 3, 12 ) int -> x8 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -37,11 +39,11 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M6389_IG04: ; bbWeight=8, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
cmp w6, w5
- bge G_M6389_IG06
+ bge G_M6389_IG08
;; size=8 bbWeight=8 PerfScore 12.00
G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
cmp w6, w4
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x7, x0, #12
; byrRegs +[x7]
ldrh w7, [x7, w6, UXTW #2]
@@ -49,55 +51,36 @@ G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by
add w8, w2, w6
ldr w9, [x1, #0x08]
cmp w8, w9
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x9, x1, #12
; byrRegs +[x9]
ldrh w8, [x9, w8, UXTW #2]
cmp w7, w8
beq G_M6389_IG03
;; size=48 bbWeight=4 PerfScore 60.00
-G_M6389_IG06: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0-x1]
; byrRegs -[x9]
- cmp w6, w5
- bge G_M6389_IG09
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- cmp w6, w4
- bhs G_M6389_IG11
- add x0, x0, #12
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ldrh w0, [x0, w6, UXTW #2]
- ; byrRegs -[x0]
- add w8, w2, w6
- ldr w3, [x1, #0x08]
- cmp w8, w3
- bhs G_M6389_IG11
- add x4, x1, #12
- ; byrRegs +[x4]
- ldrh w1, [x4, w8, UXTW #2]
- ; gcrRegs -[x1]
- sub w0, w0, w1
- ;; size=44 bbWeight=0.50 PerfScore 7.00
-G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ sub w0, w7, w8
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[x4]
+G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub w0, w4, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 172, prolog size 8, PerfScore 91.25, instruction count 43, allocated bytes for code 172 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 124, prolog size 8, PerfScore 83.00, instruction count 31, allocated bytes for code 124 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -108,7 +91,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-36 (-21.95%) : 265493.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -11,12 +11,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
; V02 loc0 [V02,T00] ( 7, 24.50) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> x5 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x4 "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> x6 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> x5 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -33,51 +35,39 @@ G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x2]
cmp w1, w3
blt G_M264_IG11
- b G_M264_IG09
+ b G_M264_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
; byrRegs +[x0 x2]
sxtw w4, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1
- sxtw w4, w5
- tbnz w4, #31, G_M264_IG06
+ sub w4, w4, #1
+ tbnz w4, #31, G_M264_IG09
cmp w4, w1
bhs G_M264_IG13
- ubfiz x6, x4, #2, #32
- ldr w7, [x0, x6]
+ ubfiz x5, x4, #2, #32
+ ldr w6, [x0, x5]
cmp w4, w3
bhs G_M264_IG13
- ldr w6, [x2, x6]
- cmp w7, w6
+ ldr w5, [x2, x5]
+ cmp w6, w5
beq G_M264_IG05
- ;; size=48 bbWeight=4 PerfScore 54.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- tbz w5, #31, G_M264_IG08
- mov w0, wzr
- ; byrRegs -[x0]
+ ;; size=44 bbWeight=4 PerfScore 52.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0 x2]
+ cmp w5, w6
+ bhi G_M264_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref, isz
- ; byrRegs +[x0]
- cmp w5, w1
- bhs G_M264_IG13
- ubfiz x6, x5, #2, #32
- ldr w0, [x0, x6]
- ; byrRegs -[x0]
- cmp w5, w3
- bhs G_M264_IG13
- ldr w1, [x2, x6]
- cmp w0, w1
- blo G_M264_IG11
- ;; size=36 bbWeight=0.50 PerfScore 5.75
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
- mov w0, #1
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
@@ -96,7 +86,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 8, PerfScore 68.50, instruction count 41, allocated bytes for code 164 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 128, prolog size 8, PerfScore 61.00, instruction count 32, allocated bytes for code 128 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -107,7 +97,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-17.14%) : 167996.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
@@ -8,10 +8,10 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 10, 20 ) ref -> x19 class-hnd <System.Xml.Schema.XmlSchemaObject>
+; V00 arg0 [V00,T00] ( 9, 19.50) ref -> x19 class-hnd <System.Xml.Schema.XmlSchemaObject>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-; V03 tmp2 [V03,T02] ( 3, 2 ) ref -> x0 class-hnd "spilling QMark2" <System.Xml.Schema.XmlSchema>
+; V02 tmp1 [V02,T02] ( 2, 2 ) long -> x1 "fgMakeTemp is creating a new local variable"
+; V03 tmp2 [V03,T01] ( 2, 2 ) ref -> x0 class-hnd "spilling QMark2" <System.Xml.Schema.XmlSchema>
;
; Lcl frame size = 8
@@ -29,7 +29,7 @@ G_M32300_IG03: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x19, [x19, #0x18]
;; size=4 bbWeight=2 PerfScore 6.00
G_M32300_IG04: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M32300_IG06
+ cbz x19, G_M32300_IG08
;; size=4 bbWeight=8 PerfScore 8.00
G_M32300_IG05: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x19
@@ -42,54 +42,35 @@ G_M32300_IG05: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcr arg pop 0
cbz x0, G_M32300_IG03
;; size=24 bbWeight=4 PerfScore 16.00
-G_M32300_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M32300_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- cbz x19, G_M32300_IG12
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M32300_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- beq G_M32300_IG09
- ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M32300_IG08: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x0, x1
- mov x1, x19
- ; gcrRegs +[x1]
- bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
- ; gcrRegs -[x1 x19] +[x0]
- ; gcr arg pop 0
- b G_M32300_IG10
- ;; size=16 bbWeight=0.25 PerfScore 0.75
-G_M32300_IG09: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0] +[x19]
- mov x0, x19
+ csel x0, x19, x19, eq
; gcrRegs +[x0]
- ;; size=4 bbWeight=0.25 PerfScore 0.12
-G_M32300_IG10: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
ldr x0, [x0, #0x30]
- ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M32300_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=28 bbWeight=0.50 PerfScore 4.25
+G_M32300_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M32300_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
+G_M32300_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x19]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M32300_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M32300_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 140, prolog size 16, PerfScore 45.12, instruction count 35, allocated bytes for code 140 (MethodHash=8b5f81d3) for method System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
+; Total bytes of code 116, prolog size 16, PerfScore 43.00, instruction count 29, allocated bytes for code 116 (MethodHash=8b5f81d3) for method System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -100,7 +81,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+3.61%) : 160211.dasm - System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
@@ -13,16 +13,18 @@
; V02 loc1 [V02,T04] ( 3, 1.50) int -> x0
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T02] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T05] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V06 tmp3 [V06,T01] ( 6, 4.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
+; V05 tmp2 [V05,T05] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
+; V06 tmp3 [V06,T01] ( 5, 3.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
; V07 tmp4 [V07,T03] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V08 cse0 [V08,T06] ( 3, 1 ) long -> x19 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M33783_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M33783_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldrb w1, [x0, #0xD1FFAB1E]
@@ -39,22 +41,21 @@ G_M33783_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
cbz x0, G_M33783_IG12
;; size=28 bbWeight=0.50 PerfScore 6.00
G_M33783_IG04: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- cmp x2, x3
+ ldr x19, [x0]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x19, x2
beq G_M33783_IG06
;; size=24 bbWeight=0.25 PerfScore 1.50
G_M33783_IG05: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x3
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
;; size=8 bbWeight=0.12 PerfScore 0.19
G_M33783_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0]
- ldr x1, [x1, #0x78]
+ ldr x1, [x19, #0x78]
ldr x1, [x1]
blr x1
movz x11, #0xD1FFAB1E // code for <unknown method>
@@ -72,7 +73,7 @@ G_M33783_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
movk x0, #0xD1FFAB1E LSL #32
ldr w0, [x0]
tbz w0, #0, G_M33783_IG15
- ;; size=72 bbWeight=0.50 PerfScore 12.00
+ ;; size=68 bbWeight=0.50 PerfScore 10.50
G_M33783_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x0, #0xD1FFAB1E LSL #16
@@ -81,9 +82,10 @@ G_M33783_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[x0]
;; size=16 bbWeight=0.50 PerfScore 2.25
G_M33783_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M33783_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E
@@ -100,9 +102,10 @@ G_M33783_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[x0]
;; size=16 bbWeight=0.50 PerfScore 2.25
G_M33783_IG11: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M33783_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E
@@ -119,9 +122,10 @@ G_M33783_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[x0]
;; size=16 bbWeight=0.50 PerfScore 2.25
G_M33783_IG14: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M33783_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E
@@ -148,18 +152,18 @@ G_M33783_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
b G_M33783_IG13
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 332, prolog size 8, PerfScore 40.44, instruction count 83, allocated bytes for code 332 (MethodHash=26627c08) for method System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
+; Total bytes of code 344, prolog size 12, PerfScore 42.94, instruction count 86, allocated bytes for code 344 (MethodHash=26627c08) for method System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 3
E bit : 0
X bit : 0
Vers : 0
- Function Length : 83 (0x00053) Actual length = 332 (0x00014c)
+ Function Length : 86 (0x00056) Actual length = 344 (0x000158)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -173,7 +177,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
+8 (+4.65%) : 229728.dasm - System.ComponentModel.TypeConverter+SimplePropertyDescriptor:ResetValue(System.Object):this (FullOpts)
@@ -7,27 +7,29 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 6 ) ref -> x19 this class-hnd single-def <System.ComponentModel.TypeConverter+SimplePropertyDescriptor>
-; V01 arg1 [V01,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 6, 5 ) ref -> x19 this class-hnd single-def <System.ComponentModel.TypeConverter+SimplePropertyDescriptor>
+; V01 arg1 [V01,T03] ( 3, 2.50) ref -> x20 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T04] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T06] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V06 tmp3 [V06,T00] ( 6, 8.75) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
-; V07 tmp4 [V07,T02] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
-; V08 tmp5 [V08,T05] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
+; V05 tmp2 [V05,T06] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
+; V06 tmp3 [V06,T02] ( 5, 5.75) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
+; V07 tmp4 [V07,T01] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
+; V08 tmp5 [V08,T05] ( 2, 2 ) ref -> x2 single-def "argument with side effect"
+; V09 cse0 [V09,T07] ( 3, 1 ) long -> x21 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M9521_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
; gcrRegs +[x20]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M9521_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
@@ -47,22 +49,21 @@ G_M9521_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
cbz x0, G_M9521_IG07
;; size=56 bbWeight=1 PerfScore 23.50
G_M9521_IG03: ; bbWeight=0.25, gcrefRegs=180003 {x0 x1 x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- cmp x2, x3
+ ldr x21, [x0]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x21, x2
beq G_M9521_IG05
;; size=24 bbWeight=0.25 PerfScore 1.50
G_M9521_IG04: ; bbWeight=0.12, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x3
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M9521_IG05: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
- ldr x1, [x0]
- ldr x1, [x1, #0x48]
+G_M9521_IG05: ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
+ ldr x1, [x21, #0x48]
ldr x1, [x1, #0x38]
blr x1
mov x2, x0
@@ -73,20 +74,22 @@ G_M9521_IG05: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
ldr x3, [x19]
ldr x3, [x3, #0x60]
ldr x3, [x3, #0x30]
- ;; size=40 bbWeight=1 PerfScore 20.50
-G_M9521_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ;; size=36 bbWeight=0.50 PerfScore 8.75
+G_M9521_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
br x3
- ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
G_M9521_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x0-x2 x19-x20]
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 172, prolog size 12, PerfScore 53.69, instruction count 43, allocated bytes for code 172 (MethodHash=ff5fdace) for method System.ComponentModel.TypeConverter+SimplePropertyDescriptor:ResetValue(System.Object):this (FullOpts)
+; Total bytes of code 180, prolog size 16, PerfScore 43.44, instruction count 45, allocated bytes for code 180 (MethodHash=ff5fdace) for method System.ComponentModel.TypeConverter+SimplePropertyDescriptor:ResetValue(System.Object):this (FullOpts)
; ============================================================
Unwind Info:
@@ -97,7 +100,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -108,10 +111,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
+8 (+7.14%) : 159880.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
@@ -13,16 +13,18 @@
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlDocument>
; V04 tmp2 [V04,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp3 [V05,T04] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V06 tmp4 [V06,T00] ( 6, 8.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
-; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
+; V05 tmp3 [V05,T04] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
+; V06 tmp4 [V06,T01] ( 5, 5.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
+; V07 tmp5 [V07,T00] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
+; V08 cse0 [V08,T05] ( 3, 1 ) long -> x19 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M56653_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M56653_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldr x0, [x0, #0x08]
@@ -36,28 +38,28 @@ G_M56653_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
cbz x0, G_M56653_IG07
;; size=32 bbWeight=1 PerfScore 15.00
G_M56653_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- cmp x2, x3
+ ldr x19, [x0]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x19, x2
beq G_M56653_IG05
;; size=24 bbWeight=0.25 PerfScore 1.50
G_M56653_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x3
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M56653_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ldr x1, [x0]
- ldr x1, [x1, #0x70]
+G_M56653_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ldr x1, [x19, #0x70]
ldr x1, [x1, #0x18]
- ;; size=12 bbWeight=1 PerfScore 9.00
-G_M56653_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ;; size=8 bbWeight=0.50 PerfScore 3.00
+G_M56653_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
br x1
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M56653_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E
@@ -65,22 +67,23 @@ G_M56653_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
movk x0, #0xD1FFAB1E LSL #32
;; size=12 bbWeight=0.50 PerfScore 0.75
G_M56653_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 112, prolog size 8, PerfScore 30.94, instruction count 28, allocated bytes for code 112 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
+; Total bytes of code 120, prolog size 12, PerfScore 26.94, instruction count 30, allocated bytes for code 120 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -91,7 +94,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
libraries_tests.run.linux.arm64.Release.mch
-48 (-27.91%) : 459608.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
@@ -8,15 +8,17 @@
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 26
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 5, 6.62) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T01] ( 6, 9.23) ref -> x1 class-hnd single-def <System.String>
-; V02 arg2 [V02,T05] ( 4, 5.62) int -> x2 single-def
-; V03 arg3 [V03,T06] ( 5, 4.08) int -> x3 single-def
-; V04 loc0 [V04,T04] ( 6, 7.77) int -> x5
-; V05 loc1 [V05,T00] ( 11, 19.15) int -> x6
+; V00 arg0 [V00,T03] ( 4, 5.69) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T01] ( 4, 7.38) ref -> x1 class-hnd single-def <System.String>
+; V02 arg2 [V02,T05] ( 3, 4.69) int -> x2 single-def
+; V03 arg3 [V03,T08] ( 5, 4.08) int -> x3 single-def
+; V04 loc0 [V04,T04] ( 5, 6.77) int -> x5
+; V05 loc1 [V05,T00] ( 7, 15.38) int -> x6
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T07] ( 5, 5.69) int -> x4 "CSE - aggressive"
-; V08 cse1 [V08,T02] ( 6, 10.85) int -> x8 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T06] ( 3, 6.31) int -> x8 "CSE - aggressive"
+; V08 cse1 [V08,T07] ( 3, 6.31) int -> x7 "CSE - aggressive"
+; V09 cse2 [V09,T02] ( 3, 8.08) int -> x8 "CSE - aggressive"
+; V10 cse3 [V10,T09] ( 4, 4.77) int -> x4 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -38,11 +40,11 @@ G_M6389_IG03: ; bbWeight=1.77, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {},
;; size=4 bbWeight=1.77 PerfScore 0.88
G_M6389_IG04: ; bbWeight=2.77, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
cmp w6, w5
- bge G_M6389_IG06
+ bge G_M6389_IG08
;; size=8 bbWeight=2.77 PerfScore 4.15
G_M6389_IG05: ; bbWeight=2.69, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
cmp w6, w4
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x7, x0, #12
; byrRegs +[x7]
ldrh w7, [x7, w6, UXTW #2]
@@ -50,55 +52,36 @@ G_M6389_IG05: ; bbWeight=2.69, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {},
add w8, w2, w6
ldr w9, [x1, #0x08]
cmp w8, w9
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x9, x1, #12
; byrRegs +[x9]
ldrh w8, [x9, w8, UXTW #2]
cmp w7, w8
beq G_M6389_IG03
;; size=48 bbWeight=2.69 PerfScore 40.38
-G_M6389_IG06: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M6389_IG06: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0-x1]
; byrRegs -[x9]
- cmp w6, w5
- bge G_M6389_IG09
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M6389_IG07: ; bbWeight=0.92, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- cmp w6, w4
- bhs G_M6389_IG11
- add x0, x0, #12
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ldrh w0, [x0, w6, UXTW #2]
- ; byrRegs -[x0]
- add w8, w2, w6
- ldr w3, [x1, #0x08]
- cmp w8, w3
- bhs G_M6389_IG11
- add x4, x1, #12
- ; byrRegs +[x4]
- ldrh w1, [x4, w8, UXTW #2]
- ; gcrRegs -[x1]
- sub w0, w0, w1
- ;; size=44 bbWeight=0.92 PerfScore 12.92
-G_M6389_IG08: ; bbWeight=0.92, epilog, nogc, extend
+ sub w0, w7, w8
+ ;; size=4 bbWeight=0.92 PerfScore 0.46
+G_M6389_IG07: ; bbWeight=0.92, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.92 PerfScore 1.85
-G_M6389_IG09: ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[x4]
+G_M6389_IG08: ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub w0, w4, w3
;; size=4 bbWeight=0.08 PerfScore 0.04
-G_M6389_IG10: ; bbWeight=0.08, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.08, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.08 PerfScore 0.15
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 172, prolog size 8, PerfScore 69.38, instruction count 43, allocated bytes for code 172 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
+; Total bytes of code 124, prolog size 8, PerfScore 55.42, instruction count 31, allocated bytes for code 124 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
; ============================================================
Unwind Info:
@@ -109,7 +92,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-36 (-22.50%) : 570530.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (Tier1)
@@ -5,19 +5,21 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 3568
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 3568
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T01] ( 7, 7 ) int -> x4
+; V02 loc0 [V02,T00] ( 7, 7 ) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 6, 12 ) int -> x5 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 3 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 4 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 3 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T02] ( 6, 5 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T03] ( 6, 6 ) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T05] ( 2, 4 ) int -> x4 "dup spill"
+; V05 tmp2 [V05,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T02] ( 4, 3 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T04] ( 2, 2 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T01] ( 5, 4 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T06] ( 3, 3 ) int -> x6 "CSE - aggressive"
+; V10 cse1 [V10,T07] ( 3, 3 ) int -> x5 "CSE - aggressive"
+; V11 cse2 [V11,T08] ( 3, 3 ) long -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -28,69 +30,57 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
; byrRegs +[x0 x2]
cmp w1, w3
- bne G_M264_IG10
+ bne G_M264_IG11
sxtw w4, w3
;; size=12 bbWeight=1 PerfScore 2.00
G_M264_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1
- sxtw w4, w5
- tbnz w4, #31, G_M264_IG04
+ sub w4, w4, #1
+ tbnz w4, #31, G_M264_IG06
cmp w4, w1
- bhs G_M264_IG09
- ubfiz x6, x4, #2, #32
- ldr w7, [x0, x6]
+ bhs G_M264_IG10
+ ubfiz x5, x4, #2, #32
+ ldr w6, [x0, x5]
cmp w4, w3
- bhs G_M264_IG09
- ldr w6, [x2, x6]
- cmp w7, w6
+ bhs G_M264_IG10
+ ldr w5, [x2, x5]
+ cmp w6, w5
beq G_M264_IG03
- ;; size=48 bbWeight=1 PerfScore 13.50
-G_M264_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- tbnz w5, #31, G_M264_IG11
- cmp w5, w1
- bhs G_M264_IG09
- ubfiz x6, x5, #2, #32
- ldr w0, [x0, x6]
- ; byrRegs -[x0]
- cmp w5, w3
- bhs G_M264_IG09
- ldr w1, [x2, x6]
- cmp w0, w1
- bhs G_M264_IG07
- ;; size=40 bbWeight=1 PerfScore 12.50
-G_M264_IG05: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
+ cmp w5, w6
+ bls G_M264_IG08
+ ;; size=52 bbWeight=1 PerfScore 14.50
+G_M264_IG04: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x0 x2]
movn w0, #0
;; size=4 bbWeight=0.96 PerfScore 0.48
-G_M264_IG06: ; bbWeight=0.96, epilog, nogc, extend
+G_M264_IG05: ; bbWeight=0.96, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.96 PerfScore 1.91
-G_M264_IG07: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M264_IG07: ; bbWeight=1, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M264_IG08: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
;; size=4 bbWeight=0.04 PerfScore 0.02
-G_M264_IG08: ; bbWeight=0.04, epilog, nogc, extend
+G_M264_IG09: ; bbWeight=0.04, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.04 PerfScore 0.09
-G_M264_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG10: ; 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_M264_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M264_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp w1, w3
- blt G_M264_IG05
- b G_M264_IG07
+ blt G_M264_IG04
+ b G_M264_IG08
;; size=12 bbWeight=0 PerfScore 0.00
-G_M264_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov w0, wzr
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M264_IG12: ; bbWeight=0, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 160, prolog size 8, PerfScore 32.00, instruction count 40, allocated bytes for code 160 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 124, prolog size 8, PerfScore 23.00, instruction count 31, allocated bytes for code 124 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================
Unwind Info:
@@ -101,7 +91,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-36 (-22.50%) : 552828.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (Tier1)
@@ -5,19 +5,21 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1942
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1942
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T01] ( 7, 7 ) int -> x4
+; V02 loc0 [V02,T00] ( 7, 7 ) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 6, 12 ) int -> x5 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 3 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 4 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 3 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T02] ( 6, 5 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T03] ( 6, 6 ) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T05] ( 2, 4 ) int -> x4 "dup spill"
+; V05 tmp2 [V05,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T02] ( 4, 3 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T04] ( 2, 2 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T01] ( 5, 4 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T06] ( 3, 3 ) int -> x6 "CSE - aggressive"
+; V10 cse1 [V10,T07] ( 3, 3 ) int -> x5 "CSE - aggressive"
+; V11 cse2 [V11,T08] ( 3, 3 ) long -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -28,69 +30,57 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
; byrRegs +[x0 x2]
cmp w1, w3
- bne G_M264_IG10
+ bne G_M264_IG11
sxtw w4, w3
;; size=12 bbWeight=1 PerfScore 2.00
G_M264_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1
- sxtw w4, w5
- tbnz w4, #31, G_M264_IG04
+ sub w4, w4, #1
+ tbnz w4, #31, G_M264_IG06
cmp w4, w1
- bhs G_M264_IG09
- ubfiz x6, x4, #2, #32
- ldr w7, [x0, x6]
+ bhs G_M264_IG10
+ ubfiz x5, x4, #2, #32
+ ldr w6, [x0, x5]
cmp w4, w3
- bhs G_M264_IG09
- ldr w6, [x2, x6]
- cmp w7, w6
+ bhs G_M264_IG10
+ ldr w5, [x2, x5]
+ cmp w6, w5
beq G_M264_IG03
- ;; size=48 bbWeight=1 PerfScore 13.50
-G_M264_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- tbnz w5, #31, G_M264_IG11
- cmp w5, w1
- bhs G_M264_IG09
- ubfiz x6, x5, #2, #32
- ldr w0, [x0, x6]
- ; byrRegs -[x0]
- cmp w5, w3
- bhs G_M264_IG09
- ldr w1, [x2, x6]
- cmp w0, w1
- bhs G_M264_IG07
- ;; size=40 bbWeight=1 PerfScore 12.50
-G_M264_IG05: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
+ cmp w5, w6
+ bls G_M264_IG08
+ ;; size=52 bbWeight=1 PerfScore 14.50
+G_M264_IG04: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x0 x2]
movn w0, #0
;; size=4 bbWeight=0.96 PerfScore 0.48
-G_M264_IG06: ; bbWeight=0.96, epilog, nogc, extend
+G_M264_IG05: ; bbWeight=0.96, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.96 PerfScore 1.93
-G_M264_IG07: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M264_IG07: ; bbWeight=1, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M264_IG08: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
;; size=4 bbWeight=0.04 PerfScore 0.02
-G_M264_IG08: ; bbWeight=0.04, epilog, nogc, extend
+G_M264_IG09: ; bbWeight=0.04, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.04 PerfScore 0.07
-G_M264_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG10: ; 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_M264_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M264_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp w1, w3
- blt G_M264_IG05
- b G_M264_IG07
+ blt G_M264_IG04
+ b G_M264_IG08
;; size=12 bbWeight=0 PerfScore 0.00
-G_M264_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov w0, wzr
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M264_IG12: ; bbWeight=0, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 160, prolog size 8, PerfScore 32.00, instruction count 40, allocated bytes for code 160 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 124, prolog size 8, PerfScore 23.00, instruction count 31, allocated bytes for code 124 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================
Unwind Info:
@@ -101,7 +91,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+6.56%) : 93560.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
@@ -9,21 +9,21 @@
; 5 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 9, 5.29) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V00 this [V00,T00] ( 9, 5.29) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Version>
-; V02 loc1 [V02,T03] ( 5, 5 ) ref -> x20 class-hnd <System.Version>
+; V02 loc1 [V02,T06] ( 5, 3 ) ref -> x20 class-hnd <System.Version>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V06 tmp2 [V06,T06] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
-; V07 tmp3 [V07,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V06 tmp2 [V06,T05] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
+; V07 tmp3 [V07,T03] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
; V08 tmp4 [V08,T07] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V09 tmp5 [V09,T00] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V09 tmp5 [V09,T01] ( 5, 5.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V12 tmp8 [V12,T05] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V12 tmp8 [V12,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
; V13 tmp9 [V13,T08] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V14 tmp10 [V14,T01] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V14 tmp10 [V14,T02] ( 5, 5.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;
; Lcl frame size = 8
@@ -41,16 +41,16 @@ G_M53393_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcrRegs +[x20]
ldr x21, [x19, #0x88]
; gcrRegs +[x21]
- cbz x21, G_M53393_IG15
+ cbz x21, G_M53393_IG13
ldrb w0, [x21, #0x18]
- tbz w0, #1, G_M53393_IG15
+ tbz w0, #1, G_M53393_IG13
;; size=20 bbWeight=1 PerfScore 8.50
G_M53393_IG03: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
ldr x1, [x21, #0x08]
; gcrRegs +[x1]
mov x2, x1
; gcrRegs +[x2]
- cbz x2, G_M53393_IG07
+ cbz x2, G_M53393_IG06
;; size=12 bbWeight=1 PerfScore 4.50
G_M53393_IG04: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20-x21]
@@ -59,7 +59,7 @@ G_M53393_IG04: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=00
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
cmp x0, x3
- beq G_M53393_IG06
+ beq G_M53393_IG14
;; size=24 bbWeight=0.50 PerfScore 3.00
G_M53393_IG05: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
@@ -68,20 +68,16 @@ G_M53393_IG05: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
; gcrRegs -[x1] +[x0]
mov x2, x0
; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M53393_IG06: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x20, [x2, #0x20]
- ; gcrRegs +[x20]
- ;; size=4 bbWeight=1 PerfScore 3.00
-G_M53393_IG07: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
- cbnz x20, G_M53393_IG12
+ b G_M53393_IG14
+ ;; size=16 bbWeight=0.25 PerfScore 0.75
+G_M53393_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0 x2] +[x20]
+ cbnz x20, G_M53393_IG10
ldr x1, [x19, #0x90]
; gcrRegs +[x1]
- cbz x1, G_M53393_IG14
+ cbz x1, G_M53393_IG12
;; size=12 bbWeight=1 PerfScore 5.00
-G_M53393_IG08: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M53393_IG07: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
ldr x0, [x19, #0x90]
; gcrRegs +[x0]
@@ -89,42 +85,38 @@ G_M53393_IG08: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs +[x1]
mov x2, x1
; gcrRegs +[x2]
- cbz x2, G_M53393_IG12
+ cbz x2, G_M53393_IG10
;; size=16 bbWeight=1 PerfScore 7.50
-G_M53393_IG09: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M53393_IG08: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x19-x20]
ldr x0, [x2]
movz x3, #0xD1FFAB1E
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
cmp x0, x3
- beq G_M53393_IG11
+ beq G_M53393_IG15
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M53393_IG10: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M53393_IG09: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
mov x0, x3
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
mov x2, x0
; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M53393_IG11: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x20, [x2, #0x20]
- ; gcrRegs +[x20]
- ;; size=4 bbWeight=1 PerfScore 3.00
-G_M53393_IG12: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
+ b G_M53393_IG15
+ ;; size=16 bbWeight=0.25 PerfScore 0.75
+G_M53393_IG10: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x2] +[x20]
mov x0, x20
; gcrRegs +[x0]
;; size=4 bbWeight=1 PerfScore 0.50
-G_M53393_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M53393_IG11: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-G_M53393_IG14: ; bbWeight=0.15, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M53393_IG12: ; bbWeight=0.15, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x19]
add x1, x19, #144
; byrRegs +[x1]
@@ -137,9 +129,9 @@ G_M53393_IG14: ; bbWeight=0.15, gcVars=0000000000000000 {}, gcrefRegs=180
blr x2
; gcrRegs -[x0]
; byrRegs -[x1]
- b G_M53393_IG08
+ b G_M53393_IG07
;; size=32 bbWeight=0.15 PerfScore 1.10
-G_M53393_IG15: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M53393_IG13: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:EnsureAttributesAreBound():this
@@ -152,8 +144,20 @@ G_M53393_IG15: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs +[x21]
b G_M53393_IG03
;; size=32 bbWeight=0 PerfScore 0.00
+G_M53393_IG14: ; bbWeight=0, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20-x21] +[x2]
+ ldr x20, [x2, #0x20]
+ ; gcrRegs +[x20]
+ b G_M53393_IG06
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M53393_IG15: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19-x20]
+ ldr x20, [x2, #0x20]
+ ; gcrRegs +[x20]
+ b G_M53393_IG10
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 16, PerfScore 49.10, instruction count 61, allocated bytes for code 244 (MethodHash=53202f6e) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
+; Total bytes of code 260, prolog size 16, PerfScore 43.60, instruction count 65, allocated bytes for code 260 (MethodHash=53202f6e) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
; ============================================================
Unwind Info:
@@ -164,7 +168,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
+ Function Length : 65 (0x00041) Actual length = 260 (0x000104)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+6.56%) : 693860.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
@@ -9,20 +9,20 @@
; 4 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 9, 5.21) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V00 this [V00,T00] ( 9, 5.21) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Version>
-; V02 loc1 [V02,T03] ( 5, 5 ) ref -> x20 class-hnd <System.Version>
+; V02 loc1 [V02,T06] ( 5, 3 ) ref -> x20 class-hnd <System.Version>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V06 tmp2 [V06,T06] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
-; V07 tmp3 [V07,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V06 tmp2 [V06,T05] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
+; V07 tmp3 [V07,T03] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
; V08 tmp4 [V08,T07] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V09 tmp5 [V09,T00] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V09 tmp5 [V09,T01] ( 5, 5.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
-; V11 tmp7 [V11,T05] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V11 tmp7 [V11,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
; V12 tmp8 [V12,T08] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V13 tmp9 [V13,T01] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V13 tmp9 [V13,T02] ( 5, 5.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;
; Lcl frame size = 8
@@ -40,18 +40,18 @@ G_M53393_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcrRegs +[x20]
ldr x21, [x19, #0x88]
; gcrRegs +[x21]
- cbz x21, G_M53393_IG15
+ cbz x21, G_M53393_IG13
;; size=12 bbWeight=1 PerfScore 4.50
G_M53393_IG03: ; bbWeight=0.94, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x21, #0x18]
- tbz w0, #1, G_M53393_IG15
+ tbz w0, #1, G_M53393_IG13
;; size=8 bbWeight=0.94 PerfScore 3.76
G_M53393_IG04: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
ldr x1, [x21, #0x08]
; gcrRegs +[x1]
mov x2, x1
; gcrRegs +[x2]
- cbz x2, G_M53393_IG08
+ cbz x2, G_M53393_IG07
;; size=12 bbWeight=1 PerfScore 4.50
G_M53393_IG05: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20-x21]
@@ -60,7 +60,7 @@ G_M53393_IG05: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=00
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
cmp x0, x3
- beq G_M53393_IG07
+ beq G_M53393_IG15
;; size=24 bbWeight=0.50 PerfScore 3.00
G_M53393_IG06: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
@@ -69,20 +69,16 @@ G_M53393_IG06: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
; gcrRegs -[x1] +[x0]
mov x2, x0
; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M53393_IG07: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x20, [x2, #0x20]
- ; gcrRegs +[x20]
- ;; size=4 bbWeight=1 PerfScore 3.00
-G_M53393_IG08: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
- cbnz x20, G_M53393_IG13
+ b G_M53393_IG15
+ ;; size=16 bbWeight=0.25 PerfScore 0.75
+G_M53393_IG07: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0 x2] +[x20]
+ cbnz x20, G_M53393_IG11
ldr x1, [x19, #0x90]
; gcrRegs +[x1]
- cbz x1, G_M53393_IG16
+ cbz x1, G_M53393_IG14
;; size=12 bbWeight=1 PerfScore 5.00
-G_M53393_IG09: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M53393_IG08: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
ldr x0, [x19, #0x90]
; gcrRegs +[x0]
@@ -90,42 +86,38 @@ G_M53393_IG09: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs +[x1]
mov x2, x1
; gcrRegs +[x2]
- cbz x2, G_M53393_IG13
+ cbz x2, G_M53393_IG11
;; size=16 bbWeight=1 PerfScore 7.50
-G_M53393_IG10: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M53393_IG09: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x19-x20]
ldr x0, [x2]
movz x3, #0xD1FFAB1E
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
cmp x0, x3
- beq G_M53393_IG12
+ beq G_M53393_IG16
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M53393_IG11: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M53393_IG10: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
mov x0, x3
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
mov x2, x0
; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M53393_IG12: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x20, [x2, #0x20]
- ; gcrRegs +[x20]
- ;; size=4 bbWeight=1 PerfScore 3.00
-G_M53393_IG13: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
+ b G_M53393_IG16
+ ;; size=16 bbWeight=0.25 PerfScore 0.75
+G_M53393_IG11: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x2] +[x20]
mov x0, x20
; gcrRegs +[x0]
;; size=4 bbWeight=1 PerfScore 0.50
-G_M53393_IG14: ; bbWeight=1, epilog, nogc, extend
+G_M53393_IG12: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-G_M53393_IG15: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M53393_IG13: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x19]
mov x0, x19
; gcrRegs +[x0]
@@ -139,7 +131,7 @@ G_M53393_IG15: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=180
; gcrRegs +[x21]
b G_M53393_IG04
;; size=32 bbWeight=0.06 PerfScore 0.59
-G_M53393_IG16: ; bbWeight=0.05, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M53393_IG14: ; bbWeight=0.05, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x21]
add x1, x19, #144
; byrRegs +[x1]
@@ -152,10 +144,22 @@ G_M53393_IG16: ; bbWeight=0.05, gcrefRegs=180000 {x19 x20}, byrefRegs=000
blr x2
; gcrRegs -[x0]
; byrRegs -[x1]
- b G_M53393_IG09
+ b G_M53393_IG08
;; size=32 bbWeight=0.05 PerfScore 0.36
+G_M53393_IG15: ; bbWeight=0, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20] +[x2]
+ ldr x20, [x2, #0x20]
+ ; gcrRegs +[x20]
+ b G_M53393_IG07
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M53393_IG16: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19-x20]
+ ldr x20, [x2, #0x20]
+ ; gcrRegs +[x20]
+ b G_M53393_IG11
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 16, PerfScore 48.71, instruction count 61, allocated bytes for code 244 (MethodHash=53202f6e) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
+; Total bytes of code 260, prolog size 16, PerfScore 43.21, instruction count 65, allocated bytes for code 260 (MethodHash=53202f6e) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
; ============================================================
Unwind Info:
@@ -166,7 +170,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
+ Function Length : 65 (0x00041) Actual length = 260 (0x000104)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+7.50%) : 178668.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:IsVerifierReference(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte (Tier1)
@@ -9,27 +9,29 @@
; 1 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 7, 5.92) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V00 arg0 [V00,T00] ( 7, 5.46) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T03] ( 2, 2 ) int -> x0 "guarded devirt return temp"
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol>
-; V04 tmp3 [V04,T04] ( 3, 2.46) int -> x20 "guarded devirt return temp"
+; V04 tmp3 [V04,T04] ( 3, 2 ) int -> x20 "guarded devirt return temp"
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol>
-; V06 tmp5 [V06,T05] ( 4, 1.64) ubyte -> x0 "Inline stloc first use temp"
+; V06 tmp5 [V06,T06] ( 4, 1.64) ubyte -> x0 "Inline stloc first use temp"
;* V07 tmp6 [V07 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V08 tmp7 [V08 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V09 cse0 [V09,T01] ( 3, 3 ) long -> x20 "CSE - aggressive"
-; V10 cse1 [V10,T02] ( 3, 3 ) long -> x1 "CSE - aggressive"
+; V09 cse0 [V09,T02] ( 3, 2.54) long -> x21 "CSE - aggressive"
+; V10 cse1 [V10,T01] ( 3, 3 ) long -> x1 "CSE - aggressive"
+; V11 cse2 [V11,T05] ( 2, 2 ) long -> x0 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M28367_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M28367_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x19]
movz x0, #0xD1FFAB1E
@@ -44,52 +46,56 @@ G_M28367_IG03: ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
and w0, w0, #15
cmp w0, #5
ccmp w0, #10, z, ne
- beq G_M28367_IG09
+ beq G_M28367_IG10
;; size=24 bbWeight=0.46 PerfScore 2.99
G_M28367_IG04: ; bbWeight=0.26, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w0, #6
- beq G_M28367_IG09
+ beq G_M28367_IG10
;; size=8 bbWeight=0.26 PerfScore 0.39
G_M28367_IG05: ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr w0, [x19, #0x88]
asr w0, w0, #10
and w20, w0, #15
- b G_M28367_IG07
+ b G_M28367_IG08
;; size=16 bbWeight=0.46 PerfScore 2.53
G_M28367_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
- ldr x20, [x1, #0xA8]
- ldr x1, [x20, #0x18]
+ ldr x21, [x1, #0xA8]
+ ldr x1, [x21, #0x18]
blr x1
; gcrRegs -[x0]
- cbz w0, G_M28367_IG09
+ cbz w0, G_M28367_IG10
+ ;; size=20 bbWeight=1 PerfScore 8.50
+G_M28367_IG07: ; bbWeight=0.54, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19
; gcrRegs +[x0]
- ldr x1, [x20, #0x28]
+ ldr x1, [x21, #0x28]
blr x1
; gcrRegs -[x0 x19]
sxtw w20, w0
- ;; size=36 bbWeight=1 PerfScore 13.50
-G_M28367_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=0.54 PerfScore 2.70
+G_M28367_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
cmp w20, #11
cset x0, ne
;; size=8 bbWeight=1 PerfScore 1.00
-G_M28367_IG08: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+G_M28367_IG09: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M28367_IG09: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M28367_IG10: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
;; size=4 bbWeight=0.46 PerfScore 0.23
-G_M28367_IG10: ; bbWeight=0.46, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+G_M28367_IG11: ; bbWeight=0.46, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.46 PerfScore 1.38
+ ;; size=16 bbWeight=0.46 PerfScore 2.30
-; Total bytes of code 160, prolog size 12, PerfScore 34.02, instruction count 40, allocated bytes for code 160 (MethodHash=cff59130) for method Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:IsVerifierReference(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte (Tier1)
+; Total bytes of code 172, prolog size 16, PerfScore 35.64, instruction count 43, allocated bytes for code 172 (MethodHash=cff59130) for method Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:IsVerifierReference(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -100,7 +106,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -111,10 +117,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
-48 (-27.91%) : 129025.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
@@ -7,15 +7,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 6, 11 ) ref -> x1 class-hnd single-def <System.String>
-; V02 arg2 [V02,T05] ( 4, 6.50) int -> x2 single-def
-; V03 arg3 [V03,T07] ( 5, 4.50) int -> x3 single-def
-; V04 loc0 [V04,T03] ( 6, 13 ) int -> x5
-; V05 loc1 [V05,T00] ( 11, 27.50) int -> x6
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> x1 class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 3, 6 ) int -> x2 single-def
+; V03 arg3 [V03,T08] ( 5, 4.50) int -> x3 single-def
+; V04 loc0 [V04,T01] ( 5, 12 ) int -> x5
+; V05 loc1 [V05,T00] ( 7, 25 ) int -> x6
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> x4 "CSE - aggressive"
-; V08 cse1 [V08,T01] ( 6, 13.50) int -> x8 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> x8 "CSE - aggressive"
+; V08 cse1 [V08,T06] ( 3, 8.50) int -> x7 "CSE - aggressive"
+; V09 cse2 [V09,T09] ( 4, 6.50) int -> x4 "CSE - aggressive"
+; V10 cse3 [V10,T03] ( 3, 12 ) int -> x8 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -37,11 +39,11 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M6389_IG04: ; bbWeight=8, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
cmp w6, w5
- bge G_M6389_IG06
+ bge G_M6389_IG08
;; size=8 bbWeight=8 PerfScore 12.00
G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
cmp w6, w4
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x7, x0, #12
; byrRegs +[x7]
ldrh w7, [x7, w6, UXTW #2]
@@ -49,55 +51,36 @@ G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by
add w8, w2, w6
ldr w9, [x1, #0x08]
cmp w8, w9
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x9, x1, #12
; byrRegs +[x9]
ldrh w8, [x9, w8, UXTW #2]
cmp w7, w8
beq G_M6389_IG03
;; size=48 bbWeight=4 PerfScore 60.00
-G_M6389_IG06: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0-x1]
; byrRegs -[x9]
- cmp w6, w5
- bge G_M6389_IG09
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- cmp w6, w4
- bhs G_M6389_IG11
- add x0, x0, #12
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ldrh w0, [x0, w6, UXTW #2]
- ; byrRegs -[x0]
- add w8, w2, w6
- ldr w3, [x1, #0x08]
- cmp w8, w3
- bhs G_M6389_IG11
- add x4, x1, #12
- ; byrRegs +[x4]
- ldrh w1, [x4, w8, UXTW #2]
- ; gcrRegs -[x1]
- sub w0, w0, w1
- ;; size=44 bbWeight=0.50 PerfScore 7.00
-G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ sub w0, w7, w8
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[x4]
+G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub w0, w4, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 172, prolog size 8, PerfScore 91.25, instruction count 43, allocated bytes for code 172 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 124, prolog size 8, PerfScore 83.00, instruction count 31, allocated bytes for code 124 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -108,7 +91,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-36 (-21.95%) : 31503.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -11,12 +11,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
; V02 loc0 [V02,T00] ( 7, 24.50) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> x5 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x4 "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> x6 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> x5 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -33,51 +35,39 @@ G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x2]
cmp w1, w3
blt G_M264_IG11
- b G_M264_IG09
+ b G_M264_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
; byrRegs +[x0 x2]
sxtw w4, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1
- sxtw w4, w5
- tbnz w4, #31, G_M264_IG06
+ sub w4, w4, #1
+ tbnz w4, #31, G_M264_IG09
cmp w4, w1
bhs G_M264_IG13
- ubfiz x6, x4, #2, #32
- ldr w7, [x0, x6]
+ ubfiz x5, x4, #2, #32
+ ldr w6, [x0, x5]
cmp w4, w3
bhs G_M264_IG13
- ldr w6, [x2, x6]
- cmp w7, w6
+ ldr w5, [x2, x5]
+ cmp w6, w5
beq G_M264_IG05
- ;; size=48 bbWeight=4 PerfScore 54.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- tbz w5, #31, G_M264_IG08
- mov w0, wzr
- ; byrRegs -[x0]
+ ;; size=44 bbWeight=4 PerfScore 52.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0 x2]
+ cmp w5, w6
+ bhi G_M264_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref, isz
- ; byrRegs +[x0]
- cmp w5, w1
- bhs G_M264_IG13
- ubfiz x6, x5, #2, #32
- ldr w0, [x0, x6]
- ; byrRegs -[x0]
- cmp w5, w3
- bhs G_M264_IG13
- ldr w1, [x2, x6]
- cmp w0, w1
- blo G_M264_IG11
- ;; size=36 bbWeight=0.50 PerfScore 5.75
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
- mov w0, #1
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
@@ -96,7 +86,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 8, PerfScore 68.50, instruction count 41, allocated bytes for code 164 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 128, prolog size 8, PerfScore 61.00, instruction count 32, allocated bytes for code 128 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -107,7 +97,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-12.07%) : 92164.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
@@ -8,12 +8,13 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 11, 21 ) ref -> x0 this class-hnd single-def <System.Data.ExpressionParser>
-; V01 loc0 [V01,T04] ( 6, 14 ) ref -> x3 class-hnd single-def <<unknown class>>
+; V01 loc0 [V01,T04] ( 5, 13 ) ref -> x3 class-hnd single-def <<unknown class>>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 24 ) int -> x1 "index expr"
-; V04 tmp2 [V04,T05] ( 3, 6 ) int -> x1 "index expr"
-; V05 cse0 [V05,T00] ( 9, 31 ) int -> x19 "CSE - aggressive"
-; V06 cse1 [V06,T03] ( 5, 22 ) int -> x2 "CSE - aggressive"
+;* V04 tmp2 [V04,T06] ( 0, 0 ) int -> zero-ref "index expr"
+; V05 cse0 [V05,T05] ( 3, 9 ) int -> x2 "CSE - aggressive"
+; V06 cse1 [V06,T00] ( 7, 29 ) int -> x19 "CSE - aggressive"
+; V07 cse2 [V07,T03] ( 3, 20 ) int -> x2 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -33,22 +34,9 @@ G_M44374_IG03: ; bbWeight=8, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, b
str w19, [x0, #0x30]
ldr w2, [x3, #0x08]
cmp w2, w19
- ble G_M44374_IG05
+ ble G_M44374_IG08
;; size=24 bbWeight=8 PerfScore 72.00
G_M44374_IG04: ; bbWeight=4, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref, isz
- sxtw w1, w19
- cmp w1, w2
- bhs G_M44374_IG07
- add x4, x3, #16
- ; byrRegs +[x4]
- ldrh w1, [x4, w1, UXTW #2]
- cmp w1, #35
- bne G_M44374_IG03
- ;; size=28 bbWeight=4 PerfScore 28.00
-G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x4]
- cmp w2, w19
- ble G_M44374_IG08
sxtw w1, w19
cmp w1, w2
bhs G_M44374_IG07
@@ -56,13 +44,17 @@ G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, b
; byrRegs +[x2]
ldrh w2, [x2, w1, UXTW #2]
; byrRegs -[x2]
+ cmp w2, #35
+ bne G_M44374_IG03
+ ;; size=28 bbWeight=4 PerfScore 28.00
+G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref, isz
cmp w2, #35
bne G_M44374_IG09
mov w2, #7
str w2, [x0, #0x38]
add w2, w19, #1
str w2, [x0, #0x30]
- ;; size=52 bbWeight=1 PerfScore 11.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M44374_IG06: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
@@ -114,7 +106,7 @@ G_M44374_IG09: ; bbWeight=0, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, b
brk_unix #0
;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 232, prolog size 12, PerfScore 121.00, instruction count 58, allocated bytes for code 232 (MethodHash=962252a9) for method System.Data.ExpressionParser:ScanDate():this (FullOpts)
+; Total bytes of code 204, prolog size 12, PerfScore 114.00, instruction count 51, allocated bytes for code 204 (MethodHash=962252a9) for method System.Data.ExpressionParser:ScanDate():this (FullOpts)
; ============================================================
Unwind Info:
@@ -125,7 +117,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
+ Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+4.42%) : 20907.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
@@ -13,36 +13,37 @@
; V02 arg2 [V02,T09] ( 5, 4 ) byref -> x19 single-def
; V03 arg3 [V03,T01] ( 12, 14.50) byref -> x4 single-def
; V04 loc0 [V04,T13] ( 6, 3 ) ubyte -> x5
-; V05 loc1 [V05,T07] ( 6, 8 ) ubyte -> x3
-; V06 loc2 [V06,T11] ( 5, 5.50) ubyte -> x2
-; V07 loc3 [V07,T03] ( 7, 14 ) int -> x5
-; V08 loc4 [V08,T02] ( 5, 14.50) int -> x6
-; V09 loc5 [V09,T04] ( 4, 12 ) ubyte -> x8
+; V05 loc1 [V05,T07] ( 6, 8 ) ubyte -> x20
+; V06 loc2 [V06,T12] ( 4, 3.50) ubyte -> x21
+; V07 loc3 [V07,T03] ( 7, 14 ) int -> x2
+; V08 loc4 [V08,T02] ( 5, 14.50) int -> x3
+; V09 loc5 [V09,T04] ( 4, 12 ) ubyte -> x22
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V11 tmp1 [V11,T14] ( 3, 3 ) int -> x5 "Span.get_Item index"
; V12 tmp2 [V12,T15] ( 3, 1.50) int -> x2
-; V13 tmp3 [V13,T00] ( 3, 24 ) int -> x8 "Span.get_Item index"
-; V14 tmp4 [V14 ] ( 3, 3 ) struct ( 8) [fp+0x20] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-; V15 tmp5 [V15 ] ( 3, 3 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-; V16 tmp6 [V16,T12] ( 4, 4 ) int -> x0 "Single return block return value"
+; V13 tmp3 [V13,T00] ( 3, 24 ) int -> x6 "Span.get_Item index"
+; V14 tmp4 [V14 ] ( 3, 3 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
+; V15 tmp5 [V15 ] ( 3, 3 ) struct ( 8) [fp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
+; V16 tmp6 [V16,T11] ( 4, 4 ) int -> x0 "Single return block return value"
; V17 tmp7 [V17,T08] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V18 tmp8 [V18,T06] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V19 tmp9 [V19 ] ( 3, 3 ) ubyte -> [fp+0x20] do-not-enreg[X] addr-exposed "field V14.hasValue (fldOffset=0x0)" P-DEP
-; V20 tmp10 [V20 ] ( 3, 3 ) int -> [fp+0x24] do-not-enreg[X] addr-exposed "field V14.value (fldOffset=0x4)" P-DEP
-; V21 tmp11 [V21 ] ( 3, 3 ) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed "field V15.hasValue (fldOffset=0x0)" P-DEP
-; V22 tmp12 [V22 ] ( 3, 3 ) int -> [fp+0x1C] do-not-enreg[X] addr-exposed "field V15.value (fldOffset=0x4)" P-DEP
-; V23 cse0 [V23,T05] ( 3, 12 ) int -> x7 "CSE - aggressive"
+; V19 tmp9 [V19 ] ( 3, 3 ) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed "field V14.hasValue (fldOffset=0x0)" P-DEP
+; V20 tmp10 [V20 ] ( 3, 3 ) int -> [fp+0x1C] do-not-enreg[X] addr-exposed "field V14.value (fldOffset=0x4)" P-DEP
+; V21 tmp11 [V21 ] ( 3, 3 ) ubyte -> [fp+0x10] do-not-enreg[X] addr-exposed "field V15.hasValue (fldOffset=0x0)" P-DEP
+; V22 tmp12 [V22 ] ( 3, 3 ) int -> [fp+0x14] do-not-enreg[X] addr-exposed "field V15.value (fldOffset=0x4)" P-DEP
+; V23 cse0 [V23,T05] ( 3, 12 ) int -> x5 "CSE - aggressive"
; V24 cse1 [V24,T16] ( 3, 1.50) int -> x3 "CSE - moderate"
;
-; Lcl frame size = 24
+; Lcl frame size = 16
G_M45882_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- str x19, [sp, #0x28]
+ stp fp, lr, [sp, #-0x40]!
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
mov fp, sp
mov x19, x3
; byrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M45882_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
; byrRegs +[x0 x4]
str xzr, [x19]
@@ -66,16 +67,17 @@ G_M45882_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4
; byrRegs -[x0]
;; size=52 bbWeight=0.50 PerfScore 7.00
G_M45882_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x28]
- ldp fp, lr, [sp], #0x30
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M45882_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, gcvars, byref, isz
; byrRegs +[x0]
cmp w5, #128
bge G_M45882_IG06
- str xzr, [fp, #0x18] // [V15 tmp5]
- add x0, fp, #24 // [V15 tmp5]
+ str xzr, [fp, #0x10] // [V15 tmp5]
+ add x0, fp, #16 // [V15 tmp5]
; byrRegs -[x0]
mov w1, w5
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -85,7 +87,7 @@ G_M45882_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
blr x2
; byrRegs -[x4]
; gcr arg pop 0
- ldr x0, [fp, #0x18] // [V15 tmp5]
+ ldr x0, [fp, #0x10] // [V15 tmp5]
str x0, [x19]
b G_M45882_IG22
;; size=52 bbWeight=0.50 PerfScore 6.50
@@ -101,9 +103,9 @@ G_M45882_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4
G_M45882_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
; byrRegs +[x0]
and w3, w5, #0xD1FFAB1E
- uxtb w3, w3
- add w5, w3, #1
- cmp w5, w1
+ uxtb w20, w3
+ add w3, w20, #1
+ cmp w3, w1
ble G_M45882_IG10
str wzr, [x4]
;; size=24 bbWeight=0.50 PerfScore 2.00
@@ -112,10 +114,11 @@ G_M45882_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M45882_IG09: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x28]
- ldp fp, lr, [sp], #0x30
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M45882_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, gcvars, byref, isz
; byrRegs +[x0 x4 x19]
cmp w2, #2
@@ -128,9 +131,9 @@ G_M45882_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4
mov w2, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M45882_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
- uxtb w2, w2
- cbz w2, G_M45882_IG14
- cmp w3, #4
+ uxtb w21, w2
+ cbz w21, G_M45882_IG14
+ cmp w20, #4
ble G_M45882_IG14
;; size=16 bbWeight=0.50 PerfScore 1.50
G_M45882_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref
@@ -141,43 +144,43 @@ G_M45882_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, b
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M45882_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
; byrRegs +[x0 x19]
- mov w5, wzr
- mov w6, wzr
- cmp w3, #0
+ mov w2, wzr
+ mov w3, wzr
+ cmp w20, #0
ble G_M45882_IG19
;; size=16 bbWeight=0.50 PerfScore 1.25
G_M45882_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
- ldr w7, [x4]
- sxtw w8, w7
- cmp w8, w1
+ ldr w5, [x4]
+ sxtw w6, w5
+ cmp w6, w1
bhs G_M45882_IG25
- ldrb w8, [x0, w8, UXTW #2]
- add w7, w7, #1
- str w7, [x4]
- cbnz w5, G_M45882_IG18
+ ldrb w22, [x0, w6, UXTW #2]
+ add w5, w5, #1
+ str w5, [x4]
+ cbnz w2, G_M45882_IG18
;; size=32 bbWeight=4 PerfScore 42.00
G_M45882_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
- cbz w2, G_M45882_IG17
- cbz w8, G_M45882_IG20
- ;; size=8 bbWeight=2 PerfScore 4.00
+ cbz w21, G_M45882_IG17
+ cbz w22, G_M45882_IG20
+ b G_M45882_IG18
+ ;; size=12 bbWeight=2 PerfScore 6.00
G_M45882_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
- cbnz w2, G_M45882_IG18
- cbz w8, G_M45882_IG18
- sub w7, w3, w6
- cmp w7, #4
+ cbz w22, G_M45882_IG18
+ sub w5, w20, w3
+ cmp w5, #4
bgt G_M45882_IG13
- ;; size=20 bbWeight=2 PerfScore 8.00
+ ;; size=16 bbWeight=2 PerfScore 6.00
G_M45882_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
- orr w5, w8, w5, LSL #8
- add w6, w6, #1
- cmp w6, w3
+ orr w2, w22, w2, LSL #8
+ add w3, w3, #1
+ cmp w3, w20
blt G_M45882_IG15
;; size=16 bbWeight=4 PerfScore 12.00
G_M45882_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80010 {x4 x19}, byref, isz
; byrRegs -[x0]
- tbnz w5, #31, G_M45882_IG13
- cbz w2, G_M45882_IG21
- cmp w5, #128
+ tbnz w2, #31, G_M45882_IG13
+ cbz w21, G_M45882_IG21
+ cmp w2, #128
bhs G_M45882_IG21
;; size=16 bbWeight=0.50 PerfScore 1.75
G_M45882_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref
@@ -188,16 +191,16 @@ G_M45882_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, b
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M45882_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
; byrRegs -[x4] +[x19]
- str xzr, [fp, #0x20] // [V14 tmp4]
- add x0, fp, #32 // [V14 tmp4]
- mov w1, w5
+ str xzr, [fp, #0x18] // [V14 tmp4]
+ add x0, fp, #24 // [V14 tmp4]
+ mov w1, w2
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
; gcr arg pop 0
- ldr x0, [fp, #0x20] // [V14 tmp4]
+ ldr x0, [fp, #0x18] // [V14 tmp4]
str x0, [x19]
;; size=40 bbWeight=0.50 PerfScore 5.25
G_M45882_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -205,22 +208,24 @@ G_M45882_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov w0, #5
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M45882_IG23: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x28]
- ldp fp, lr, [sp], #0x30
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M45882_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ldr x19, [sp, #0x28]
- ldp fp, lr, [sp], #0x30
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M45882_IG25: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 452, prolog size 16, PerfScore 112.25, instruction count 113, allocated bytes for code 452 (MethodHash=0a754cc5) for method System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
+; Total bytes of code 472, prolog size 20, PerfScore 113.25, instruction count 118, allocated bytes for code 472 (MethodHash=0a754cc5) for method System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
; ============================================================
Unwind Info:
...
+12 (+6.00%) : 171843.dasm - System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
@@ -13,16 +13,18 @@
; V02 loc1 [V02,T04] ( 3, 1.50) int -> x0
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T02] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T05] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V06 tmp3 [V06,T01] ( 6, 4.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
+; V05 tmp2 [V05,T05] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
+; V06 tmp3 [V06,T01] ( 5, 3.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
; V07 tmp4 [V07,T03] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V08 cse0 [V08,T06] ( 3, 1 ) long -> x19 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M33783_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M33783_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldrb w1, [x0, #0xD1FFAB1E]
@@ -39,22 +41,21 @@ G_M33783_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
cbz x0, G_M33783_IG10
;; size=28 bbWeight=0.50 PerfScore 6.00
G_M33783_IG04: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- cmp x2, x3
+ ldr x19, [x0]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x19, x2
beq G_M33783_IG06
;; size=24 bbWeight=0.25 PerfScore 1.50
G_M33783_IG05: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x3
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
;; size=8 bbWeight=0.12 PerfScore 0.19
G_M33783_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0]
- ldr x1, [x1, #0x78]
+ ldr x1, [x19, #0x78]
ldr x1, [x1]
blr x1
movz x11, #0xD1FFAB1E // code for <unknown method>
@@ -72,11 +73,12 @@ G_M33783_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
; gcrRegs +[x0]
- ;; size=68 bbWeight=0.50 PerfScore 11.50
+ ;; size=64 bbWeight=0.50 PerfScore 10.00
G_M33783_IG07: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M33783_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
@@ -86,9 +88,10 @@ G_M33783_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs +[x0]
;; size=16 bbWeight=0.50 PerfScore 2.25
G_M33783_IG09: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M33783_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
@@ -98,22 +101,23 @@ G_M33783_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs +[x0]
;; size=16 bbWeight=0.50 PerfScore 2.25
G_M33783_IG11: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 200, prolog size 8, PerfScore 32.19, instruction count 50, allocated bytes for code 200 (MethodHash=26627c08) for method System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
+; Total bytes of code 212, prolog size 12, PerfScore 34.69, instruction count 53, allocated bytes for code 212 (MethodHash=26627c08) for method System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 3
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 53 (0x00035) Actual length = 212 (0x0000d4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -127,7 +131,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
+8 (+7.14%) : 166959.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
@@ -13,16 +13,18 @@
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlDocument>
; V04 tmp2 [V04,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp3 [V05,T04] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V06 tmp4 [V06,T00] ( 6, 8.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
-; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
+; V05 tmp3 [V05,T04] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
+; V06 tmp4 [V06,T01] ( 5, 5.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
+; V07 tmp5 [V07,T00] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
+; V08 cse0 [V08,T05] ( 3, 1 ) long -> x19 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M56653_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M56653_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldr x0, [x0, #0x08]
@@ -36,28 +38,28 @@ G_M56653_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
cbz x0, G_M56653_IG07
;; size=32 bbWeight=1 PerfScore 15.00
G_M56653_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- cmp x2, x3
+ ldr x19, [x0]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x19, x2
beq G_M56653_IG05
;; size=24 bbWeight=0.25 PerfScore 1.50
G_M56653_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x3
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M56653_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ldr x1, [x0]
- ldr x1, [x1, #0x70]
+G_M56653_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ldr x1, [x19, #0x70]
ldr x1, [x1, #0x18]
- ;; size=12 bbWeight=1 PerfScore 9.00
-G_M56653_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ;; size=8 bbWeight=0.50 PerfScore 3.00
+G_M56653_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
br x1
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M56653_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E
@@ -65,22 +67,23 @@ G_M56653_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
movk x0, #0xD1FFAB1E LSL #32
;; size=12 bbWeight=0.50 PerfScore 0.75
G_M56653_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 112, prolog size 8, PerfScore 30.94, instruction count 28, allocated bytes for code 112 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
+; Total bytes of code 120, prolog size 12, PerfScore 26.94, instruction count 30, allocated bytes for code 120 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -91,7 +94,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
realworld.run.linux.arm64.checked.mch
-16 (-5.41%) : 947.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
@@ -8,19 +8,21 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 10, 7.50) byref -> x19 single-def
+; V00 arg0 [V00,T05] ( 10, 7.50) byref -> x19 single-def
; V01 arg1 [V01,T02] ( 5, 11.50) int -> x1 single-def
-; V02 arg2 [V02,T05] ( 3, 2.50) ubyte -> x3 single-def
+; V02 arg2 [V02,T07] ( 3, 2.50) ubyte -> x3 single-def
; V03 loc0 [V03,T01] ( 8, 15.50) long -> x20
-; V04 loc1 [V04,T00] ( 19, 44 ) int -> x21
+; V04 loc1 [V04,T00] ( 16, 41 ) int -> x21
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T07] ( 3, 3 ) byref -> x0 single-def "dup spill"
-; V07 tmp2 [V07,T08] ( 3, 3 ) long -> x0 "dup spill"
+; V06 tmp1 [V06,T09] ( 3, 3 ) byref -> x0 single-def "dup spill"
+; V07 tmp2 [V07,T11] ( 2, 2 ) long -> x0 "dup spill"
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V09 tmp4 [V09,T09] ( 2, 2 ) byref -> x20 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V09 tmp4 [V09,T10] ( 2, 2 ) byref -> x20 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-; V11 tmp6 [V11,T06] ( 2, 4 ) long -> x20 "Cast away GC"
-; V12 cse0 [V12,T03] ( 3, 10 ) int -> x0 "CSE - aggressive"
+; V11 tmp6 [V11,T08] ( 2, 4 ) long -> x20 "Cast away GC"
+; V12 cse0 [V12,T06] ( 3, 8.50) int -> x1 "CSE - aggressive"
+; V13 cse1 [V13,T03] ( 4, 10.50) int -> x0 "CSE - aggressive"
+; V14 cse2 [V14,T04] ( 3, 10 ) int -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -69,26 +71,22 @@ G_M4398_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
b G_M4398_IG09
;; size=40 bbWeight=0.50 PerfScore 5.75
G_M4398_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- sub w21, w21, #1
+ sxtw w21, w0
;; size=4 bbWeight=2 PerfScore 1.00
G_M4398_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- cmp w21, #0
- ble G_M4398_IG10
- sub w0, w21, #1
- ldrb w0, [x20, w0, SXTW #2]
- cmp w0, #57
- beq G_M4398_IG08
- ;; size=24 bbWeight=4 PerfScore 26.00
-G_M4398_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w21, #0
ble G_M4398_IG11
sub w0, w21, #1
+ ldrb w1, [x20, w0, SXTW #2]
+ cmp w1, #57
+ beq G_M4398_IG08
+ ;; size=24 bbWeight=4 PerfScore 26.00
+G_M4398_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
add x0, x20, w0, SXTW
- ldrb w1, [x0]
add w1, w1, #1
strb w1, [x0]
b G_M4398_IG14
- ;; size=32 bbWeight=0.50 PerfScore 4.25
+ ;; size=16 bbWeight=0.50 PerfScore 1.75
G_M4398_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
add x0, x19, #4
; byrRegs +[x0]
@@ -142,7 +140,7 @@ G_M4398_IG17: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 296, prolog size 24, PerfScore 124.25, instruction count 74, allocated bytes for code 296 (MethodHash=4357eed1) for method System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
+; Total bytes of code 280, prolog size 24, PerfScore 121.75, instruction count 70, allocated bytes for code 280 (MethodHash=4357eed1) for method System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
; ============================================================
Unwind Info:
@@ -153,7 +151,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 74 (0x0004a) Actual length = 296 (0x000128)
+ Function Length : 70 (0x00046) Actual length = 280 (0x000118)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-4.35%) : 18849.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
@@ -15,8 +15,8 @@
; V04 loc3 [V04,T01] ( 8, 25 ) int -> x1
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T04] ( 2, 16 ) int -> x1 "dup spill"
-; V08 tmp2 [V08,T03] ( 3, 17 ) int -> x0 "dup spill"
+; V07 tmp1 [V07,T03] ( 2, 16 ) int -> x1 "dup spill"
+; V08 tmp2 [V08,T04] ( 2, 16 ) int -> x1 "dup spill"
; V09 tmp3 [V09,T05] ( 2, 16 ) int -> x7 "dup spill"
; V10 tmp4 [V10,T06] ( 2, 16 ) int -> x6 "dup spill"
; V11 tmp5 [V11,T07] ( 2, 16 ) int -> x7 "dup spill"
@@ -109,26 +109,23 @@ G_M61853_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
bne G_M61853_IG13
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M61853_IG09: ; bbWeight=4, gcrefRegs=0008 {x3}, byrefRegs=0020 {x5}, byref, isz
- sub w0, w1, #1
- sxtw w1, w0
+ sub w1, w1, #1
cmp w1, #0
- ble G_M61853_IG10
+ ble G_M61853_IG13
add w7, w7, #1
cmp w7, w4
bhs G_M61853_IG15
ldrh w6, [x5, w7, UXTW #2]
- sub w2, w6, #48
- cmp w2, #9
+ sub w0, w6, #48
+ cmp w0, #9
bls G_M61853_IG09
- ;; size=44 bbWeight=4 PerfScore 38.00
-G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=40 bbWeight=4 PerfScore 36.00
+G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x3]
; byrRegs -[x5]
- cmp w0, #0
- ble G_M61853_IG13
cmp w6, #125
cset x2, eq
- ;; size=16 bbWeight=0.50 PerfScore 1.25
+ ;; size=8 bbWeight=0.50 PerfScore 0.50
G_M61853_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
uxtb w0, w2
;; size=4 bbWeight=0.50 PerfScore 0.25
@@ -149,7 +146,7 @@ G_M61853_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 276, prolog size 8, PerfScore 106.00, instruction count 69, allocated bytes for code 276 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
+; Total bytes of code 264, prolog size 8, PerfScore 103.25, instruction count 66, allocated bytes for code 264 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -160,7 +157,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 69 (0x00045) Actual length = 276 (0x000114)
+ Function Length : 66 (0x00042) Actual length = 264 (0x000108)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-4.00%) : 20163.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
@@ -8,27 +8,30 @@
; 0 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder>
+; V00 this [V00,T06] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder>
; V01 arg1 [V01,T02] ( 8, 8.50) int -> x19
-; V02 loc0 [V02,T00] ( 13, 28.50) ref -> x20 class-hnd <<unknown class>>
+; V02 loc0 [V02,T00] ( 11, 27 ) ref -> x20 class-hnd <<unknown class>>
;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T05] ( 4, 4 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.UnsupportedMetadataTypeSymbol>
+; V05 tmp1 [V05,T07] ( 4, 4 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.UnsupportedMetadataTypeSymbol>
;* V06 tmp2 [V06 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V08 tmp4 [V08,T06] ( 3, 1.50) ref -> x0 "field V03.array (fldOffset=0x0)" P-INDEP
-; V09 tmp5 [V09,T03] ( 2, 8 ) ref -> x1 "argument with side effect"
-; V10 cse0 [V10,T01] ( 9, 16.50) long -> x21 multi-def "CSE - aggressive"
+; V08 tmp4 [V08,T08] ( 3, 1.50) ref -> x0 "field V03.array (fldOffset=0x0)" P-INDEP
+; V09 tmp5 [V09,T05] ( 2, 8 ) ref -> x1 "argument with side effect"
+; V10 cse0 [V10,T03] ( 4, 9 ) long -> x22 "CSE - aggressive"
+; V11 cse1 [V11,T04] ( 4, 9 ) long -> x24 "CSE - aggressive"
+; V12 cse2 [V12,T01] ( 4, 14 ) long -> x21 "CSE - aggressive"
;
; Lcl frame size = 0
G_M4215_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x10]
stp x21, x22, [sp, #0x20]
+ stp x23, x24, [sp, #0x30]
mov fp, sp
mov w19, w1
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=24 bbWeight=1 PerfScore 5.00
G_M4215_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x0]
ldr x20, [x0, #0x28]
@@ -56,42 +59,37 @@ G_M4215_IG03: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, by
;; size=40 bbWeight=2 PerfScore 22.00
G_M4215_IG04: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz x20, G_M4215_IG06
+ cbz x20, G_M4215_IG07
;; size=4 bbWeight=8 PerfScore 8.00
G_M4215_IG05: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
mov x0, x20
; gcrRegs +[x0]
ldr x21, [x20]
- ldr x1, [x21, #0xD1FFAB1E]
- ldr x1, [x1, #0x30]
+ ldr x22, [x21, #0xD1FFAB1E]
+ ldr x1, [x22, #0x30]
blr x1
; gcrRegs -[x0]
- mov w22, w0
+ mov w23, w0
mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x21, #0xD1FFAB1E]
- ldr x1, [x1, #0x20]
+ ldr x24, [x21, #0xD1FFAB1E]
+ ldr x1, [x24, #0x20]
blr x1
; gcrRegs -[x0]
- sub w0, w22, w0
+ sub w0, w23, w0
cmp w0, w19
bgt G_M4215_IG03
;; size=52 bbWeight=4 PerfScore 82.00
-G_M4215_IG06: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M4215_IG08
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M4215_IG07: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M4215_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
mov x0, x20
; gcrRegs +[x0]
- ldr x21, [x20]
- ldr x1, [x21, #0xD1FFAB1E]
- ldr x1, [x1, #0x30]
+ ldr x1, [x22, #0x30]
blr x1
; gcrRegs -[x0]
cmp w0, w19
- bgt G_M4215_IG10
- ;; size=28 bbWeight=0.50 PerfScore 6.00
-G_M4215_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bgt G_M4215_IG09
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M4215_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x20]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -101,58 +99,57 @@ G_M4215_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
str xzr, [x0, #0x20]
str xzr, [x0, #0x40]
;; size=24 bbWeight=0.50 PerfScore 2.25
-G_M4215_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M4215_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M4215_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=20 bbWeight=0.50 PerfScore 2.50
+G_M4215_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x20]
mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x21, #0xD1FFAB1E]
- ldr x1, [x1, #0x30]
+ ldr x1, [x22, #0x30]
blr x1
; gcrRegs -[x0]
- mov w22, w0
+ mov w21, w0
mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x21, #0xD1FFAB1E]
- ldr x1, [x1, #0x20]
+ ldr x1, [x24, #0x20]
blr x1
; gcrRegs -[x0]
- sub w0, w22, w0
+ sub w0, w21, w0
sub w19, w19, w0
mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x21, #0xD1FFAB1E]
- ldr x1, [x1, #0x28]
+ ldr x1, [x24, #0x28]
blr x1
; gcrRegs -[x20]
ldr w1, [x0, #0x08]
cmp w19, w1
- bhs G_M4215_IG12
+ bhs G_M4215_IG11
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
ldr x0, [x0, w19, UXTW #3]
; gcrRegs +[x0]
; byrRegs -[x0]
- ;; size=80 bbWeight=0.50 PerfScore 16.00
-G_M4215_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=68 bbWeight=0.50 PerfScore 11.50
+G_M4215_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M4215_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=0.50 PerfScore 2.50
+G_M4215_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
bl CORINFO_HELP_RNGCHKFAIL
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 300, prolog size 16, PerfScore 149.25, instruction count 75, allocated bytes for code 300 (MethodHash=5d77ef88) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
+; Total bytes of code 288, prolog size 20, PerfScore 142.75, instruction count 72, allocated bytes for code 288 (MethodHash=5d77ef88) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
; ============================================================
Unwind Info:
@@ -163,7 +160,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 75 (0x0004b) Actual length = 300 (0x00012c)
+ 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)
@@ -175,9 +172,9 @@ Unwind Info:
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
E6 save_next
+ E6 save_next
C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
- E4 end
+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end
E4 end
+12 (+0.82%) : 17634.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:g_getFormatAndCloseBrace|4341(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
@@ -28,13 +28,13 @@
; V17 tmp8 [V17,T16] ( 5, 2.50) int -> x4 "Inline stloc first use temp"
; V18 tmp9 [V18,T19] ( 4, 2 ) int -> x2 "Inline stloc first use temp"
; V19 tmp10 [V19,T03] ( 9, 9 ) ref -> x22 class-hnd exact single-def "Inlining Arg" <System.String>
-; V20 tmp11 [V20,T37] ( 3, 1.50) ref -> x23 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V20 tmp11 [V20,T37] ( 3, 1.50) ref -> x25 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V21 tmp12 [V21,T09] ( 8, 4 ) ref -> x23 class-hnd exact single-def "Inline stloc first use temp" <System.String>
; V22 tmp13 [V22,T20] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
; V23 tmp14 [V23,T27] ( 2, 2 ) byref -> x0 single-def "impAppendStmt"
; V24 tmp15 [V24,T21] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
; V25 tmp16 [V25,T28] ( 2, 2 ) byref -> x0 single-def "impAppendStmt"
-; V26 tmp17 [V26,T00] ( 12, 12 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V26 tmp17 [V26,T00] ( 12, 12 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V27 tmp18 [V27,T35] ( 2, 2 ) int -> x14 "Inlining Arg"
;* V28 tmp19 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V29 tmp20 [V29 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -49,17 +49,17 @@
; V38 tmp29 [V38,T18] ( 5, 2.50) int -> x4 "Inline stloc first use temp"
; V39 tmp30 [V39,T23] ( 4, 2 ) int -> x2 "Inline stloc first use temp"
; V40 tmp31 [V40,T38] ( 3, 1.50) ref -> x1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V41 tmp32 [V41,T02] ( 11, 10.50) ref -> x19 class-hnd exact single-def "Inlining Arg" <System.String>
+; V41 tmp32 [V41,T02] ( 11, 10.50) ref -> x21 class-hnd exact single-def "Inlining Arg" <System.String>
;* V42 tmp33 [V42 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
;* V43 tmp34 [V43,T57] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
; V44 tmp35 [V44,T39] ( 3, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V45 tmp36 [V45,T10] ( 8, 4 ) ref -> x22 class-hnd exact single-def "Inline stloc first use temp" <System.String>
+; V45 tmp36 [V45,T10] ( 8, 4 ) ref -> x27 class-hnd exact single-def "Inline stloc first use temp" <System.String>
; V46 tmp37 [V46,T24] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
; V47 tmp38 [V47,T29] ( 2, 2 ) byref -> x0 single-def "impAppendStmt"
; V48 tmp39 [V48,T25] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
; V49 tmp40 [V49,T30] ( 2, 2 ) byref -> x0 single-def "impAppendStmt"
; V50 tmp41 [V50,T04] ( 8, 8 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V51 tmp42 [V51,T36] ( 2, 2 ) int -> x21 "Inlining Arg"
+; V51 tmp42 [V51,T36] ( 2, 2 ) int -> x25 "Inlining Arg"
; V52 tmp43 [V52,T05] ( 8, 8 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia>
;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V54 tmp45 [V54,T31] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
@@ -78,26 +78,27 @@
; V67 tmp58 [V67,T32] ( 2, 2 ) ref -> x2 single-def "argument with side effect"
; V68 tmp59 [V68,T33] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
; V69 cse0 [V69,T49] ( 3, 1.50) int -> x25 "CSE - moderate"
-; V70 cse1 [V70,T50] ( 3, 1.50) int -> x23 "CSE - moderate"
+; V70 cse1 [V70,T50] ( 3, 1.50) int -> x28 "CSE - moderate"
; V71 cse2 [V71,T51] ( 3, 1.50) long -> x26 "CSE - moderate"
-; V72 cse3 [V72,T52] ( 3, 1.50) long -> x24 "CSE - moderate"
+; V72 cse3 [V72,T52] ( 3, 1.50) long -> x22 "CSE - moderate"
; V73 cse4 [V73,T11] ( 8, 4 ) int -> x24 multi-def "CSE - aggressive"
-; V74 cse5 [V74,T08] ( 9, 4 ) int -> x21 multi-def "CSE - aggressive"
+; V74 cse5 [V74,T08] ( 9, 4 ) int -> x25 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
G_M21658_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
stp x19, x20, [sp, #0x10]
stp x21, x22, [sp, #0x20]
stp x23, x24, [sp, #0x30]
stp x25, x26, [sp, #0x40]
+ stp x27, x28, [sp, #0x50]
mov fp, sp
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
; byrRegs +[x19]
- ;; size=32 bbWeight=1 PerfScore 6.50
+ ;; size=36 bbWeight=1 PerfScore 7.50
G_M21658_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
mov x0, x20
; gcrRegs +[x0]
@@ -245,24 +246,24 @@ G_M21658_IG06: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- mov x23, x0
- ; gcrRegs +[x23]
+ mov x25, x0
+ ; gcrRegs +[x25]
ldr w24, [x22, #0x08]
sxtw w14, w24
mov w15, #0xD1FFAB1E
- strh w15, [x23, #0x0C]
- str w14, [x23, #0x08]
- ldrb w14, [x23, #0x0E]
+ strh w15, [x25, #0x0C]
+ str w14, [x25, #0x08]
+ ldrb w14, [x25, #0x0E]
orr w14, w14, #32
- strb w14, [x23, #0x0E]
- add x14, x23, #16
+ strb w14, [x25, #0x0E]
+ add x14, x25, #16
; byrRegs +[x14]
mov x15, x22
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- add x14, x23, #24
+ add x14, x25, #24
; byrRegs +[x14]
mov x15, x22
; gcrRegs +[x15]
@@ -270,15 +271,15 @@ G_M21658_IG06: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs
; gcrRegs -[x15 x22]
; byrRegs -[x14]
cbz x21, G_M21658_IG07
- ldrb w14, [x23, #0x0E]
+ ldrb w14, [x25, #0x0E]
ldrb w15, [x21, #0x0E]
and w15, w15, #63
orr w14, w14, w15
- strb w14, [x23, #0x0E]
+ strb w14, [x25, #0x0E]
ldr w14, [x21, #0x08]
add w14, w24, w14
- str w14, [x23, #0x08]
- add x14, x23, #32
+ str w14, [x25, #0x08]
+ add x14, x25, #32
; byrRegs +[x14]
mov x15, x21
; gcrRegs +[x15]
@@ -286,11 +287,11 @@ G_M21658_IG06: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs
; gcrRegs -[x15 x21]
; byrRegs -[x14]
;; size=124 bbWeight=0.50 PerfScore 16.50
-G_M21658_IG07: ; bbWeight=0.50, gcrefRegs=900000 {x20 x23}, byrefRegs=80000 {x19}, byref
+G_M21658_IG07: ; bbWeight=0.50, gcrefRegs=2100000 {x20 x25}, byrefRegs=80000 {x19}, byref
b G_M21658_IG09
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M21658_IG08: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref
- ; gcrRegs -[x23] +[x21]
+ ; gcrRegs -[x25] +[x21]
mov x1, x21
; gcrRegs +[x1]
mov w0, #0xD1FFAB1E
@@ -301,10 +302,10 @@ G_M21658_IG08: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=800
ldr x3, [x3]
blr x3
; gcrRegs -[x1 x21] +[x0]
- mov x23, x0
- ; gcrRegs +[x23]
+ mov x25, x0
+ ; gcrRegs +[x25]
;; size=36 bbWeight=0.50 PerfScore 3.75
-G_M21658_IG09: ; bbWeight=0.50, gcrefRegs=900000 {x20 x23}, byrefRegs=80000 {x19}, byref, isz
+G_M21658_IG09: ; bbWeight=0.50, gcrefRegs=2100000 {x20 x25}, byrefRegs=80000 {x19}, byref, isz
; gcrRegs -[x0]
ldr w21, [x19, #0x10]
ldr x0, [x19, #0x08]
@@ -316,13 +317,13 @@ G_M21658_IG09: ; bbWeight=0.50, gcrefRegs=900000 {x20 x23}, byrefRegs=800
add w4, w2, w3
add w4, w4, #1
;; size=32 bbWeight=0.50 PerfScore 7.25
-G_M21658_IG10: ; bbWeight=0.50, gcrefRegs=900001 {x0 x20 x23}, byrefRegs=80000 {x19}, byref, isz
+G_M21658_IG10: ; bbWeight=0.50, gcrefRegs=2100001 {x0 x20 x25}, byrefRegs=80000 {x19}, byref, isz
sxtw w2, w1
tbz w2, #31, G_M21658_IG11
add w2, w1, w3
add w2, w2, #1
;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M21658_IG11: ; bbWeight=0.50, gcrefRegs=900001 {x0 x20 x23}, byrefRegs=80000 {x19}, byref, isz
+G_M21658_IG11: ; bbWeight=0.50, gcrefRegs=2100001 {x0 x20 x25}, byrefRegs=80000 {x19}, byref, isz
sub w2, w2, w4
mov w1, w4
movz x3, #0xD1FFAB1E // code for System.String:Substring(int,int):System.String:this
@@ -342,13 +343,13 @@ G_M21658_IG11: ; bbWeight=0.50, gcrefRegs=900001 {x0 x20 x23}, byrefRegs=
; gcrRegs -[x2 x20]
mov x1, x0
; gcrRegs +[x1]
- mov x0, x23
+ mov x0, x25
movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxFactory:InterpolationFormatClause(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- ; gcrRegs -[x1 x23]
+ ; gcrRegs -[x1 x25]
mov x20, x0
; gcrRegs +[x20]
ldr x0, [x19, #0x08]
@@ -374,17 +375,17 @@ G_M21658_IG13: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=0000
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- mov x19, x0
- ; gcrRegs +[x19]
- cbz x19, G_M21658_IG16
+ mov x21, x0
+ ; gcrRegs +[x21]
+ cbz x21, G_M21658_IG16
;; size=36 bbWeight=0.50 PerfScore 4.00
-G_M21658_IG14: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M21658_IG14: ; bbWeight=0.25, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr w21, [x19, #0x08]
- cbnz w21, G_M21658_IG16
+ ldr w25, [x21, #0x08]
+ cbnz w25, G_M21658_IG16
;; size=8 bbWeight=0.25 PerfScore 1.00
G_M21658_IG15: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
+ ; gcrRegs -[x21]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -405,8 +406,8 @@ G_M21658_IG15: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
strb w0, [x1, #0x0E]
b G_M21658_IG20
;; size=64 bbWeight=0.50 PerfScore 8.00
-G_M21658_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x1] +[x19]
+G_M21658_IG16: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x1] +[x21]
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
@@ -414,16 +415,16 @@ G_M21658_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr x1, [x1]
blr x1
; gcrRegs +[x0]
- mov x22, x0
- ; gcrRegs +[x22]
- cmp x19, x22
+ mov x27, x0
+ ; gcrRegs +[x27]
+ cmp x21, x27
beq G_M21658_IG18
- cbz x19, G_M21658_IG17
- cbz x22, G_M21658_IG17
- ldr w21, [x19, #0x08]
- ldr w0, [x22, #0x08]
+ cbz x21, G_M21658_IG17
+ cbz x27, G_M21658_IG17
+ ldr w25, [x21, #0x08]
+ ldr w0, [x27, #0x08]
; gcrRegs -[x0]
- cmp w21, w0
+ cmp w25, w0
bne G_M21658_IG17
mov w0, #1
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -437,21 +438,21 @@ G_M21658_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- ldr w0, [x22, #0x08]
- cmp w0, w21
...
+4 (+0.89%) : 28915.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+d__118:MoveNext():ubyte:this (FullOpts)
@@ -8,29 +8,30 @@
; 0 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 17, 9.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118>
-; V01 loc0 [V01,T04] ( 4, 2.50) ubyte -> registers
+; V00 this [V00,T00] ( 16, 9 ) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118>
+; V01 loc0 [V01,T04] ( 4, 2.50) ubyte -> x2
; V02 loc1 [V02,T05] ( 3, 2.50) int -> x1 single-def
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
-; V04 loc3 [V04,T08] ( 3, 1.50) ref -> x19 class-hnd exact single-def <Microsoft.CodeAnalysis.SecurityWellKnownAttributeData>
+; V04 loc3 [V04,T08] ( 3, 1.50) ref -> x20 class-hnd exact single-def <Microsoft.CodeAnalysis.SecurityWellKnownAttributeData>
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <Microsoft.Cci.SecurityAttribute>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T06] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V08 tmp2 [V08,T09] ( 3, 1.25) long -> x4 "fgMakeTemp is creating a new local variable"
+; V08 tmp2 [V08,T10] ( 3, 1.25) long -> x4 "fgMakeTemp is creating a new local variable"
; V09 tmp3 [V09,T02] ( 5, 3.75) ref -> x2 class-hnd "spilling QMark2" <<unknown class>>
;* V10 tmp4 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <Microsoft.Cci.SecurityAttribute>
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V13 tmp7 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
; V14 tmp8 [V14,T01] ( 6, 6 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V15 tmp9 [V15,T10] ( 2, 1 ) ref -> x15 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP
-; V16 tmp10 [V16,T12] ( 2, 1 ) short -> x1 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP
-; V17 tmp11 [V17,T11] ( 2, 1 ) ref -> x20 single-def "field V10.array (fldOffset=0x0)" P-INDEP
+; V15 tmp9 [V15,T11] ( 2, 1 ) ref -> x15 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP
+; V16 tmp10 [V16,T13] ( 2, 1 ) short -> x1 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP
+; V17 tmp11 [V17,T12] ( 2, 1 ) ref -> x19 single-def "field V10.array (fldOffset=0x0)" P-INDEP
;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref "field V11.<Attribute>k__BackingField (fldOffset=0x0)" P-DEP
;* V19 tmp13 [V19 ] ( 0, 0 ) short -> zero-ref "field V11.<Action>k__BackingField (fldOffset=0x8)" P-DEP
-; V20 PSPSym [V20,T13] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
-; V21 cse0 [V21,T03] ( 5, 2.50) ref -> x0 multi-def "CSE - aggressive"
-; V22 cse1 [V22,T07] ( 4, 2 ) long -> x19 "CSE - aggressive"
+; V20 PSPSym [V20,T14] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
+; V21 cse0 [V21,T09] ( 3, 1.50) ref -> x19 "CSE - moderate"
+; V22 cse1 [V22,T03] ( 5, 2.50) ref -> x1 multi-def "CSE - aggressive"
+; V23 cse2 [V23,T07] ( 4, 2 ) long -> x19 "CSE - aggressive"
;
; Lcl frame size = 24
@@ -57,14 +58,15 @@ G_M21908_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
G_M21908_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
movn w1, #0
str w1, [x0, #0x20]
- ldr x1, [x0, #0x08]
+ ldr x19, [x0, #0x08]
+ ; gcrRegs +[x19]
+ ldr x1, [x19, #0x08]
; gcrRegs +[x1]
- ldr x1, [x1, #0x08]
mov x2, x1
; gcrRegs +[x2]
cbz x2, G_M21908_IG11
;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x3, [x2]
movz x4, #0xD1FFAB1E
@@ -73,7 +75,7 @@ G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}
cmp x3, x4
beq G_M21908_IG07
;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
mov x0, x4
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
@@ -82,23 +84,17 @@ G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, b
mov x2, x0
; gcrRegs +[x2]
;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x19, [x2, #0x70]
- ; gcrRegs +[x19]
- cbz x19, G_M21908_IG11
- ldr x0, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x0]
- ldr x1, [x0, #0x08]
- ; gcrRegs +[x1]
- ldr x20, [x1, #0x20]
+ ldr x20, [x2, #0x70]
; gcrRegs +[x20]
+ cbz x20, G_M21908_IG11
+ ldr x19, [x19, #0x20]
movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
- ; gcrRegs -[x1-x2] +[x0]
+ ; gcrRegs -[x2] +[x0]
; gcr arg pop 0
mov x21, x0
; gcrRegs +[x21]
@@ -110,18 +106,18 @@ G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b
str w0, [x21, #0x14]
add x14, x21, #8
; byrRegs +[x14]
- mov x15, x19
- ; gcrRegs +[x15]
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x19]
- ; byrRegs -[x14]
- add x14, x21, #56
- ; byrRegs +[x14]
mov x15, x20
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x20]
; byrRegs -[x14]
+ add x14, x21, #56
+ ; byrRegs +[x14]
+ mov x15, x19
+ ; gcrRegs +[x15]
+ bl CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[x15 x19]
+ ; byrRegs -[x14]
mov x0, x21
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -131,20 +127,20 @@ G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b
blr x1
; gcrRegs -[x21]
; gcr arg pop 0
- ldr x19, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x19]
- add x14, x19, #24
+ ldr x1, [fp, #0x18] // [V00 this]
+ ; gcrRegs +[x1]
+ add x14, x1, #24
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- mov x0, x19
+ mov x0, x1
; gcrRegs +[x0]
- ;; size=124 bbWeight=0.50 PerfScore 16.50
+ ;; size=116 bbWeight=0.50 PerfScore 14.00
G_M21908_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19]
+ ; gcrRegs -[x1]
movn w11, #2
str w11, [x0, #0x20]
ldr x0, [x0, #0x18]
@@ -157,50 +153,56 @@ G_M21908_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
; gcrRegs -[x0]
; gcr arg pop 0
cbz w0, G_M21908_IG09
- ldr x20, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x20]
- ldr x0, [x20, #0x18]
+ ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
+ ldr x1, [x0, #0x18]
+ ; gcrRegs +[x1]
+ mov x0, x1
add x11, x19, #8
ldr x1, [x11]
+ ; gcrRegs -[x1]
blr x1
; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
- add x14, x20, #40
+ ldr x0, [fp, #0x18] // [V00 this]
+ add x14, x0, #40
; byrRegs +[x14]
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15]
+ ; gcrRegs -[x15]
; byrRegs -[x14]
- strh w1, [x20, #0x30]
- mov w0, #1
- str w0, [x20, #0x20]
- mov w2, w0
+ strh w1, [x0, #0x30]
+ mov w11, #1
+ str w11, [x0, #0x20]
+ sxtw w2, w11
b G_M21908_IG12
- ;; size=92 bbWeight=0.50 PerfScore 13.50
+ ;; size=100 bbWeight=0.50 PerfScore 14.75
G_M21908_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x20]
- movn w0, #0
- ldr x20, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x20]
- str w0, [x20, #0x20]
- ldr x0, [x20, #0x18]
+ ; gcrRegs -[x0]
+ movn w11, #0
+ ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
- cbz x0, G_M21908_IG10
+ str w11, [x0, #0x20]
+ ldr x1, [x0, #0x18]
+ ; gcrRegs +[x1]
+ cbz x1, G_M21908_IG10
+ mov x0, x1
add x11, x19, #16
ldr x1, [x11]
+ ; gcrRegs -[x1]
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=32 bbWeight=0.50 PerfScore 6.00
-G_M21908_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- str xzr, [x20, #0x18]
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=36 bbWeight=0.50 PerfScore 6.25
+G_M21908_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x0, [fp, #0x18] // [V00 this]
+ ; gcrRegs +[x0]
+ str xzr, [x0, #0x18]
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M21908_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
- mov w1, wzr
- mov w2, w1
- ;; size=8 bbWeight=0.50 PerfScore 0.50
+ ; gcrRegs -[x0]
+ mov w2, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M21908_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V00}
mov w0, w2
@@ -238,7 +240,7 @@ G_M21908_IG16: ; bbWeight=0, funclet epilog, nogc, extend
ret lr
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 448, prolog size 24, PerfScore 59.25, instruction count 112, allocated bytes for code 448 (MethodHash=1a3daa6b) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 452, prolog size 24, PerfScore 59.00, instruction count 113, allocated bytes for code 452 (MethodHash=1a3daa6b) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -249,7 +251,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 98 (0x00062) Actual length = 392 (0x000188)
---- Epilog scopes ----
---- Scope 0
...
+16 (+1.32%) : 30883.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
@@ -11,16 +11,16 @@
; V00 arg0 [V00,T07] ( 22, 23 ) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[System.String]>
; V01 loc0 [V01,T20] ( 7, 3.50) ref -> x20 class-hnd exact single-def <System.String>
; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [fp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 39,149.08) int -> x22
+; V03 loc2 [V03,T00] ( 41,183.08) int -> x22
; V04 loc3 [V04,T23] ( 4, 2 ) int -> x0
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
-; V06 loc5 [V06,T06] ( 9, 25.50) int -> x21
+; V06 loc5 [V06,T06] ( 9, 25.50) int -> x23
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V09 tmp2 [V09,T04] ( 5, 28 ) ref -> x22 class-hnd exact "impAppendStmt" <System.String>
+; V09 tmp2 [V09,T04] ( 5, 28 ) ref -> x21 class-hnd exact "impAppendStmt" <System.String>
; V10 tmp3 [V10,T26] ( 2, 2 ) long -> x1 "Inlining Arg"
; V11 tmp4 [V11,T25] ( 2, 2 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String>
-; V12 tmp5 [V12,T05] ( 5, 28 ) ref -> x23 class-hnd "Inlining Arg" <System.__Canon>
+; V12 tmp5 [V12,T05] ( 5, 28 ) ref -> x22 class-hnd "Inlining Arg" <System.__Canon>
; V13 tmp6 [V13,T15] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
; V14 tmp7 [V14,T17] ( 2, 8 ) byref -> x0 "impAppendStmt"
; V15 tmp8 [V15,T27] ( 3, 1.50) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
@@ -38,12 +38,12 @@
; V27 cse0 [V27,T14] ( 3, 10 ) int -> x0 "CSE - aggressive"
; V28 cse1 [V28,T28] ( 3, 1.50) long -> x24 "CSE - moderate"
; V29 cse2 [V29,T31] ( 2, 1 ) int -> x12 "CSE - moderate"
-; V30 cse3 [V30,T01] ( 3, 48 ) long -> x1 "CSE - aggressive"
+; V30 cse3 [V30,T02] ( 3, 48 ) long -> x1 "CSE - aggressive"
; V31 cse4 [V31,T11] ( 3, 12 ) long -> x1 "CSE - aggressive"
; V32 cse5 [V32,T12] ( 3, 12 ) int -> x0 "CSE - aggressive"
; V33 cse6 [V33,T10] ( 3, 12 ) ref -> x1 "CSE - aggressive"
-; V34 cse7 [V34,T03] ( 15, 30.54) int -> x21 "CSE - aggressive"
-; V35 cse8 [V35,T02] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
+; V34 cse7 [V34,T01] ( 17, 64.54) int -> x21 "CSE - aggressive"
+; V35 cse8 [V35,T03] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
; V36 cse9 [V36,T16] ( 4, 8 ) int -> x24 "CSE - aggressive"
; V37 cse10 [V37,T18] ( 2, 8 ) int -> x3 "CSE - aggressive"
; V38 cse11 [V38,T13] ( 3, 11.88) int -> x0 "CSE - aggressive"
@@ -71,19 +71,19 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=56 bbWeight=1 PerfScore 10.50
G_M28069_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x10]
- cbz w0, G_M28069_IG27
+ cbz w0, G_M28069_IG26
;; size=8 bbWeight=1 PerfScore 4.00
G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w1, #0
- bls G_M28069_IG29
+ bls G_M28069_IG28
ldr x20, [x0, #0x10]
; gcrRegs +[x20]
ldr w21, [x20, #0x08]
cmp w21, #100
- bgt G_M28069_IG27
+ bgt G_M28069_IG26
add w0, w21, #2
; gcrRegs -[x0]
mov w1, #2
@@ -110,105 +110,103 @@ G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
mov x1, sp
;; size=8 bbWeight=0.50 PerfScore 0.50
G_M28069_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w0, #31, G_M28069_IG30
+ tbnz w0, #31, G_M28069_IG29
str x1, [fp, #-0x48] // [V17 tmp10]
str w0, [fp, #-0x40] // [V18 tmp11]
mov w22, wzr
cmp w21, #0
- ble G_M28069_IG15
+ ble G_M28069_IG14
add x23, x20, #12
; byrRegs +[x23]
;; size=28 bbWeight=0.50 PerfScore 2.75
G_M28069_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldrh w0, [x23, w22, UXTW #2]
cmp w0, #39
- bne G_M28069_IG11
+ bne G_M28069_IG10
;; size=12 bbWeight=4 PerfScore 18.00
G_M28069_IG08: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V18 tmp11]
cmp w22, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x0]
ubfiz x1, x22, #1, #32
add x0, x0, x1
+ cmp w22, w21
+ bhs G_M28069_IG28
ldrh w1, [x23, x1]
strh w1, [x0]
add w22, w22, #1
cmp w21, w22
- ble G_M28069_IG09
+ ble G_M28069_IG26
+ cmp w22, w21
+ bhs G_M28069_IG28
ldrh w0, [x23, w22, UXTW #2]
; byrRegs -[x0]
cmp w0, #39
bne G_M28069_IG08
- ;; size=56 bbWeight=16 PerfScore 280.00
-G_M28069_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
- cmp w21, w22
- bgt G_M28069_IG12
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19-x20]
- ; byrRegs -[x23]
- b G_M28069_IG27
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
- ; gcrRegs +[x19-x20]
- ; byrRegs +[x23]
+ ;; size=72 bbWeight=16 PerfScore 328.00
+G_M28069_IG09: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref
+ b G_M28069_IG11
+ ;; size=4 bbWeight=4 PerfScore 4.00
+G_M28069_IG10: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
cmp w0, #121
- beq G_M28069_IG14
+ beq G_M28069_IG13
;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V18 tmp11]
cmp w22, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x0]
ubfiz x1, x22, #1, #32
add x0, x0, x1
+ cmp w22, w21
+ bhs G_M28069_IG28
ldrh w1, [x23, x1]
strh w1, [x0]
add w22, w22, #1
cmp w21, w22
bgt G_M28069_IG07
- ;; size=44 bbWeight=4 PerfScore 52.00
-G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=52 bbWeight=4 PerfScore 58.00
+G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x23]
- b G_M28069_IG15
+ b G_M28069_IG14
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #-0x40] // [V18 tmp11]
cmp w22, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x0]
mov w1, #121
strh w1, [x0, w22, UXTW #2]
;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
sub w0, w21, #1
cmp w0, w22
- ble G_M28069_IG27
+ ble G_M28069_IG26
add w0, w22, #1
cmp w0, w21
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
add x23, x20, #12
; byrRegs +[x23]
add w0, w22, #1
ubfiz x24, x0, #1, #32
ldrh w0, [x23, x24]
cmp w0, #121
- bne G_M28069_IG27
+ bne G_M28069_IG26
add w25, w22, #2
cmp w21, w25
- ble G_M28069_IG16
+ ble G_M28069_IG15
cmp w25, w21
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldrh w0, [x23, w25, UXTW #2]
cmp w0, #121
- beq G_M28069_IG27
+ beq G_M28069_IG26
;; size=80 bbWeight=0.50 PerfScore 9.25
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w0, w22, #3
ldr w1, [fp, #-0x40] // [V18 tmp11]
cmp w0, w1
@@ -222,7 +220,7 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
add w0, w22, #1
ldr w1, [fp, #-0x40] // [V18 tmp11]
cmp w0, w1
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x0]
mov w1, #121
@@ -230,7 +228,7 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
ldr w0, [fp, #-0x40] // [V18 tmp11]
; byrRegs -[x0]
cmp w25, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x0]
strh w1, [x0, w25, UXTW #2]
@@ -238,7 +236,7 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
; byrRegs -[x0]
ldr w1, [fp, #-0x40] // [V18 tmp11]
cmp w0, w1
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x0]
add w1, w22, #3
@@ -246,15 +244,15 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
strh w2, [x0, w1, UXTW #2]
sxtw w22, w25
cmp w21, w22
- ble G_M28069_IG20
- tbnz w22, #31, G_M28069_IG19
+ ble G_M28069_IG19
+ tbnz w22, #31, G_M28069_IG18
;; size=132 bbWeight=0.50 PerfScore 17.00
-G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG16: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0]
add w0, w22, #2
ldr w1, [fp, #-0x40] // [V18 tmp11]
cmp w0, w1
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x1, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x1]
ubfiz x0, x0, #1, #32
@@ -265,32 +263,32 @@ G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800
strh w1, [x0]
add w22, w22, #1
cmp w21, w22
- bgt G_M28069_IG17
...
smoke_tests.nativeaot.linux.arm64.checked.mch
-20 (-8.20%) : 3343.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
@@ -8,16 +8,17 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V01 arg1 [V01,T07] ( 4, 3.50) int -> x2 single-def
-; V02 arg2 [V02,T08] ( 3, 2.50) int -> x3 single-def
-; V03 arg3 [V03,T02] ( 6, 18 ) ushort -> x4 single-def
-; V04 loc0 [V04,T00] ( 24, 79 ) int -> x6
-; V05 loc1 [V05,T06] ( 8, 10.50) int -> x5
+; V01 arg1 [V01,T08] ( 4, 3.50) int -> x2 single-def
+; V02 arg2 [V02,T09] ( 3, 2.50) int -> x3 single-def
+; V03 arg3 [V03,T06] ( 4, 10 ) ushort -> x4 single-def
+; V04 loc0 [V04,T00] ( 22, 77.50) int -> x6
+; V05 loc1 [V05,T07] ( 8, 10.50) int -> x5
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T04] ( 2, 16 ) int -> x6 "dup spill"
; V08 tmp2 [V08,T05] ( 2, 16 ) int -> x6 "dup spill"
; V09 tmp3 [V09,T03] ( 5, 17 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp4 [V10,T01] ( 8, 25.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V10 tmp4 [V10,T01] ( 7, 25 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V11 cse0 [V11,T02] ( 6, 24 ) int -> x8 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -35,104 +36,97 @@ G_M48691_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
sub w6, w6, #1
;; size=4 bbWeight=2 PerfScore 1.00
G_M48691_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- tbnz w6, #31, G_M48691_IG06
+ tbnz w6, #31, G_M48691_IG12
;; size=4 bbWeight=8 PerfScore 8.00
G_M48691_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w6, w1
- bhs G_M48691_IG22
+ bhs G_M48691_IG21
ldrh w7, [x0, w6, UXTW #2]
uxth w8, w4
cmp w7, w8
bne G_M48691_IG03
;; size=24 bbWeight=4 PerfScore 26.00
-G_M48691_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- tbnz w6, #31, G_M48691_IG13
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M48691_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- b G_M48691_IG09
+G_M48691_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+ b G_M48691_IG08
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M48691_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+G_M48691_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
add w5, w5, #1
;; size=4 bbWeight=2 PerfScore 1.00
-G_M48691_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+G_M48691_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
sub w6, w6, #1
- tbnz w6, #31, G_M48691_IG10
+ tbnz w6, #31, G_M48691_IG09
cmp w6, w1
- bhs G_M48691_IG22
+ bhs G_M48691_IG21
ldrh w7, [x0, w6, UXTW #2]
- uxth w8, w4
cmp w7, w8
- beq G_M48691_IG08
- ;; size=32 bbWeight=4 PerfScore 32.00
-G_M48691_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ beq G_M48691_IG07
+ ;; size=28 bbWeight=4 PerfScore 30.00
+G_M48691_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w5, #1
- bgt G_M48691_IG13
+ bgt G_M48691_IG12
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M48691_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M48691_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M48691_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M48691_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M48691_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref
+G_M48691_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref
; byrRegs +[x0]
add w6, w2, w3
- b G_M48691_IG15
+ b G_M48691_IG14
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M48691_IG14: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+G_M48691_IG13: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
add w6, w6, #1
;; size=4 bbWeight=2 PerfScore 1.00
-G_M48691_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- cmp w6, w1
- bge G_M48691_IG16
- cmp w6, w1
- bhs G_M48691_IG22
- ldrh w5, [x0, w6, UXTW #2]
- uxth w2, w4
- cmp w5, w2
- bne G_M48691_IG14
- ;; size=32 bbWeight=4 PerfScore 32.00
-G_M48691_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- cmp w6, w1
- bge G_M48691_IG20
- mov w5, wzr
- b G_M48691_IG18
- ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M48691_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- add w5, w5, #1
- ;; size=4 bbWeight=2 PerfScore 1.00
-G_M48691_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- add w6, w6, #1
+G_M48691_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w6, w1
bge G_M48691_IG19
cmp w6, w1
- bhs G_M48691_IG22
+ bhs G_M48691_IG21
+ ldrh w5, [x0, w6, UXTW #2]
+ uxth w8, w4
+ cmp w5, w8
+ bne G_M48691_IG13
+ ;; size=32 bbWeight=4 PerfScore 32.00
+G_M48691_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+ mov w5, wzr
+ b G_M48691_IG17
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M48691_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+ add w5, w5, #1
+ ;; size=4 bbWeight=2 PerfScore 1.00
+G_M48691_IG17: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ add w6, w6, #1
+ cmp w6, w1
+ bge G_M48691_IG18
+ cmp w6, w1
+ bhs G_M48691_IG21
ldrh w2, [x0, w6, UXTW #2]
- uxth w3, w4
- cmp w2, w3
- beq G_M48691_IG17
- ;; size=36 bbWeight=4 PerfScore 34.00
-G_M48691_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp w2, w8
+ beq G_M48691_IG16
+ ;; size=32 bbWeight=4 PerfScore 32.00
+G_M48691_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
cmp w5, #1
- ble G_M48691_IG11
+ ble G_M48691_IG10
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M48691_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M48691_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M48691_IG21: ; bbWeight=0.50, epilog, nogc, extend
+G_M48691_IG20: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M48691_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M48691_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 8, PerfScore 147.25, instruction count 61, allocated bytes for code 244 (MethodHash=af0b41cc) for method System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
+; Total bytes of code 224, prolog size 8, PerfScore 141.50, instruction count 56, allocated bytes for code 224 (MethodHash=af0b41cc) for method System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
; ============================================================
Cfi Info:
-16 (-6.45%) : 1304.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
@@ -7,21 +7,23 @@
; fully interruptible
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 9, 7 ) byref -> x0 single-def
+; V00 arg0 [V00,T05] ( 9, 7 ) byref -> x0 single-def
; V01 arg1 [V01,T02] ( 5, 11.50) int -> x1 single-def
-; V02 arg2 [V02,T05] ( 3, 2.50) ubyte -> x2 single-def
+; V02 arg2 [V02,T07] ( 3, 2.50) ubyte -> x2 single-def
; V03 loc0 [V03,T01] ( 8, 15.50) long -> x3
-; V04 loc1 [V04,T00] ( 19, 44 ) int -> x4
+; V04 loc1 [V04,T00] ( 16, 41 ) int -> x4
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T07] ( 3, 3 ) byref -> x4 single-def "dup spill"
-; V07 tmp2 [V07,T08] ( 3, 3 ) long -> x1 "dup spill"
+; V06 tmp1 [V06,T09] ( 3, 3 ) byref -> x4 single-def "dup spill"
+; V07 tmp2 [V07,T11] ( 2, 2 ) long -> x1 "dup spill"
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V09 tmp4 [V09,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V10 tmp5 [V10,T10] ( 3, 1.50) ubyte -> x1 "Inline stloc first use temp"
-; V11 tmp6 [V11,T09] ( 2, 2 ) byref -> x3 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+;* V09 tmp4 [V09,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V10 tmp5 [V10,T12] ( 3, 1.50) ubyte -> x1 "Inline stloc first use temp"
+; V11 tmp6 [V11,T10] ( 2, 2 ) byref -> x3 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-; V13 tmp8 [V13,T06] ( 2, 4 ) long -> x3 "Cast away GC"
-; V14 cse0 [V14,T03] ( 3, 10 ) int -> x1 "CSE - aggressive"
+; V13 tmp8 [V13,T08] ( 2, 4 ) long -> x3 "Cast away GC"
+; V14 cse0 [V14,T06] ( 3, 8.50) int -> x2 "CSE - aggressive"
+; V15 cse1 [V15,T03] ( 4, 10.50) int -> x1 "CSE - aggressive"
+; V16 cse2 [V16,T04] ( 3, 10 ) int -> x1 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -66,26 +68,22 @@ G_M4398_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
b G_M4398_IG10
;; size=4 bbWeight=1 PerfScore 1.00
G_M4398_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- sub w4, w4, #1
+ sxtw w4, w1
;; size=4 bbWeight=2 PerfScore 1.00
G_M4398_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- cmp w4, #0
- ble G_M4398_IG11
- sub w1, w4, #1
- ldrb w1, [x3, w1, SXTW #2]
- cmp w1, #57
- beq G_M4398_IG09
- ;; size=24 bbWeight=4 PerfScore 26.00
-G_M4398_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w4, #0
ble G_M4398_IG12
sub w1, w4, #1
+ ldrb w2, [x3, w1, SXTW #2]
+ cmp w2, #57
+ beq G_M4398_IG09
+ ;; size=24 bbWeight=4 PerfScore 26.00
+G_M4398_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
add x1, x3, w1, SXTW
- ldrb w2, [x1]
add w2, w2, #1
strb w2, [x1]
b G_M4398_IG15
- ;; size=32 bbWeight=0.50 PerfScore 4.25
+ ;; size=16 bbWeight=0.50 PerfScore 1.75
G_M4398_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
add x4, x0, #4
; byrRegs +[x4]
@@ -131,7 +129,7 @@ G_M4398_IG18: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 248, prolog size 8, PerfScore 112.25, instruction count 62, allocated bytes for code 248 (MethodHash=4357eed1) for method System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
+; Total bytes of code 232, prolog size 8, PerfScore 109.75, instruction count 58, allocated bytes for code 232 (MethodHash=4357eed1) for method System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
; ============================================================
Cfi Info:
-8 (-4.76%) : 17140.dasm - FinalizeTest:Run():int (FullOpts)
@@ -7,11 +7,11 @@
; fully interruptible
; Final local variable assignments
;
-; V00 loc0 [V00,T02] ( 3, 9 ) int -> registers
+; V00 loc0 [V00,T01] ( 3, 9 ) int -> registers
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T00] ( 3, 24 ) int -> x19 "impSpillLclRefs"
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <FinalizeTest+Dummy>
-; V04 cse0 [V04,T01] ( 3, 10 ) long -> x20 hoist "CSE - aggressive"
+; V04 cse0 [V04,T02] ( 2, 9 ) long -> x20 hoist "CSE - aggressive"
;
; Lcl frame size = 8
@@ -43,7 +43,7 @@ G_M43469_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
;; size=32 bbWeight=2 PerfScore 10.00
G_M43469_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x20]
- cbnz w0, G_M43469_IG06
+ cbnz w0, G_M43469_IG08
;; size=8 bbWeight=8 PerfScore 32.00
G_M43469_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add w0, w19, #1
@@ -53,26 +53,7 @@ G_M43469_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
cmp w19, w0
blt G_M43469_IG03
;; size=24 bbWeight=4 PerfScore 14.00
-G_M43469_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldrb w0, [x20]
- cbz w0, G_M43469_IG09
- ;; size=8 bbWeight=1 PerfScore 4.00
-G_M43469_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- adrp x0, [HIGH RELOC #0xD1FFAB1E]
- add x0, x0, [LOW RELOC #0xD1FFAB1E]
- ; gcrRegs +[x0]
- bl <unknown method>
- ; gcrRegs -[x0]
- ; gcr arg pop 0
- mov w0, #100
- ;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M43469_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M43469_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M43469_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
adrp x0, [HIGH RELOC #0xD1FFAB1E]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
; gcrRegs +[x0]
@@ -81,14 +62,29 @@ G_M43469_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcr arg pop 0
movn w0, #0
;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M43469_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M43469_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M43469_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ adrp x0, [HIGH RELOC #0xD1FFAB1E]
+ add x0, x0, [LOW RELOC #0xD1FFAB1E]
+ ; gcrRegs +[x0]
+ bl <unknown method>
+ ; gcrRegs -[x0]
+ ; gcr arg pop 0
+ mov w0, #100
+ ;; size=16 bbWeight=1 PerfScore 2.50
+G_M43469_IG09: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 168, prolog size 16, PerfScore 73.50, instruction count 42, allocated bytes for code 168 (MethodHash=e2fb5632) for method FinalizeTest:Run():int (FullOpts)
+; Total bytes of code 160, prolog size 16, PerfScore 73.25, instruction count 40, allocated bytes for code 160 (MethodHash=e2fb5632) for method FinalizeTest:Run():int (FullOpts)
; ============================================================
Cfi Info:
+16 (+1.61%) : 2291.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
@@ -10,10 +10,10 @@
; V00 arg0 [V00,T06] ( 18, 21 ) ref -> x19 class-hnd exact single-def <System.Collections.Generic.List`1[System.String]>
; V01 loc0 [V01,T16] ( 7, 3.50) ref -> x20 class-hnd exact single-def <System.String>
; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [fp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 39,149.08) int -> x22
+; V03 loc2 [V03,T00] ( 41,183.08) int -> x22
; V04 loc3 [V04,T20] ( 4, 2 ) int -> x0
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
-; V06 loc5 [V06,T04] ( 8, 25 ) int -> x21
+; V06 loc5 [V06,T04] ( 8, 25 ) int -> x23
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V09 tmp2 [V09,T07] ( 2, 16 ) ref -> x2 class-hnd exact "impAppendStmt" <System.String>
@@ -38,13 +38,13 @@
; V28 cse0 [V28,T14] ( 3, 10 ) int -> x0 "CSE - aggressive"
; V29 cse1 [V29,T25] ( 3, 1.50) long -> x24 "CSE - moderate"
; V30 cse2 [V30,T29] ( 2, 1 ) int -> x12 "CSE - moderate"
-; V31 cse3 [V31,T01] ( 3, 48 ) long -> x1 "CSE - aggressive"
+; V31 cse3 [V31,T02] ( 3, 48 ) long -> x1 "CSE - aggressive"
; V32 cse4 [V32,T11] ( 3, 12 ) long -> x1 "CSE - aggressive"
; V33 cse5 [V33,T12] ( 3, 12 ) int -> x1 "CSE - aggressive"
; V34 cse6 [V34,T10] ( 3, 12 ) ref -> x0 "CSE - aggressive"
; V35 cse7 [V35,T26] ( 3, 1.50) int -> x1 "CSE - moderate"
-; V36 cse8 [V36,T03] ( 15, 30.54) int -> x21 "CSE - aggressive"
-; V37 cse9 [V37,T02] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
+; V36 cse8 [V36,T01] ( 17, 64.54) int -> x21 "CSE - aggressive"
+; V37 cse9 [V37,T03] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
; V38 cse10 [V38,T15] ( 2, 8 ) int -> x3 "CSE - aggressive"
; V39 cse11 [V39,T13] ( 3, 11.88) int -> x0 "CSE - aggressive"
; V40 cse12 [V40,T17] ( 7, 3.50) int -> x25 "CSE - moderate"
@@ -69,19 +69,19 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=52 bbWeight=1 PerfScore 12.50
G_M28069_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x10]
- cbz w0, G_M28069_IG24
+ cbz w0, G_M28069_IG23
;; size=8 bbWeight=1 PerfScore 4.00
G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w1, #0
- bls G_M28069_IG28
+ bls G_M28069_IG27
ldr x20, [x0, #0x10]
; gcrRegs +[x20]
ldr w21, [x20, #0x08]
cmp w21, #100
- bgt G_M28069_IG24
+ bgt G_M28069_IG23
add w0, w21, #2
; gcrRegs -[x0]
mov w1, #2
@@ -108,109 +108,107 @@ G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
mov x1, sp
;; size=8 bbWeight=0.50 PerfScore 0.50
G_M28069_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w0, #31, G_M28069_IG29
+ tbnz w0, #31, G_M28069_IG28
str x1, [fp, #-0x48] // [V16 tmp9]
str w0, [fp, #-0x40] // [V17 tmp10]
mov w22, wzr
cmp w21, #0
- ble G_M28069_IG15
+ ble G_M28069_IG14
add x23, x20, #12
; byrRegs +[x23]
;; size=28 bbWeight=0.50 PerfScore 2.75
G_M28069_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldrh w0, [x23, w22, UXTW #2]
cmp w0, #39
- bne G_M28069_IG11
+ bne G_M28069_IG10
;; size=12 bbWeight=4 PerfScore 18.00
G_M28069_IG08: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V17 tmp10]
cmp w22, w0
- bhs G_M28069_IG28
+ bhs G_M28069_IG27
ldr x0, [fp, #-0x48] // [V16 tmp9]
; byrRegs +[x0]
ubfiz x1, x22, #1, #32
add x0, x0, x1
+ cmp w22, w21
+ bhs G_M28069_IG27
ldrh w1, [x23, x1]
strh w1, [x0]
add w22, w22, #1
cmp w21, w22
- ble G_M28069_IG09
+ ble G_M28069_IG23
+ cmp w22, w21
+ bhs G_M28069_IG27
ldrh w0, [x23, w22, UXTW #2]
; byrRegs -[x0]
cmp w0, #39
bne G_M28069_IG08
- ;; size=56 bbWeight=16 PerfScore 280.00
-G_M28069_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
- cmp w21, w22
- bgt G_M28069_IG12
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19-x20]
- ; byrRegs -[x23]
- b G_M28069_IG24
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
- ; gcrRegs +[x19-x20]
- ; byrRegs +[x23]
+ ;; size=72 bbWeight=16 PerfScore 328.00
+G_M28069_IG09: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref
+ b G_M28069_IG11
+ ;; size=4 bbWeight=4 PerfScore 4.00
+G_M28069_IG10: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
cmp w0, #121
- beq G_M28069_IG14
+ beq G_M28069_IG13
;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V17 tmp10]
cmp w22, w0
- bhs G_M28069_IG28
+ bhs G_M28069_IG27
ldr x0, [fp, #-0x48] // [V16 tmp9]
; byrRegs +[x0]
ubfiz x1, x22, #1, #32
add x0, x0, x1
+ cmp w22, w21
+ bhs G_M28069_IG27
ldrh w1, [x23, x1]
strh w1, [x0]
add w22, w22, #1
cmp w21, w22
bgt G_M28069_IG07
- ;; size=44 bbWeight=4 PerfScore 52.00
-G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=52 bbWeight=4 PerfScore 58.00
+G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x23]
- b G_M28069_IG15
+ b G_M28069_IG14
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #-0x40] // [V17 tmp10]
cmp w22, w0
- bhs G_M28069_IG28
+ bhs G_M28069_IG27
ldr x0, [fp, #-0x48] // [V16 tmp9]
; byrRegs +[x0]
mov w1, #121
strh w1, [x0, w22, UXTW #2]
;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
sub w0, w21, #1
cmp w0, w22
- ble G_M28069_IG24
+ ble G_M28069_IG23
add w0, w22, #1
cmp w0, w21
- bhs G_M28069_IG28
+ bhs G_M28069_IG27
add x23, x20, #12
; byrRegs +[x23]
add w0, w22, #1
ubfiz x24, x0, #1, #32
ldrh w0, [x23, x24]
cmp w0, #121
- bne G_M28069_IG24
+ bne G_M28069_IG23
add w25, w22, #2
cmp w21, w25
- ble G_M28069_IG16
+ ble G_M28069_IG15
cmp w25, w21
- bhs G_M28069_IG28
+ bhs G_M28069_IG27
ldrh w0, [x23, w25, UXTW #2]
cmp w0, #121
- beq G_M28069_IG24
+ beq G_M28069_IG23
;; size=80 bbWeight=0.50 PerfScore 9.25
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w0, w22, #3
ldr w1, [fp, #-0x40] // [V17 tmp10]
cmp w0, w1
- blt G_M28069_IG17
+ blt G_M28069_IG16
adrp x0, [HIGH RELOC #0xD1FFAB1E]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
; gcrRegs +[x0]
@@ -221,11 +219,11 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
; gcrRegs -[x0-x1]
; gcr arg pop 0
;; size=36 bbWeight=0.50 PerfScore 3.50
-G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w0, w22, #1
ldr w1, [fp, #-0x40] // [V17 tmp10]
cmp w0, w1
- bhs G_M28069_IG28
+ bhs G_M28069_IG27
ldr x0, [fp, #-0x48] // [V16 tmp9]
; byrRegs +[x0]
mov w1, #121
@@ -233,7 +231,7 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
ldr w0, [fp, #-0x40] // [V17 tmp10]
; byrRegs -[x0]
cmp w25, w0
- bhs G_M28069_IG28
+ bhs G_M28069_IG27
ldr x0, [fp, #-0x48] // [V16 tmp9]
; byrRegs +[x0]
strh w1, [x0, w25, UXTW #2]
@@ -241,7 +239,7 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
; byrRegs -[x0]
ldr w1, [fp, #-0x40] // [V17 tmp10]
cmp w0, w1
- bhs G_M28069_IG28
+ bhs G_M28069_IG27
ldr x0, [fp, #-0x48] // [V16 tmp9]
; byrRegs +[x0]
add w1, w22, #3
@@ -249,15 +247,15 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
strh w2, [x0, w1, UXTW #2]
sxtw w22, w25
cmp w21, w22
- ble G_M28069_IG21
- tbnz w22, #31, G_M28069_IG20
+ ble G_M28069_IG20
+ tbnz w22, #31, G_M28069_IG19
;; size=96 bbWeight=0.50 PerfScore 12.50
-G_M28069_IG18: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0]
add w0, w22, #2
ldr w1, [fp, #-0x40] // [V17 tmp10]
cmp w0, w1
- bhs G_M28069_IG28
+ bhs G_M28069_IG27
ldr x1, [fp, #-0x48] // [V16 tmp9]
; byrRegs +[x1]
ubfiz x0, x0, #1, #32
@@ -268,32 +266,32 @@ G_M28069_IG18: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800
strh w1, [x0]
...
+8 (+2.50%) : 951.dasm - System.Enum+<>c__641[uint]:<FormatNumberAsHex>b__64_0(System.Span
1[ushort],long):this (FullOpts)
@@ -9,32 +9,32 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd exact single-def <System.Enum+<>c__64`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ushort]>
-; V02 arg2 [V02,T02] ( 3, 2.50) long -> x3 single-def
+; V02 arg2 [V02,T01] ( 3, 2.50) long -> x3 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) ubyte -> zero-ref
;* V04 loc1 [V04,T17] ( 0, 0 ) int -> zero-ref ld-addr-op
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
; V08 tmp3 [V08,T08] ( 5, 2.50) int -> x0 "Inline stloc first use temp"
-; V09 tmp4 [V09,T04] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V09 tmp4 [V09,T03] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V10 tmp5 [V10,T09] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
; V11 tmp6 [V11,T10] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V13 tmp8 [V13,T05] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V13 tmp8 [V13,T04] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V14 tmp9 [V14,T11] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
; V15 tmp10 [V15,T12] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V17 tmp12 [V17,T06] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V17 tmp12 [V17,T05] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V18 tmp13 [V18,T13] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
; V19 tmp14 [V19,T14] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
;* V20 tmp15 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V21 tmp16 [V21,T07] ( 3, 3 ) ubyte -> x0 "Inlining Arg"
+; V21 tmp16 [V21,T06] ( 3, 3 ) ubyte -> x0 "Inlining Arg"
; V22 tmp17 [V22,T15] ( 3, 1.50) int -> x0 "Inline stloc first use temp"
; V23 tmp18 [V23,T16] ( 3, 1.50) int -> x0 "Inline stloc first use temp"
;* V24 tmp19 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V25 tmp20 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V26 tmp21 [V26,T00] ( 9, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp22 [V27,T03] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V27 tmp22 [V27,T02] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp24 [V29 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
@@ -45,14 +45,15 @@
;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
;* V36 tmp31 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
-; V38 cse0 [V38,T01] ( 6, 6 ) ref -> x1 multi-def "CSE - aggressive"
+; V38 cse0 [V38,T07] ( 5, 2.50) ref -> x19 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M28263_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M28263_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
cmp w2, #8
@@ -126,35 +127,38 @@ G_M28263_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, b
strh w0, [x1, #0x0C]
b G_M28263_IG05
;; size=264 bbWeight=0.50 PerfScore 23.75
-G_M28263_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28263_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x1]
- adrp x1, [HIGH RELOC #0xD1FFAB1E]
- add x1, x1, [LOW RELOC #0xD1FFAB1E]
- ; gcrRegs +[x1]
- mov x0, x1
+ adrp x19, [HIGH RELOC #0xD1FFAB1E]
+ add x19, x19, [LOW RELOC #0xD1FFAB1E]
+ ; gcrRegs +[x19]
+ mov x0, x19
; gcrRegs +[x0]
+ mov x1, x19
+ ; gcrRegs +[x1]
bl <unknown method>
; gcrRegs -[x0-x1]
- adrp x1, [HIGH RELOC #0xD1FFAB1E]
- add x1, x1, [LOW RELOC #0xD1FFAB1E]
- ; gcrRegs +[x1]
- mov x0, x1
+ mov x0, x19
; gcrRegs +[x0]
+ mov x1, x19
+ ; gcrRegs +[x1]
bl <unknown method>
- ; gcrRegs -[x0-x1]
- ;; size=32 bbWeight=1 PerfScore 5.00
+ ; gcrRegs -[x0-x1 x19]
+ ;; size=32 bbWeight=0.50 PerfScore 2.50
G_M28263_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 320, prolog size 8, PerfScore 33.75, instruction count 80, allocated bytes for code 320 (MethodHash=6ab79198) for method System.Enum+<>c__64`1[uint]:<FormatNumberAsHex>b__64_0(System.Span`1[ushort],long):this (FullOpts)
+; Total bytes of code 328, prolog size 12, PerfScore 34.25, instruction count 82, allocated bytes for code 328 (MethodHash=6ab79198) for method System.Enum+<>c__64`1[uint]:<FormatNumberAsHex>b__64_0(System.Span`1[ushort],long):this (FullOpts)
; ============================================================
Cfi Info:
>> Start offset : 0x000000
>> End offset : 0xd1ffab1e
- CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x10
+ CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x20
CodeOffset: 0x04 Op: RelOffset DwarfReg:0x1d Offset:0x0
CodeOffset: 0x04 Op: RelOffset DwarfReg:0x1e Offset:0x8
- CodeOffset: 0x08 Op: DefCfaRegister DwarfReg:0x1D
+ CodeOffset: 0x08 Op: RelOffset DwarfReg:0x13 Offset:0x18
+ CodeOffset: 0x0C Op: DefCfaRegister DwarfReg:0x1D
+8 (+6.06%) : 4405.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
@@ -9,8 +9,8 @@
;
; V00 this [V00,T03] ( 4, 3.50) ref -> x0 this class-hnd exact single-def <System.Threading.PortableThreadPool>
; V01 arg1 [V01,T01] ( 4, 7 ) ref -> x1 class-hnd exact single-def <System.Threading.PortableThreadPool+WaitThread>
-; V02 loc0 [V02,T00] ( 9, 19.50) ref -> registers class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
-; V03 loc1 [V03,T02] ( 3, 8.50) ref -> x19 class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
+; V02 loc0 [V02,T00] ( 8, 19 ) ref -> registers class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
+; V03 loc1 [V03,T02] ( 3, 8.50) ref -> registers class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V06 tmp2 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -51,50 +51,56 @@ G_M1296_IG05: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=80002 {
; gcrRegs +[x1 x19]
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
- cbz x0, G_M1296_IG06
+ cbz x0, G_M1296_IG08
ldr x2, [x0, #0x08]
; gcrRegs +[x2]
cmp x2, x1
bne G_M1296_IG07
;; size=20 bbWeight=4 PerfScore 34.00
-G_M1296_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M1296_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x1-x2]
- cbnz x0, G_M1296_IG08
+ mov x14, x19
+ ; gcrRegs +[x14]
+ mov x19, x0
+ b G_M1296_IG09
+ ;; size=12 bbWeight=0.50 PerfScore 1.00
+G_M1296_IG07: ; bbWeight=2, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x14 x19] +[x1]
+ mov x19, x0
+ ; gcrRegs +[x19]
+ b G_M1296_IG05
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M1296_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0-x1 x19]
adrp x0, [HIGH RELOC #0xD1FFAB1E]
- ; gcrRegs -[x0]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
; gcrRegs +[x0]
adrp x1, [HIGH RELOC #0xD1FFAB1E]
add x1, x1, [LOW RELOC #0xD1FFAB1E]
; gcrRegs +[x1]
bl <unknown method>
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1]
; gcr arg pop 0
- b G_M1296_IG09
- ;; size=28 bbWeight=0.50 PerfScore 2.50
-G_M1296_IG07: ; bbWeight=2, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0-x1]
- mov x19, x0
- ; gcrRegs +[x19]
- b G_M1296_IG05
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M1296_IG08: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1]
- ldr x15, [x0, #0x10]
+ b G_M1296_IG10
+ ;; size=24 bbWeight=0.50 PerfScore 2.00
+G_M1296_IG09: ; bbWeight=0.50, gcrefRegs=84000 {x14 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x14 x19]
+ ldr x15, [x19, #0x10]
; gcrRegs +[x15]
- add x14, x19, #16
+ add x14, x14, #16
+ ; gcrRegs -[x14]
; byrRegs +[x14]
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15 x19]
+ ; gcrRegs -[x15 x19]
; byrRegs -[x14]
;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M1296_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M1296_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 132, prolog size 12, PerfScore 58.00, instruction count 33, allocated bytes for code 132 (MethodHash=2a35faef) for method System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
+; Total bytes of code 140, prolog size 12, PerfScore 58.50, instruction count 35, allocated bytes for code 140 (MethodHash=2a35faef) for method System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
; ============================================================
Cfi Info:
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.linux.arm64.checked.mch |
67 |
49 |
5 |
13 |
-500 |
+32 |
benchmarks.run_pgo.linux.arm64.checked.mch |
188 |
88 |
82 |
18 |
-692 |
+860 |
benchmarks.run_tiered.linux.arm64.checked.mch |
29 |
18 |
3 |
8 |
-396 |
+24 |
coreclr_tests.run.linux.arm64.checked.mch |
355 |
243 |
26 |
86 |
-2,412 |
+196 |
libraries.crossgen2.linux.arm64.checked.mch |
175 |
122 |
22 |
31 |
-1,548 |
+228 |
libraries.pmi.linux.arm64.checked.mch |
325 |
200 |
62 |
63 |
-1,896 |
+472 |
libraries_tests.run.linux.arm64.Release.mch |
1,719 |
1,072 |
205 |
442 |
-10,476 |
+2,672 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
885 |
415 |
77 |
393 |
-3,288 |
+576 |
realworld.run.linux.arm64.checked.mch |
45 |
27 |
6 |
12 |
-252 |
+80 |
smoke_tests.nativeaot.linux.arm64.checked.mch |
31 |
17 |
7 |
7 |
-164 |
+48 |
|
3,819 |
2,251 |
495 |
1,073 |
-21,624 |
+5,188 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.linux.arm64.checked.mch |
33,709 |
2,779 |
30,930 |
0 (0.00%) |
1 (0.00%) |
benchmarks.run_pgo.linux.arm64.checked.mch |
152,900 |
61,290 |
91,610 |
4 (0.00%) |
4 (0.00%) |
benchmarks.run_tiered.linux.arm64.checked.mch |
63,812 |
48,019 |
15,793 |
1 (0.00%) |
2 (0.00%) |
coreclr_tests.run.linux.arm64.checked.mch |
625,273 |
382,318 |
242,955 |
3 (0.00%) |
3 (0.00%) |
libraries.crossgen2.linux.arm64.checked.mch |
234,496 |
15 |
234,481 |
0 (0.00%) |
0 (0.00%) |
libraries.pmi.linux.arm64.checked.mch |
295,743 |
6 |
295,737 |
0 (0.00%) |
2 (0.00%) |
libraries_tests.run.linux.arm64.Release.mch |
744,164 |
490,908 |
253,256 |
0 (0.00%) |
2 (0.00%) |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
304,863 |
21,599 |
283,264 |
0 (0.00%) |
2 (0.00%) |
realworld.run.linux.arm64.checked.mch |
33,309 |
151 |
33,158 |
0 (0.00%) |
0 (0.00%) |
smoke_tests.nativeaot.linux.arm64.checked.mch |
19,033 |
7 |
19,026 |
0 (0.00%) |
0 (0.00%) |
|
2,507,302 |
1,007,092 |
1,500,210 |
8 (0.00%) |
16 (0.00%) |
jit-analyze output
benchmarks.run.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15555200 (overridden on cmd)
Total bytes of diff: 15554732 (overridden on cmd)
Total bytes of delta: -468 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
16 : 3932.dasm (1.39 % of base)
4 : 22157.dasm (0.89 % of base)
4 : 1731.dasm (0.60 % of base)
4 : 12182.dasm (1.11 % of base)
4 : 4504.dasm (1.22 % of base)
Top file improvements (bytes):
-48 : 11712.dasm (-0.35 % of base)
-48 : 19004.dasm (-7.64 % of base)
-36 : 27942.dasm (-21.95 % of base)
-28 : 33648.dasm (-6.36 % of base)
-20 : 24352.dasm (-7.04 % of base)
-20 : 13712.dasm (-6.33 % of base)
-16 : 947.dasm (-5.41 % of base)
-16 : 18103.dasm (-4.49 % of base)
-16 : 2812.dasm (-0.35 % of base)
-12 : 9988.dasm (-0.36 % of base)
-12 : 10553.dasm (-1.38 % of base)
-12 : 1773.dasm (-4.35 % of base)
-12 : 935.dasm (-3.90 % of base)
-12 : 1187.dasm (-0.22 % of base)
-12 : 15022.dasm (-0.78 % of base)
-12 : 20671.dasm (-0.36 % of base)
-8 : 2002.dasm (-0.48 % of base)
-8 : 3917.dasm (-3.23 % of base)
-8 : 19280.dasm (-1.64 % of base)
-8 : 6743.dasm (-2.41 % of base)
38 total files with Code Size differences (33 improved, 5 regressed), 13 unchanged.
Top method regressions (bytes):
16 (1.39 % of base) : 3932.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
4 (0.89 % of base) : 22157.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
4 (1.22 % of base) : 4504.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
4 (0.60 % of base) : 1731.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
4 (1.11 % of base) : 12182.dasm - System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
Top method improvements (bytes):
-48 (-0.35 % of base) : 11712.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (FullOpts)
-48 (-7.64 % of base) : 19004.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-36 (-21.95 % of base) : 27942.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-28 (-6.36 % of base) : 33648.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
-20 (-7.04 % of base) : 24352.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
-20 (-6.33 % of base) : 13712.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
-16 (-5.41 % of base) : 947.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-16 (-4.49 % of base) : 18103.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
-16 (-0.35 % of base) : 2812.dasm - Utf8Json.Internal.Emit.MetaType:.ctor(System.Type,System.Func`2[System.String,System.String],ubyte):this (FullOpts)
-12 (-0.36 % of base) : 20671.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-12 (-0.36 % of base) : 9988.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (FullOpts)
-12 (-0.22 % of base) : 1187.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-12 (-3.90 % of base) : 935.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-12 (-4.35 % of base) : 1773.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-12 (-1.38 % of base) : 10553.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
-12 (-0.78 % of base) : 15022.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (FullOpts)
-8 (-0.12 % of base) : 21289.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
-8 (-1.75 % of base) : 10014.dasm - Sigil.Impl.LinqStack`1[System.__Canon]:Peek(ubyte,int):Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack][]:this (FullOpts)
-8 (-3.23 % of base) : 3917.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-8 (-4.55 % of base) : 8672.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (FullOpts)
Top method regressions (percentages):
16 (1.39 % of base) : 3932.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
4 (1.22 % of base) : 4504.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
4 (1.11 % of base) : 12182.dasm - System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
4 (0.89 % of base) : 22157.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
4 (0.60 % of base) : 1731.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
Top method improvements (percentages):
-36 (-21.95 % of base) : 27942.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-48 (-7.64 % of base) : 19004.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-20 (-7.04 % of base) : 24352.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
-28 (-6.36 % of base) : 33648.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
-20 (-6.33 % of base) : 13712.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
-16 (-5.41 % of base) : 947.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-8 (-4.55 % of base) : 8672.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (FullOpts)
-16 (-4.49 % of base) : 18103.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
-12 (-4.35 % of base) : 1773.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-12 (-3.90 % of base) : 935.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-4 (-3.85 % of base) : 9523.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
-8 (-3.23 % of base) : 3917.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-8 (-2.41 % of base) : 6743.dasm - System.Xml.Serialization.CodeGenerator:StoreMember(System.Reflection.MemberInfo):this (FullOpts)
-8 (-1.75 % of base) : 10014.dasm - Sigil.Impl.LinqStack`1[System.__Canon]:Peek(ubyte,int):Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack][]:this (FullOpts)
-4 (-1.64 % of base) : 4429.dasm - System.Text.Json.Tests.Perf_Reader:ReadMultiSpanSequenceEmptyLoop():this (FullOpts)
-4 (-1.64 % of base) : 13194.dasm - System.Text.Json.Tests.Perf_Reader:ReadSingleSpanSequenceEmptyLoop():this (FullOpts)
-4 (-1.64 % of base) : 3528.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (FullOpts)
-8 (-1.64 % of base) : 19280.dasm - System.Xml.Linq.XContainer+<GetDescendants>d__38:MoveNext():ubyte:this (FullOpts)
-12 (-1.38 % of base) : 10553.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
-4 (-1.35 % of base) : 5446.dasm - System.Text.Json.Tests.Perf_Reader:ReadSpanEmptyLoop():this (FullOpts)
benchmarks.run_pgo.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 80093860 (overridden on cmd)
Total bytes of diff: 80094028 (overridden on cmd)
Total bytes of delta: 168 (0.00 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
36 : 135054.dasm (8.11 % of base)
32 : 101078.dasm (2.06 % of base)
32 : 833.dasm (2.55 % of base)
28 : 135053.dasm (1.19 % of base)
20 : 119237.dasm (0.76 % of base)
20 : 135951.dasm (3.16 % of base)
20 : 50260.dasm (0.76 % of base)
20 : 101715.dasm (2.33 % of base)
20 : 101896.dasm (0.76 % of base)
20 : 143726.dasm (3.07 % of base)
20 : 20764.dasm (2.26 % of base)
20 : 86693.dasm (8.20 % of base)
16 : 12739.dasm (2.06 % of base)
16 : 71686.dasm (2.15 % of base)
16 : 82712.dasm (6.56 % of base)
16 : 86689.dasm (5.97 % of base)
16 : 131235.dasm (1.68 % of base)
16 : 85474.dasm (4.60 % of base)
16 : 86094.dasm (0.15 % of base)
16 : 86690.dasm (6.45 % of base)
Top file improvements (bytes):
-36 : 130936.dasm (-1.55 % of base)
-32 : 130937.dasm (-20.51 % of base)
-28 : 151546.dasm (-5.88 % of base)
-24 : 151531.dasm (-5.41 % of base)
-24 : 96411.dasm (-2.35 % of base)
-24 : 151545.dasm (-5.41 % of base)
-20 : 46656.dasm (-6.94 % of base)
-20 : 46671.dasm (-6.33 % of base)
-20 : 46672.dasm (-6.94 % of base)
-12 : 143140.dasm (-4.35 % of base)
-12 : 149966.dasm (-4.05 % of base)
-12 : 150566.dasm (-4.05 % of base)
-12 : 150570.dasm (-0.13 % of base)
-12 : 92090.dasm (-4.05 % of base)
-12 : 92132.dasm (-0.13 % of base)
-12 : 129323.dasm (-4.05 % of base)
-12 : 129356.dasm (-0.13 % of base)
-12 : 149964.dasm (-0.13 % of base)
-12 : 3994.dasm (-0.22 % of base)
-8 : 42256.dasm (-2.99 % of base)
63 total files with Code Size differences (33 improved, 30 regressed), 18 unchanged.
Top method regressions (bytes):
36 (8.11 % of base) : 135054.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
32 (2.55 % of base) : 833.dasm - System.IO.StreamReader:ReadLine():System.String:this (Tier0-FullOpts)
32 (2.06 % of base) : 101078.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.RuntimeType,System.RuntimeType,ubyte):System.Object[] (Tier1)
28 (1.19 % of base) : 135053.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1)
20 (8.20 % of base) : 86693.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
20 (2.33 % of base) : 101715.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
20 (3.07 % of base) : 143726.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
20 (3.16 % of base) : 135951.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
20 (2.26 % of base) : 20764.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
20 (0.76 % of base) : 119237.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (Tier1)
20 (0.76 % of base) : 50260.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (Tier1)
20 (0.76 % of base) : 101896.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (Tier1)
16 (2.38 % of base) : 86866.dasm - Microsoft.CodeAnalysis.Compilation:get_HasStrongName():ubyte:this (Tier1)
16 (0.15 % of base) : 86094.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (Tier1)
16 (6.45 % of base) : 86690.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyAlgorithmIdAttributeSetting():System.Nullable`1[int]:this (Tier1)
16 (6.56 % of base) : 82712.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
16 (5.97 % of base) : 86689.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_HashAlgorithm():int:this (Tier1)
16 (4.60 % of base) : 85474.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
16 (2.06 % of base) : 12739.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
16 (2.15 % of base) : 71686.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (bytes):
-36 (-1.55 % of base) : 130936.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
-32 (-20.51 % of base) : 130937.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-28 (-5.88 % of base) : 151546.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1)
-24 (-2.35 % of base) : 96411.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:WriteConsideredUse(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
-24 (-5.41 % of base) : 151531.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-24 (-5.41 % of base) : 151545.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-20 (-6.33 % of base) : 46671.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1)
-20 (-6.94 % of base) : 46656.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-20 (-6.94 % of base) : 46672.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-12 (-0.22 % of base) : 3994.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
-12 (-4.35 % of base) : 143140.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.05 % of base) : 149966.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.05 % of base) : 150566.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.05 % of base) : 92090.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.05 % of base) : 129323.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-0.13 % of base) : 150570.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-12 (-0.13 % of base) : 92132.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-12 (-0.13 % of base) : 129356.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-12 (-0.13 % of base) : 149964.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-8 (-2.13 % of base) : 52833.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (Tier1)
Top method regressions (percentages):
20 (8.20 % of base) : 86693.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
36 (8.11 % of base) : 135054.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
16 (6.56 % of base) : 82712.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
16 (6.45 % of base) : 86690.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyAlgorithmIdAttributeSetting():System.Nullable`1[int]:this (Tier1)
16 (5.97 % of base) : 86689.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_HashAlgorithm():int:this (Tier1)
16 (4.60 % of base) : 85474.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
12 (3.26 % of base) : 53111.dasm - System.Net.Security.SslStream:HaveFullTlsFrame(byref):ubyte:this (Tier1)
20 (3.16 % of base) : 135951.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
20 (3.07 % of base) : 143726.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
12 (2.83 % of base) : 36365.dasm - System.Number:FormatDouble(double,System.String,System.Globalization.NumberFormatInfo):System.String (Tier1)
12 (2.83 % of base) : 37162.dasm - System.Number:FormatDouble(double,System.String,System.Globalization.NumberFormatInfo):System.String (Tier1)
4 (2.78 % of base) : 86587.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_HasDebuggableAttribute():ubyte:this (Tier1)
32 (2.55 % of base) : 833.dasm - System.IO.StreamReader:ReadLine():System.String:this (Tier0-FullOpts)
16 (2.38 % of base) : 86866.dasm - Microsoft.CodeAnalysis.Compilation:get_HasStrongName():ubyte:this (Tier1)
4 (2.33 % of base) : 92171.dasm - System.Collections.Generic.ValueListBuilder`1[int]:AsSpan():System.ReadOnlySpan`1[int]:this (Tier1)
4 (2.33 % of base) : 36384.dasm - System.Collections.Generic.ValueListBuilder`1[ushort]:AsSpan():System.ReadOnlySpan`1[ushort]:this (Tier1)
4 (2.33 % of base) : 24257.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:get_Text():System.ReadOnlySpan`1[ushort]:this (Tier1)
20 (2.33 % of base) : 101715.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
4 (2.27 % of base) : 135036.dasm - System.Buffers.StringSearchValuesHelper:ValidateReadPosition(byref,int,byref,int) (Tier1)
20 (2.26 % of base) : 20764.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (percentages):
-32 (-20.51 % of base) : 130937.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-20 (-6.94 % of base) : 46656.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-20 (-6.94 % of base) : 46672.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-20 (-6.33 % of base) : 46671.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1)
-28 (-5.88 % of base) : 151546.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1)
-24 (-5.41 % of base) : 151531.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-24 (-5.41 % of base) : 151545.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-12 (-4.35 % of base) : 143140.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.05 % of base) : 149966.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.05 % of base) : 150566.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.05 % of base) : 92090.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.05 % of base) : 129323.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-8 (-2.99 % of base) : 42256.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-8 (-2.99 % of base) : 37165.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-8 (-2.99 % of base) : 51658.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-8 (-2.99 % of base) : 88272.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-8 (-2.99 % of base) : 96639.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-8 (-2.94 % of base) : 45957.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-8 (-2.94 % of base) : 62476.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-8 (-2.94 % of base) : 93991.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
benchmarks.run_tiered.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 24598456 (overridden on cmd)
Total bytes of diff: 24598084 (overridden on cmd)
Total bytes of delta: -372 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
16 : 8134.dasm (1.39 % of base)
4 : 22969.dasm (0.60 % of base)
4 : 44500.dasm (0.89 % of base)
Top file improvements (bytes):
-200 : 34100.dasm (-7.65 % of base)
-36 : 54999.dasm (-21.95 % of base)
-24 : 63013.dasm (-5.83 % of base)
-20 : 27729.dasm (-6.94 % of base)
-16 : 8433.dasm (-5.41 % of base)
-12 : 8411.dasm (-3.90 % of base)
-12 : 31033.dasm (-0.78 % of base)
-12 : 34456.dasm (-4.35 % of base)
-12 : 3510.dasm (-0.22 % of base)
-8 : 44796.dasm (-0.12 % of base)
-8 : 18381.dasm (-3.23 % of base)
-8 : 29819.dasm (-4.55 % of base)
-8 : 45895.dasm (-1.08 % of base)
-4 : 58248.dasm (-0.71 % of base)
-4 : 44736.dasm (-0.34 % of base)
-4 : 9496.dasm (-0.27 % of base)
-4 : 16058.dasm (-2.70 % of base)
-4 : 27426.dasm (-2.70 % of base)
21 total files with Code Size differences (18 improved, 3 regressed), 8 unchanged.
Top method regressions (bytes):
16 (1.39 % of base) : 8134.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
4 (0.89 % of base) : 44500.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (Tier1)
4 (0.60 % of base) : 22969.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
Top method improvements (bytes):
-200 (-7.65 % of base) : 34100.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
-36 (-21.95 % of base) : 54999.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-24 (-5.83 % of base) : 63013.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-20 (-6.94 % of base) : 27729.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-16 (-5.41 % of base) : 8433.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-12 (-0.22 % of base) : 3510.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
-12 (-3.90 % of base) : 8411.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
-12 (-4.35 % of base) : 34456.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-0.78 % of base) : 31033.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (Tier1)
-8 (-0.12 % of base) : 44796.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-8 (-3.23 % of base) : 18381.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (Tier1)
-8 (-4.55 % of base) : 29819.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (Tier1)
-8 (-1.08 % of base) : 45895.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (Tier1)
-4 (-0.34 % of base) : 44736.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier1)
-4 (-0.27 % of base) : 9496.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier0-FullOpts)
-4 (-2.70 % of base) : 27426.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequence(int):this (Tier1-OSR)
-4 (-2.70 % of base) : 16058.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (Tier1-OSR)
-4 (-0.71 % of base) : 58248.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequenceByN(int):this (Tier1-OSR)
Top method regressions (percentages):
16 (1.39 % of base) : 8134.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
4 (0.89 % of base) : 44500.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (Tier1)
4 (0.60 % of base) : 22969.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
Top method improvements (percentages):
-36 (-21.95 % of base) : 54999.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-200 (-7.65 % of base) : 34100.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
-20 (-6.94 % of base) : 27729.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-24 (-5.83 % of base) : 63013.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-16 (-5.41 % of base) : 8433.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-8 (-4.55 % of base) : 29819.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (Tier1)
-12 (-4.35 % of base) : 34456.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-3.90 % of base) : 8411.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
-8 (-3.23 % of base) : 18381.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (Tier1)
-4 (-2.70 % of base) : 27426.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequence(int):this (Tier1-OSR)
-4 (-2.70 % of base) : 16058.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (Tier1-OSR)
-8 (-1.08 % of base) : 45895.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (Tier1)
-12 (-0.78 % of base) : 31033.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (Tier1)
-4 (-0.71 % of base) : 58248.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequenceByN(int):this (Tier1-OSR)
-4 (-0.34 % of base) : 44736.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier1)
-4 (-0.27 % of base) : 9496.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier0-FullOpts)
-12 (-0.22 % of base) : 3510.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
-8 (-0.12 % of base) : 44796.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
21 total methods with Code Size differences (18 improved, 3 regressed).
coreclr_tests.run.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 508732352 (overridden on cmd)
Total bytes of diff: 508730136 (overridden on cmd)
Total bytes of delta: -2216 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
40 : 611327.dasm (0.19 % of base)
12 : 515148.dasm (0.70 % of base)
8 : 319152.dasm (0.64 % of base)
8 : 341138.dasm (0.64 % of base)
8 : 465803.dasm (0.64 % of base)
8 : 489666.dasm (0.64 % of base)
8 : 492004.dasm (0.64 % of base)
8 : 593383.dasm (0.64 % of base)
8 : 450803.dasm (0.64 % of base)
8 : 482838.dasm (0.64 % of base)
8 : 25058.dasm (0.75 % of base)
8 : 464818.dasm (1.08 % of base)
8 : 483393.dasm (0.64 % of base)
8 : 490171.dasm (0.70 % of base)
4 : 245659.dasm (0.10 % of base)
4 : 320983.dasm (0.20 % of base)
4 : 200551.dasm (0.89 % of base)
4 : 481397.dasm (0.65 % of base)
4 : 615750.dasm (0.51 % of base)
4 : 617132.dasm (0.13 % of base)
Top file improvements (bytes):
-36 : 203183.dasm (-21.95 % of base)
-36 : 220435.dasm (-0.72 % of base)
-32 : 617339.dasm (-0.15 % of base)
-28 : 203747.dasm (-6.36 % of base)
-24 : 341688.dasm (-0.34 % of base)
-24 : 452035.dasm (-0.34 % of base)
-24 : 465826.dasm (-0.27 % of base)
-24 : 479517.dasm (-0.34 % of base)
-24 : 505979.dasm (-0.27 % of base)
-24 : 510966.dasm (-0.34 % of base)
-24 : 341165.dasm (-0.27 % of base)
-24 : 450834.dasm (-0.27 % of base)
-24 : 482842.dasm (-0.27 % of base)
-24 : 515153.dasm (-0.34 % of base)
-24 : 589538.dasm (-0.27 % of base)
-24 : 622927.dasm (-0.27 % of base)
-24 : 319262.dasm (-0.27 % of base)
-24 : 489679.dasm (-0.27 % of base)
-24 : 520022.dasm (-0.27 % of base)
-24 : 523741.dasm (-0.34 % of base)
75 total files with Code Size differences (50 improved, 25 regressed), 20 unchanged.
Top method regressions (bytes):
40 (0.19 % of base) : 611327.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.TypeValidationChecker+<ValidateTypeWorker>d__10:MoveNext():this (Tier1)
12 (0.70 % of base) : 515148.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (Tier1)
8 (0.64 % of base) : 319152.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 341138.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 465803.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 489666.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 492004.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 593383.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 450803.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 482838.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 483393.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.70 % of base) : 490171.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
8 (0.75 % of base) : 25058.dasm - System.Net.Sockets.SocketPal:TryCompleteSendTo(System.Net.Sockets.SafeSocketHandle,System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,byref,int,System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (FullOpts)
8 (1.08 % of base) : 464818.dasm - System.Reflection.TypeNameParser:GetType(System.String,ubyte,ubyte,System.Reflection.Assembly):System.Type (Instrumented Tier1)
4 (0.10 % of base) : 245659.dasm - IlasmPortablePdbTests.IlasmPortablePdbTester:TestPortablePdbMethodDebugInformation2():this (FullOpts)
4 (0.16 % of base) : 313776.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.AttributePresenceFilterNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
4 (0.51 % of base) : 615750.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.GenericLookupSignature:CompareToImpl(ILCompiler.DependencyAnalysis.ISortableNode,ILCompiler.DependencyAnalysis.CompilerComparer):int:this (Tier1)
4 (0.13 % of base) : 617132.dasm - ILCompiler.ReadyToRunVisibilityRootProvider:RootMethods(Internal.TypeSystem.MetadataType,System.String,ILCompiler.IRootingServiceProvider,ubyte):this (Tier1-OSR)
4 (0.89 % of base) : 200551.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
4 (0.20 % of base) : 320983.dasm - System.Guid:TryParseExactD(System.ReadOnlySpan`1[ushort],byref):ubyte (Instrumented Tier1)
Top method improvements (bytes):
-36 (-0.72 % of base) : 220435.dasm - GenClass`1[int]:DoTest_Inner[System.__Canon,System.__Canon,System.__Canon](int,GenClass`1[System.__Canon],GenClass`1[System.__Canon],GenClass`1[System.__Canon]) (FullOpts)
-36 (-21.95 % of base) : 203183.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-32 (-0.15 % of base) : 617339.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.TypeValidationChecker+<ValidateTypeWorker>d__10:MoveNext():this (Tier1)
-28 (-6.36 % of base) : 203747.dasm - Span.SpanBench:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
-24 (-0.34 % of base) : 341688.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
-24 (-0.34 % of base) : 452035.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
-24 (-0.34 % of base) : 479517.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
-24 (-0.34 % of base) : 510966.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
-24 (-0.34 % of base) : 515153.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
-24 (-0.34 % of base) : 523741.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
-24 (-0.27 % of base) : 465826.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-24 (-0.27 % of base) : 505979.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-24 (-0.27 % of base) : 341165.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-24 (-0.27 % of base) : 450834.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-24 (-0.27 % of base) : 482842.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-24 (-0.27 % of base) : 589538.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-24 (-0.27 % of base) : 622927.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-24 (-0.27 % of base) : 319262.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-24 (-0.27 % of base) : 489679.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-24 (-0.27 % of base) : 520022.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
Top method regressions (percentages):
8 (1.08 % of base) : 464818.dasm - System.Reflection.TypeNameParser:GetType(System.String,ubyte,ubyte,System.Reflection.Assembly):System.Type (Instrumented Tier1)
4 (0.90 % of base) : 482216.dasm - System.TimeZoneInfo:GetUtcOffset(System.DateTime,System.TimeZoneInfo):System.TimeSpan (Instrumented Tier1)
4 (0.89 % of base) : 200551.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
8 (0.75 % of base) : 25058.dasm - System.Net.Sockets.SocketPal:TryCompleteSendTo(System.Net.Sockets.SafeSocketHandle,System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,byref,int,System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (FullOpts)
8 (0.70 % of base) : 490171.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
12 (0.70 % of base) : 515148.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (Tier1)
4 (0.65 % of base) : 481397.dasm - System.Runtime.Serialization.CodeGenerator:LoadThis(System.Object,System.Reflection.MethodInfo):this (Tier1)
8 (0.64 % of base) : 319152.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 341138.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 465803.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 489666.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 492004.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 593383.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 450803.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 482838.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 483393.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
4 (0.59 % of base) : 464817.dasm - System.Reflection.RuntimeAssembly:GetType(System.String,ubyte,ubyte):System.Type:this (Instrumented Tier1)
4 (0.55 % of base) : 450250.dasm - System.Type:GetType(System.String):System.Type (Tier1)
4 (0.51 % of base) : 615750.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.GenericLookupSignature:CompareToImpl(ILCompiler.DependencyAnalysis.ISortableNode,ILCompiler.DependencyAnalysis.CompilerComparer):int:this (Tier1)
4 (0.31 % of base) : 114027.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
Top method improvements (percentages):
-36 (-21.95 % of base) : 203183.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-20 (-7.04 % of base) : 203201.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
-28 (-6.36 % of base) : 203747.dasm - Span.SpanBench:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
-20 (-6.33 % of base) : 203753.dasm - Span.SpanBench:TestQuickSortArray(int[],int,int) (FullOpts)
-16 (-4.82 % of base) : 251431.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-16 (-4.76 % of base) : 311338.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-12 (-4.41 % of base) : 341070.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.41 % of base) : 482772.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.41 % of base) : 483364.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.41 % of base) : 494790.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.41 % of base) : 508072.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.41 % of base) : 450707.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.41 % of base) : 505959.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.41 % of base) : 589519.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.41 % of base) : 319049.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.41 % of base) : 465761.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.41 % of base) : 524123.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.35 % of base) : 579.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-12 (-4.00 % of base) : 482405.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-3.53 % of base) : 311322.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
libraries.crossgen2.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 55844108 (overridden on cmd)
Total bytes of diff: 55842788 (overridden on cmd)
Total bytes of delta: -1320 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
32 : 80206.dasm (0.61 % of base)
32 : 42001.dasm (8.25 % of base)
32 : 171163.dasm (1.75 % of base)
24 : 83642.dasm (1.75 % of base)
16 : 37729.dasm (1.42 % of base)
12 : 10217.dasm (0.48 % of base)
12 : 192020.dasm (0.48 % of base)
8 : 37896.dasm (4.35 % of base)
8 : 41986.dasm (2.15 % of base)
4 : 177361.dasm (0.19 % of base)
4 : 229835.dasm (0.21 % of base)
4 : 230034.dasm (0.55 % of base)
4 : 230039.dasm (0.48 % of base)
4 : 36798.dasm (0.53 % of base)
4 : 81291.dasm (0.56 % of base)
4 : 178612.dasm (0.65 % of base)
4 : 206178.dasm (0.56 % of base)
4 : 227720.dasm (1.11 % of base)
4 : 35350.dasm (0.13 % of base)
4 : 36589.dasm (0.20 % of base)
Top file improvements (bytes):
-72 : 141103.dasm (-1.76 % of base)
-68 : 141145.dasm (-1.71 % of base)
-56 : 178156.dasm (-3.49 % of base)
-48 : 140363.dasm (-2.71 % of base)
-48 : 171045.dasm (-5.43 % of base)
-48 : 176291.dasm (-26.09 % of base)
-48 : 211132.dasm (-5.83 % of base)
-44 : 217296.dasm (-6.75 % of base)
-44 : 227326.dasm (-6.75 % of base)
-36 : 220937.dasm (-2.24 % of base)
-36 : 212588.dasm (-20.45 % of base)
-36 : 217144.dasm (-4.52 % of base)
-28 : 140889.dasm (-9.86 % of base)
-24 : 212914.dasm (-0.54 % of base)
-24 : 191242.dasm (-3.59 % of base)
-24 : 83632.dasm (-5.56 % of base)
-24 : 9436.dasm (-3.59 % of base)
-20 : 177457.dasm (-0.07 % of base)
-20 : 36600.dasm (-7.81 % of base)
-20 : 184231.dasm (-6.49 % of base)
61 total files with Code Size differences (40 improved, 21 regressed), 20 unchanged.
Top method regressions (bytes):
32 (0.61 % of base) : 80206.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
32 (8.25 % of base) : 42001.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
32 (1.75 % of base) : 171163.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
24 (1.75 % of base) : 83642.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
16 (1.42 % of base) : 37729.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
12 (0.48 % of base) : 10217.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
12 (0.48 % of base) : 192020.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
8 (2.15 % of base) : 41986.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
8 (4.35 % of base) : 37896.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
4 (0.56 % of base) : 81291.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
4 (1.11 % of base) : 227720.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
4 (0.65 % of base) : 178612.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:LeastGenericProcedure(Microsoft.VisualBasic.CompilerServices.Symbols+Method,Microsoft.VisualBasic.CompilerServices.Symbols+Method,int,byref):Microsoft.VisualBasic.CompilerServices.Symbols+Method (FullOpts)
4 (0.19 % of base) : 177361.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeText(System.String,System.String):ubyte (FullOpts)
4 (0.53 % of base) : 36798.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
4 (0.20 % of base) : 36589.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
4 (0.13 % of base) : 35350.dasm - System.Globalization.IdnMapping:PunycodeEncode(System.String):System.String (FullOpts)
4 (0.07 % of base) : 14992.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
4 (0.21 % of base) : 229835.dasm - System.Xml.Linq.ElementWriter+<WriteElementAsync>d__4:MoveNext():this (FullOpts)
4 (0.55 % of base) : 230034.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
4 (0.48 % of base) : 230039.dasm - System.Xml.Linq.Extensions+<GetDescendants>d__23`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
Top method improvements (bytes):
-72 (-1.76 % of base) : 141103.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-68 (-1.71 % of base) : 141145.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-56 (-3.49 % of base) : 178156.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (FullOpts)
-48 (-2.71 % of base) : 140363.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
-48 (-5.83 % of base) : 211132.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-48 (-26.09 % of base) : 176291.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-48 (-5.43 % of base) : 171045.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-44 (-6.75 % of base) : 217296.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-44 (-6.75 % of base) : 227326.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-36 (-2.24 % of base) : 220937.dasm - System.IO.Ports.SerialPort:GetPortNames_Linux():System.String[] (FullOpts)
-36 (-4.52 % of base) : 217144.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
-36 (-20.45 % of base) : 212588.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-28 (-9.86 % of base) : 140889.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-24 (-3.59 % of base) : 191242.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-24 (-3.59 % of base) : 9436.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-24 (-5.56 % of base) : 83632.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
-24 (-0.54 % of base) : 212914.dasm - System.Globalization.FormatProvider+Number:NumberToStringFormat(byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-20 (-6.49 % of base) : 184231.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
-20 (-6.49 % of base) : 1417.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
-20 (-0.54 % of base) : 12485.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyData[System.__Canon,System.__Canon]],int):this (FullOpts)
Top method regressions (percentages):
32 (8.25 % of base) : 42001.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
8 (4.35 % of base) : 37896.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
8 (2.15 % of base) : 41986.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
24 (1.75 % of base) : 83642.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
32 (1.75 % of base) : 171163.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
16 (1.42 % of base) : 37729.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
4 (1.11 % of base) : 227720.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
4 (0.65 % of base) : 178612.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:LeastGenericProcedure(Microsoft.VisualBasic.CompilerServices.Symbols+Method,Microsoft.VisualBasic.CompilerServices.Symbols+Method,int,byref):Microsoft.VisualBasic.CompilerServices.Symbols+Method (FullOpts)
32 (0.61 % of base) : 80206.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
4 (0.56 % of base) : 81291.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
4 (0.56 % of base) : 206178.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
4 (0.55 % of base) : 230034.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
4 (0.53 % of base) : 36798.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
12 (0.48 % of base) : 10217.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
12 (0.48 % of base) : 192020.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
4 (0.48 % of base) : 230039.dasm - System.Xml.Linq.Extensions+<GetDescendants>d__23`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
4 (0.21 % of base) : 229835.dasm - System.Xml.Linq.ElementWriter+<WriteElementAsync>d__4:MoveNext():this (FullOpts)
4 (0.20 % of base) : 36589.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
4 (0.19 % of base) : 177361.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeText(System.String,System.String):ubyte (FullOpts)
4 (0.13 % of base) : 35350.dasm - System.Globalization.IdnMapping:PunycodeEncode(System.String):System.String (FullOpts)
Top method improvements (percentages):
-48 (-26.09 % of base) : 176291.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-36 (-20.45 % of base) : 212588.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-28 (-9.86 % of base) : 140889.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-20 (-7.81 % of base) : 36600.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
-16 (-7.55 % of base) : 212954.dasm - System.Globalization.FormatProvider+Number:RoundNumber(byref,int) (FullOpts)
-44 (-6.75 % of base) : 217296.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-44 (-6.75 % of base) : 227326.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-20 (-6.49 % of base) : 184231.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
-20 (-6.49 % of base) : 1417.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
-16 (-6.15 % of base) : 36632.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-48 (-5.83 % of base) : 211132.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-12 (-5.77 % of base) : 222650.dasm - System.Transactions.CheapUnfairReaderWriterLock:EnterWriteLock():this (FullOpts)
-24 (-5.56 % of base) : 83632.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
-48 (-5.43 % of base) : 171045.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-8 (-4.55 % of base) : 158410.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (FullOpts)
-36 (-4.52 % of base) : 217144.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
-20 (-4.24 % of base) : 140808.dasm - System.Data.XmlDataLoader:GetValueForTextOnlyColumns(System.Xml.XmlNode):System.String (FullOpts)
-12 (-4.23 % of base) : 201870.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String) (FullOpts)
-20 (-4.03 % of base) : 139640.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
-12 (-3.95 % of base) : 35031.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
libraries.pmi.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 76289160 (overridden on cmd)
Total bytes of diff: 76287736 (overridden on cmd)
Total bytes of delta: -1424 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
40 : 113452.dasm (2.25 % of base)
32 : 209893.dasm (3.29 % of base)
28 : 66585.dasm (2.02 % of base)
24 : 199732.dasm (1.21 % of base)
16 : 208564.dasm (1.83 % of base)
12 : 147677.dasm (0.69 % of base)
12 : 148395.dasm (1.18 % of base)
12 : 160211.dasm (3.61 % of base)
12 : 209214.dasm (0.44 % of base)
12 : 230191.dasm (0.45 % of base)
12 : 66654.dasm (1.83 % of base)
12 : 118952.dasm (3.19 % of base)
8 : 144388.dasm (2.70 % of base)
8 : 159880.dasm (7.14 % of base)
8 : 180294.dasm (2.35 % of base)
8 : 190972.dasm (1.26 % of base)
8 : 195304.dasm (1.74 % of base)
8 : 198371.dasm (1.25 % of base)
8 : 229728.dasm (4.65 % of base)
8 : 272316.dasm (0.28 % of base)
Top file improvements (bytes):
-72 : 182852.dasm (-1.76 % of base)
-68 : 182913.dasm (-1.71 % of base)
-48 : 156269.dasm (-7.64 % of base)
-48 : 177575.dasm (-27.91 % of base)
-48 : 255388.dasm (-3.69 % of base)
-44 : 259384.dasm (-6.51 % of base)
-44 : 286581.dasm (-6.51 % of base)
-40 : 87886.dasm (-4.29 % of base)
-36 : 265493.dasm (-21.95 % of base)
-36 : 87879.dasm (-3.42 % of base)
-32 : 183084.dasm (-1.77 % of base)
-32 : 211535.dasm (-1.61 % of base)
-28 : 183354.dasm (-12.07 % of base)
-24 : 167996.dasm (-17.14 % of base)
-24 : 185225.dasm (-3.14 % of base)
-24 : 226466.dasm (-2.08 % of base)
-24 : 260857.dasm (-9.68 % of base)
-24 : 28222.dasm (-2.08 % of base)
-20 : 15625.dasm (-4.67 % of base)
-20 : 215008.dasm (-4.67 % of base)
68 total files with Code Size differences (42 improved, 26 regressed), 20 unchanged.
Top method regressions (bytes):
40 (2.25 % of base) : 113452.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
32 (3.29 % of base) : 209893.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
28 (2.02 % of base) : 66585.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
24 (1.21 % of base) : 199732.dasm - System.Data.ProviderBase.DbConnectionFactory:TryGetConnection(System.Data.Common.DbConnection,System.Threading.Tasks.TaskCompletionSource`1[System.Data.ProviderBase.DbConnectionInternal],System.Data.Common.DbConnectionOptions,System.Data.ProviderBase.DbConnectionInternal,byref):ubyte:this (FullOpts)
16 (1.83 % of base) : 208564.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextValue(System.String,int,ubyte,byref):System.String (FullOpts)
12 (1.83 % of base) : 66654.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
12 (3.19 % of base) : 118952.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:GetSymbolInfo(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax,System.Threading.CancellationToken):Microsoft.CodeAnalysis.SymbolInfo:this (FullOpts)
12 (0.45 % of base) : 230191.dasm - System.ComponentModel.TypeDescriptor:PipelineMerge(int,System.Collections.ICollection,System.Collections.ICollection,System.Collections.IDictionary):System.Collections.ICollection (FullOpts)
12 (0.44 % of base) : 209214.dasm - System.Net.Http.Http3RequestStream+<ReadHeadersAsync>d__46:MoveNext():this (FullOpts)
12 (1.18 % of base) : 148395.dasm - System.Runtime.Serialization.SchemaHelper:AddSchemaImport(System.String,System.Xml.Schema.XmlSchema) (FullOpts)
12 (0.69 % of base) : 147677.dasm - System.Xml.EncodingStreamWrapper:CheckUTF8DeclarationEncoding(ubyte[],int,int,int,int) (FullOpts)
12 (3.61 % of base) : 160211.dasm - System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
8 (0.32 % of base) : 272448.dasm - Microsoft.CSharp.CSharpCodeGenerator:GenerateMethod(System.CodeDom.CodeMemberMethod):this (FullOpts)
8 (0.28 % of base) : 272316.dasm - Microsoft.VisualBasic.VBCodeGenerator:GenerateMethod(System.CodeDom.CodeMemberMethod,System.CodeDom.CodeTypeDeclaration):this (FullOpts)
8 (0.26 % of base) : 272319.dasm - Microsoft.VisualBasic.VBCodeGenerator:GenerateProperty(System.CodeDom.CodeMemberProperty,System.CodeDom.CodeTypeDeclaration):this (FullOpts)
8 (2.70 % of base) : 144388.dasm - Newtonsoft.Json.Linq.JProperty:SetItem(int,Newtonsoft.Json.Linq.JToken):this (FullOpts)
8 (4.65 % of base) : 229728.dasm - System.ComponentModel.TypeConverter+SimplePropertyDescriptor:ResetValue(System.Object):this (FullOpts)
8 (1.74 % of base) : 195304.dasm - System.Security.Cryptography.FromBase64Transform:ConvertFromBase64(System.Span`1[ubyte],System.Span`1[ubyte],byref,byref):this (FullOpts)
8 (1.25 % of base) : 198371.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509CertificateReader:GetNameInfo(int,ubyte):System.String:this (FullOpts)
8 (1.26 % of base) : 190972.dasm - System.Text.Json.JsonReaderHelper:UnescapeAndCompare(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
Top method improvements (bytes):
-72 (-1.76 % of base) : 182852.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-68 (-1.71 % of base) : 182913.dasm - System.Data.RBTree`1[ubyte]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-48 (-3.69 % of base) : 255388.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-48 (-27.91 % of base) : 177575.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-48 (-7.64 % of base) : 156269.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-44 (-6.51 % of base) : 259384.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-44 (-6.51 % of base) : 286581.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-40 (-4.29 % of base) : 87886.dasm - ILCompiler.LazyGenericsSupport+Graph`1[ubyte]:FindCyclesWorker(ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte],System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte]],byref,System.Diagnostics.Stopwatch) (FullOpts)
-36 (-3.42 % of base) : 87879.dasm - ILCompiler.LazyGenericsSupport+Graph`1[System.__Canon]:FindCyclesWorker(ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon],System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]],byref,System.Diagnostics.Stopwatch) (FullOpts)
-36 (-21.95 % of base) : 265493.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-32 (-1.61 % of base) : 211535.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (FullOpts)
-32 (-1.77 % of base) : 183084.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
-28 (-12.07 % of base) : 183354.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-24 (-2.08 % of base) : 226466.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-24 (-2.08 % of base) : 28222.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-24 (-9.68 % of base) : 260857.dasm - R2RDump.Disassembler:TryParseAbsoluteAddress(System.String,byref,byref,byref):ubyte:this (FullOpts)
-24 (-3.14 % of base) : 185225.dasm - System.Data.Common.DbConnectionStringBuilder:GetProperties(System.Attribute[]):System.ComponentModel.PropertyDescriptorCollection:this (FullOpts)
-24 (-17.14 % of base) : 167996.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-20 (-4.67 % of base) : 15625.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
-20 (-4.67 % of base) : 215008.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
Top method regressions (percentages):
8 (7.14 % of base) : 159880.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
8 (4.65 % of base) : 229728.dasm - System.ComponentModel.TypeConverter+SimplePropertyDescriptor:ResetValue(System.Object):this (FullOpts)
12 (3.61 % of base) : 160211.dasm - System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
32 (3.29 % of base) : 209893.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
12 (3.19 % of base) : 118952.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:GetSymbolInfo(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax,System.Threading.CancellationToken):Microsoft.CodeAnalysis.SymbolInfo:this (FullOpts)
8 (2.70 % of base) : 144388.dasm - Newtonsoft.Json.Linq.JProperty:SetItem(int,Newtonsoft.Json.Linq.JToken):this (FullOpts)
8 (2.35 % of base) : 180294.dasm - System.Xml.XmlBoundElement:CloneNode(ubyte):System.Xml.XmlNode:this (FullOpts)
40 (2.25 % of base) : 113452.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
28 (2.02 % of base) : 66585.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
4 (1.96 % of base) : 131099.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:VisitEventStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
4 (1.96 % of base) : 131100.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:VisitPropertyStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
12 (1.83 % of base) : 66654.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
16 (1.83 % of base) : 208564.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextValue(System.String,int,ubyte,byref):System.String (FullOpts)
8 (1.74 % of base) : 195304.dasm - System.Security.Cryptography.FromBase64Transform:ConvertFromBase64(System.Span`1[ubyte],System.Span`1[ubyte],byref,byref):this (FullOpts)
4 (1.43 % of base) : 131095.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:VisitMethodStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
8 (1.26 % of base) : 190972.dasm - System.Text.Json.JsonReaderHelper:UnescapeAndCompare(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
8 (1.25 % of base) : 198371.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509CertificateReader:GetNameInfo(int,ubyte):System.String:this (FullOpts)
4 (1.22 % of base) : 285450.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
24 (1.21 % of base) : 199732.dasm - System.Data.ProviderBase.DbConnectionFactory:TryGetConnection(System.Data.Common.DbConnection,System.Threading.Tasks.TaskCompletionSource`1[System.Data.ProviderBase.DbConnectionInternal],System.Data.Common.DbConnectionOptions,System.Data.ProviderBase.DbConnectionInternal,byref):ubyte:this (FullOpts)
12 (1.18 % of base) : 148395.dasm - System.Runtime.Serialization.SchemaHelper:AddSchemaImport(System.String,System.Xml.Schema.XmlSchema) (FullOpts)
Top method improvements (percentages):
-48 (-27.91 % of base) : 177575.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-36 (-21.95 % of base) : 265493.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-24 (-17.14 % of base) : 167996.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-28 (-12.07 % of base) : 183354.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-24 (-9.68 % of base) : 260857.dasm - R2RDump.Disassembler:TryParseAbsoluteAddress(System.String,byref,byref,byref):ubyte:this (FullOpts)
-48 (-7.64 % of base) : 156269.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-16 (-7.55 % of base) : 265432.dasm - System.Globalization.FormatProvider+Number:RoundNumber(byref,int) (FullOpts)
-44 (-6.51 % of base) : 259384.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-44 (-6.51 % of base) : 286581.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-12 (-5.56 % of base) : 293841.dasm - System.Transactions.CheapUnfairReaderWriterLock:EnterWriteLock():this (FullOpts)
-16 (-5.56 % of base) : 164828.dasm - System.Xml.Xsl.XsltOld.ProcessingInstructionAction:IsProcessingInstructionName(System.String):ubyte (FullOpts)
-20 (-5.26 % of base) : 260858.dasm - R2RDump.Disassembler:TryParseRipRelative(System.String,byref,byref,byref):ubyte:this (FullOpts)
-20 (-4.67 % of base) : 15625.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
-20 (-4.67 % of base) : 215008.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
-8 (-4.55 % of base) : 198526.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (FullOpts)
-16 (-4.49 % of base) : 160297.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
-12 (-4.35 % of base) : 113442.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
-12 (-4.35 % of base) : 109784.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-40 (-4.29 % of base) : 87886.dasm - ILCompiler.LazyGenericsSupport+Graph`1[ubyte]:FindCyclesWorker(ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte],System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte]],byref,System.Diagnostics.Stopwatch) (FullOpts)
-12 (-4.00 % of base) : 79806.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
libraries_tests.run.linux.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 395683916 (overridden on cmd)
Total bytes of diff: 395676112 (overridden on cmd)
Total bytes of delta: -7804 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
244 : 176462.dasm (6.06 % of base)
188 : 180006.dasm (3.99 % of base)
152 : 180002.dasm (1.53 % of base)
84 : 664587.dasm (2.24 % of base)
68 : 454268.dasm (0.36 % of base)
48 : 692369.dasm (0.52 % of base)
44 : 311342.dasm (0.51 % of base)
40 : 288638.dasm (1.43 % of base)
36 : 124930.dasm (0.81 % of base)
36 : 178883.dasm (0.77 % of base)
36 : 475629.dasm (2.90 % of base)
36 : 692325.dasm (1.10 % of base)
32 : 455323.dasm (0.76 % of base)
28 : 693131.dasm (4.29 % of base)
24 : 692349.dasm (1.32 % of base)
24 : 625405.dasm (2.63 % of base)
24 : 664648.dasm (2.10 % of base)
24 : 692178.dasm (3.45 % of base)
24 : 88035.dasm (0.73 % of base)
20 : 693836.dasm (0.23 % of base)
Top file improvements (bytes):
-280 : 376004.dasm (-3.31 % of base)
-184 : 66103.dasm (-0.69 % of base)
-124 : 687328.dasm (-0.63 % of base)
-104 : 463982.dasm (-14.61 % of base)
-88 : 375946.dasm (-3.24 % of base)
-80 : 93372.dasm (-4.04 % of base)
-76 : 375945.dasm (-1.84 % of base)
-72 : 381035.dasm (-11.25 % of base)
-68 : 452336.dasm (-1.33 % of base)
-68 : 93373.dasm (-0.49 % of base)
-68 : 589289.dasm (-1.29 % of base)
-56 : 93367.dasm (-0.86 % of base)
-52 : 675700.dasm (-0.84 % of base)
-48 : 178447.dasm (-0.44 % of base)
-48 : 443613.dasm (-3.40 % of base)
-48 : 459608.dasm (-27.91 % of base)
-48 : 473094.dasm (-0.83 % of base)
-44 : 375942.dasm (-6.11 % of base)
-44 : 61591.dasm (-1.01 % of base)
-44 : 176678.dasm (-0.55 % of base)
81 total files with Code Size differences (42 improved, 39 regressed), 20 unchanged.
Top method regressions (bytes):
244 (6.06 % of base) : 176462.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:EqualsComplicatedCases(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,int):ubyte:this (Tier1)
188 (3.99 % of base) : 180006.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:HaveSameParameterTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,int,int):ubyte (Tier1)
152 (1.53 % of base) : 180002.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:Equals(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):ubyte:this (Tier1)
84 (2.24 % of base) : 664587.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExprMethodInfo:get_MethodInfo():System.Reflection.MethodInfo:this (Tier1)
68 (0.36 % of base) : 454268.dasm - XPathTests.Common.Utils:XPathNodesetTest(int,System.String,System.String,XPathTests.Common.XPathResult,System.Xml.XmlNamespaceManager,System.String) (Tier1)
48 (0.52 % of base) : 692369.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodTableRows(int[]):this (Tier1)
44 (0.51 % of base) : 311342.dasm - System.IO.Compression.Tests.zip_UpdateTests:Update_Comment_EntryName_Encoding_Internal(System.String,System.String,System.String,System.Text.Encoding,System.String,System.String) (Tier1)
40 (1.43 % of base) : 288638.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExprMethodInfo:get_ConstructorInfo():System.Reflection.ConstructorInfo:this (Tier1)
36 (1.10 % of base) : 692325.dasm - Microsoft.Cci.MetadataWriter:PopulateAssemblyTableRows():this (Tier1)
36 (0.77 % of base) : 178883.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitFieldLoad(Microsoft.CodeAnalysis.CSharp.BoundFieldAccess,ubyte):this (Tier1)
36 (0.81 % of base) : 124930.dasm - Microsoft.Extensions.DependencyInjection.ServiceDescriptor:ToString():System.String:this (Tier1)
36 (2.90 % of base) : 475629.dasm - System.Xml.DtdParser:ParseElementMixedContent(System.Xml.Schema.ParticleContentValidator,int):this (Tier1)
32 (0.76 % of base) : 455323.dasm - MS.Internal.Xml.XPath.LogicalExpr:cmpQueryQueryE(int,System.Object,System.Object):ubyte (Tier1)
28 (4.29 % of base) : 693131.dasm - Microsoft.CodeAnalysis.Compilation:get_HasStrongName():ubyte:this (Tier1)
24 (1.32 % of base) : 692349.dasm - Microsoft.Cci.MetadataWriter:PopulateFieldLayoutTableRows():this (Tier1)
24 (3.45 % of base) : 692178.dasm - Microsoft.CodeAnalysis.Compilation:get_IsRealSigned():ubyte:this (Tier1)
24 (0.73 % of base) : 88035.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseArgumentList(byref,byref,byref,ushort,ushort):this (Tier1)
24 (2.63 % of base) : 625405.dasm - Newtonsoft.Json.Converters.DiscriminatedUnionConverter:CanConvert(System.Type):ubyte:this (Tier1)
24 (2.10 % of base) : 664648.dasm - System.RuntimeType:FilterApplyBase(System.Reflection.MemberInfo,int,ubyte,ubyte,ubyte,System.String,ubyte):ubyte (Tier1)
20 (0.23 % of base) : 693836.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ValidateAttributeSemantics(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
Top method improvements (bytes):
-280 (-3.31 % of base) : 376004.dasm - System.Net.Tests.HttpListenerRequestTests+<Cookies_GetProperty_ReturnsExpected>d__36:MoveNext():this (Tier1)
-184 (-0.69 % of base) : 66103.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeDeconstructionConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],byref):ubyte:this (Tier1)
-124 (-0.63 % of base) : 687328.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitBinaryLogicalOperatorChildren(Microsoft.CodeAnalysis.CSharp.BoundExpression):this (Tier1)
-104 (-14.61 % of base) : 463982.dasm - System.Text.EncodingTable:InternalGetCodePageFromName(System.String):int (Tier1)
-88 (-3.24 % of base) : 375946.dasm - System.Net.CookieTokenizer:Next(ubyte,ubyte):int:this (Tier1)
-80 (-4.04 % of base) : 93372.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckValidScopedOverride[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInParameterType`1[System.__Canon],System.__Canon,ubyte,ubyte):ubyte (Tier1)
-76 (-1.84 % of base) : 375945.dasm - System.Net.CookieParser:GetServer():System.Net.Cookie:this (Tier1)
-72 (-11.25 % of base) : 381035.dasm - System.Threading.Tasks.AwaitTaskContinuation:Run(System.Threading.Tasks.Task,ubyte):this (Tier1)
-68 (-0.49 % of base) : 93373.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckValidNullableMethodOverride[System.__Canon](Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInReturnType`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInParameterType`1[System.__Canon],System.__Canon,ubyte):ubyte (Tier1)
-68 (-1.33 % of base) : 452336.dasm - System.Linq.Expressions.Expression:ValidateLambdaArgs(System.Type,byref,System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression],System.String) (Tier1)
-68 (-1.29 % of base) : 589289.dasm - System.Linq.Expressions.Expression:ValidateLambdaArgs(System.Type,byref,System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression],System.String) (Tier1)
-56 (-0.86 % of base) : 93367.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:PartialMethodChecks(Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (Tier1)
-52 (-0.84 % of base) : 675700.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArgumentsEvaluate(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]:this (Tier1)
-48 (-0.44 % of base) : 178447.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (Tier1)
-48 (-27.91 % of base) : 459608.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
-48 (-3.40 % of base) : 443613.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (Tier1)
-48 (-0.83 % of base) : 473094.dasm - System.Xml.Schema.Parser:LoadElementNode(ubyte):System.Xml.XmlElement:this (Tier1)
-44 (-1.01 % of base) : 61591.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,Microsoft.CodeAnalysis.CSharp.Syntax.ArgumentSyntax,ubyte,ubyte):this (Tier1)
-44 (-0.55 % of base) : 176678.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:ValidateAttributeUsageAndDecodeWellKnownAttributes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Binder],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,short):Microsoft.CodeAnalysis.WellKnownAttributeData:this (Tier1)
-44 (-6.11 % of base) : 375942.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (Tier1)
Top method regressions (percentages):
12 (7.50 % of base) : 178668.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:IsVerifierReference(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte (Tier1)
16 (6.56 % of base) : 59665.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
16 (6.56 % of base) : 93231.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
16 (6.56 % of base) : 178142.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
16 (6.56 % of base) : 60807.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
16 (6.56 % of base) : 691962.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
16 (6.56 % of base) : 93563.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
16 (6.56 % of base) : 60804.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
16 (6.56 % of base) : 693860.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
16 (6.56 % of base) : 93560.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
16 (6.45 % of base) : 690563.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyAlgorithmIdAttributeSetting():System.Nullable`1[int]:this (Tier1)
244 (6.06 % of base) : 176462.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:EqualsComplicatedCases(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,int):ubyte:this (Tier1)
16 (4.82 % of base) : 643669.dasm - System.Text.Json.Utf8JsonReader:TrySkipPartial(int):ubyte:this (Tier1)
16 (4.60 % of base) : 688854.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
16 (4.60 % of base) : 93567.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
16 (4.60 % of base) : 60812.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
28 (4.29 % of base) : 693131.dasm - Microsoft.CodeAnalysis.Compilation:get_HasStrongName():ubyte:this (Tier1)
188 (3.99 % of base) : 180006.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:HaveSameParameterTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,int,int):ubyte (Tier1)
24 (3.45 % of base) : 692178.dasm - Microsoft.CodeAnalysis.Compilation:get_IsRealSigned():ubyte:this (Tier1)
8 (3.17 % of base) : 678611.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
Top method improvements (percentages):
-48 (-27.91 % of base) : 459608.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
-36 (-22.50 % of base) : 570530.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-36 (-22.50 % of base) : 552828.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-36 (-21.95 % of base) : 557527.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-32 (-20.00 % of base) : 530333.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-28 (-17.50 % of base) : 505494.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-24 (-15.79 % of base) : 55111.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedIf():ubyte:this (Tier1)
-24 (-15.79 % of base) : 55112.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedRegion():ubyte:this (Tier1)
-24 (-15.38 % of base) : 177310.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedIf():ubyte:this (Tier1)
-24 (-15.38 % of base) : 177311.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedRegion():ubyte:this (Tier1)
-24 (-15.38 % of base) : 87004.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedRegion():ubyte:this (Tier1)
-104 (-14.61 % of base) : 463982.dasm - System.Text.EncodingTable:InternalGetCodePageFromName(System.String):int (Tier1)
-20 (-13.51 % of base) : 678269.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedIf():ubyte:this (Tier1)
-20 (-13.51 % of base) : 87003.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedIf():ubyte:this (Tier1)
-20 (-13.51 % of base) : 678271.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedRegion():ubyte:this (Tier1)
-72 (-11.25 % of base) : 381035.dasm - System.Threading.Tasks.AwaitTaskContinuation:Run(System.Threading.Tasks.Task,ubyte):this (Tier1)
-28 (-10.00 % of base) : 530332.dasm - System.Numerics.BigInteger:CompareTo(System.Numerics.BigInteger):int:this (Tier1)
-12 (-7.32 % of base) : 658562.dasm - System.Text.Json.Tests.Utf8JsonReaderTests+<>c:<TrailingCommasHelper>b__195_0(byref):this (Tier1)
-12 (-7.32 % of base) : 658390.dasm - System.Text.Json.Tests.Utf8JsonReaderTests+<>c:<TrailingCommasHelper>b__68_0(byref):this (Tier1)
-44 (-6.11 % of base) : 375942.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (Tier1)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 164998512 (overridden on cmd)
Total bytes of diff: 164995800 (overridden on cmd)
Total bytes of delta: -2712 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
36 : 13692.dasm (0.60 % of base)
32 : 148544.dasm (3.29 % of base)
32 : 145612.dasm (3.33 % of base)
20 : 153989.dasm (1.29 % of base)
20 : 20907.dasm (4.42 % of base)
16 : 146938.dasm (1.83 % of base)
16 : 80239.dasm (0.66 % of base)
16 : 266881.dasm (0.59 % of base)
16 : 293412.dasm (0.59 % of base)
12 : 171843.dasm (6.00 % of base)
12 : 195364.dasm (1.18 % of base)
12 : 197100.dasm (0.71 % of base)
8 : 154073.dasm (1.25 % of base)
8 : 166959.dasm (7.14 % of base)
8 : 181208.dasm (0.18 % of base)
8 : 182255.dasm (0.25 % of base)
8 : 182263.dasm (0.29 % of base)
8 : 187733.dasm (0.92 % of base)
8 : 62268.dasm (0.24 % of base)
8 : 187780.dasm (0.92 % of base)
Top file improvements (bytes):
-72 : 90324.dasm (-1.76 % of base)
-72 : 39639.dasm (-4.09 % of base)
-68 : 90316.dasm (-1.71 % of base)
-48 : 165387.dasm (-7.64 % of base)
-48 : 129025.dasm (-27.91 % of base)
-48 : 97024.dasm (-4.29 % of base)
-44 : 150783.dasm (-6.51 % of base)
-44 : 151344.dasm (-6.51 % of base)
-44 : 148217.dasm (-6.51 % of base)
-36 : 121529.dasm (-1.22 % of base)
-36 : 31503.dasm (-21.95 % of base)
-36 : 36354.dasm (-1.92 % of base)
-32 : 59623.dasm (-1.61 % of base)
-32 : 89915.dasm (-1.77 % of base)
-28 : 92164.dasm (-12.07 % of base)
-24 : 265239.dasm (-1.94 % of base)
-24 : 31426.dasm (-2.11 % of base)
-20 : 201969.dasm (-0.91 % of base)
-20 : 72962.dasm (-0.68 % of base)
-20 : 265702.dasm (-0.56 % of base)
69 total files with Code Size differences (39 improved, 30 regressed), 20 unchanged.
Top method regressions (bytes):
36 (0.60 % of base) : 13692.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
32 (3.29 % of base) : 148544.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
32 (3.33 % of base) : 145612.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
20 (4.42 % of base) : 20907.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
20 (1.29 % of base) : 153989.dasm - System.Net.Tests.HttpWebRequestTest+<>c+<<SendHttpGetRequest_WithCachePolicyBypassCache_DoNotAddHeaders>b__145_1>d:MoveNext():this (FullOpts)
16 (0.66 % of base) : 80239.dasm - System.ComponentModel.TypeDescriptor:PipelineMerge(int,System.Collections.ICollection,System.Collections.ICollection,System.Collections.IDictionary):System.Collections.ICollection (FullOpts)
16 (1.83 % of base) : 146938.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextValue(System.String,int,ubyte,byref):System.String (FullOpts)
16 (0.59 % of base) : 266881.dasm - System.Text.RegularExpressions.RegexCharClass:DescribeSet(System.String):System.String (FullOpts)
16 (0.59 % of base) : 293412.dasm - System.Text.RegularExpressions.RegexCharClass:DescribeSet(System.String):System.String (FullOpts)
12 (1.18 % of base) : 195364.dasm - System.Runtime.Serialization.SchemaHelper:AddSchemaImport(System.String,System.Xml.Schema.XmlSchema) (FullOpts)
12 (0.71 % of base) : 197100.dasm - System.Xml.EncodingStreamWrapper:CheckUTF8DeclarationEncoding(ubyte[],int,int,int,int) (FullOpts)
12 (6.00 % of base) : 171843.dasm - System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
8 (1.11 % of base) : 34770.dasm - LamarCodeGeneration.Util.ImHashMap:UpdateEntry[System.__Canon,System.__Canon](LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon],LamarCodeGeneration.Util.ImHashMapEntry`2[System.__Canon,System.__Canon]):LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon] (FullOpts)
8 (0.61 % of base) : 22808.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
8 (0.24 % of base) : 62268.dasm - Microsoft.CSharp.CSharpCodeGenerator:GenerateProperty(System.CodeDom.CodeMemberProperty):this (FullOpts)
8 (1.14 % of base) : 125143.dasm - System.IO.Hashing.Tests.NonCryptoHashTestDriver:StaticVerifyTryOneShotDriver(System.IO.Hashing.Tests.NonCryptoHashTestDriver+TestCase):this (FullOpts)
8 (0.25 % of base) : 182255.dasm - System.Reflection.Metadata.Tests.AssemblyDefinitionTests:ValidateAssemblyNameForAssemblyDefinition():this (FullOpts)
8 (0.29 % of base) : 182263.dasm - System.Reflection.Metadata.Tests.AssemblyDefinitionTests:ValidateAssemblyNameWithPublicKey():this (FullOpts)
8 (0.18 % of base) : 181208.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeDefTableMod():this (FullOpts)
8 (1.25 % of base) : 154073.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509CertificateReader:GetNameInfo(int,ubyte):System.String:this (FullOpts)
Top method improvements (bytes):
-72 (-1.76 % of base) : 90324.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-72 (-4.09 % of base) : 39639.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryParser:Run():this (FullOpts)
-68 (-1.71 % of base) : 90316.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-48 (-4.29 % of base) : 97024.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-48 (-27.91 % of base) : 129025.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-48 (-7.64 % of base) : 165387.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-44 (-6.51 % of base) : 150783.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-44 (-6.51 % of base) : 151344.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-44 (-6.51 % of base) : 148217.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-36 (-1.92 % of base) : 36354.dasm - FastExpressionCompiler.LightExpression.ExpressionCompiler+EmittingVisitor:TryEmitNestedLambda(FastExpressionCompiler.LightExpression.LambdaExpression,System.Collections.Generic.IReadOnlyList`1[FastExpressionCompiler.LightExpression.ParameterExpression],System.Reflection.Emit.ILGenerator,byref):ubyte (FullOpts)
-36 (-1.22 % of base) : 121529.dasm - System.IO.Compression.Tests.zip_UpdateTests:Update_Comment_EntryName_Encoding_Internal(System.String,System.String,System.String,System.Text.Encoding,System.String,System.String) (FullOpts)
-36 (-21.95 % of base) : 31503.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-32 (-1.61 % of base) : 59623.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (FullOpts)
-32 (-1.77 % of base) : 89915.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
-28 (-12.07 % of base) : 92164.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-24 (-2.11 % of base) : 31426.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-24 (-1.94 % of base) : 265239.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestTextEqualsTooSmallToMatch(System.String) (FullOpts)
-20 (-0.68 % of base) : 72962.dasm - System.Collections.Specialized.Tests.NameValueCollectionAddNameValueCollectionTests:Add(int,int):this (FullOpts)
-20 (-0.91 % of base) : 201969.dasm - System.Tests.DoubleTests:ParsePatterns() (FullOpts)
-20 (-0.56 % of base) : 265702.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestSkipPartial(System.String,ubyte) (FullOpts)
Top method regressions (percentages):
8 (7.14 % of base) : 166959.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
12 (6.00 % of base) : 171843.dasm - System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
20 (4.42 % of base) : 20907.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
32 (3.33 % of base) : 145612.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
32 (3.29 % of base) : 148544.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
16 (1.83 % of base) : 146938.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextValue(System.String,int,ubyte,byref):System.String (FullOpts)
4 (1.75 % of base) : 174538.dasm - OLEDB.Test.ModuleCore.CVariation:Execute():int:this (FullOpts)
8 (1.36 % of base) : 259781.dasm - System.Text.Json.JsonReaderHelper:UnescapeAndCompare(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
20 (1.29 % of base) : 153989.dasm - System.Net.Tests.HttpWebRequestTest+<>c+<<SendHttpGetRequest_WithCachePolicyBypassCache_DoNotAddHeaders>b__145_1>d:MoveNext():this (FullOpts)
8 (1.25 % of base) : 154073.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509CertificateReader:GetNameInfo(int,ubyte):System.String:this (FullOpts)
4 (1.22 % of base) : 34517.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
12 (1.18 % of base) : 195364.dasm - System.Runtime.Serialization.SchemaHelper:AddSchemaImport(System.String,System.Xml.Schema.XmlSchema) (FullOpts)
8 (1.14 % of base) : 125143.dasm - System.IO.Hashing.Tests.NonCryptoHashTestDriver:StaticVerifyTryOneShotDriver(System.IO.Hashing.Tests.NonCryptoHashTestDriver+TestCase):this (FullOpts)
8 (1.11 % of base) : 34770.dasm - LamarCodeGeneration.Util.ImHashMap:UpdateEntry[System.__Canon,System.__Canon](LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon],LamarCodeGeneration.Util.ImHashMapEntry`2[System.__Canon,System.__Canon]):LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon] (FullOpts)
4 (1.04 % of base) : 176684.dasm - OLEDB.Test.ModuleCore.CError:Compare(System.Object,System.Object,System.Object,System.String):ubyte (FullOpts)
8 (0.94 % of base) : 263859.dasm - System.Text.Json.Serialization.Tests.SpanTests:ParseUntyped() (FullOpts)
8 (0.92 % of base) : 187780.dasm - System.Tests.ConvertToStringTests:FromInt16Array() (FullOpts)
8 (0.92 % of base) : 187733.dasm - System.Tests.ConvertToStringTests:FromSByte() (FullOpts)
8 (0.91 % of base) : 187776.dasm - System.Tests.ConvertToStringTests:FromInt32Array() (FullOpts)
4 (0.89 % of base) : 55128.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__122:MoveNext():ubyte:this (FullOpts)
Top method improvements (percentages):
-48 (-27.91 % of base) : 129025.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-36 (-21.95 % of base) : 31503.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-28 (-12.07 % of base) : 92164.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-48 (-7.64 % of base) : 165387.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-16 (-7.55 % of base) : 143397.dasm - System.Globalization.FormatProvider+Number:RoundNumber(byref,int) (FullOpts)
-44 (-6.51 % of base) : 150783.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-44 (-6.51 % of base) : 151344.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-44 (-6.51 % of base) : 148217.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-12 (-5.56 % of base) : 302520.dasm - System.Transactions.CheapUnfairReaderWriterLock:EnterWriteLock():this (FullOpts)
-8 (-4.55 % of base) : 151909.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (FullOpts)
-16 (-4.49 % of base) : 33884.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
-12 (-4.35 % of base) : 173.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-12 (-4.35 % of base) : 267093.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-48 (-4.29 % of base) : 97024.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-72 (-4.09 % of base) : 39639.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryParser:Run():this (FullOpts)
-12 (-4.00 % of base) : 44738.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-4 (-3.85 % of base) : 16789.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
-4 (-3.57 % of base) : 795.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (FullOpts)
-12 (-3.33 % of base) : 293341.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-4 (-3.33 % of base) : 164239.dasm - System.Xml.Linq.XObject:get_BaseUri():System.String:this (FullOpts)
realworld.run.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15903660 (overridden on cmd)
Total bytes of diff: 15903488 (overridden on cmd)
Total bytes of delta: -172 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
36 : 22531.dasm (0.61 % of base)
16 : 30883.dasm (1.32 % of base)
12 : 17634.dasm (0.82 % of base)
8 : 17621.dasm (0.58 % of base)
4 : 28915.dasm (0.89 % of base)
4 : 5339.dasm (0.63 % of base)
Top file improvements (bytes):
-24 : 17822.dasm (-2.03 % of base)
-20 : 16183.dasm (-1.82 % of base)
-16 : 947.dasm (-5.41 % of base)
-12 : 13823.dasm (-0.35 % of base)
-12 : 1190.dasm (-0.22 % of base)
-12 : 18849.dasm (-4.35 % of base)
-12 : 935.dasm (-3.90 % of base)
-12 : 20351.dasm (-0.36 % of base)
-12 : 20163.dasm (-4.00 % of base)
-12 : 2312.dasm (-1.21 % of base)
-8 : 15678.dasm (-3.23 % of base)
-8 : 19405.dasm (-0.12 % of base)
-8 : 25841.dasm (-1.01 % of base)
-8 : 31097.dasm (-0.47 % of base)
-8 : 9285.dasm (-1.64 % of base)
-8 : 18544.dasm (-0.26 % of base)
-8 : 19407.dasm (-0.40 % of base)
-8 : 16828.dasm (-0.67 % of base)
-8 : 20989.dasm (-0.29 % of base)
-8 : 23981.dasm (-0.92 % of base)
33 total files with Code Size differences (27 improved, 6 regressed), 12 unchanged.
Top method regressions (bytes):
36 (0.61 % of base) : 22531.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
16 (1.32 % of base) : 30883.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
12 (0.82 % of base) : 17634.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
8 (0.58 % of base) : 17621.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
4 (0.89 % of base) : 28915.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
4 (0.63 % of base) : 5339.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
Top method improvements (bytes):
-24 (-2.03 % of base) : 17822.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-20 (-1.82 % of base) : 16183.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
-16 (-5.41 % of base) : 947.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-12 (-4.00 % of base) : 20163.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-12 (-0.36 % of base) : 20351.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-12 (-0.35 % of base) : 13823.dasm - Microsoft.ML.Data.SchemaDefinition:Create(System.Type,int):Microsoft.ML.Data.SchemaDefinition (FullOpts)
-12 (-0.22 % of base) : 1190.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-12 (-3.90 % of base) : 935.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-12 (-4.35 % of base) : 18849.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-12 (-1.21 % of base) : 2312.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
-8 (-0.26 % of base) : 18544.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
-8 (-0.40 % of base) : 19407.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
-8 (-0.12 % of base) : 19405.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
-8 (-0.92 % of base) : 23981.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromEqualsMethod>g__isWellKnownEqualityMethodOrImplementation|213_1(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,int):ubyte (FullOpts)
-8 (-0.29 % of base) : 20989.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-8 (-0.67 % of base) : 16828.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
-8 (-1.01 % of base) : 25841.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+NumericValueSet`2[int,Microsoft.CodeAnalysis.CSharp.ValueSetFactory+IntTC]:Union(Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]):Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]:this (FullOpts)
-8 (-3.23 % of base) : 15678.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-8 (-0.47 % of base) : 31097.dasm - System.Management.Automation.PowerShell:CoreInvoke[System.__Canon,System.__Canon](System.Management.Automation.PSDataCollection`1[System.__Canon],System.Management.Automation.PSDataCollection`1[System.__Canon],System.Management.Automation.PSInvocationSettings):this (FullOpts)
-8 (-1.64 % of base) : 9285.dasm - System.Xml.Linq.XContainer+<GetDescendants>d__38:MoveNext():ubyte:this (FullOpts)
Top method regressions (percentages):
16 (1.32 % of base) : 30883.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
4 (0.89 % of base) : 28915.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
12 (0.82 % of base) : 17634.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
4 (0.63 % of base) : 5339.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
36 (0.61 % of base) : 22531.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
8 (0.58 % of base) : 17621.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
Top method improvements (percentages):
-16 (-5.41 % of base) : 947.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-12 (-4.35 % of base) : 18849.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-12 (-4.00 % of base) : 20163.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-12 (-3.90 % of base) : 935.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-8 (-3.23 % of base) : 15678.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-24 (-2.03 % of base) : 17822.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-20 (-1.82 % of base) : 16183.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
-8 (-1.64 % of base) : 9285.dasm - System.Xml.Linq.XContainer+<GetDescendants>d__38:MoveNext():ubyte:this (FullOpts)
-4 (-1.49 % of base) : 25175.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsFixedStatementExpression(Microsoft.CodeAnalysis.SyntaxNode):ubyte (FullOpts)
-12 (-1.21 % of base) : 2312.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
-8 (-1.01 % of base) : 25841.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+NumericValueSet`2[int,Microsoft.CodeAnalysis.CSharp.ValueSetFactory+IntTC]:Union(Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]):Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]:this (FullOpts)
-8 (-0.92 % of base) : 23981.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromEqualsMethod>g__isWellKnownEqualityMethodOrImplementation|213_1(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,int):ubyte (FullOpts)
-4 (-0.73 % of base) : 24858.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ResetStack():this (FullOpts)
-8 (-0.67 % of base) : 16828.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
-4 (-0.62 % of base) : 25033.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:FindLocalFunction(Microsoft.CodeAnalysis.CSharp.Syntax.LocalFunctionStatementSyntax,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Symbols.LocalFunctionSymbol (FullOpts)
-8 (-0.47 % of base) : 31097.dasm - System.Management.Automation.PowerShell:CoreInvoke[System.__Canon,System.__Canon](System.Management.Automation.PSDataCollection`1[System.__Canon],System.Management.Automation.PSDataCollection`1[System.__Canon],System.Management.Automation.PSInvocationSettings):this (FullOpts)
-8 (-0.40 % of base) : 19407.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
-12 (-0.36 % of base) : 20351.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-12 (-0.35 % of base) : 13823.dasm - Microsoft.ML.Data.SchemaDefinition:Create(System.Type,int):Microsoft.ML.Data.SchemaDefinition (FullOpts)
-4 (-0.34 % of base) : 18622.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
33 total methods with Code Size differences (27 improved, 6 regressed).
smoke_tests.nativeaot.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 2946792 (overridden on cmd)
Total bytes of diff: 2946676 (overridden on cmd)
Total bytes of delta: -116 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
16 : 2291.dasm (1.61 % of base)
8 : 951.dasm (2.50 % of base)
8 : 4405.dasm (6.06 % of base)
4 : 1961.dasm (0.78 % of base)
4 : 3868.dasm (0.25 % of base)
4 : 4523.dasm (0.20 % of base)
4 : 4071.dasm (0.33 % of base)
Top file improvements (bytes):
-20 : 3343.dasm (-8.20 % of base)
-16 : 18739.dasm (-3.12 % of base)
-16 : 1304.dasm (-6.45 % of base)
-16 : 1819.dasm (-3.10 % of base)
-12 : 1055.dasm (-4.11 % of base)
-12 : 3802.dasm (-1.42 % of base)
-12 : 7870.dasm (-0.69 % of base)
-12 : 1050.dasm (-0.26 % of base)
-8 : 1829.dasm (-4.08 % of base)
-8 : 17140.dasm (-4.76 % of base)
-8 : 4238.dasm (-0.59 % of base)
-4 : 6119.dasm (-0.47 % of base)
-4 : 3312.dasm (-1.33 % of base)
-4 : 4356.dasm (-0.33 % of base)
-4 : 6124.dasm (-0.47 % of base)
-4 : 6104.dasm (-0.57 % of base)
-4 : 8595.dasm (-0.30 % of base)
24 total files with Code Size differences (17 improved, 7 regressed), 7 unchanged.
Top method regressions (bytes):
16 (1.61 % of base) : 2291.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
8 (2.50 % of base) : 951.dasm - System.Enum+<>c__64`1[uint]:<FormatNumberAsHex>b__64_0(System.Span`1[ushort],long):this (FullOpts)
8 (6.06 % of base) : 4405.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
4 (0.78 % of base) : 1961.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
4 (0.20 % of base) : 4523.dasm - System.Globalization.IdnMapping:PunycodeEncode(System.String):System.String (FullOpts)
4 (0.25 % of base) : 3868.dasm - System.Net.Sockets.Socket:.ctor(System.Net.Sockets.SafeSocketHandle,ubyte):this (FullOpts)
4 (0.33 % of base) : 4071.dasm - System.Net.Sockets.SocketPal:TryCompleteSendTo(System.Net.Sockets.SafeSocketHandle,System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,byref,int,System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (FullOpts)
Top method improvements (bytes):
-20 (-8.20 % of base) : 3343.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
-16 (-3.12 % of base) : 18739.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
-16 (-3.10 % of base) : 1819.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
-16 (-6.45 % of base) : 1304.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-12 (-0.69 % of base) : 7870.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:FindMatchingInterfaceSlot(Internal.Runtime.TypeLoader.NativeFormatModuleInfo,Internal.NativeFormat.NativeReader,byref,byref,Internal.TypeSystem.InstantiatedMethod,Internal.TypeSystem.DefType,ubyte,ubyte):Internal.TypeSystem.InstantiatedMethod (FullOpts)
-12 (-0.26 % of base) : 1050.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-12 (-4.11 % of base) : 1055.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-12 (-1.42 % of base) : 3802.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
-8 (-4.76 % of base) : 17140.dasm - FinalizeTest:Run():int (FullOpts)
-8 (-4.08 % of base) : 1829.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-8 (-0.59 % of base) : 4238.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (FullOpts)
-4 (-1.33 % of base) : 3312.dasm - System.Globalization.DateTimeFormatInfo:get_DateTimeOffsetPattern():System.String:this (FullOpts)
-4 (-0.30 % of base) : 8595.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
-4 (-0.57 % of base) : 6104.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (FullOpts)
-4 (-0.47 % of base) : 6119.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:GetMethodImpl(System.String,int,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (FullOpts)
-4 (-0.47 % of base) : 6124.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:GetPropertyImpl(System.String,int,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-4 (-0.33 % of base) : 4356.dasm - System.Threading.PortableThreadPool+WaitThread:ProcessRemovals():int:this (FullOpts)
Top method regressions (percentages):
8 (6.06 % of base) : 4405.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
8 (2.50 % of base) : 951.dasm - System.Enum+<>c__64`1[uint]:<FormatNumberAsHex>b__64_0(System.Span`1[ushort],long):this (FullOpts)
16 (1.61 % of base) : 2291.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
4 (0.78 % of base) : 1961.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
4 (0.33 % of base) : 4071.dasm - System.Net.Sockets.SocketPal:TryCompleteSendTo(System.Net.Sockets.SafeSocketHandle,System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,byref,int,System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (FullOpts)
4 (0.25 % of base) : 3868.dasm - System.Net.Sockets.Socket:.ctor(System.Net.Sockets.SafeSocketHandle,ubyte):this (FullOpts)
4 (0.20 % of base) : 4523.dasm - System.Globalization.IdnMapping:PunycodeEncode(System.String):System.String (FullOpts)
Top method improvements (percentages):
-20 (-8.20 % of base) : 3343.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
-16 (-6.45 % of base) : 1304.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-8 (-4.76 % of base) : 17140.dasm - FinalizeTest:Run():int (FullOpts)
-12 (-4.11 % of base) : 1055.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-8 (-4.08 % of base) : 1829.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-16 (-3.12 % of base) : 18739.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
-16 (-3.10 % of base) : 1819.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
-12 (-1.42 % of base) : 3802.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
-4 (-1.33 % of base) : 3312.dasm - System.Globalization.DateTimeFormatInfo:get_DateTimeOffsetPattern():System.String:this (FullOpts)
-12 (-0.69 % of base) : 7870.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:FindMatchingInterfaceSlot(Internal.Runtime.TypeLoader.NativeFormatModuleInfo,Internal.NativeFormat.NativeReader,byref,byref,Internal.TypeSystem.InstantiatedMethod,Internal.TypeSystem.DefType,ubyte,ubyte):Internal.TypeSystem.InstantiatedMethod (FullOpts)
-8 (-0.59 % of base) : 4238.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (FullOpts)
-4 (-0.57 % of base) : 6104.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (FullOpts)
-4 (-0.47 % of base) : 6124.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:GetPropertyImpl(System.String,int,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-4 (-0.47 % of base) : 6119.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:GetMethodImpl(System.String,int,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (FullOpts)
-4 (-0.33 % of base) : 4356.dasm - System.Threading.PortableThreadPool+WaitThread:ProcessRemovals():int:this (FullOpts)
-4 (-0.30 % of base) : 8595.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
-12 (-0.26 % of base) : 1050.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
24 total methods with Code Size differences (17 improved, 7 regressed).
linux x64
Diffs are based on 2,517,901 contexts (991,070 MinOpts, 1,526,831 FullOpts).
MISSED contexts: 8 (0.00%)
Overall (-18,892 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.x64.checked.mch |
14,336,796 |
-440 |
benchmarks.run_pgo.linux.x64.checked.mch |
71,590,604 |
+806 |
benchmarks.run_tiered.linux.x64.checked.mch |
21,435,743 |
-82 |
coreclr_tests.run.linux.x64.checked.mch |
403,711,067 |
-1,546 |
libraries.crossgen2.linux.x64.checked.mch |
38,727,192 |
-1,312 |
libraries.pmi.linux.x64.checked.mch |
60,419,372 |
-1,419 |
libraries_tests.run.linux.x64.Release.mch |
337,107,943 |
-13,540 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
132,558,366 |
-1,230 |
realworld.run.linux.x64.checked.mch |
13,175,050 |
-42 |
smoke_tests.nativeaot.linux.x64.checked.mch |
4,234,485 |
-87 |
FullOpts (-18,892 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.x64.checked.mch |
14,037,493 |
-440 |
benchmarks.run_pgo.linux.x64.checked.mch |
47,790,615 |
+806 |
benchmarks.run_tiered.linux.x64.checked.mch |
3,694,963 |
-82 |
coreclr_tests.run.linux.x64.checked.mch |
123,956,365 |
-1,546 |
libraries.crossgen2.linux.x64.checked.mch |
38,725,994 |
-1,312 |
libraries.pmi.linux.x64.checked.mch |
60,306,515 |
-1,419 |
libraries_tests.run.linux.x64.Release.mch |
153,348,250 |
-13,540 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
121,940,598 |
-1,230 |
realworld.run.linux.x64.checked.mch |
12,789,166 |
-42 |
smoke_tests.nativeaot.linux.x64.checked.mch |
4,233,536 |
-87 |
Example diffs
benchmarks.run.linux.x64.checked.mch
-32 (-30.48%) : 6536.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -9,14 +9,16 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> registers
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r8 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> r9 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> rax "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> r9 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> r8 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> r8 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -32,72 +34,59 @@ G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, b
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx rdi]
cmp esi, ecx
- jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jl SHORT G_M264_IG11
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref
; byrRegs +[rdx rdi]
- mov r8d, ecx
- ;; size=3 bbWeight=0.50 PerfScore 0.12
+ mov eax, ecx
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- dec r8d
- mov eax, r8d
- test eax, eax
- jl SHORT G_M264_IG06
+ dec eax
+ js SHORT G_M264_IG09
cmp eax, esi
- jae SHORT G_M264_IG14
- mov r9d, eax
- mov r10d, dword ptr [rdi+4*r9]
- cmp eax, ecx
- jae SHORT G_M264_IG14
- cmp r10d, dword ptr [rdx+4*r9]
- je SHORT G_M264_IG08
- ;; size=31 bbWeight=4 PerfScore 42.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- test r8d, r8d
- jge SHORT G_M264_IG09
- xor eax, eax
- ;; size=7 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
- pop rbp
- ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, gcvars, byref, isz
+ jae SHORT G_M264_IG13
mov r8d, eax
- jmp SHORT G_M264_IG05
- ;; size=5 bbWeight=2 PerfScore 4.50
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- cmp r8d, esi
- jae SHORT G_M264_IG14
- mov r9d, r8d
- mov eax, dword ptr [rdi+4*r9]
- cmp r8d, ecx
- jae SHORT G_M264_IG14
- cmp eax, dword ptr [rdx+4*r9]
- jb SHORT G_M264_IG12
- ;; size=23 bbWeight=0.50 PerfScore 4.38
-G_M264_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r9d, dword ptr [rdi+4*r8]
+ cmp eax, ecx
+ jae SHORT G_M264_IG13
+ mov r8d, dword ptr [rdx+4*r8]
+ cmp r9d, r8d
+ je SHORT G_M264_IG05
+ ;; size=28 bbWeight=4 PerfScore 37.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx rdi]
+ cmp r8d, r9d
+ ja SHORT G_M264_IG11
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 105, prolog size 4, PerfScore 58.38, instruction count 43, allocated bytes for code 105 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 73, prolog size 4, PerfScore 44.50, instruction count 32, allocated bytes for code 73 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
-5 (-7.94%) : 4086.dasm - System.Buffers.ReadOnlySequence1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment
1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 9, 21.50) ref -> rdi class-hnd <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
+; V00 arg0 [V00,T00] ( 8, 21 ) ref -> rdi class-hnd <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
; V01 arg1 [V01,T02] ( 3, 6 ) ref -> rsi class-hnd single-def <System.Object>
; V02 arg2 [V02,T04] ( 3, 2.50) int -> rdx single-def
; V03 arg3 [V03,T01] ( 7, 9.50) long -> rcx
@@ -45,7 +45,7 @@ G_M36051_IG03: ; bbWeight=2, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {},
;; size=17 bbWeight=2 PerfScore 11.50
G_M36051_IG04: ; bbWeight=8, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
test rdi, rdi
- je SHORT G_M36051_IG06
+ je SHORT G_M36051_IG09
;; size=5 bbWeight=8 PerfScore 10.00
G_M36051_IG05: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
cmp rdi, rsi
@@ -53,12 +53,10 @@ G_M36051_IG05: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {},
;; size=5 bbWeight=4 PerfScore 5.00
G_M36051_IG06: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
- test rdi, rdi
- je SHORT G_M36051_IG09
movsxd rax, edx
cmp rax, rcx
jl SHORT G_M36051_IG09
- ;; size=13 bbWeight=0.50 PerfScore 1.38
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
G_M36051_IG07: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
mov edx, ecx
mov rax, rdi
@@ -76,7 +74,7 @@ G_M36051_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 63, prolog size 4, PerfScore 33.12, instruction count 25, allocated bytes for code 63 (MethodHash=6911732c) for method System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
+; Total bytes of code 58, prolog size 4, PerfScore 32.50, instruction count 23, allocated bytes for code 58 (MethodHash=6911732c) for method System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
; ============================================================
Unwind Info:
-16 (-7.17%) : 813.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
@@ -12,7 +12,7 @@
; V01 arg1 [V01,T06] ( 7, 4.50) byref -> rdx single-def
; V02 loc0 [V02,T07] ( 5, 3 ) ushort -> rcx
; V03 loc1 [V03,T05] ( 5, 7 ) int -> rax
-; V04 loc2 [V04,T00] ( 7, 13.50) int -> r8
+; V04 loc2 [V04,T00] ( 5, 12.50) int -> r8
; V05 loc3 [V05,T09] ( 3, 1.50) int -> rax
; V06 loc4 [V06,T10] ( 3, 1.50) int -> rax
; V07 loc5 [V07,T11] ( 3, 1.50) int -> r8
@@ -20,9 +20,9 @@
; V09 tmp1 [V09,T04] ( 2, 8 ) int -> r8 "impSpillLclRefs"
;* V10 tmp2 [V10 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
; V11 tmp3 [V11,T08] ( 2, 2 ) int -> rcx "Single return block return value"
-; V12 tmp4 [V12,T03] ( 7, 7.50) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp5 [V13,T02] ( 8, 8.50) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V14 cse0 [V14,T01] ( 5, 11 ) int -> r9 multi-def "CSE - aggressive"
+; V12 tmp4 [V12,T03] ( 6, 7 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp5 [V13,T02] ( 7, 8 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V14 cse0 [V14,T01] ( 4, 10.50) int -> r9 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -46,8 +46,8 @@ G_M3969_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi
cmp esi, 1
jne SHORT G_M3969_IG04
mov dword ptr [rdx], -1
- jmp G_M3969_IG11
- ;; size=36 bbWeight=0.50 PerfScore 4.12
+ jmp SHORT G_M3969_IG11
+ ;; size=33 bbWeight=0.50 PerfScore 4.12
G_M3969_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
cmp esi, 2
jne SHORT G_M3969_IG05
@@ -89,23 +89,19 @@ G_M3969_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi},
;; size=18 bbWeight=2 PerfScore 6.00
G_M3969_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
cmp r8d, esi
- jae SHORT G_M3969_IG09
+ jae SHORT G_M3969_IG10
mov r9d, r8d
movzx r9, word ptr [rdi+2*r9]
lea r10d, [r9-0x30]
cmp r10d, 9
jbe SHORT G_M3969_IG07
;; size=23 bbWeight=4 PerfScore 21.00
-G_M3969_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- cmp r8d, esi
- jae SHORT G_M3969_IG10
- mov r9d, r8d
- movzx r9, word ptr [rdi+2*r9]
+G_M3969_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref, isz
+ ; byrRegs -[rdi]
test r9d, r9d
jne SHORT G_M3969_IG13
- ;; size=18 bbWeight=0.50 PerfScore 2.38
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
G_M3969_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref
- ; byrRegs -[rdi]
mov dword ptr [rdx], eax
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M3969_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -143,7 +139,7 @@ G_M3969_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 223, prolog size 4, PerfScore 52.38, instruction count 76, allocated bytes for code 223 (MethodHash=db41f07e) for method System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
+; Total bytes of code 207, prolog size 4, PerfScore 50.62, instruction count 72, allocated bytes for code 207 (MethodHash=db41f07e) for method System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
; ============================================================
Unwind Info:
+5 (+1.64%) : 14023.dasm - System.Enum+<>c__631[uint]:<FormatNumberAsHex>b__63_0(System.Span
1[ushort],long):this (FullOpts)
@@ -10,32 +10,32 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Enum+<>c__63`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ushort]>
-; V02 arg2 [V02,T02] ( 3, 2.50) long -> rcx single-def
+; V02 arg2 [V02,T01] ( 3, 2.50) long -> rcx single-def
;* V03 loc0 [V03 ] ( 0, 0 ) ubyte -> zero-ref
;* V04 loc1 [V04,T17] ( 0, 0 ) int -> zero-ref ld-addr-op
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
; V08 tmp3 [V08,T08] ( 5, 2.50) int -> rdi "Inline stloc first use temp"
-; V09 tmp4 [V09,T04] ( 3, 3 ) ubyte -> rax "Inlining Arg"
+; V09 tmp4 [V09,T03] ( 3, 3 ) ubyte -> rax "Inlining Arg"
; V10 tmp5 [V10,T09] ( 3, 1.50) int -> rax "Inline stloc first use temp"
; V11 tmp6 [V11,T10] ( 3, 1.50) int -> rax "Inline stloc first use temp"
;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V13 tmp8 [V13,T05] ( 3, 3 ) ubyte -> rax "Inlining Arg"
+; V13 tmp8 [V13,T04] ( 3, 3 ) ubyte -> rax "Inlining Arg"
; V14 tmp9 [V14,T11] ( 3, 1.50) int -> rax "Inline stloc first use temp"
; V15 tmp10 [V15,T12] ( 3, 1.50) int -> rax "Inline stloc first use temp"
;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V17 tmp12 [V17,T06] ( 3, 3 ) ubyte -> rax "Inlining Arg"
+; V17 tmp12 [V17,T05] ( 3, 3 ) ubyte -> rax "Inlining Arg"
; V18 tmp13 [V18,T13] ( 3, 1.50) int -> rax "Inline stloc first use temp"
; V19 tmp14 [V19,T14] ( 3, 1.50) int -> rax "Inline stloc first use temp"
;* V20 tmp15 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V21 tmp16 [V21,T07] ( 3, 3 ) ubyte -> rdi "Inlining Arg"
+; V21 tmp16 [V21,T06] ( 3, 3 ) ubyte -> rdi "Inlining Arg"
; V22 tmp17 [V22,T15] ( 3, 1.50) int -> rdi "Inline stloc first use temp"
; V23 tmp18 [V23,T16] ( 3, 1.50) int -> rdi "Inline stloc first use temp"
;* V24 tmp19 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V25 tmp20 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V26 tmp21 [V26,T00] ( 9, 5 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp22 [V27,T03] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V27 tmp22 [V27,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp24 [V29 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
@@ -46,14 +46,16 @@
;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
;* V36 tmp31 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
-; V38 cse0 [V38,T01] ( 6, 6 ) ref -> rsi multi-def "CSE - moderate"
+; V38 cse0 [V38,T07] ( 5, 2.50) ref -> rbx "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M18375_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
+ push rbx
+ push rax
+ lea rbp, [rsp+0x10]
+ ;; size=8 bbWeight=1 PerfScore 3.50
G_M18375_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
; byrRegs +[rsi]
cmp edx, 8
@@ -129,30 +131,34 @@ G_M18375_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {rsi},
mov word ptr [rsi+0x0C], di
jmp SHORT G_M18375_IG05
;; size=250 bbWeight=0.50 PerfScore 18.12
-G_M18375_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M18375_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rsi]
- mov rsi, 0xD1FFAB1E
- ; gcrRegs +[rsi]
- mov rdi, rsi
+ mov rbx, 0xD1FFAB1E
+ ; gcrRegs +[rbx]
+ mov rdi, rbx
; gcrRegs +[rdi]
+ mov rsi, rbx
+ ; gcrRegs +[rsi]
call [<unknown method>]
; gcrRegs -[rsi rdi]
- mov rsi, 0xD1FFAB1E
- ; gcrRegs +[rsi]
- mov rdi, rsi
+ mov rdi, rbx
; gcrRegs +[rdi]
+ mov rsi, rbx
+ ; gcrRegs +[rsi]
call [<unknown method>]
- ; gcrRegs -[rsi rdi]
- ;; size=38 bbWeight=1 PerfScore 7.00
+ ; gcrRegs -[rbx rsi rdi]
+ ;; size=34 bbWeight=0.50 PerfScore 3.62
G_M18375_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M18375_IG06: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
pop rbp
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 304, prolog size 4, PerfScore 29.38, instruction count 81, allocated bytes for code 304 (MethodHash=1579b838) for method System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
+; Total bytes of code 309, prolog size 8, PerfScore 29.00, instruction count 86, allocated bytes for code 309 (MethodHash=1579b838) for method System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
; ============================================================
Unwind Info:
@@ -160,9 +166,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x01
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x03
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+27 (+2.32%) : 3132.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
@@ -10,14 +10,14 @@
;
; V00 this [V00,T00] ( 27, 55.50) byref -> rbx this single-def
; V01 arg1 [V01,T19] ( 4, 3.50) byref -> r15 single-def
-; V02 loc0 [V02,T01] ( 18, 55.50) ushort -> r12
+; V02 loc0 [V02,T01] ( 18, 57.50) ushort -> r12
; V03 loc1 [V03 ] ( 36, 70.50) struct (32) [rbp-0x48] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder>
-; V04 loc2 [V04,T04] ( 8, 16 ) ushort -> [rbp-0x4C]
+; V04 loc2 [V04,T09] ( 6, 8 ) ushort -> [rbp-0x4C]
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V09 tmp2 [V09,T07] ( 5, 14.50) ushort -> r13 "Inline stloc first use temp"
+; V09 tmp2 [V09,T06] ( 5, 14.50) ushort -> r13 "Inline stloc first use temp"
; V10 tmp3 [V10,T10] ( 4, 8 ) int -> rdi "Inline stloc first use temp"
;* V11 tmp4 [V11 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
; V12 tmp5 [V12,T32] ( 2, 2 ) long -> rax "Inlining Arg"
@@ -25,7 +25,7 @@
; V14 tmp7 [V14,T31] ( 4, 2 ) int -> rax "Inline stloc first use temp"
;* V15 tmp8 [V15 ] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt"
; V16 tmp9 [V16,T02] ( 16, 32 ) ushort -> rsi "Inline stloc first use temp"
-; V17 tmp10 [V17,T11] ( 4, 8 ) int -> r13 "Inline stloc first use temp"
+; V17 tmp10 [V17,T11] ( 4, 8 ) int -> rdi "Inline stloc first use temp"
;* V18 tmp11 [V18 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
; V19 tmp12 [V19,T12] ( 4, 8 ) int -> rdi "Inline stloc first use temp"
;* V20 tmp13 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
@@ -37,14 +37,14 @@
;* V26 tmp19 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
; V27 tmp20 [V27,T16] ( 4, 8 ) int -> rdi "Inline stloc first use temp"
;* V28 tmp21 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
-; V29 tmp22 [V29,T09] ( 4, 10 ) ushort -> r12 "Inline stloc first use temp"
+; V29 tmp22 [V29,T08] ( 4, 10 ) ushort -> r12 "Inline stloc first use temp"
; V30 tmp23 [V30,T17] ( 4, 8 ) int -> rdi "Inline stloc first use temp"
;* V31 tmp24 [V31 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V32 tmp25 [V32,T05] ( 4, 16 ) int -> rbx "Inlining Arg"
+; V32 tmp25 [V32,T04] ( 4, 16 ) int -> rbx "Inlining Arg"
;* V33 tmp26 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V34 tmp27 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp28 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V36 tmp29 [V36,T03] ( 4, 32 ) int -> rbx "Inlining Arg"
+; V36 tmp29 [V36,T03] ( 4, 32 ) int -> r12 "Inlining Arg"
;* V37 tmp30 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V38 tmp31 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V39 tmp32 [V39 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
@@ -63,8 +63,8 @@
; V52 GsCookie [V52 ] ( 1, 1 ) long -> [rbp-0x58] do-not-enreg[X] addr-exposed "GSSecurityCookie"
; V53 cse0 [V53,T18] ( 5, 7 ) int -> r13 multi-def "CSE - moderate"
; V54 cse1 [V54,T33] ( 3, 1.50) int -> rax "CSE - conservative"
-; V55 cse2 [V55,T08] ( 8, 14 ) ref -> r14 "CSE - aggressive"
-; V56 cse3 [V56,T06] ( 4, 16 ) int -> rdi "CSE - aggressive"
+; V55 cse2 [V55,T07] ( 8, 14 ) ref -> r14 "CSE - aggressive"
+; V56 cse3 [V56,T05] ( 4, 16 ) int -> rdi "CSE - aggressive"
;
; Lcl frame size = 56
@@ -103,31 +103,31 @@ G_M25128_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15},
G_M25128_IG03: ; bbWeight=8, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
mov edi, dword ptr [rbx+0x10]
cmp edi, dword ptr [rbx+0x08]
- jge G_M25128_IG24
+ jge G_M25128_IG20
;; size=12 bbWeight=8 PerfScore 48.00
G_M25128_IG04: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
mov edi, dword ptr [rbx+0x10]
lea eax, [rdi+0x01]
mov dword ptr [rbx+0x10], eax
cmp edi, dword ptr [rbx+0x08]
- jae G_M25128_IG61
+ jae G_M25128_IG59
mov rax, bword ptr [rbx]
; byrRegs +[rax]
movzx r13, word ptr [rax+2*rdi]
test r13d, r13d
- je G_M25128_IG62
+ je G_M25128_IG60
;; size=35 bbWeight=2 PerfScore 25.50
G_M25128_IG05: ; bbWeight=8, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
; byrRegs -[rax]
mov r12d, r13d
test r12d, r12d
- je G_M25128_IG31
+ je G_M25128_IG27
;; size=12 bbWeight=8 PerfScore 12.00
G_M25128_IG06: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz
cmp r12d, 44
- je G_M25128_IG25
+ je G_M25128_IG21
cmp r12d, 61
- je G_M25128_IG28
+ je G_M25128_IG24
mov edi, r12d
call [System.Reflection.AssemblyNameParser:IsWhiteSpace(ushort):ubyte]
; gcr arg pop 0
@@ -159,132 +159,110 @@ G_M25128_IG10: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx
mov ecx, r13d
mov eax, dword ptr [rbx+0x10]
cmp eax, dword ptr [rbx+0x08]
- jge G_M25128_IG34
+ jge G_M25128_IG30
lea edi, [rax+0x01]
mov dword ptr [rbx+0x10], edi
cmp eax, dword ptr [rbx+0x08]
- jae G_M25128_IG61
+ jae G_M25128_IG59
mov rdi, bword ptr [rbx]
; byrRegs +[rdi]
movzx r12, word ptr [rdi+2*rax]
test r12d, r12d
- je G_M25128_IG62
+ je G_M25128_IG60
;; size=47 bbWeight=0.50 PerfScore 8.50
-G_M25128_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz
+G_M25128_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
; byrRegs -[rdi]
test r12d, r12d
- je G_M25128_IG49
+ je G_M25128_IG47
test ecx, ecx
- je SHORT G_M25128_IG13
- ;; size=13 bbWeight=4 PerfScore 10.00
+ je G_M25128_IG31
+ ;; size=17 bbWeight=4 PerfScore 10.00
G_M25128_IG12: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
cmp r12d, ecx
- je G_M25128_IG50
+ je G_M25128_IG48
;; size=9 bbWeight=2 PerfScore 2.50
-G_M25128_IG13: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz
- test ecx, ecx
- jne SHORT G_M25128_IG15
- ;; size=4 bbWeight=4 PerfScore 5.00
-G_M25128_IG14: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
- cmp r12d, 44
- je G_M25128_IG57
- cmp r12d, 61
- je G_M25128_IG57
- ;; size=20 bbWeight=2 PerfScore 5.00
-G_M25128_IG15: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz
- mov dword ptr [rbp-0x4C], ecx
- test ecx, ecx
- jne SHORT G_M25128_IG17
- ;; size=7 bbWeight=4 PerfScore 9.00
-G_M25128_IG16: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
- cmp r12d, 39
- je G_M25128_IG62
- cmp r12d, 34
- je G_M25128_IG62
- ;; size=20 bbWeight=2 PerfScore 5.00
-G_M25128_IG17: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+G_M25128_IG13: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
cmp r12d, 92
- jne G_M25128_IG46
+ jne G_M25128_IG44
;; size=10 bbWeight=4 PerfScore 5.00
-G_M25128_IG18: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+G_M25128_IG14: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
mov r13d, dword ptr [rbx+0x10]
cmp r13d, dword ptr [rbx+0x08]
- jge G_M25128_IG35
- lea edi, [r13+0x01]
- mov dword ptr [rbx+0x10], edi
- cmp r13d, dword ptr [rbx+0x08]
- jae G_M25128_IG61
- mov rdi, bword ptr [rbx]
- ; byrRegs +[rdi]
- mov esi, r13d
- movzx rsi, word ptr [rdi+2*rsi]
+ jge G_M25128_IG33
+ mov edi, r13d
+ lea esi, [rdi+0x01]
+ mov dword ptr [rbx+0x10], esi
+ cmp edi, dword ptr [rbx+0x08]
+ jae G_M25128_IG59
+ mov rsi, bword ptr [rbx]
+ ; byrRegs +[rsi]
+ movzx rsi, word ptr [rsi+2*rdi]
+ ; byrRegs -[rsi]
test esi, esi
- je G_M25128_IG62
- ;; size=49 bbWeight=2 PerfScore 34.00
-G_M25128_IG19: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz
- ; byrRegs -[rdi]
+ je G_M25128_IG60
+ ;; size=47 bbWeight=2 PerfScore 34.00
+G_M25128_IG15: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz
cmp esi, 61
- ja G_M25128_IG37
+ ja G_M25128_IG35
cmp esi, 39
- ja G_M25128_IG36
+ ja G_M25128_IG34
cmp esi, 34
- je SHORT G_M25128_IG20
+ je SHORT G_M25128_IG16
cmp esi, 39
- jne G_M25128_IG62
+ jne G_M25128_IG60
;; size=32 bbWeight=2 PerfScore 10.00
-G_M25128_IG20: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+G_M25128_IG16: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
mov edi, dword ptr [rbp-0x40]
mov rax, bword ptr [rbp-0x38]
; byrRegs +[rax]
mov edx, dword ptr [rbp-0x30]
cmp edi, edx
- jae G_M25128_IG39
+ jae G_M25128_IG37
mov edx, edi
mov word ptr [rax+2*rdx], si
inc edi
mov dword ptr [rbp-0x40], edi
;; size=29 bbWeight=2 PerfScore 13.50
-G_M25128_IG21: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+G_M25128_IG17: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
; byrRegs -[rax]
mov edi, dword ptr [rbx+0x10]
cmp edi, dword ptr [rbx+0x08]
- jge G_M25128_IG48
+ jge G_M25128_IG46
;; size=12 bbWeight=4 PerfScore 24.00
-G_M25128_IG22: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+G_M25128_IG18: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
mov edi, dword ptr [rbx+0x10]
- lea esi, [rdi+0x01]
- mov dword ptr [rbx+0x10], esi
+ lea eax, [rdi+0x01]
+ mov dword ptr [rbx+0x10], eax
cmp edi, dword ptr [rbx+0x08]
- jae G_M25128_IG61
- mov rsi, bword ptr [rbx]
- ; byrRegs +[rsi]
- movzx r12, word ptr [rsi+2*rdi]
+ jae G_M25128_IG59
+ mov rax, bword ptr [rbx]
+ ; byrRegs +[rax]
+ movzx r12, word ptr [rax+2*rdi]
test r12d, r12d
- je G_M25128_IG62
+ je G_M25128_IG60
;; size=35 bbWeight=2 PerfScore 25.50
-G_M25128_IG23: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
- ; byrRegs -[rsi]
- mov ecx, dword ptr [rbp-0x4C]
+G_M25128_IG19: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+ ; byrRegs -[rax]
jmp G_M25128_IG11
- ;; size=8 bbWeight=4 PerfScore 12.00
-G_M25128_IG24: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+ ;; size=5 bbWeight=4 PerfScore 8.00
...
+27 (+3.00%) : 3851.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
@@ -9,9 +9,9 @@
; Final local variable assignments
;
; V00 arg0 [V00,T07] ( 22, 23 ) ref -> rbx class-hnd single-def <System.Collections.Generic.List`1[System.String]>
-; V01 loc0 [V01,T02] ( 13, 47.50) ref -> r15 class-hnd exact single-def <System.String>
+; V01 loc0 [V01,T03] ( 13, 47.50) ref -> r15 class-hnd exact single-def <System.String>
; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 40,153.08) int -> r13
+; V03 loc2 [V03,T00] ( 42,187.08) int -> r13
; V04 loc3 [V04,T20] ( 4, 2 ) int -> rdi
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
; V06 loc5 [V06,T06] ( 9, 25.50) int -> r14
@@ -46,13 +46,13 @@
; V35 cse2 [V35,T11] ( 3, 12 ) int -> rdx "CSE - moderate"
; V36 cse3 [V36,T10] ( 3, 12 ) ref -> rsi "CSE - moderate"
; V37 cse4 [V37,T26] ( 3, 1.50) long -> r12 "CSE - moderate"
-; V38 cse5 [V38,T03] ( 15, 30.54) int -> r14 "CSE - aggressive"
+; V38 cse5 [V38,T01] ( 17, 64.54) int -> r14 "CSE - aggressive"
; V39 cse6 [V39,T25] ( 3, 1.50) ref -> rsi "CSE - moderate"
; V40 cse7 [V40,T16] ( 2, 8 ) int -> rax "CSE - moderate"
; V41 cse8 [V41,T12] ( 3, 11.88) int -> rdi "CSE - moderate"
; V42 cse9 [V42,T18] ( 7, 3.50) int -> [rbp-0x3C] spill-single-def "CSE - moderate"
; V43 cse10 [V43,T17] ( 3, 6 ) int -> rdx "CSE - moderate"
-; V44 cse11 [V44,T01] ( 3, 48 ) long -> rsi "CSE - aggressive"
+; V44 cse11 [V44,T02] ( 3, 48 ) long -> rsi "CSE - aggressive"
;
; Lcl frame size = 40
@@ -74,24 +74,24 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=42 bbWeight=1 PerfScore 9.50
G_M28069_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp dword ptr [rbx+0x10], 0
- je G_M28069_IG27
+ je G_M28069_IG26
;; size=10 bbWeight=1 PerfScore 4.00
G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rbx+0x08]
; gcrRegs +[rax]
cmp dword ptr [rax+0x08], 0
- jbe G_M28069_IG31
+ jbe G_M28069_IG30
mov r15, gword ptr [rax+0x10]
; gcrRegs +[r15]
mov r14d, dword ptr [r15+0x08]
cmp r14d, 100
- jg G_M28069_IG27
+ jg G_M28069_IG26
lea edi, [r14+0x02]
mov eax, edi
; gcrRegs -[rax]
mov esi, 2
mul rdx:rax, rsi
- jb G_M28069_IG30
+ jb G_M28069_IG29
mov rsi, rax
test rsi, rsi
je SHORT G_M28069_IG05
@@ -112,100 +112,100 @@ G_M28069_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
;; size=22 bbWeight=0.50 PerfScore 2.62
G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
test edi, edi
- jl G_M28069_IG32
+ jl G_M28069_IG31
mov bword ptr [rbp-0x38], rsi
mov dword ptr [rbp-0x30], edi
xor r13d, r13d
test r14d, r14d
- jle G_M28069_IG14
+ jle G_M28069_IG13
;; size=27 bbWeight=0.50 PerfScore 2.38
G_M28069_IG06: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov edi, r13d
movzx rdi, word ptr [r15+2*rdi+0x0C]
cmp edi, 39
- jne SHORT G_M28069_IG10
+ jne SHORT G_M28069_IG09
;; size=14 bbWeight=4 PerfScore 14.00
G_M28069_IG07: ; bbWeight=16, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
cmp r13d, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
mov esi, r13d
+ cmp r13d, r14d
+ jae G_M28069_IG30
movzx rax, word ptr [r15+2*rsi+0x0C]
mov word ptr [rdi+2*rsi], ax
inc r13d
cmp r14d, r13d
- jle SHORT G_M28069_IG08
+ jle G_M28069_IG26
+ cmp r13d, r14d
+ jae G_M28069_IG30
mov edi, r13d
; byrRegs -[rdi]
cmp word ptr [r15+2*rdi+0x0C], 39
jne SHORT G_M28069_IG07
- ;; size=47 bbWeight=16 PerfScore 208.00
-G_M28069_IG08: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- cmp r14d, r13d
- jg SHORT G_M28069_IG11
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M28069_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx r15]
- jmp G_M28069_IG27
- ;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M28069_IG10: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx r15]
+ ;; size=69 bbWeight=16 PerfScore 248.00
+G_M28069_IG08: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M28069_IG10
+ ;; size=2 bbWeight=4 PerfScore 8.00
+G_M28069_IG09: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
cmp edi, 121
- je SHORT G_M28069_IG13
+ je SHORT G_M28069_IG12
;; size=5 bbWeight=2 PerfScore 2.50
-G_M28069_IG11: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG10: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
cmp r13d, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
mov esi, r13d
+ cmp r13d, r14d
+ jae G_M28069_IG30
mov eax, r13d
movzx rax, word ptr [r15+2*rax+0x0C]
mov word ptr [rdi+2*rsi], ax
inc r13d
cmp r14d, r13d
- jg SHORT G_M28069_IG06
- ;; size=38 bbWeight=4 PerfScore 36.00
-G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ jg G_M28069_IG06
+ ;; size=51 bbWeight=4 PerfScore 41.00
+G_M28069_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdi]
- jmp SHORT G_M28069_IG14
+ jmp SHORT G_M28069_IG13
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
cmp r13d, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
mov esi, r13d
mov word ptr [rdi+2*rsi], 121
;; size=23 bbWeight=0.50 PerfScore 2.62
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdi]
lea edi, [r14-0x01]
cmp edi, r13d
- jle G_M28069_IG27
+ jle G_M28069_IG26
lea edi, [r13+0x01]
cmp edi, r14d
- jae G_M28069_IG31
+ jae G_M28069_IG30
lea edi, [r13+0x01]
mov r12d, edi
cmp word ptr [r15+2*r12+0x0C], 121
- jne G_M28069_IG27
+ jne G_M28069_IG26
lea eax, [r13+0x02]
mov dword ptr [rbp-0x3C], eax
cmp r14d, eax
- jle SHORT G_M28069_IG15
+ jle SHORT G_M28069_IG14
cmp eax, r14d
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov edi, eax
cmp word ptr [r15+2*rdi+0x0C], 121
mov eax, dword ptr [rbp-0x3C]
- je G_M28069_IG27
+ je G_M28069_IG26
;; size=85 bbWeight=0.50 PerfScore 8.75
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
lea edi, [r13+0x03]
cmp edi, dword ptr [rbp-0x30]
- jl SHORT G_M28069_IG16
+ jl SHORT G_M28069_IG15
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -215,37 +215,37 @@ G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
; gcr arg pop 0
mov eax, dword ptr [rbp-0x3C]
;; size=31 bbWeight=0.50 PerfScore 4.00
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
lea edi, [r13+0x01]
cmp edi, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
mov word ptr [rdi+2*r12], 121
cmp eax, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
mov ecx, eax
mov word ptr [rdi+2*rcx], 121
lea edi, [r13+0x03]
; byrRegs -[rdi]
cmp edi, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
lea ecx, [r13+0x03]
mov word ptr [rdi+2*rcx], 121
mov r13d, eax
cmp r14d, r13d
- jle SHORT G_M28069_IG20
+ jle SHORT G_M28069_IG19
test r13d, r13d
- jl SHORT G_M28069_IG19
+ jl SHORT G_M28069_IG18
;; size=85 bbWeight=0.50 PerfScore 9.75
-G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG16: ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdi]
lea edi, [r13+0x02]
cmp edi, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rax, bword ptr [rbp-0x38]
; byrRegs +[rax]
mov ecx, r13d
@@ -253,29 +253,29 @@ G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
mov word ptr [rax+2*rdi], cx
inc r13d
cmp r14d, r13d
- jg SHORT G_M28069_IG17
+ jg SHORT G_M28069_IG16
;; size=38 bbWeight=3.96 PerfScore 36.63
-G_M28069_IG18: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
- jmp SHORT G_M28069_IG20
+ jmp SHORT G_M28069_IG19
...
benchmarks.run_pgo.linux.x64.checked.mch
-29 (-29.00%) : 137448.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (Tier1)
@@ -5,19 +5,21 @@
; optimized using Dynamic PGO
; rbp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 8127
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 8127
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T02] ( 7, 6.95) int -> registers
+; V02 loc0 [V02,T00] ( 7, 6.95) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 6, 11.74) int -> rax "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 2.97) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T03] ( 5, 4.00) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 2.97) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T01] ( 6, 4.97) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T04] ( 6, 5.90) long -> r9 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T05] ( 2, 3.99) int -> rax "dup spill"
+; V05 tmp2 [V05,T03] ( 2, 2.00) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T02] ( 4, 3.03) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T04] ( 2, 2.00) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T01] ( 5, 4.00) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T07] ( 3, 2.96) int -> r9 "CSE - aggressive"
+; V10 cse1 [V10,T08] ( 3, 2.96) int -> r8 "CSE - aggressive"
+; V11 cse2 [V11,T06] ( 3, 2.99) long -> r8 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -28,76 +30,61 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
; byrRegs +[rdx rdi]
cmp esi, ecx
- jne SHORT G_M264_IG09
+ jne SHORT G_M264_IG10
;; size=4 bbWeight=1 PerfScore 1.25
G_M264_IG03: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref
mov eax, ecx
;; size=2 bbWeight=0.97 PerfScore 0.24
G_M264_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
dec eax
- mov r8d, eax
- test r8d, r8d
- jl SHORT G_M264_IG05
- cmp r8d, esi
- jae SHORT G_M264_IG12
- mov r9d, r8d
- mov r10d, dword ptr [rdi+4*r9]
- cmp r8d, ecx
- jae SHORT G_M264_IG12
- cmp r10d, dword ptr [rdx+4*r9]
- je SHORT G_M264_IG08
- ;; size=33 bbWeight=1.00 PerfScore 10.47
-G_M264_IG05: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- test eax, eax
- jl SHORT G_M264_IG13
+ js SHORT G_M264_IG08
cmp eax, esi
- jae SHORT G_M264_IG12
- mov r9d, eax
- mov edi, dword ptr [rdi+4*r9]
- ; byrRegs -[rdi]
+ jae SHORT G_M264_IG13
+ mov r8d, eax
+ mov r9d, dword ptr [rdi+4*r8]
cmp eax, ecx
- jae SHORT G_M264_IG12
- cmp edi, dword ptr [rdx+4*r9]
- jb SHORT G_M264_IG10
- ;; size=25 bbWeight=0.97 PerfScore 9.69
+ jae SHORT G_M264_IG13
+ mov r8d, dword ptr [rdx+4*r8]
+ cmp r9d, r8d
+ je SHORT G_M264_IG04
+ ;; size=28 bbWeight=1.00 PerfScore 9.23
+G_M264_IG05: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rdx rdi]
+ cmp r8d, r9d
+ ja SHORT G_M264_IG11
+ ;; size=5 bbWeight=0.97 PerfScore 1.21
G_M264_IG06: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdx]
mov eax, 1
;; size=5 bbWeight=0.74 PerfScore 0.18
G_M264_IG07: ; bbWeight=0.74, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.74 PerfScore 1.10
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, gcvars, byref, isz
- ; byrRegs +[rdx rdi]
- mov eax, r8d
- jmp SHORT G_M264_IG04
- ;; size=5 bbWeight=0.50 PerfScore 1.12
-G_M264_IG09: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rdx rdi]
+G_M264_IG08: ; bbWeight=0.97, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.97 PerfScore 0.24
+G_M264_IG09: ; bbWeight=0.97, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.97 PerfScore 1.45
+G_M264_IG10: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp esi, ecx
jge SHORT G_M264_IG06
;; size=4 bbWeight=0.03 PerfScore 0.04
-G_M264_IG10: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M264_IG11: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, -1
;; size=5 bbWeight=0.26 PerfScore 0.07
-G_M264_IG11: ; bbWeight=0.26, epilog, nogc, extend
+G_M264_IG12: ; bbWeight=0.26, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.26 PerfScore 0.40
-G_M264_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_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_M264_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- xor eax, eax
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M264_IG14: ; bbWeight=0, epilog, nogc, extend
- pop rbp
- ret
- ;; size=2 bbWeight=0 PerfScore 0.00
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 100, prolog size 4, PerfScore 25.81, instruction count 41, allocated bytes for code 100 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 71, prolog size 4, PerfScore 16.66, instruction count 31, allocated bytes for code 71 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================
Unwind Info:
-17 (-7.14%) : 52493.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
@@ -9,17 +9,18 @@
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 187473.9
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 14,348.77) ref -> rbx class-hnd single-def <int[]>
-; V01 arg1 [V01,T09] ( 3, 12.36) int -> rsi single-def
-; V02 arg2 [V02,T07] ( 6, 73.16) int -> r15 single-def
-; V03 loc0 [V03,T00] ( 14,727.51) int -> r14
-; V04 loc1 [V04,T01] ( 10,697.69) int -> rdx
-; V05 loc2 [V05,T04] ( 3,212.02) int -> rdi
-; V06 loc3 [V06,T08] ( 4, 64.46) int -> r8
+; V00 arg0 [V00,T02] ( 13,324.48) ref -> rbx class-hnd single-def <int[]>
+; V01 arg1 [V01,T10] ( 3, 12.36) int -> rsi single-def
+; V02 arg2 [V02,T08] ( 6, 73.16) int -> r15 single-def
+; V03 loc0 [V03,T00] ( 13,692.94) int -> r14
+; V04 loc1 [V04,T01] ( 7,614.55) int -> rdx
+; V05 loc2 [V05,T05] ( 3,212.02) int -> rdi
+; V06 loc3 [V06,T09] ( 4, 64.46) int -> r9
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T05] ( 2, 97.16) int -> r9 "Strict ordering of exceptions for Array store"
-; V09 cse0 [V09,T03] ( 7,269.54) int -> rax hoist "CSE - aggressive"
-; V10 cse1 [V10,T06] ( 6, 96.69) long -> rcx multi-def "CSE - aggressive"
+; V08 tmp1 [V08,T06] ( 2, 97.16) int -> rcx "Strict ordering of exceptions for Array store"
+; V09 cse0 [V09,T04] ( 3,232.44) int -> rcx "CSE - aggressive"
+; V10 cse1 [V10,T03] ( 6,245.25) int -> rax hoist "CSE - aggressive"
+; V11 cse2 [V11,T07] ( 6, 96.69) long -> r8 multi-def "CSE - aggressive"
;
; Lcl frame size = 8
@@ -52,7 +53,7 @@ G_M63260_IG04: ; bbWeight=105.58, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}
;; size=5 bbWeight=105.58 PerfScore 131.98
G_M63260_IG05: ; bbWeight=100, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r14d, eax
- jae G_M63260_IG16
+ jae G_M63260_IG15
mov ecx, r14d
cmp dword ptr [rbx+4*rcx+0x10], edi
jle SHORT G_M63260_IG03
@@ -65,49 +66,42 @@ G_M63260_IG07: ; bbWeight=80.65, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
;; size=2 bbWeight=80.65 PerfScore 20.16
G_M63260_IG08: ; bbWeight=115.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edx, r14d
- jle SHORT G_M63260_IG10
+ jle SHORT G_M63260_IG11
;; size=5 bbWeight=115.22 PerfScore 144.02
G_M63260_IG09: ; bbWeight=104.07, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edx, eax
- jae G_M63260_IG16
+ jae SHORT G_M63260_IG15
mov ecx, edx
- cmp dword ptr [rbx+4*rcx+0x10], edi
+ mov ecx, dword ptr [rbx+4*rcx+0x10]
+ cmp ecx, edi
jge SHORT G_M63260_IG07
- ;; size=16 bbWeight=104.07 PerfScore 572.41
-G_M63260_IG10: ; bbWeight=34.57, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- cmp r14d, edx
- jge SHORT G_M63260_IG12
- ;; size=5 bbWeight=34.57 PerfScore 43.21
-G_M63260_IG11: ; bbWeight=24.29, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=14 bbWeight=104.07 PerfScore 494.35
+G_M63260_IG10: ; bbWeight=24.29, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r14d, eax
- jae SHORT G_M63260_IG16
- mov ecx, r14d
- mov r8d, dword ptr [rbx+4*rcx+0x10]
- cmp edx, eax
- jae SHORT G_M63260_IG16
- mov r9d, edx
- mov r9d, dword ptr [rbx+4*r9+0x10]
- mov dword ptr [rbx+4*rcx+0x10], r9d
- mov ecx, edx
- mov dword ptr [rbx+4*rcx+0x10], r8d
+ jae SHORT G_M63260_IG15
+ mov r8d, r14d
+ mov r9d, dword ptr [rbx+4*r8+0x10]
+ mov dword ptr [rbx+4*r8+0x10], ecx
+ mov r8d, edx
+ mov dword ptr [rbx+4*r8+0x10], r9d
jmp SHORT G_M63260_IG04
- ;; size=39 bbWeight=24.29 PerfScore 273.26
-G_M63260_IG12: ; bbWeight=44.92, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=28 bbWeight=24.29 PerfScore 188.25
+G_M63260_IG11: ; bbWeight=44.92, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r14d, r15d
- je SHORT G_M63260_IG14
+ je SHORT G_M63260_IG13
;; size=5 bbWeight=44.92 PerfScore 56.16
-G_M63260_IG13: ; bbWeight=7.94, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M63260_IG12: ; bbWeight=7.94, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r14d, eax
- jae SHORT G_M63260_IG16
- mov ecx, r14d
- mov r8d, dword ptr [rbx+4*rcx+0x10]
- mov dword ptr [rbx+4*rcx+0x10], edi
+ jae SHORT G_M63260_IG15
+ mov r8d, r14d
+ mov r9d, dword ptr [rbx+4*r8+0x10]
+ mov dword ptr [rbx+4*r8+0x10], edi
cmp r15d, eax
- jae SHORT G_M63260_IG16
+ jae SHORT G_M63260_IG15
mov edx, r15d
- mov dword ptr [rbx+4*rdx+0x10], r8d
- ;; size=30 bbWeight=7.94 PerfScore 55.58
-G_M63260_IG14: ; bbWeight=10.36, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov dword ptr [rbx+4*rdx+0x10], r9d
+ ;; size=31 bbWeight=7.94 PerfScore 55.58
+G_M63260_IG13: ; bbWeight=10.36, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
lea edx, [r14-0x01]
mov rdi, rbx
; gcrRegs +[rdi]
@@ -123,7 +117,7 @@ G_M63260_IG14: ; bbWeight=10.36, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcr arg pop 0
nop
;; size=30 bbWeight=10.36 PerfScore 82.87
-G_M63260_IG15: ; bbWeight=10.36, epilog, nogc, extend
+G_M63260_IG14: ; bbWeight=10.36, epilog, nogc, extend
add rsp, 120
pop rbx
pop r14
@@ -131,13 +125,13 @@ G_M63260_IG15: ; bbWeight=10.36, epilog, nogc, extend
pop rbp
ret
;; size=11 bbWeight=10.36 PerfScore 33.67
-G_M63260_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M63260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 238, prolog size 56, PerfScore 2061.79, instruction count 73, allocated bytes for code 238 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
+; Total bytes of code 221, prolog size 56, PerfScore 1855.51, instruction count 68, allocated bytes for code 221 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
; ============================================================
Unwind Info:
-17 (-7.14%) : 52479.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
@@ -9,17 +9,18 @@
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 299.81
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 14,348.21) ref -> rbx class-hnd single-def <int[]>
-; V01 arg1 [V01,T09] ( 3, 12.09) int -> rsi single-def
-; V02 arg2 [V02,T07] ( 6, 71.91) int -> r15 single-def
-; V03 loc0 [V03,T00] ( 14,724.44) int -> r14
-; V04 loc1 [V04,T01] ( 10,701.21) int -> rdx
-; V05 loc2 [V05,T04] ( 3,213.46) int -> rdi
-; V06 loc3 [V06,T08] ( 4, 63.62) int -> r8
+; V00 arg0 [V00,T02] ( 13,324.23) ref -> rbx class-hnd single-def <int[]>
+; V01 arg1 [V01,T10] ( 3, 12.09) int -> rsi single-def
+; V02 arg2 [V02,T08] ( 6, 71.91) int -> r15 single-def
+; V03 loc0 [V03,T00] ( 13,690.38) int -> r14
+; V04 loc1 [V04,T01] ( 7,619.20) int -> rdx
+; V05 loc2 [V05,T05] ( 3,213.46) int -> rdi
+; V06 loc3 [V06,T09] ( 4, 63.62) int -> r9
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T05] ( 2, 95.90) int -> r9 "Strict ordering of exceptions for Array store"
-; V09 cse0 [V09,T03] ( 7,270.25) int -> rax hoist "CSE - aggressive"
-; V10 cse1 [V10,T06] ( 6, 95.43) long -> rcx multi-def "CSE - aggressive"
+; V08 tmp1 [V08,T06] ( 2, 95.90) int -> rcx "Strict ordering of exceptions for Array store"
+; V09 cse0 [V09,T04] ( 3,235.23) int -> rcx "CSE - aggressive"
+; V10 cse1 [V10,T03] ( 6,246.27) int -> rax hoist "CSE - aggressive"
+; V11 cse2 [V11,T07] ( 6, 95.43) long -> r8 multi-def "CSE - aggressive"
;
; Lcl frame size = 8
@@ -52,7 +53,7 @@ G_M63260_IG04: ; bbWeight=104.95, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}
;; size=5 bbWeight=104.95 PerfScore 131.19
G_M63260_IG05: ; bbWeight=100, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r14d, eax
- jae G_M63260_IG16
+ jae G_M63260_IG15
mov ecx, r14d
cmp dword ptr [rbx+4*rcx+0x10], edi
jle SHORT G_M63260_IG03
@@ -65,49 +66,42 @@ G_M63260_IG07: ; bbWeight=81.65, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
;; size=2 bbWeight=81.65 PerfScore 20.41
G_M63260_IG08: ; bbWeight=115.71, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edx, r14d
- jle SHORT G_M63260_IG10
+ jle SHORT G_M63260_IG11
;; size=5 bbWeight=115.71 PerfScore 144.64
G_M63260_IG09: ; bbWeight=105.63, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edx, eax
- jae G_M63260_IG16
+ jae SHORT G_M63260_IG15
mov ecx, edx
- cmp dword ptr [rbx+4*rcx+0x10], edi
+ mov ecx, dword ptr [rbx+4*rcx+0x10]
+ cmp ecx, edi
jge SHORT G_M63260_IG07
- ;; size=16 bbWeight=105.63 PerfScore 580.95
-G_M63260_IG10: ; bbWeight=34.06, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- cmp r14d, edx
- jge SHORT G_M63260_IG12
- ;; size=5 bbWeight=34.06 PerfScore 42.58
-G_M63260_IG11: ; bbWeight=23.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=14 bbWeight=105.63 PerfScore 501.73
+G_M63260_IG10: ; bbWeight=23.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r14d, eax
- jae SHORT G_M63260_IG16
- mov ecx, r14d
- mov r8d, dword ptr [rbx+4*rcx+0x10]
- cmp edx, eax
- jae SHORT G_M63260_IG16
- mov r9d, edx
- mov r9d, dword ptr [rbx+4*r9+0x10]
- mov dword ptr [rbx+4*rcx+0x10], r9d
- mov ecx, edx
- mov dword ptr [rbx+4*rcx+0x10], r8d
+ jae SHORT G_M63260_IG15
+ mov r8d, r14d
+ mov r9d, dword ptr [rbx+4*r8+0x10]
+ mov dword ptr [rbx+4*r8+0x10], ecx
+ mov r8d, edx
+ mov dword ptr [rbx+4*r8+0x10], r9d
jmp SHORT G_M63260_IG04
- ;; size=39 bbWeight=23.98 PerfScore 269.72
-G_M63260_IG12: ; bbWeight=44.15, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=28 bbWeight=23.98 PerfScore 185.81
+G_M63260_IG11: ; bbWeight=44.15, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r14d, r15d
- je SHORT G_M63260_IG14
+ je SHORT G_M63260_IG13
;; size=5 bbWeight=44.15 PerfScore 55.19
-G_M63260_IG13: ; bbWeight=7.83, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M63260_IG12: ; bbWeight=7.83, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r14d, eax
- jae SHORT G_M63260_IG16
- mov ecx, r14d
- mov r8d, dword ptr [rbx+4*rcx+0x10]
- mov dword ptr [rbx+4*rcx+0x10], edi
+ jae SHORT G_M63260_IG15
+ mov r8d, r14d
+ mov r9d, dword ptr [rbx+4*r8+0x10]
+ mov dword ptr [rbx+4*r8+0x10], edi
cmp r15d, eax
- jae SHORT G_M63260_IG16
+ jae SHORT G_M63260_IG15
mov edx, r15d
- mov dword ptr [rbx+4*rdx+0x10], r8d
- ;; size=30 bbWeight=7.83 PerfScore 54.84
-G_M63260_IG14: ; bbWeight=10.09, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov dword ptr [rbx+4*rdx+0x10], r9d
+ ;; size=31 bbWeight=7.83 PerfScore 54.84
+G_M63260_IG13: ; bbWeight=10.09, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
lea edx, [r14-0x01]
mov rdi, rbx
; gcrRegs +[rdi]
@@ -123,7 +117,7 @@ G_M63260_IG14: ; bbWeight=10.09, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcr arg pop 0
nop
;; size=30 bbWeight=10.09 PerfScore 80.69
-G_M63260_IG15: ; bbWeight=10.09, epilog, nogc, extend
+G_M63260_IG14: ; bbWeight=10.09, epilog, nogc, extend
add rsp, 120
pop rbx
pop r14
@@ -131,13 +125,13 @@ G_M63260_IG15: ; bbWeight=10.09, epilog, nogc, extend
pop rbp
ret
;; size=11 bbWeight=10.09 PerfScore 32.78
-G_M63260_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M63260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 238, prolog size 56, PerfScore 2061.69, instruction count 73, allocated bytes for code 238 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
+; Total bytes of code 221, prolog size 56, PerfScore 1855.98, instruction count 68, allocated bytes for code 221 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
; ============================================================
Unwind Info:
+31 (+9.84%) : 96806.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
@@ -20,16 +20,16 @@
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions>
;* V09 tmp7 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V10 tmp8 [V10,T10] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-; V11 tmp9 [V11,T03] ( 5, 5 ) ubyte -> r14 "Inline stloc first use temp"
+; V11 tmp9 [V11,T06] ( 5, 3 ) ubyte -> r14 "Inline stloc first use temp"
;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V14 tmp12 [V14,T06] ( 5, 4 ) ref -> r13 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
-; V15 tmp13 [V15,T04] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
+; V14 tmp12 [V14,T05] ( 5, 4 ) ref -> r13 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
+; V15 tmp13 [V15,T03] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
; V16 tmp14 [V16,T08] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
-; V17 tmp15 [V17,T01] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V18 tmp16 [V18,T05] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
+; V17 tmp15 [V17,T01] ( 5, 5.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V18 tmp16 [V18,T04] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
; V19 tmp17 [V19,T09] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
-; V20 tmp18 [V20,T02] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V20 tmp18 [V20,T02] ( 5, 5.50) ref -> rcx class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V21 tmp19 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
; V22 tmp20 [V22 ] ( 4, 2 ) ubyte -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V01.hasValue (fldOffset=0x0)" P-DEP
; V23 tmp21 [V23 ] ( 3, 1 ) ubyte -> [rbp-0x27] do-not-enreg[X] addr-exposed "field V01.value (fldOffset=0x1)" P-DEP
@@ -57,16 +57,16 @@ G_M43884_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rdi]
mov word ptr [rbp-0x28], di
cmp byte ptr [rbp-0x28], 0
- jne G_M43884_IG14
+ jne G_M43884_IG12
cmp byte ptr [r15+0x88], 0
- jne G_M43884_IG16
+ jne G_M43884_IG14
xor r14d, r14d
mov r13, gword ptr [rbx+0x80]
; gcrRegs +[r13]
test r13, r13
- je G_M43884_IG18
+ je G_M43884_IG16
test byte ptr [r13+0x18], 2
- je G_M43884_IG18
+ je G_M43884_IG16
;; size=74 bbWeight=1 PerfScore 21.50
G_M43884_IG03: ; bbWeight=1, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15]
@@ -75,60 +75,58 @@ G_M43884_IG03: ; bbWeight=1, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {},
mov rax, rsi
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M43884_IG07
+ je SHORT G_M43884_IG06
;; size=12 bbWeight=1 PerfScore 3.50
-G_M43884_IG04: ; bbWeight=0.50, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M43884_IG04: ; bbWeight=0.50, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[r13]
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]
cmp qword ptr [rax], rdi
- je SHORT G_M43884_IG06
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ je G_M43884_IG17
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
G_M43884_IG05: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M43884_IG06: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
- movzx r14, byte ptr [rax+0x84]
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M43884_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M43884_IG17
+ ;; size=10 bbWeight=0.25 PerfScore 0.75
+G_M43884_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
test r14d, r14d
- jne SHORT G_M43884_IG12
+ jne SHORT G_M43884_IG10
cmp gword ptr [rbx+0x88], 0
- je G_M43884_IG19
+ je G_M43884_IG18
;; size=19 bbWeight=1 PerfScore 5.25
-G_M43884_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M43884_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x88]
; gcrRegs +[rdi]
mov rsi, gword ptr [rdi+0x08]
; gcrRegs +[rsi]
- mov rax, rsi
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M43884_IG12
+ mov rcx, rsi
+ ; gcrRegs +[rcx]
+ test rcx, rcx
+ je SHORT G_M43884_IG10
;; size=19 bbWeight=1 PerfScore 5.50
-G_M43884_IG09: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
+G_M43884_IG08: ; bbWeight=0.50, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rdi]
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]
- cmp qword ptr [rax], rdi
- je SHORT G_M43884_IG11
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M43884_IG10: ; bbWeight=0.25, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+ cmp qword ptr [rcx], rdi
+ je G_M43884_IG19
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M43884_IG09: ; bbWeight=0.25, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M43884_IG11: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- movzx r14, byte ptr [rax+0x84]
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M43884_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ jmp G_M43884_IG19
+ ;; size=13 bbWeight=0.25 PerfScore 0.81
+G_M43884_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rcx]
xor eax, eax
cmp r14d, 2
sete al
;; size=9 bbWeight=1 PerfScore 1.50
-G_M43884_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M43884_IG11: ; bbWeight=1, epilog, nogc, extend
add rsp, 16
pop rbx
pop r13
@@ -137,7 +135,7 @@ G_M43884_IG13: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=13 bbWeight=1 PerfScore 3.75
-G_M43884_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
+G_M43884_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r15]
mov di, word ptr [r15+0x98]
mov word ptr [rbp-0x28], di
@@ -146,6 +144,18 @@ G_M43884_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {
; gcrRegs -[r15]
nop
;; size=23 bbWeight=0 PerfScore 0.00
+G_M43884_IG13: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 16
+ pop rbx
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M43884_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0 PerfScore 0.00
G_M43884_IG15: ; bbWeight=0, epilog, nogc, extend
add rsp, 16
pop rbx
@@ -155,19 +165,7 @@ G_M43884_IG15: ; bbWeight=0, epilog, nogc, extend
pop rbp
ret
;; size=13 bbWeight=0 PerfScore 0.00
-G_M43884_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- xor eax, eax
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M43884_IG17: ; bbWeight=0, epilog, nogc, extend
- add rsp, 16
- pop rbx
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=13 bbWeight=0 PerfScore 0.00
-G_M43884_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M43884_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx]
mov rdi, rbx
; gcrRegs +[rdi]
@@ -177,8 +175,13 @@ G_M43884_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {
; gcrRegs +[r13]
jmp G_M43884_IG03
;; size=21 bbWeight=0 PerfScore 0.00
-G_M43884_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r13]
+G_M43884_IG17: ; bbWeight=0, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r13] +[rax]
+ movzx r14, byte ptr [rax+0x84]
+ jmp G_M43884_IG06
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M43884_IG18: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
lea rsi, bword ptr [rbx+0x88]
; byrRegs +[rsi]
mov rdi, rbx
@@ -186,10 +189,15 @@ G_M43884_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
call [<unknown method>]
; gcrRegs -[rdi]
; byrRegs -[rsi]
- jmp G_M43884_IG08
+ jmp G_M43884_IG07
;; size=21 bbWeight=0 PerfScore 0.00
+G_M43884_IG19: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx] +[rcx]
+ movzx r14, byte ptr [rcx+0x84]
+ jmp G_M43884_IG10
+ ;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 315, prolog size 17, PerfScore 55.75, instruction count 83, allocated bytes for code 315 (MethodHash=8b225493) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
+; Total bytes of code 346, prolog size 17, PerfScore 52.81, instruction count 88, allocated bytes for code 346 (MethodHash=8b225493) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
; ============================================================
Unwind Info:
+19 (+10.44%) : 98035.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
@@ -9,18 +9,18 @@
; 3 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 9, 5 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
-; V01 loc0 [V01,T03] ( 5, 5 ) int -> r15
+; V00 this [V00,T00] ( 10, 5 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V01 loc0 [V01,T08] ( 5, 2 ) int -> r15
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V05 tmp2 [V05,T06] ( 5, 4 ) ref -> r14 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
-; V06 tmp3 [V06,T04] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
-; V07 tmp4 [V07,T07] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
-; V08 tmp5 [V08,T00] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V09 tmp6 [V09,T05] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
-; V10 tmp7 [V10,T08] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
-; V11 tmp8 [V11,T01] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V05 tmp2 [V05,T05] ( 5, 4 ) ref -> r14 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
+; V06 tmp3 [V06,T03] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
+; V07 tmp4 [V07,T06] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
+; V08 tmp5 [V08,T01] ( 5, 5.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V09 tmp6 [V09,T04] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
+; V10 tmp7 [V10,T07] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
+; V11 tmp8 [V11,T02] ( 5, 5.50) ref -> rcx class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;
; Lcl frame size = 8
@@ -40,9 +40,9 @@ G_M4380_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre
mov r14, gword ptr [rbx+0x80]
; gcrRegs +[r14]
test r14, r14
- je SHORT G_M4380_IG14
+ je SHORT G_M4380_IG12
test byte ptr [r14+0x18], 2
- je SHORT G_M4380_IG14
+ je SHORT G_M4380_IG12
;; size=22 bbWeight=1 PerfScore 7.50
G_M4380_IG03: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
mov rsi, gword ptr [r14+0x08]
@@ -50,56 +50,54 @@ G_M4380_IG03: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {},
mov rax, rsi
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M4380_IG07
+ je SHORT G_M4380_IG06
;; size=12 bbWeight=1 PerfScore 3.50
G_M4380_IG04: ; bbWeight=0.50, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r14]
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]
cmp qword ptr [rax], rdi
- je SHORT G_M4380_IG06
+ je SHORT G_M4380_IG13
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M4380_IG05: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M4380_IG05: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M4380_IG06: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
- mov r15d, dword ptr [rax+0x80]
- ;; size=7 bbWeight=1 PerfScore 2.00
-G_M4380_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M4380_IG13
+ ;; size=7 bbWeight=0.25 PerfScore 0.75
+G_M4380_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
cmp gword ptr [rbx+0x88], 0
- je SHORT G_M4380_IG15
+ je SHORT G_M4380_IG14
;; size=10 bbWeight=1 PerfScore 4.00
-G_M4380_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x88]
; gcrRegs +[rdi]
mov rsi, gword ptr [rdi+0x08]
; gcrRegs +[rsi]
- mov rax, rsi
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M4380_IG12
+ mov rcx, rsi
+ ; gcrRegs +[rcx]
+ test rcx, rcx
+ je SHORT G_M4380_IG10
;; size=19 bbWeight=1 PerfScore 5.50
-G_M4380_IG09: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG08: ; bbWeight=0.50, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rdi]
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]
- cmp qword ptr [rax], rdi
- je SHORT G_M4380_IG11
+ cmp qword ptr [rcx], rdi
+ je SHORT G_M4380_IG15
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M4380_IG10: ; bbWeight=0.25, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+G_M4380_IG09: ; bbWeight=0.25, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M4380_IG11: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- or r15d, dword ptr [rax+0x80]
- ;; size=7 bbWeight=1 PerfScore 3.00
-G_M4380_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ jmp SHORT G_M4380_IG15
+ ;; size=10 bbWeight=0.25 PerfScore 0.81
+G_M4380_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rcx]
mov eax, r15d
;; size=3 bbWeight=1 PerfScore 0.25
-G_M4380_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M4380_IG11: ; bbWeight=1, epilog, nogc, extend
add rsp, 8
pop rbx
pop r14
@@ -107,7 +105,7 @@ G_M4380_IG13: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=11 bbWeight=1 PerfScore 3.25
-G_M4380_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M4380_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx]
mov rdi, rbx
; gcrRegs +[rdi]
@@ -117,8 +115,14 @@ G_M4380_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {r
; gcrRegs +[r14]
jmp SHORT G_M4380_IG03
;; size=18 bbWeight=0 PerfScore 0.00
-G_M4380_IG15: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r14]
+G_M4380_IG13: ; bbWeight=0, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r14] +[rax]
+ mov r15d, dword ptr [rax+0x80]
+ cmp gword ptr [rbx+0x88], 0
+ jne SHORT G_M4380_IG07
+ ;; size=17 bbWeight=0 PerfScore 0.00
+G_M4380_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
lea rsi, bword ptr [rbx+0x88]
; byrRegs +[rsi]
mov rdi, rbx
@@ -126,10 +130,15 @@ G_M4380_IG15: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre
call [<unknown method>]
; gcrRegs -[rdi]
; byrRegs -[rsi]
- jmp SHORT G_M4380_IG08
+ jmp SHORT G_M4380_IG07
;; size=18 bbWeight=0 PerfScore 0.00
+G_M4380_IG15: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx] +[rcx]
+ or r15d, dword ptr [rcx+0x80]
+ jmp SHORT G_M4380_IG10
+ ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 182, prolog size 12, PerfScore 39.50, instruction count 49, allocated bytes for code 182 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
+; Total bytes of code 201, prolog size 12, PerfScore 35.56, instruction count 55, allocated bytes for code 201 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
; ============================================================
Unwind Info:
+47 (+13.17%) : 145196.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
@@ -5,22 +5,22 @@
; optimized using Dynamic PGO
; rbp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 45560
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 45560
; 8 inlinees with PGO data; 19 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 3, 3 ) ref -> r14 this class-hnd single-def <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]>
-; V01 arg1 [V01,T01] ( 4, 4 ) byref -> r15 single-def
-; V02 arg2 [V02,T00] ( 5, 4 ) int -> rbx single-def
-; V03 arg3 [V03,T04] ( 3, 3 ) byref -> r13 single-def
+; V00 this [V00,T03] ( 4, 3 ) ref -> r14 this class-hnd single-def <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]>
+; V01 arg1 [V01,T01] ( 5, 4 ) byref -> r15 single-def
+; V02 arg2 [V02,T00] ( 6, 4 ) int -> rbx single-def
+; V03 arg3 [V03,T04] ( 4, 3 ) byref -> r13 single-def
; V04 arg4 [V04,T06] ( 3, 3 ) int -> r8 single-def
; V05 arg5 [V05,T05] ( 3, 3 ) byref -> r12 single-def
-; V06 loc0 [V06,T09] ( 3, 3 ) int -> [rbp-0x2C] spill-single-def
-; V07 loc1 [V07,T08] ( 3, 3 ) byref -> r13
+; V06 loc0 [V06,T09] ( 4, 3 ) int -> [rbp-0x2C] spill-single-def
+; V07 loc1 [V07,T08] ( 5, 3 ) byref -> r13
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp2 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 tmp3 [V11,T07] ( 3, 4 ) int -> r14 "Inlining Arg"
+; V11 tmp3 [V11,T07] ( 4, 4 ) int -> r14 "Inlining Arg"
;* V12 tmp4 [V12 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V13 tmp5 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -29,7 +29,7 @@
;* V17 tmp9 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp10 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V19 tmp11 [V19 ] ( 0, 0 ) byref -> zero-ref "Spilling op1 side effects for Unsafe.ByteOffset"
-; V20 tmp12 [V20,T02] ( 8, 5 ) long -> [rbp-0x38] spill-single-def "Inline stloc first use temp"
+; V20 tmp12 [V20,T02] ( 10, 5 ) long -> [rbp-0x38] "Inline stloc first use temp"
;* V21 tmp13 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V22 tmp14 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V23 tmp15 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -83,45 +83,33 @@ G_M44984_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r12, r9
; byrRegs +[r12]
;; size=33 bbWeight=1 PerfScore 8.00
-G_M44984_IG02: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=B000 {r12 r13 r15}, byref
- xor eax, eax
- tzcnt eax, r8d
- mov dword ptr [rbp-0x2C], eax
- test al, 1
- jne G_M44984_IG09
- ;; size=18 bbWeight=1 PerfScore 4.50
-G_M44984_IG03: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=B000 {r12 r13 r15}, byref, isz
- cdqe
+G_M44984_IG02: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=B000 {r12 r13 r15}, byref, isz
+ xor ecx, ecx
+ tzcnt ecx, r8d
+ mov dword ptr [rbp-0x2C], ecx
+ test cl, 1
+ jne SHORT G_M44984_IG10
+ movsxd rax, ecx
add r13, rax
- mov rdi, gword ptr [r14+0x10]
- ; gcrRegs +[rdi]
- mov r14d, dword ptr [rdi+0x08]
+ mov rax, gword ptr [r14+0x10]
+ ; gcrRegs +[rax]
+ mov r14d, dword ptr [rax+0x08]
; gcrRegs -[r14]
test ebx, ebx
- jge SHORT G_M44984_IG04
- mov rdi, 0xD1FFAB1E
- mov rsi, 0xD1FFAB1E
- ; gcrRegs +[rsi]
- call [<unknown method>]
- ; gcrRegs -[rsi rdi]
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
- mov rsi, 0xD1FFAB1E
- ; gcrRegs +[rsi]
- call [<unknown method>]
- ; gcrRegs -[rsi rdi]
- ;; size=69 bbWeight=1 PerfScore 12.75
-G_M44984_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref, isz
+ jl G_M44984_IG11
+ ;; size=37 bbWeight=1 PerfScore 10.25
+G_M44984_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref, isz
+ ; gcrRegs -[rax]
mov rax, r13
; byrRegs +[rax]
sub rax, r15
; byrRegs -[rax]
- mov qword ptr [rbp-0x38], rax
- test rax, rax
- jl SHORT G_M44984_IG10
+ js SHORT G_M44984_IG09
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M44984_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref, isz
test al, 1
jne SHORT G_M44984_IG08
- ;; size=19 bbWeight=1 PerfScore 4.00
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M44984_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref
mov rdi, rax
shr rdi, 63
@@ -129,7 +117,7 @@ G_M44984_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r
sar rax, 1
sub ebx, eax
cmp ebx, r14d
- jl G_M44984_IG12
+ jl G_M44984_IG14
;; size=24 bbWeight=1 PerfScore 3.00
G_M44984_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref
sub r13, r15
@@ -148,11 +136,16 @@ G_M44984_IG07: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M44984_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, gcvars, byref, isz
+G_M44984_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, gcvars, byref
; byrRegs +[r13]
- jmp SHORT G_M44984_IG11
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M44984_IG09: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=B000 {r12 r13 r15}, byref
+ mov qword ptr [rbp-0x38], rax
+ jmp G_M44984_IG13
+ ;; size=9 bbWeight=0.50 PerfScore 1.50
+G_M44984_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref, isz
+ mov qword ptr [rbp-0x38], rax
+ jmp SHORT G_M44984_IG12
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M44984_IG10: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=B000 {r12 r13 r15}, byref, isz
; gcrRegs +[r14]
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
@@ -160,11 +153,38 @@ G_M44984_IG09: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=B000 {r12 r1
; gcrRegs +[rsi]
call [<unknown method>]
; gcrRegs -[rsi rdi]
- mov eax, dword ptr [rbp-0x2C]
- jmp G_M44984_IG03
- ;; size=34 bbWeight=0 PerfScore 0.00
-G_M44984_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref, isz
+ movsxd rdi, dword ptr [rbp-0x2C]
+ add r13, rdi
+ mov rdi, gword ptr [r14+0x10]
+ ; gcrRegs +[rdi]
+ mov r14d, dword ptr [rdi+0x08]
; gcrRegs -[r14]
+ test ebx, ebx
+ jge SHORT G_M44984_IG03
+ ;; size=45 bbWeight=0 PerfScore 0.00
+G_M44984_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref
+ ; gcrRegs -[rdi]
+ mov rdi, 0xD1FFAB1E
+ ; gcrRegs +[rdi]
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ mov rdi, 0xD1FFAB1E
+ ; gcrRegs +[rdi]
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ mov rax, r13
+ ; byrRegs +[rax]
+ sub rax, r15
+ ; byrRegs -[rax]
+ mov qword ptr [rbp-0x38], rax
+ test rax, rax
+ jge G_M44984_IG16
+ ;; size=71 bbWeight=0 PerfScore 0.00
+G_M44984_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref, isz
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
@@ -172,9 +192,9 @@ G_M44984_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r
call [<unknown method>]
; gcrRegs -[rsi rdi]
test byte ptr [rbp-0x38], 1
- je SHORT G_M44984_IG13
+ je SHORT G_M44984_IG15
;; size=32 bbWeight=0 PerfScore 0.00
-G_M44984_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref
+G_M44984_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
@@ -191,7 +211,7 @@ G_M44984_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r
cmp edi, r14d
jge G_M44984_IG06
;; size=56 bbWeight=0 PerfScore 0.00
-G_M44984_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref
+G_M44984_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
@@ -200,12 +220,16 @@ G_M44984_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r
; gcrRegs -[rsi rdi]
jmp G_M44984_IG06
;; size=31 bbWeight=0 PerfScore 0.00
-G_M44984_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref
+G_M44984_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref
mov rax, qword ptr [rbp-0x38]
jmp G_M44984_IG05
;; size=9 bbWeight=0 PerfScore 0.00
+G_M44984_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref
+ mov rax, qword ptr [rbp-0x38]
+ jmp G_M44984_IG04
+ ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 357, prolog size 19, PerfScore 39.50, instruction count 85, allocated bytes for code 357 (MethodHash=d0aa5047) for method System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
+; Total bytes of code 404, prolog size 19, PerfScore 33.25, instruction count 97, allocated bytes for code 404 (MethodHash=d0aa5047) for method System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
; ============================================================
Unwind Info:
benchmarks.run_tiered.linux.x64.checked.mch
-32 (-30.48%) : 60259.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (Tier1)
@@ -9,14 +9,16 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> registers
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r8 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> r9 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> rax "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> r9 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> r8 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> r8 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -32,72 +34,59 @@ G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, b
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx rdi]
cmp esi, ecx
- jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jl SHORT G_M264_IG11
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref
; byrRegs +[rdx rdi]
- mov r8d, ecx
- ;; size=3 bbWeight=0.50 PerfScore 0.12
+ mov eax, ecx
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- dec r8d
- mov eax, r8d
- test eax, eax
- jl SHORT G_M264_IG06
+ dec eax
+ js SHORT G_M264_IG09
cmp eax, esi
- jae SHORT G_M264_IG14
- mov r9d, eax
- mov r10d, dword ptr [rdi+4*r9]
- cmp eax, ecx
- jae SHORT G_M264_IG14
- cmp r10d, dword ptr [rdx+4*r9]
- je SHORT G_M264_IG08
- ;; size=31 bbWeight=4 PerfScore 42.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- test r8d, r8d
- jge SHORT G_M264_IG09
- xor eax, eax
- ;; size=7 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
- pop rbp
- ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, gcvars, byref, isz
+ jae SHORT G_M264_IG13
mov r8d, eax
- jmp SHORT G_M264_IG05
- ;; size=5 bbWeight=2 PerfScore 4.50
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- cmp r8d, esi
- jae SHORT G_M264_IG14
- mov r9d, r8d
- mov eax, dword ptr [rdi+4*r9]
- cmp r8d, ecx
- jae SHORT G_M264_IG14
- cmp eax, dword ptr [rdx+4*r9]
- jb SHORT G_M264_IG12
- ;; size=23 bbWeight=0.50 PerfScore 4.38
-G_M264_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r9d, dword ptr [rdi+4*r8]
+ cmp eax, ecx
+ jae SHORT G_M264_IG13
+ mov r8d, dword ptr [rdx+4*r8]
+ cmp r9d, r8d
+ je SHORT G_M264_IG05
+ ;; size=28 bbWeight=4 PerfScore 37.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx rdi]
+ cmp r8d, r9d
+ ja SHORT G_M264_IG11
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 105, prolog size 4, PerfScore 58.38, instruction count 43, allocated bytes for code 105 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 73, prolog size 4, PerfScore 44.50, instruction count 32, allocated bytes for code 73 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================
Unwind Info:
-16 (-7.17%) : 10084.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
@@ -12,7 +12,7 @@
; V01 arg1 [V01,T06] ( 7, 4.50) byref -> rdx single-def
; V02 loc0 [V02,T07] ( 5, 3 ) ushort -> rcx
; V03 loc1 [V03,T05] ( 5, 7 ) int -> rax
-; V04 loc2 [V04,T00] ( 7, 13.50) int -> r8
+; V04 loc2 [V04,T00] ( 5, 12.50) int -> r8
; V05 loc3 [V05,T09] ( 3, 1.50) int -> rax
; V06 loc4 [V06,T10] ( 3, 1.50) int -> rax
; V07 loc5 [V07,T11] ( 3, 1.50) int -> r8
@@ -20,9 +20,9 @@
; V09 tmp1 [V09,T04] ( 2, 8 ) int -> r8 "impSpillLclRefs"
;* V10 tmp2 [V10 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
; V11 tmp3 [V11,T08] ( 2, 2 ) int -> rcx "Single return block return value"
-; V12 tmp4 [V12,T03] ( 7, 7.50) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp5 [V13,T02] ( 8, 8.50) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V14 cse0 [V14,T01] ( 5, 11 ) int -> r9 multi-def "CSE - aggressive"
+; V12 tmp4 [V12,T03] ( 6, 7 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp5 [V13,T02] ( 7, 8 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V14 cse0 [V14,T01] ( 4, 10.50) int -> r9 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -46,8 +46,8 @@ G_M3969_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi
cmp esi, 1
jne SHORT G_M3969_IG04
mov dword ptr [rdx], -1
- jmp G_M3969_IG11
- ;; size=36 bbWeight=0.50 PerfScore 4.12
+ jmp SHORT G_M3969_IG11
+ ;; size=33 bbWeight=0.50 PerfScore 4.12
G_M3969_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
cmp esi, 2
jne SHORT G_M3969_IG05
@@ -89,23 +89,19 @@ G_M3969_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi},
;; size=18 bbWeight=2 PerfScore 6.00
G_M3969_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
cmp r8d, esi
- jae SHORT G_M3969_IG09
+ jae SHORT G_M3969_IG10
mov r9d, r8d
movzx r9, word ptr [rdi+2*r9]
lea r10d, [r9-0x30]
cmp r10d, 9
jbe SHORT G_M3969_IG07
;; size=23 bbWeight=4 PerfScore 21.00
-G_M3969_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- cmp r8d, esi
- jae SHORT G_M3969_IG10
- mov r9d, r8d
- movzx r9, word ptr [rdi+2*r9]
+G_M3969_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref, isz
+ ; byrRegs -[rdi]
test r9d, r9d
jne SHORT G_M3969_IG13
- ;; size=18 bbWeight=0.50 PerfScore 2.38
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
G_M3969_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref
- ; byrRegs -[rdi]
mov dword ptr [rdx], eax
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M3969_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -143,7 +139,7 @@ G_M3969_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 223, prolog size 4, PerfScore 52.38, instruction count 76, allocated bytes for code 223 (MethodHash=db41f07e) for method System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
+; Total bytes of code 207, prolog size 4, PerfScore 50.62, instruction count 72, allocated bytes for code 207 (MethodHash=db41f07e) for method System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
; ============================================================
Unwind Info:
-17 (-7.14%) : 31264.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
@@ -8,17 +8,18 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 14, 93.51) ref -> rbx class-hnd single-def <int[]>
-; V01 arg1 [V01,T09] ( 3, 3 ) int -> rsi single-def
-; V02 arg2 [V02,T05] ( 6, 12 ) int -> r15 single-def
-; V03 loc0 [V03,T00] ( 14,227 ) int -> r14
-; V04 loc1 [V04,T01] ( 10,134 ) int -> rdx
+; V00 arg0 [V00,T02] ( 13, 91.51) ref -> rbx class-hnd single-def <int[]>
+; V01 arg1 [V01,T10] ( 3, 3 ) int -> rsi single-def
+; V02 arg2 [V02,T06] ( 6, 12 ) int -> r15 single-def
+; V03 loc0 [V03,T00] ( 13,219 ) int -> r14
+; V04 loc1 [V04,T01] ( 7,122 ) int -> rdx
; V05 loc2 [V05,T04] ( 3, 80.50) int -> rdi
-; V06 loc3 [V06,T08] ( 4, 5 ) int -> r8
+; V06 loc3 [V06,T09] ( 4, 5 ) int -> r9
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T06] ( 2, 8 ) int -> r9 "Strict ordering of exceptions for Array store"
-; V09 cse0 [V09,T03] ( 7, 85.01) int -> rax hoist "CSE - aggressive"
-; V10 cse1 [V10,T07] ( 6, 7.50) long -> rcx multi-def "CSE - aggressive"
+; V08 tmp1 [V08,T07] ( 2, 8 ) int -> rcx "Strict ordering of exceptions for Array store"
+; V09 cse0 [V09,T05] ( 3, 34 ) int -> rcx "CSE - aggressive"
+; V10 cse1 [V10,T03] ( 6, 83.01) int -> rax hoist "CSE - aggressive"
+; V11 cse2 [V11,T08] ( 6, 7.50) long -> r8 multi-def "CSE - aggressive"
;
; Lcl frame size = 8
@@ -51,7 +52,7 @@ G_M63260_IG04: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=5 bbWeight=8 PerfScore 10.00
G_M63260_IG05: ; bbWeight=64, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r14d, eax
- jae G_M63260_IG16
+ jae G_M63260_IG15
mov ecx, r14d
cmp dword ptr [rbx+4*rcx+0x10], edi
jle SHORT G_M63260_IG03
@@ -64,49 +65,42 @@ G_M63260_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=2 bbWeight=8 PerfScore 2.00
G_M63260_IG08: ; bbWeight=64, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edx, r14d
- jle SHORT G_M63260_IG10
+ jle SHORT G_M63260_IG11
;; size=5 bbWeight=64 PerfScore 80.00
G_M63260_IG09: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edx, eax
- jae G_M63260_IG16
+ jae SHORT G_M63260_IG15
mov ecx, edx
- cmp dword ptr [rbx+4*rcx+0x10], edi
+ mov ecx, dword ptr [rbx+4*rcx+0x10]
+ cmp ecx, edi
jge SHORT G_M63260_IG07
- ;; size=16 bbWeight=16 PerfScore 88.00
-G_M63260_IG10: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- cmp r14d, edx
- jge SHORT G_M63260_IG12
- ;; size=5 bbWeight=8 PerfScore 10.00
-G_M63260_IG11: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=14 bbWeight=16 PerfScore 76.00
+G_M63260_IG10: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r14d, eax
- jae SHORT G_M63260_IG16
- mov ecx, r14d
- mov r8d, dword ptr [rbx+4*rcx+0x10]
- cmp edx, eax
- jae SHORT G_M63260_IG16
- mov r9d, edx
- mov r9d, dword ptr [rbx+4*r9+0x10]
- mov dword ptr [rbx+4*rcx+0x10], r9d
- mov ecx, edx
- mov dword ptr [rbx+4*rcx+0x10], r8d
+ jae SHORT G_M63260_IG15
+ mov r8d, r14d
+ mov r9d, dword ptr [rbx+4*r8+0x10]
+ mov dword ptr [rbx+4*r8+0x10], ecx
+ mov r8d, edx
+ mov dword ptr [rbx+4*r8+0x10], r9d
jmp SHORT G_M63260_IG04
- ;; size=39 bbWeight=2 PerfScore 22.50
-G_M63260_IG12: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=28 bbWeight=2 PerfScore 15.50
+G_M63260_IG11: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r14d, r15d
- je SHORT G_M63260_IG14
+ je SHORT G_M63260_IG13
;; size=5 bbWeight=8 PerfScore 10.00
-G_M63260_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M63260_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r14d, eax
- jae SHORT G_M63260_IG16
- mov ecx, r14d
- mov r8d, dword ptr [rbx+4*rcx+0x10]
- mov dword ptr [rbx+4*rcx+0x10], edi
+ jae SHORT G_M63260_IG15
+ mov r8d, r14d
+ mov r9d, dword ptr [rbx+4*r8+0x10]
+ mov dword ptr [rbx+4*r8+0x10], edi
cmp r15d, eax
- jae SHORT G_M63260_IG16
+ jae SHORT G_M63260_IG15
mov edx, r15d
- mov dword ptr [rbx+4*rdx+0x10], r8d
- ;; size=30 bbWeight=0.50 PerfScore 3.50
-G_M63260_IG14: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov dword ptr [rbx+4*rdx+0x10], r9d
+ ;; size=31 bbWeight=0.50 PerfScore 3.50
+G_M63260_IG13: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
lea edx, [r14-0x01]
mov rdi, rbx
; gcrRegs +[rdi]
@@ -122,7 +116,7 @@ G_M63260_IG14: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcr arg pop 0
nop
;; size=30 bbWeight=1 PerfScore 8.00
-G_M63260_IG15: ; bbWeight=1, epilog, nogc, extend
+G_M63260_IG14: ; bbWeight=1, epilog, nogc, extend
add rsp, 120
pop rbx
pop r14
@@ -130,13 +124,13 @@ G_M63260_IG15: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=11 bbWeight=1 PerfScore 3.25
-G_M63260_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M63260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 238, prolog size 56, PerfScore 593.98, instruction count 73, allocated bytes for code 238 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
+; Total bytes of code 221, prolog size 56, PerfScore 564.98, instruction count 68, allocated bytes for code 221 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
; ============================================================
Unwind Info:
+49 (+1.98%) : 38361.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
@@ -58,7 +58,7 @@
;* V46 tmp32 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V47 tmp33 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V48 tmp34 [V48,T37] ( 3, 12 ) int -> r13 "Inlining Arg"
-; V49 tmp35 [V49,T56] ( 2, 8 ) byref -> [rbp-0x90] spill-single-def "Inlining Arg"
+; V49 tmp35 [V49,T56] ( 2, 8 ) byref -> [rbp-0x98] spill-single-def "Inlining Arg"
;* V50 tmp36 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V51 tmp37 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V52 tmp38 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
@@ -91,19 +91,19 @@
;* V79 tmp65 [V79 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V80 tmp66 [V80 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V81 tmp67 [V81,T02] ( 3, 80 ) int -> rax
-; V82 tmp68 [V82,T00] ( 3,192 ) ubyte -> rax "Inline stloc first use temp"
+; V82 tmp68 [V82,T00] ( 2,128 ) ubyte -> rax "Inline stloc first use temp"
;* V83 tmp69 [V83 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ubyte]>
-; V84 tmp70 [V84,T04] ( 2, 32 ) long -> rdi "impAppendStmt"
-; V85 tmp71 [V85,T05] ( 2, 32 ) long -> rsi "impAppendStmt"
-; V86 tmp72 [V86,T06] ( 2, 32 ) int -> rax "impAppendStmt"
-; V87 tmp73 [V87,T07] ( 2, 32 ) int -> rcx "impAppendStmt"
+; V84 tmp70 [V84,T04] ( 2, 32 ) long -> rax "impAppendStmt"
+; V85 tmp71 [V85,T05] ( 2, 32 ) long -> rdx "impAppendStmt"
+; V86 tmp72 [V86,T06] ( 2, 32 ) int -> rsi "impAppendStmt"
+; V87 tmp73 [V87,T07] ( 2, 32 ) int -> r15 "impAppendStmt"
;* V88 tmp74 [V88 ] ( 0, 0 ) struct (56) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonReaderState>
;* V89 tmp75 [V89 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V90 tmp76 [V90 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V91 tmp77 [V91,T08] ( 2, 32 ) ubyte -> rdx "Inlining Arg"
-; V92 tmp78 [V92,T09] ( 2, 32 ) ubyte -> r8 "Inlining Arg"
-; V93 tmp79 [V93,T10] ( 2, 32 ) ubyte -> r9 "Inlining Arg"
-; V94 tmp80 [V94,T11] ( 2, 32 ) ubyte -> r10 "Inlining Arg"
+; V91 tmp77 [V91,T08] ( 2, 32 ) ubyte -> r13 "Inlining Arg"
+; V92 tmp78 [V92,T09] ( 2, 32 ) ubyte -> r14 "Inlining Arg"
+; V93 tmp79 [V93,T10] ( 2, 32 ) ubyte -> r11 "Inlining Arg"
+; V94 tmp80 [V94,T11] ( 2, 32 ) ubyte -> rdi "Inlining Arg"
;* V95 tmp81 [V95 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Text.Json.JsonReaderOptions>
;* V96 tmp82 [V96 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <System.Text.Json.BitStack>
; V97 tmp83 [V97,T21] ( 4, 16 ) int -> rdi "Inlining Arg"
@@ -190,7 +190,7 @@
; V178 tmp164 [V178,T90] ( 2, 4 ) int -> rcx "field V35._length (fldOffset=0x8)" P-INDEP
;* V179 tmp165 [V179 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP
;* V180 tmp166 [V180 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
-; V181 tmp167 [V181,T52] ( 4, 8 ) byref -> [rbp-0x98] "field V46._reference (fldOffset=0x0)" P-INDEP
+; V181 tmp167 [V181,T52] ( 4, 8 ) byref -> [rbp-0xA0] "field V46._reference (fldOffset=0x0)" P-INDEP
; V182 tmp168 [V182,T48] ( 5, 10 ) int -> [rbp-0x60] "field V46._length (fldOffset=0x8)" P-INDEP
;* V183 tmp169 [V183 ] ( 0, 0 ) byref -> zero-ref "field V47._reference (fldOffset=0x0)" P-INDEP
;* V184 tmp170 [V184 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP
@@ -204,12 +204,12 @@
;* V192 tmp178 [V192,T99] ( 0, 0 ) int -> zero-ref "field V76._length (fldOffset=0x8)" P-INDEP
; V193 tmp179 [V193,T107] ( 2, 0 ) byref -> rcx "field V83._reference (fldOffset=0x0)" P-INDEP
;* V194 tmp180 [V194,T108] ( 0, 0 ) int -> zero-ref "field V83._length (fldOffset=0x8)" P-INDEP
-; V195 tmp181 [V195,T24] ( 2, 16 ) int -> r11 "field V95._maxDepth (fldOffset=0x0)" P-INDEP
-; V196 tmp182 [V196,T25] ( 2, 16 ) ubyte -> r15 "field V95._commentHandling (fldOffset=0x4)" P-INDEP
-; V197 tmp183 [V197,T26] ( 2, 16 ) ubyte -> r13 "field V95.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
-; V198 tmp184 [V198,T23] ( 2, 16 ) ref -> r14 "field V96._array (fldOffset=0x0)" P-INDEP
-; V199 tmp185 [V199,T27] ( 2, 16 ) long -> [rbp-0x68] spill-single-def "field V96._allocationFreeContainer (fldOffset=0x8)" P-INDEP
-; V200 tmp186 [V200,T28] ( 2, 16 ) int -> rbx "field V96._currentDepth (fldOffset=0x10)" P-INDEP
+; V195 tmp181 [V195,T24] ( 2, 16 ) int -> [rbp-0x64] spill-single-def "field V95._maxDepth (fldOffset=0x0)" P-INDEP
+; V196 tmp182 [V196,T25] ( 2, 16 ) ubyte -> rbx "field V95._commentHandling (fldOffset=0x4)" P-INDEP
+; V197 tmp183 [V197,T26] ( 2, 16 ) ubyte -> r8 "field V95.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
+; V198 tmp184 [V198,T23] ( 2, 16 ) ref -> [rbp-0xA8] spill-single-def "field V96._array (fldOffset=0x0)" P-INDEP
+; V199 tmp185 [V199,T27] ( 2, 16 ) long -> [rbp-0x70] spill-single-def "field V96._allocationFreeContainer (fldOffset=0x8)" P-INDEP
+; V200 tmp186 [V200,T28] ( 2, 16 ) int -> rcx "field V96._currentDepth (fldOffset=0x10)" P-INDEP
;* V201 tmp187 [V201 ] ( 0, 0 ) byref -> zero-ref "field V98._reference (fldOffset=0x0)" P-INDEP
;* V202 tmp188 [V202 ] ( 0, 0 ) int -> zero-ref "field V98._length (fldOffset=0x8)" P-INDEP
;* V203 tmp189 [V203 ] ( 0, 0 ) byref -> zero-ref "field V103._reference (fldOffset=0x0)" P-INDEP
@@ -228,10 +228,10 @@
;* V216 tmp202 [V216 ] ( 0, 0 ) ref -> zero-ref "field V127._object (fldOffset=0x0)" P-INDEP
;* V217 tmp203 [V217 ] ( 0, 0 ) int -> zero-ref "field V127._index (fldOffset=0x8)" P-INDEP
;* V218 tmp204 [V218 ] ( 0, 0 ) int -> zero-ref "field V127._length (fldOffset=0xc)" P-INDEP
-; V219 tmp205 [V219,T69] ( 3, 6 ) ref -> r8 "field V130._object (fldOffset=0x0)" P-INDEP
-; V220 tmp206 [V220,T79] ( 3, 6 ) int -> rcx "field V130._index (fldOffset=0x8)" P-INDEP
-; V221 tmp207 [V221,T80] ( 3, 6 ) int -> rdx "field V130._length (fldOffset=0xc)" P-INDEP
-; V222 tmp208 [V222,T17] ( 10, 20 ) ref -> [rbp-0xA0] "field V134._object (fldOffset=0x0)" P-INDEP
+; V219 tmp205 [V219,T69] ( 3, 6 ) ref -> rcx "field V130._object (fldOffset=0x0)" P-INDEP
+; V220 tmp206 [V220,T79] ( 3, 6 ) int -> rdx "field V130._index (fldOffset=0x8)" P-INDEP
+; V221 tmp207 [V221,T80] ( 3, 6 ) int -> r8 "field V130._length (fldOffset=0xc)" P-INDEP
+; V222 tmp208 [V222,T17] ( 10, 20 ) ref -> [rbp-0xB0] "field V134._object (fldOffset=0x0)" P-INDEP
; V223 tmp209 [V223,T54] ( 4, 8 ) int -> registers "field V134._index (fldOffset=0x8)" P-INDEP
; V224 tmp210 [V224,T49] ( 5, 10 ) int -> rcx "field V134._length (fldOffset=0xc)" P-INDEP
; V225 tmp211 [V225,T87] ( 2, 4 ) ref -> r14 "field V136._object (fldOffset=0x0)" P-INDEP
@@ -248,39 +248,39 @@
;* V236 tmp222 [V236 ] ( 0, 0 ) ref -> zero-ref "field V160._object (fldOffset=0x0)" P-INDEP
;* V237 tmp223 [V237 ] ( 0, 0 ) int -> zero-ref "field V160._index (fldOffset=0x8)" P-INDEP
;* V238 tmp224 [V238 ] ( 0, 0 ) int -> zero-ref "field V160._length (fldOffset=0xc)" P-INDEP
-; V239 tmp225 [V239,T64] ( 5, 6.51) ref -> [rbp-0xA8] spill-single-def "V02.[000..008)"
-; V240 tmp226 [V240,T65] ( 5, 6.51) ref -> [rbp-0xB0] spill-single-def "V02.[008..016)"
-; V241 tmp227 [V241,T94] ( 2, 2.01) int -> [rbp-0x6C] spill-single-def "V02.[016..020)"
-; V242 tmp228 [V242,T95] ( 2, 2.01) int -> [rbp-0x70] spill-single-def "V02.[020..024)"
+; V239 tmp225 [V239,T64] ( 5, 6.51) ref -> [rbp-0xB8] spill-single-def "V02.[000..008)"
+; V240 tmp226 [V240,T65] ( 5, 6.51) ref -> [rbp-0xC0] spill-single-def "V02.[008..016)"
+; V241 tmp227 [V241,T94] ( 2, 2.01) int -> [rbp-0x74] spill-single-def "V02.[016..020)"
+; V242 tmp228 [V242,T95] ( 2, 2.01) int -> [rbp-0x78] spill-single-def "V02.[020..024)"
;* V243 tmp229 [V243 ] ( 0, 0 ) ref -> zero-ref "V07.[000..008)"
-; V244 tmp230 [V244,T14] ( 15, 25.01) ref -> [rbp-0xB8] spill-single-def "V07.[008..016)"
-; V245 tmp231 [V245,T96] ( 2, 2.01) int -> [rbp-0x74] spill-single-def "V07.[016..020)"
-; V246 tmp232 [V246,T85] ( 3, 4.01) int -> [rbp-0x78] spill-single-def "V07.[020..024)"
-; V247 tmp233 [V247,T33] ( 6, 14.51) ref -> [rbp-0xC0] "V07.[024..032)"
-; V248 tmp234 [V248,T13] ( 15, 28.01) int -> [rbp-0x7C] "V07.[032..036)"
-; V249 tmp235 [V249,T15] ( 13, 24.01) ref -> [rbp-0xC8] "V07.[040..048)"
-; V250 tmp236 [V250,T46] ( 6, 10.01) int -> [rbp-0x80] "V07.[048..052)"
-; V251 tmp237 [V251,T35] ( 7, 12.01) int -> [rbp-0x84] "V07.[052..056)"
+; V244 tmp230 [V244,T14] ( 15, 25.01) ref -> [rbp-0xC8] spill-single-def "V07.[008..016)"
+; V245 tmp231 [V245,T96] ( 2, 2.01) int -> [rbp-0x7C] spill-single-def "V07.[016..020)"
+; V246 tmp232 [V246,T85] ( 3, 4.01) int -> [rbp-0x80] spill-single-def "V07.[020..024)"
+; V247 tmp233 [V247,T33] ( 6, 14.51) ref -> [rbp-0xD0] "V07.[024..032)"
+; V248 tmp234 [V248,T13] ( 15, 28.01) int -> [rbp-0x84] "V07.[032..036)"
+; V249 tmp235 [V249,T15] ( 13, 24.01) ref -> [rbp-0xD8] "V07.[040..048)"
+; V250 tmp236 [V250,T46] ( 6, 10.01) int -> [rbp-0x88] "V07.[048..052)"
+; V251 tmp237 [V251,T35] ( 7, 12.01) int -> [rbp-0x8C] "V07.[052..056)"
;* V252 tmp238 [V252 ] ( 0, 0 ) ref -> zero-ref "V08.[000..008)"
;* V253 tmp239 [V253 ] ( 0, 0 ) int -> zero-ref "V08.[008..012)"
;* V254 tmp240 [V254 ] ( 0, 0 ) int -> zero-ref "V08.[012..016)"
;* V255 tmp241 [V255 ] ( 0, 0 ) byref -> zero-ref "V09.[000..008)"
;* V256 tmp242 [V256 ] ( 0, 0 ) int -> zero-ref "V09.[008..012)"
-; V257 tmp243 [V257,T51] ( 4, 6.01) byref -> [rbp-0xD0] "V10.[000..008)"
+; V257 tmp243 [V257,T51] ( 4, 6.01) byref -> [rbp-0xE0] "V10.[000..008)"
; V258 tmp244 [V258,T16] ( 7, 18.01) int -> r12 "V10.[008..012)"
;* V259 tmp245 [V259 ] ( 0, 0 ) byref -> zero-ref "V13.[000..008)"
;* V260 tmp246 [V260 ] ( 0, 0 ) int -> zero-ref "V13.[008..012)"
;* V261 tmp247 [V261 ] ( 0, 0 ) long -> zero-ref "V88.[000..008)"
;* V262 tmp248 [V262 ] ( 0, 0 ) long -> zero-ref "V88.[008..016)"
-; V263 tmp249 [V263,T29] ( 2, 16 ) ubyte -> rax "V88.[016..017)"
-; V264 tmp250 [V264,T30] ( 2, 16 ) ubyte -> rcx "V88.[017..018)"
+; V263 tmp249 [V263,T29] ( 2, 16 ) ubyte -> rsi "V88.[016..017)"
+; V264 tmp250 [V264,T30] ( 2, 16 ) ubyte -> r15 "V88.[017..018)"
;* V265 tmp251 [V265 ] ( 0, 0 ) ubyte -> zero-ref "V88.[018..019)"
;* V266 tmp252 [V266 ] ( 0, 0 ) ubyte -> zero-ref "V88.[019..020)"
;* V267 tmp253 [V267 ] ( 0, 0 ) ubyte -> zero-ref "V88.[020..021)"
;* V268 tmp254 [V268 ] ( 0, 0 ) ubyte -> zero-ref "V88.[021..022)"
;* V269 tmp255 [V269 ] ( 0, 0 ) int -> zero-ref "V88.[024..028)"
-; V270 tmp256 [V270,T31] ( 2, 16 ) ubyte -> r15 "V88.[028..029)"
-; V271 tmp257 [V271,T32] ( 2, 16 ) ubyte -> r13 "V88.[029..030)"
+; V270 tmp256 [V270,T31] ( 2, 16 ) ubyte -> rbx "V88.[028..029)"
+; V271 tmp257 [V271,T32] ( 2, 16 ) ubyte -> r8 "V88.[029..030)"
;* V272 tmp258 [V272 ] ( 0, 0 ) ref -> zero-ref "V88.[032..040)"
;* V273 tmp259 [V273 ] ( 0, 0 ) long -> zero-ref "V88.[040..048)"
;* V274 tmp260 [V274 ] ( 0, 0 ) int -> zero-ref "V88.[048..052)"
@@ -303,18 +303,18 @@
;* V291 tmp277 [V291 ] ( 0, 0 ) int -> zero-ref "V22.[020..024)"
; V292 cse0 [V292,T03] ( 32, 64 ) ref -> registers multi-def "CSE - aggressive"
;
-; Lcl frame size = 232
+; Lcl frame size = 248
G_M49915_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
mov rax, qword ptr [rbp]
push rax
- sub rsp, 272
- mov qword ptr [rsp+0x3D8], r15
- mov qword ptr [rsp+0x3D0], r14
- mov qword ptr [rsp+0x3C8], r13
- mov qword ptr [rsp+0x3C0], r12
- mov qword ptr [rsp+0x3B8], rbx
- lea rbp, [rsp+0x110]
+ sub rsp, 288
+ mov qword ptr [rsp+0x3E8], r15
+ mov qword ptr [rsp+0x3E0], r14
+ mov qword ptr [rsp+0x3D8], r13
+ mov qword ptr [rsp+0x3D0], r12
+ mov qword ptr [rsp+0x3C8], rbx
+ lea rbp, [rsp+0x120]
xor eax, eax
mov qword ptr [rbp-0x48], rax
mov qword ptr [rbp-0x40], rax
@@ -323,65 +323,65 @@ G_M49915_IG02: ; bbWeight=0.01, gcVars=00000000000000000000000400000000 {
; GC ptr vars +{V03}
mov r14, gword ptr [rbp+0x280]
; gcrRegs +[r14]
- mov gword ptr [rbp-0xA8], r14
+ mov gword ptr [rbp-0xB8], r14
; GC ptr vars +{V239}
mov r13, gword ptr [rbp+0x288]
; gcrRegs +[r13]
- mov gword ptr [rbp-0xB0], r13
+ mov gword ptr [rbp-0xC0], r13
; GC ptr vars +{V240}
mov r12d, dword ptr [rbp+0x290]
- mov dword ptr [rbp-0x6C], r12d
+ mov dword ptr [rbp-0x74], r12d
mov eax, dword ptr [rbp+0x294]
- mov dword ptr [rbp-0x70], eax
+ mov dword ptr [rbp-0x78], eax
mov rcx, gword ptr [rbp+0x208]
; gcrRegs +[rcx]
- mov gword ptr [rbp-0xB8], rcx
+ mov gword ptr [rbp-0xC8], rcx
; GC ptr vars +{V244}
mov edx, dword ptr [rbp+0x210]
- mov dword ptr [rbp-0x74], edx
+ mov dword ptr [rbp-0x7C], edx
mov esi, dword ptr [rbp+0x214]
- mov dword ptr [rbp-0x78], esi
+ mov dword ptr [rbp-0x80], esi
mov r8, gword ptr [rbp+0x218]
; gcrRegs +[r8]
- mov gword ptr [rbp-0xC0], r8
+ mov gword ptr [rbp-0xD0], r8
; GC ptr vars +{V247}
mov r9d, dword ptr [rbp+0x220]
- mov dword ptr [rbp-0x7C], r9d
+ mov dword ptr [rbp-0x84], r9d
mov r10, gword ptr [rbp+0x228]
; gcrRegs +[r10]
- mov gword ptr [rbp-0xC8], r10
+ mov gword ptr [rbp-0xD8], r10
; GC ptr vars +{V249}
mov r11d, dword ptr [rbp+0x230]
- mov dword ptr [rbp-0x80], r11d
+ mov dword ptr [rbp-0x88], r11d
mov edi, dword ptr [rbp+0x234]
- mov dword ptr [rbp-0x84], edi
+ mov dword ptr [rbp-0x8C], edi
mov r15, bword ptr [rbp+0x1D0]
; byrRegs +[r15]
- mov bword ptr [rbp-0xD0], r15
+ mov bword ptr [rbp-0xE0], r15
; GC ptr vars +{V257}
mov r12d, dword ptr [rbp+0x1D8]
jmp G_M49915_IG23
- ;; size=168 bbWeight=0.01 PerfScore 0.29
+ ;; size=174 bbWeight=0.01 PerfScore 0.29
G_M49915_IG03: ; bbWeight=2, gcVars=0000000000000003000000000000C000 {V239 V240 V244 V249}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx r8 r10 r13-r14] +[rbx r15]
; byrRegs -[r15]
; GC ptr vars -{V03 V247 V257}
xor r14, r14
; byrRegs +[r14]
- xor r10d, r10d
- mov rcx, gword ptr [rbp-0xC8]
- ; gcrRegs +[rcx]
- test rcx, rcx
+ xor ecx, ecx
+ mov r10, gword ptr [rbp-0xD8]
+ ; gcrRegs +[r10]
+ test r10, r10
je G_M49915_IG08
- mov rsi, qword ptr [rcx]
+ mov rsi, qword ptr [r10]
test dword ptr [rsi], 0xD1FFAB1E
je SHORT G_M49915_IG05
- mov gword ptr [rbp-0xC8], rcx
- mov rsi, rcx
+ mov gword ptr [rbp-0xD8], r10
+ mov rsi, r10
; gcrRegs +[rsi]
mov rdi, 0xD1FFAB1E ; ubyte[]
call CORINFO_HELP_ISINSTANCEOFARRAY
- ; gcrRegs -[rcx rsi] +[rax]
+ ; gcrRegs -[rsi r10] +[rax]
...
+27 (+2.32%) : 5290.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier0-FullOpts)
@@ -10,14 +10,14 @@
;
; V00 this [V00,T00] ( 27, 55.50) byref -> rbx this single-def
; V01 arg1 [V01,T19] ( 4, 3.50) byref -> r15 single-def
-; V02 loc0 [V02,T01] ( 18, 55.50) ushort -> r12
+; V02 loc0 [V02,T01] ( 18, 57.50) ushort -> r12
; V03 loc1 [V03 ] ( 36, 70.50) struct (32) [rbp-0x48] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder>
-; V04 loc2 [V04,T04] ( 8, 16 ) ushort -> [rbp-0x4C]
+; V04 loc2 [V04,T09] ( 6, 8 ) ushort -> [rbp-0x4C]
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V09 tmp2 [V09,T07] ( 5, 14.50) ushort -> r13 "Inline stloc first use temp"
+; V09 tmp2 [V09,T06] ( 5, 14.50) ushort -> r13 "Inline stloc first use temp"
; V10 tmp3 [V10,T10] ( 4, 8 ) int -> rdi "Inline stloc first use temp"
;* V11 tmp4 [V11 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
; V12 tmp5 [V12,T32] ( 2, 2 ) long -> rax "Inlining Arg"
@@ -25,7 +25,7 @@
; V14 tmp7 [V14,T31] ( 4, 2 ) int -> rax "Inline stloc first use temp"
;* V15 tmp8 [V15 ] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt"
; V16 tmp9 [V16,T02] ( 16, 32 ) ushort -> rsi "Inline stloc first use temp"
-; V17 tmp10 [V17,T11] ( 4, 8 ) int -> r13 "Inline stloc first use temp"
+; V17 tmp10 [V17,T11] ( 4, 8 ) int -> rdi "Inline stloc first use temp"
;* V18 tmp11 [V18 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
; V19 tmp12 [V19,T12] ( 4, 8 ) int -> rdi "Inline stloc first use temp"
;* V20 tmp13 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
@@ -37,14 +37,14 @@
;* V26 tmp19 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
; V27 tmp20 [V27,T16] ( 4, 8 ) int -> rdi "Inline stloc first use temp"
;* V28 tmp21 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
-; V29 tmp22 [V29,T09] ( 4, 10 ) ushort -> r12 "Inline stloc first use temp"
+; V29 tmp22 [V29,T08] ( 4, 10 ) ushort -> r12 "Inline stloc first use temp"
; V30 tmp23 [V30,T17] ( 4, 8 ) int -> rdi "Inline stloc first use temp"
;* V31 tmp24 [V31 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V32 tmp25 [V32,T05] ( 4, 16 ) int -> rbx "Inlining Arg"
+; V32 tmp25 [V32,T04] ( 4, 16 ) int -> rbx "Inlining Arg"
;* V33 tmp26 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V34 tmp27 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp28 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V36 tmp29 [V36,T03] ( 4, 32 ) int -> rbx "Inlining Arg"
+; V36 tmp29 [V36,T03] ( 4, 32 ) int -> r12 "Inlining Arg"
;* V37 tmp30 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V38 tmp31 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V39 tmp32 [V39 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
@@ -63,8 +63,8 @@
; V52 GsCookie [V52 ] ( 1, 1 ) long -> [rbp-0x58] do-not-enreg[X] addr-exposed "GSSecurityCookie"
; V53 cse0 [V53,T18] ( 5, 7 ) int -> r13 multi-def "CSE - moderate"
; V54 cse1 [V54,T33] ( 3, 1.50) int -> rax "CSE - conservative"
-; V55 cse2 [V55,T08] ( 8, 14 ) ref -> r14 "CSE - aggressive"
-; V56 cse3 [V56,T06] ( 4, 16 ) int -> rdi "CSE - aggressive"
+; V55 cse2 [V55,T07] ( 8, 14 ) ref -> r14 "CSE - aggressive"
+; V56 cse3 [V56,T05] ( 4, 16 ) int -> rdi "CSE - aggressive"
;
; Lcl frame size = 56
@@ -103,31 +103,31 @@ G_M25128_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15},
G_M25128_IG03: ; bbWeight=8, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
mov edi, dword ptr [rbx+0x10]
cmp edi, dword ptr [rbx+0x08]
- jge G_M25128_IG24
+ jge G_M25128_IG20
;; size=12 bbWeight=8 PerfScore 48.00
G_M25128_IG04: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
mov edi, dword ptr [rbx+0x10]
lea eax, [rdi+0x01]
mov dword ptr [rbx+0x10], eax
cmp edi, dword ptr [rbx+0x08]
- jae G_M25128_IG61
+ jae G_M25128_IG59
mov rax, bword ptr [rbx]
; byrRegs +[rax]
movzx r13, word ptr [rax+2*rdi]
test r13d, r13d
- je G_M25128_IG62
+ je G_M25128_IG60
;; size=35 bbWeight=2 PerfScore 25.50
G_M25128_IG05: ; bbWeight=8, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
; byrRegs -[rax]
mov r12d, r13d
test r12d, r12d
- je G_M25128_IG31
+ je G_M25128_IG27
;; size=12 bbWeight=8 PerfScore 12.00
G_M25128_IG06: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz
cmp r12d, 44
- je G_M25128_IG25
+ je G_M25128_IG21
cmp r12d, 61
- je G_M25128_IG28
+ je G_M25128_IG24
mov edi, r12d
call [System.Reflection.AssemblyNameParser:IsWhiteSpace(ushort):ubyte]
; gcr arg pop 0
@@ -159,132 +159,110 @@ G_M25128_IG10: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx
mov ecx, r13d
mov eax, dword ptr [rbx+0x10]
cmp eax, dword ptr [rbx+0x08]
- jge G_M25128_IG34
+ jge G_M25128_IG30
lea edi, [rax+0x01]
mov dword ptr [rbx+0x10], edi
cmp eax, dword ptr [rbx+0x08]
- jae G_M25128_IG61
+ jae G_M25128_IG59
mov rdi, bword ptr [rbx]
; byrRegs +[rdi]
movzx r12, word ptr [rdi+2*rax]
test r12d, r12d
- je G_M25128_IG62
+ je G_M25128_IG60
;; size=47 bbWeight=0.50 PerfScore 8.50
-G_M25128_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz
+G_M25128_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
; byrRegs -[rdi]
test r12d, r12d
- je G_M25128_IG49
+ je G_M25128_IG47
test ecx, ecx
- je SHORT G_M25128_IG13
- ;; size=13 bbWeight=4 PerfScore 10.00
+ je G_M25128_IG31
+ ;; size=17 bbWeight=4 PerfScore 10.00
G_M25128_IG12: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
cmp r12d, ecx
- je G_M25128_IG50
+ je G_M25128_IG48
;; size=9 bbWeight=2 PerfScore 2.50
-G_M25128_IG13: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz
- test ecx, ecx
- jne SHORT G_M25128_IG15
- ;; size=4 bbWeight=4 PerfScore 5.00
-G_M25128_IG14: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
- cmp r12d, 44
- je G_M25128_IG57
- cmp r12d, 61
- je G_M25128_IG57
- ;; size=20 bbWeight=2 PerfScore 5.00
-G_M25128_IG15: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz
- mov dword ptr [rbp-0x4C], ecx
- test ecx, ecx
- jne SHORT G_M25128_IG17
- ;; size=7 bbWeight=4 PerfScore 9.00
-G_M25128_IG16: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
- cmp r12d, 39
- je G_M25128_IG62
- cmp r12d, 34
- je G_M25128_IG62
- ;; size=20 bbWeight=2 PerfScore 5.00
-G_M25128_IG17: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+G_M25128_IG13: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
cmp r12d, 92
- jne G_M25128_IG46
+ jne G_M25128_IG44
;; size=10 bbWeight=4 PerfScore 5.00
-G_M25128_IG18: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+G_M25128_IG14: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
mov r13d, dword ptr [rbx+0x10]
cmp r13d, dword ptr [rbx+0x08]
- jge G_M25128_IG35
- lea edi, [r13+0x01]
- mov dword ptr [rbx+0x10], edi
- cmp r13d, dword ptr [rbx+0x08]
- jae G_M25128_IG61
- mov rdi, bword ptr [rbx]
- ; byrRegs +[rdi]
- mov esi, r13d
- movzx rsi, word ptr [rdi+2*rsi]
+ jge G_M25128_IG33
+ mov edi, r13d
+ lea esi, [rdi+0x01]
+ mov dword ptr [rbx+0x10], esi
+ cmp edi, dword ptr [rbx+0x08]
+ jae G_M25128_IG59
+ mov rsi, bword ptr [rbx]
+ ; byrRegs +[rsi]
+ movzx rsi, word ptr [rsi+2*rdi]
+ ; byrRegs -[rsi]
test esi, esi
- je G_M25128_IG62
- ;; size=49 bbWeight=2 PerfScore 34.00
-G_M25128_IG19: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz
- ; byrRegs -[rdi]
+ je G_M25128_IG60
+ ;; size=47 bbWeight=2 PerfScore 34.00
+G_M25128_IG15: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz
cmp esi, 61
- ja G_M25128_IG37
+ ja G_M25128_IG35
cmp esi, 39
- ja G_M25128_IG36
+ ja G_M25128_IG34
cmp esi, 34
- je SHORT G_M25128_IG20
+ je SHORT G_M25128_IG16
cmp esi, 39
- jne G_M25128_IG62
+ jne G_M25128_IG60
;; size=32 bbWeight=2 PerfScore 10.00
-G_M25128_IG20: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+G_M25128_IG16: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
mov edi, dword ptr [rbp-0x40]
mov rax, bword ptr [rbp-0x38]
; byrRegs +[rax]
mov edx, dword ptr [rbp-0x30]
cmp edi, edx
- jae G_M25128_IG39
+ jae G_M25128_IG37
mov edx, edi
mov word ptr [rax+2*rdx], si
inc edi
mov dword ptr [rbp-0x40], edi
;; size=29 bbWeight=2 PerfScore 13.50
-G_M25128_IG21: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+G_M25128_IG17: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
; byrRegs -[rax]
mov edi, dword ptr [rbx+0x10]
cmp edi, dword ptr [rbx+0x08]
- jge G_M25128_IG48
+ jge G_M25128_IG46
;; size=12 bbWeight=4 PerfScore 24.00
-G_M25128_IG22: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+G_M25128_IG18: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
mov edi, dword ptr [rbx+0x10]
- lea esi, [rdi+0x01]
- mov dword ptr [rbx+0x10], esi
+ lea eax, [rdi+0x01]
+ mov dword ptr [rbx+0x10], eax
cmp edi, dword ptr [rbx+0x08]
- jae G_M25128_IG61
- mov rsi, bword ptr [rbx]
- ; byrRegs +[rsi]
- movzx r12, word ptr [rsi+2*rdi]
+ jae G_M25128_IG59
+ mov rax, bword ptr [rbx]
+ ; byrRegs +[rax]
+ movzx r12, word ptr [rax+2*rdi]
test r12d, r12d
- je G_M25128_IG62
+ je G_M25128_IG60
;; size=35 bbWeight=2 PerfScore 25.50
-G_M25128_IG23: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
- ; byrRegs -[rsi]
- mov ecx, dword ptr [rbp-0x4C]
+G_M25128_IG19: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+ ; byrRegs -[rax]
jmp G_M25128_IG11
- ;; size=8 bbWeight=4 PerfScore 12.00
-G_M25128_IG24: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+ ;; size=5 bbWeight=4 PerfScore 8.00
...
+27 (+3.00%) : 7330.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
@@ -9,9 +9,9 @@
; Final local variable assignments
;
; V00 arg0 [V00,T07] ( 22, 23 ) ref -> rbx class-hnd single-def <System.Collections.Generic.List`1[System.String]>
-; V01 loc0 [V01,T02] ( 13, 47.50) ref -> r15 class-hnd exact single-def <System.String>
+; V01 loc0 [V01,T03] ( 13, 47.50) ref -> r15 class-hnd exact single-def <System.String>
; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 40,153.08) int -> r13
+; V03 loc2 [V03,T00] ( 42,187.08) int -> r13
; V04 loc3 [V04,T20] ( 4, 2 ) int -> rdi
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
; V06 loc5 [V06,T06] ( 9, 25.50) int -> r14
@@ -46,13 +46,13 @@
; V35 cse2 [V35,T11] ( 3, 12 ) int -> rdx "CSE - moderate"
; V36 cse3 [V36,T10] ( 3, 12 ) ref -> rsi "CSE - moderate"
; V37 cse4 [V37,T26] ( 3, 1.50) long -> r12 "CSE - moderate"
-; V38 cse5 [V38,T03] ( 15, 30.54) int -> r14 "CSE - aggressive"
+; V38 cse5 [V38,T01] ( 17, 64.54) int -> r14 "CSE - aggressive"
; V39 cse6 [V39,T25] ( 3, 1.50) ref -> rsi "CSE - moderate"
; V40 cse7 [V40,T16] ( 2, 8 ) int -> rax "CSE - moderate"
; V41 cse8 [V41,T12] ( 3, 11.88) int -> rdi "CSE - moderate"
; V42 cse9 [V42,T18] ( 7, 3.50) int -> [rbp-0x3C] spill-single-def "CSE - moderate"
; V43 cse10 [V43,T17] ( 3, 6 ) int -> rdx "CSE - moderate"
-; V44 cse11 [V44,T01] ( 3, 48 ) long -> rsi "CSE - aggressive"
+; V44 cse11 [V44,T02] ( 3, 48 ) long -> rsi "CSE - aggressive"
;
; Lcl frame size = 40
@@ -74,24 +74,24 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=42 bbWeight=1 PerfScore 9.50
G_M28069_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp dword ptr [rbx+0x10], 0
- je G_M28069_IG27
+ je G_M28069_IG26
;; size=10 bbWeight=1 PerfScore 4.00
G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rbx+0x08]
; gcrRegs +[rax]
cmp dword ptr [rax+0x08], 0
- jbe G_M28069_IG31
+ jbe G_M28069_IG30
mov r15, gword ptr [rax+0x10]
; gcrRegs +[r15]
mov r14d, dword ptr [r15+0x08]
cmp r14d, 100
- jg G_M28069_IG27
+ jg G_M28069_IG26
lea edi, [r14+0x02]
mov eax, edi
; gcrRegs -[rax]
mov esi, 2
mul rdx:rax, rsi
- jb G_M28069_IG30
+ jb G_M28069_IG29
mov rsi, rax
test rsi, rsi
je SHORT G_M28069_IG05
@@ -112,100 +112,100 @@ G_M28069_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
;; size=22 bbWeight=0.50 PerfScore 2.62
G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
test edi, edi
- jl G_M28069_IG32
+ jl G_M28069_IG31
mov bword ptr [rbp-0x38], rsi
mov dword ptr [rbp-0x30], edi
xor r13d, r13d
test r14d, r14d
- jle G_M28069_IG14
+ jle G_M28069_IG13
;; size=27 bbWeight=0.50 PerfScore 2.38
G_M28069_IG06: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov edi, r13d
movzx rdi, word ptr [r15+2*rdi+0x0C]
cmp edi, 39
- jne SHORT G_M28069_IG10
+ jne SHORT G_M28069_IG09
;; size=14 bbWeight=4 PerfScore 14.00
G_M28069_IG07: ; bbWeight=16, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
cmp r13d, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
mov esi, r13d
+ cmp r13d, r14d
+ jae G_M28069_IG30
movzx rax, word ptr [r15+2*rsi+0x0C]
mov word ptr [rdi+2*rsi], ax
inc r13d
cmp r14d, r13d
- jle SHORT G_M28069_IG08
+ jle G_M28069_IG26
+ cmp r13d, r14d
+ jae G_M28069_IG30
mov edi, r13d
; byrRegs -[rdi]
cmp word ptr [r15+2*rdi+0x0C], 39
jne SHORT G_M28069_IG07
- ;; size=47 bbWeight=16 PerfScore 208.00
-G_M28069_IG08: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- cmp r14d, r13d
- jg SHORT G_M28069_IG11
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M28069_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx r15]
- jmp G_M28069_IG27
- ;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M28069_IG10: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx r15]
+ ;; size=69 bbWeight=16 PerfScore 248.00
+G_M28069_IG08: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M28069_IG10
+ ;; size=2 bbWeight=4 PerfScore 8.00
+G_M28069_IG09: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
cmp edi, 121
- je SHORT G_M28069_IG13
+ je SHORT G_M28069_IG12
;; size=5 bbWeight=2 PerfScore 2.50
-G_M28069_IG11: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG10: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
cmp r13d, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
mov esi, r13d
+ cmp r13d, r14d
+ jae G_M28069_IG30
mov eax, r13d
movzx rax, word ptr [r15+2*rax+0x0C]
mov word ptr [rdi+2*rsi], ax
inc r13d
cmp r14d, r13d
- jg SHORT G_M28069_IG06
- ;; size=38 bbWeight=4 PerfScore 36.00
-G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ jg G_M28069_IG06
+ ;; size=51 bbWeight=4 PerfScore 41.00
+G_M28069_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdi]
- jmp SHORT G_M28069_IG14
+ jmp SHORT G_M28069_IG13
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
cmp r13d, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
mov esi, r13d
mov word ptr [rdi+2*rsi], 121
;; size=23 bbWeight=0.50 PerfScore 2.62
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdi]
lea edi, [r14-0x01]
cmp edi, r13d
- jle G_M28069_IG27
+ jle G_M28069_IG26
lea edi, [r13+0x01]
cmp edi, r14d
- jae G_M28069_IG31
+ jae G_M28069_IG30
lea edi, [r13+0x01]
mov r12d, edi
cmp word ptr [r15+2*r12+0x0C], 121
- jne G_M28069_IG27
+ jne G_M28069_IG26
lea eax, [r13+0x02]
mov dword ptr [rbp-0x3C], eax
cmp r14d, eax
- jle SHORT G_M28069_IG15
+ jle SHORT G_M28069_IG14
cmp eax, r14d
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov edi, eax
cmp word ptr [r15+2*rdi+0x0C], 121
mov eax, dword ptr [rbp-0x3C]
- je G_M28069_IG27
+ je G_M28069_IG26
;; size=85 bbWeight=0.50 PerfScore 8.75
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
lea edi, [r13+0x03]
cmp edi, dword ptr [rbp-0x30]
- jl SHORT G_M28069_IG16
+ jl SHORT G_M28069_IG15
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -215,37 +215,37 @@ G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
; gcr arg pop 0
mov eax, dword ptr [rbp-0x3C]
;; size=31 bbWeight=0.50 PerfScore 4.00
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
lea edi, [r13+0x01]
cmp edi, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
mov word ptr [rdi+2*r12], 121
cmp eax, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
mov ecx, eax
mov word ptr [rdi+2*rcx], 121
lea edi, [r13+0x03]
; byrRegs -[rdi]
cmp edi, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
lea ecx, [r13+0x03]
mov word ptr [rdi+2*rcx], 121
mov r13d, eax
cmp r14d, r13d
- jle SHORT G_M28069_IG20
+ jle SHORT G_M28069_IG19
test r13d, r13d
- jl SHORT G_M28069_IG19
+ jl SHORT G_M28069_IG18
;; size=85 bbWeight=0.50 PerfScore 9.75
-G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG16: ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdi]
lea edi, [r13+0x02]
cmp edi, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rax, bword ptr [rbp-0x38]
; byrRegs +[rax]
mov ecx, r13d
@@ -253,29 +253,29 @@ G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
mov word ptr [rax+2*rdi], cx
inc r13d
cmp r14d, r13d
- jg SHORT G_M28069_IG17
+ jg SHORT G_M28069_IG16
;; size=38 bbWeight=3.96 PerfScore 36.63
-G_M28069_IG18: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
- jmp SHORT G_M28069_IG20
+ jmp SHORT G_M28069_IG19
...
coreclr_tests.run.linux.x64.checked.mch
-32 (-30.48%) : 502069.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -9,14 +9,16 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> registers
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r8 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> r9 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> rax "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> r9 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> r8 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> r8 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -32,72 +34,59 @@ G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, b
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx rdi]
cmp esi, ecx
- jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jl SHORT G_M264_IG11
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref
; byrRegs +[rdx rdi]
- mov r8d, ecx
- ;; size=3 bbWeight=0.50 PerfScore 0.12
+ mov eax, ecx
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- dec r8d
- mov eax, r8d
- test eax, eax
- jl SHORT G_M264_IG06
+ dec eax
+ js SHORT G_M264_IG09
cmp eax, esi
- jae SHORT G_M264_IG14
- mov r9d, eax
- mov r10d, dword ptr [rdi+4*r9]
- cmp eax, ecx
- jae SHORT G_M264_IG14
- cmp r10d, dword ptr [rdx+4*r9]
- je SHORT G_M264_IG08
- ;; size=31 bbWeight=4 PerfScore 42.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- test r8d, r8d
- jge SHORT G_M264_IG09
- xor eax, eax
- ;; size=7 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
- pop rbp
- ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, gcvars, byref, isz
+ jae SHORT G_M264_IG13
mov r8d, eax
- jmp SHORT G_M264_IG05
- ;; size=5 bbWeight=2 PerfScore 4.50
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- cmp r8d, esi
- jae SHORT G_M264_IG14
- mov r9d, r8d
- mov eax, dword ptr [rdi+4*r9]
- cmp r8d, ecx
- jae SHORT G_M264_IG14
- cmp eax, dword ptr [rdx+4*r9]
- jb SHORT G_M264_IG12
- ;; size=23 bbWeight=0.50 PerfScore 4.38
-G_M264_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r9d, dword ptr [rdi+4*r8]
+ cmp eax, ecx
+ jae SHORT G_M264_IG13
+ mov r8d, dword ptr [rdx+4*r8]
+ cmp r9d, r8d
+ je SHORT G_M264_IG05
+ ;; size=28 bbWeight=4 PerfScore 37.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx rdi]
+ cmp r8d, r9d
+ ja SHORT G_M264_IG11
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 105, prolog size 4, PerfScore 58.38, instruction count 43, allocated bytes for code 105 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 73, prolog size 4, PerfScore 44.50, instruction count 32, allocated bytes for code 73 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
-30 (-10.10%) : 200849.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
@@ -10,19 +10,19 @@
; Final local variable assignments
;
; V00 arg0 [V00,T02] ( 9, 48.71) ref -> rbx class-hnd single-def <System.String>
-;* V01 loc0 [V01,T05] ( 0, 0 ) ubyte -> zero-ref
-; V02 loc1 [V02,T06] ( 3, 1 ) ref -> r13 class-hnd exact single-def <System.Text.StringBuilder>
-; V03 loc2 [V03,T00] ( 8,177.50) int -> r14
-; V04 loc3 [V04,T04] ( 9, 2 ) int -> r12
-; V05 loc4 [V05,T08] ( 3, 0 ) ushort -> r14
+;* V01 loc0 [V01,T03] ( 0, 0 ) ubyte -> zero-ref
+; V02 loc1 [V02,T06] ( 3, 0 ) ref -> r14 class-hnd exact single-def <System.Text.StringBuilder>
+; V03 loc2 [V03,T00] ( 8,177.50) int -> rax
+; V04 loc3 [V04,T05] ( 8, 0 ) int -> r13
+; V05 loc4 [V05,T08] ( 3, 0 ) ushort -> r12
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T03] ( 3, 6 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder>
-;* V08 tmp2 [V08,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V07 tmp1 [V07,T07] ( 3, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder>
+;* V08 tmp2 [V08,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V09 tmp3 [V09 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
;* V10 tmp4 [V10 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
;* V11 tmp5 [V11 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V12 tmp6 [V12,T09] ( 2, 0 ) ushort -> [rbp-0x2C] spill-single-def "Inlining Arg"
-; V13 cse0 [V13,T01] ( 11, 52.93) int -> r15 "CSE - aggressive"
+; V13 cse0 [V13,T01] ( 10, 50.93) int -> r15 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -38,105 +38,125 @@ G_M42672_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rbx, rdi
; gcrRegs +[rbx]
;; size=19 bbWeight=1 PerfScore 7.75
-G_M42672_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M42672_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
- je G_M42672_IG16
- ;; size=9 bbWeight=1 PerfScore 1.25
-G_M42672_IG03: ; bbWeight=0.71, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je SHORT G_M42672_IG10
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M42672_IG03: ; bbWeight=0.71, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov r15d, dword ptr [rbx+0x08]
test r15d, r15d
- je G_M42672_IG16
- ;; size=13 bbWeight=0.71 PerfScore 2.32
-G_M42672_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- xor r14d, r14d
+ je SHORT G_M42672_IG10
+ ;; size=9 bbWeight=0.71 PerfScore 2.32
+G_M42672_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ xor eax, eax
test r15d, r15d
- jle G_M42672_IG16
- ;; size=12 bbWeight=1 PerfScore 1.50
+ jle SHORT G_M42672_IG10
+ ;; size=7 bbWeight=1 PerfScore 1.50
G_M42672_IG05: ; bbWeight=41.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov edi, r14d
+ mov edi, eax
cmp word ptr [rbx+2*rdi+0x0C], 47
je SHORT G_M42672_IG07
- ;; size=11 bbWeight=41.50 PerfScore 176.38
+ ;; size=10 bbWeight=41.50 PerfScore 176.38
G_M42672_IG06: ; bbWeight=41.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- inc r14d
- cmp r15d, r14d
- jle G_M42672_IG16
+ inc eax
+ cmp r15d, eax
+ jle SHORT G_M42672_IG10
jmp SHORT G_M42672_IG05
- ;; size=14 bbWeight=41.50 PerfScore 145.25
+ ;; size=9 bbWeight=41.50 PerfScore 145.25
G_M42672_IG07: ; bbWeight=3.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- lea edi, [r14+0x01]
+ lea edi, [rax+0x01]
cmp r15d, edi
jle SHORT G_M42672_IG06
- ;; size=9 bbWeight=3.50 PerfScore 6.12
+ ;; size=8 bbWeight=3.50 PerfScore 6.12
G_M42672_IG08: ; bbWeight=3.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- lea edi, [r14+0x01]
+ lea edi, [rax+0x01]
cmp edi, r15d
- jae G_M42672_IG15
- lea edi, [r14+0x01]
+ jae SHORT G_M42672_IG09
+ lea edi, [rax+0x01]
cmp word ptr [rbx+2*rdi+0x0C], 47
- jne SHORT G_M42672_IG06
- ;; size=25 bbWeight=3.50 PerfScore 21.88
-G_M42672_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M42672_IG12
+ jmp SHORT G_M42672_IG06
+ ;; size=21 bbWeight=3.50 PerfScore 28.88
+G_M42672_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M42672_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx]
+ mov rax, rbx
+ ; gcrRegs +[rax]
+ ;; size=3 bbWeight=0 PerfScore 0.00
+G_M42672_IG11: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=15 bbWeight=0 PerfScore 0.00
+G_M42672_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax]
mov rdi, 0xD1FFAB1E ; System.Text.StringBuilder
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
- mov r13, rax
- ; gcrRegs +[r13]
+ mov r14, rax
+ ; gcrRegs +[r14]
mov esi, r15d
- mov rdi, r13
+ mov rdi, r14
; gcrRegs +[rdi]
mov edx, 0xD1FFAB1E
call [System.Text.StringBuilder:.ctor(int,int):this]
; gcrRegs -[rax rdi]
; gcr arg pop 0
- xor r12d, r12d
- cmp r15d, r12d
- jle SHORT G_M42672_IG13
- ;; size=43 bbWeight=1 PerfScore 6.75
-G_M42672_IG10: ; bbWeight=0, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
- mov edi, r12d
- movzx r14, word ptr [rbx+2*rdi+0x0C]
+ xor r13d, r13d
+ jmp SHORT G_M42672_IG16
+ ;; size=40 bbWeight=0 PerfScore 0.00
+G_M42672_IG13: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+ mov edi, r13d
+ movzx r12, word ptr [rbx+2*rdi+0x0C]
mov edi, 1
call [System.Diagnostics.Debug:Assert(ubyte)]
; gcr arg pop 0
- cmp r14d, 47
- jne SHORT G_M42672_IG11
- lea edi, [r12+0x01]
+ cmp r12d, 47
+ jne SHORT G_M42672_IG14
+ lea edi, [r13+0x01]
cmp r15d, edi
- jle SHORT G_M42672_IG11
- lea edi, [r12+0x01]
+ jle SHORT G_M42672_IG14
+ lea edi, [r13+0x01]
cmp edi, r15d
- jae SHORT G_M42672_IG15
- lea edi, [r12+0x01]
+ jae SHORT G_M42672_IG09
+ lea edi, [r13+0x01]
movzx rax, word ptr [rbx+2*rdi+0x0C]
mov dword ptr [rbp-0x2C], eax
mov edi, 1
call [System.Diagnostics.Debug:Assert(ubyte)]
; gcr arg pop 0
cmp dword ptr [rbp-0x2C], 47
- je SHORT G_M42672_IG12
- ;; size=76 bbWeight=0 PerfScore 0.00
-G_M42672_IG11: ; bbWeight=0, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
- mov rdi, r13
+ je SHORT G_M42672_IG15
+ ;; size=73 bbWeight=0 PerfScore 0.00
+G_M42672_IG14: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+ mov rdi, r14
; gcrRegs +[rdi]
- mov esi, r14d
+ mov esi, r12d
call [System.Text.StringBuilder:Append(ushort):System.Text.StringBuilder:this]
; gcrRegs -[rdi] +[rax]
; gcr arg pop 0
;; size=12 bbWeight=0 PerfScore 0.00
-G_M42672_IG12: ; bbWeight=0, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+G_M42672_IG15: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- inc r12d
- cmp r15d, r12d
- jg SHORT G_M42672_IG10
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M42672_IG13: ; bbWeight=0, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- mov rdi, r13
- ; gcrRegs +[rdi]
+ inc r13d
;; size=3 bbWeight=0 PerfScore 0.00
-G_M42672_IG14: ; bbWeight=0, epilog, nogc, extend
+G_M42672_IG16: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+ cmp r15d, r13d
+ jg SHORT G_M42672_IG13
+ mov rdi, r14
+ ; gcrRegs +[rdi]
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M42672_IG17: ; bbWeight=0, epilog, nogc, extend
add rsp, 8
pop rbx
pop r12
@@ -147,28 +167,8 @@ G_M42672_IG14: ; bbWeight=0, epilog, nogc, extend
tail.jmp [<unknown method>]
; gcr arg pop 0
;; size=20 bbWeight=0 PerfScore 0.00
-G_M42672_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rdi r13]
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M42672_IG16: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx]
- mov rax, rbx
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=0 PerfScore 0.00
-G_M42672_IG17: ; bbWeight=0, epilog, nogc, extend
- add rsp, 8
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 297, prolog size 19, PerfScore 369.20, instruction count 87, allocated bytes for code 297 (MethodHash=f2e2594f) for method System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
+; Total bytes of code 267, prolog size 19, PerfScore 369.45, instruction count 87, allocated bytes for code 267 (MethodHash=f2e2594f) for method System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
; ============================================================
Unwind Info:
-30 (-10.10%) : 205793.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
@@ -10,19 +10,19 @@
; Final local variable assignments
;
; V00 arg0 [V00,T02] ( 9, 59 ) ref -> rbx class-hnd single-def <System.String>
-;* V01 loc0 [V01,T05] ( 0, 0 ) ubyte -> zero-ref
-; V02 loc1 [V02,T06] ( 3, 1 ) ref -> r13 class-hnd exact single-def <System.Text.StringBuilder>
-; V03 loc2 [V03,T00] ( 8,215 ) int -> r14
-; V04 loc3 [V04,T04] ( 9, 2 ) int -> r12
-; V05 loc4 [V05,T08] ( 3, 0 ) ushort -> r14
+;* V01 loc0 [V01,T03] ( 0, 0 ) ubyte -> zero-ref
+; V02 loc1 [V02,T06] ( 3, 0 ) ref -> r14 class-hnd exact single-def <System.Text.StringBuilder>
+; V03 loc2 [V03,T00] ( 8,215 ) int -> rax
+; V04 loc3 [V04,T05] ( 8, 0 ) int -> r13
+; V05 loc4 [V05,T08] ( 3, 0 ) ushort -> r12
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T03] ( 3, 6 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder>
-;* V08 tmp2 [V08,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V07 tmp1 [V07,T07] ( 3, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder>
+;* V08 tmp2 [V08,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V09 tmp3 [V09 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
;* V10 tmp4 [V10 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
;* V11 tmp5 [V11 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V12 tmp6 [V12,T09] ( 2, 0 ) ushort -> [rbp-0x2C] spill-single-def "Inlining Arg"
-; V13 cse0 [V13,T01] ( 11, 66 ) int -> r15 "CSE - aggressive"
+; V13 cse0 [V13,T01] ( 10, 64 ) int -> r15 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -38,99 +38,119 @@ G_M42672_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rbx, rdi
; gcrRegs +[rbx]
;; size=19 bbWeight=1 PerfScore 7.75
-G_M42672_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M42672_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
- je G_M42672_IG13
+ je SHORT G_M42672_IG07
mov r15d, dword ptr [rbx+0x08]
test r15d, r15d
- je G_M42672_IG13
- xor r14d, r14d
+ je SHORT G_M42672_IG07
+ xor eax, eax
test r15d, r15d
- jle G_M42672_IG13
- ;; size=34 bbWeight=1 PerfScore 6.00
+ jle SHORT G_M42672_IG07
+ ;; size=21 bbWeight=1 PerfScore 6.00
G_M42672_IG03: ; bbWeight=49, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov edi, r14d
+ mov edi, eax
cmp word ptr [rbx+2*rdi+0x0C], 47
je SHORT G_M42672_IG05
- ;; size=11 bbWeight=49 PerfScore 208.25
+ ;; size=10 bbWeight=49 PerfScore 208.25
G_M42672_IG04: ; bbWeight=49, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- inc r14d
- cmp r15d, r14d
- jle G_M42672_IG13
+ inc eax
+ cmp r15d, eax
+ jle SHORT G_M42672_IG07
jmp SHORT G_M42672_IG03
- ;; size=14 bbWeight=49 PerfScore 171.50
+ ;; size=9 bbWeight=49 PerfScore 171.50
G_M42672_IG05: ; bbWeight=6, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- lea edi, [r14+0x01]
+ lea edi, [rax+0x01]
cmp r15d, edi
jle SHORT G_M42672_IG04
- lea edi, [r14+0x01]
+ lea edi, [rax+0x01]
cmp edi, r15d
- jae G_M42672_IG12
- lea edi, [r14+0x01]
+ jae SHORT G_M42672_IG06
+ lea edi, [rax+0x01]
cmp word ptr [rbx+2*rdi+0x0C], 47
- jne SHORT G_M42672_IG04
- ;; size=34 bbWeight=6 PerfScore 48.00
-G_M42672_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M42672_IG09
+ jmp SHORT G_M42672_IG04
+ ;; size=29 bbWeight=6 PerfScore 60.00
+G_M42672_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M42672_IG07: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx]
+ mov rax, rbx
+ ; gcrRegs +[rax]
+ ;; size=3 bbWeight=0 PerfScore 0.00
+G_M42672_IG08: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=15 bbWeight=0 PerfScore 0.00
+G_M42672_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax]
mov rdi, 0xD1FFAB1E ; System.Text.StringBuilder
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
- mov r13, rax
- ; gcrRegs +[r13]
+ mov r14, rax
+ ; gcrRegs +[r14]
mov esi, r15d
- mov rdi, r13
+ mov rdi, r14
; gcrRegs +[rdi]
mov edx, 0xD1FFAB1E
call [System.Text.StringBuilder:.ctor(int,int):this]
; gcrRegs -[rax rdi]
; gcr arg pop 0
- xor r12d, r12d
- cmp r15d, r12d
- jle SHORT G_M42672_IG10
- ;; size=43 bbWeight=1 PerfScore 6.75
-G_M42672_IG07: ; bbWeight=0, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
- mov edi, r12d
- movzx r14, word ptr [rbx+2*rdi+0x0C]
+ xor r13d, r13d
+ jmp SHORT G_M42672_IG13
+ ;; size=40 bbWeight=0 PerfScore 0.00
+G_M42672_IG10: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+ mov edi, r13d
+ movzx r12, word ptr [rbx+2*rdi+0x0C]
mov edi, 1
call [System.Diagnostics.Debug:Assert(ubyte)]
; gcr arg pop 0
- cmp r14d, 47
- jne SHORT G_M42672_IG08
- lea edi, [r12+0x01]
+ cmp r12d, 47
+ jne SHORT G_M42672_IG11
+ lea edi, [r13+0x01]
cmp r15d, edi
- jle SHORT G_M42672_IG08
- lea edi, [r12+0x01]
+ jle SHORT G_M42672_IG11
+ lea edi, [r13+0x01]
cmp edi, r15d
- jae SHORT G_M42672_IG12
- lea edi, [r12+0x01]
+ jae SHORT G_M42672_IG06
+ lea edi, [r13+0x01]
movzx rax, word ptr [rbx+2*rdi+0x0C]
mov dword ptr [rbp-0x2C], eax
mov edi, 1
call [System.Diagnostics.Debug:Assert(ubyte)]
; gcr arg pop 0
cmp dword ptr [rbp-0x2C], 47
- je SHORT G_M42672_IG09
- ;; size=76 bbWeight=0 PerfScore 0.00
-G_M42672_IG08: ; bbWeight=0, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
- mov rdi, r13
+ je SHORT G_M42672_IG12
+ ;; size=73 bbWeight=0 PerfScore 0.00
+G_M42672_IG11: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+ mov rdi, r14
; gcrRegs +[rdi]
- mov esi, r14d
+ mov esi, r12d
call [System.Text.StringBuilder:Append(ushort):System.Text.StringBuilder:this]
; gcrRegs -[rdi] +[rax]
; gcr arg pop 0
;; size=12 bbWeight=0 PerfScore 0.00
-G_M42672_IG09: ; bbWeight=0, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+G_M42672_IG12: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- inc r12d
- cmp r15d, r12d
- jg SHORT G_M42672_IG07
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M42672_IG10: ; bbWeight=0, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- mov rdi, r13
- ; gcrRegs +[rdi]
+ inc r13d
;; size=3 bbWeight=0 PerfScore 0.00
-G_M42672_IG11: ; bbWeight=0, epilog, nogc, extend
+G_M42672_IG13: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+ cmp r15d, r13d
+ jg SHORT G_M42672_IG10
+ mov rdi, r14
+ ; gcrRegs +[rdi]
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M42672_IG14: ; bbWeight=0, epilog, nogc, extend
add rsp, 8
pop rbx
pop r12
@@ -141,28 +161,8 @@ G_M42672_IG11: ; bbWeight=0, epilog, nogc, extend
tail.jmp [<unknown method>]
; gcr arg pop 0
;; size=20 bbWeight=0 PerfScore 0.00
-G_M42672_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rdi r13]
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M42672_IG13: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx]
- mov rax, rbx
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=0 PerfScore 0.00
-G_M42672_IG14: ; bbWeight=0, epilog, nogc, extend
- add rsp, 8
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 297, prolog size 19, PerfScore 448.25, instruction count 87, allocated bytes for code 297 (MethodHash=f2e2594f) for method System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
+; Total bytes of code 267, prolog size 19, PerfScore 453.50, instruction count 87, allocated bytes for code 267 (MethodHash=f2e2594f) for method System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
; ============================================================
Unwind Info:
+20 (+3.55%) : 217051.dasm - System.Reflection.TypeNameParser:GetType(System.String,ubyte,ubyte,System.Reflection.Assembly):System.Type (Instrumented Tier1)
@@ -18,19 +18,19 @@
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V10 tmp5 [V10,T20] ( 2, 2 ) int -> r8 "Inlining Arg"
-; V11 tmp6 [V11,T18] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
+; V10 tmp5 [V10,T19] ( 2, 2 ) int -> r8 "Inlining Arg"
+; V11 tmp6 [V11,T17] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp9 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V15 tmp10 [V15,T21] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <System.Type>
-; V16 tmp11 [V16,T14] ( 6, 3 ) ref -> rbx class-hnd single-def "Inline stloc first use temp" <System.Reflection.TypeNameParser+TypeName>
+; V16 tmp11 [V16,T14] ( 7, 3 ) ref -> rbx class-hnd single-def "Inline stloc first use temp" <System.Reflection.TypeNameParser+TypeName>
; V17 tmp12 [V17,T22] ( 5, 1 ) ref -> r15 class-hnd "Inline stloc first use temp" <System.String>
;* V18 tmp13 [V18 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V19 tmp14 [V19,T23] ( 3, 1 ) ref -> rax "guarded devirt return temp"
;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.TypeNameParser+NamespaceTypeName>
;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V22 tmp17 [V22,T15] ( 4, 2 ) int -> r13 "Inline stloc first use temp"
+; V22 tmp17 [V22,T20] ( 4, 1.50) int -> r13 "Inline stloc first use temp"
; V23 tmp18 [V23,T29] ( 3, 0 ) int -> rdi "Span.get_Item index"
; V24 tmp19 [V24,T24] ( 3, 1 ) int -> r14
;* V25 tmp20 [V25 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp"
@@ -55,11 +55,11 @@
;* V44 tmp39 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V45 tmp40 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V46 tmp41 [V46 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[System.String]>
-; V47 tmp42 [V47,T19] ( 2, 2 ) ref -> rsi class-hnd exact single-def "impAppendStmt" <System.String>
+; V47 tmp42 [V47,T18] ( 2, 2 ) ref -> rsi class-hnd exact single-def "impAppendStmt" <System.String>
;* V48 tmp43 [V48 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
;* V49 tmp44 [V49 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
-; V50 tmp45 [V50,T16] ( 3, 2 ) byref -> rax "field V07._reference (fldOffset=0x0)" P-INDEP
-; V51 tmp46 [V51,T17] ( 3, 2 ) int -> r8 "field V07._length (fldOffset=0x8)" P-INDEP
+; V50 tmp45 [V50,T15] ( 3, 2 ) byref -> rax "field V07._reference (fldOffset=0x0)" P-INDEP
+; V51 tmp46 [V51,T16] ( 3, 2 ) int -> r8 "field V07._length (fldOffset=0x8)" P-INDEP
; V52 tmp47 [V52,T25] ( 2, 1 ) byref -> rax single-def "field V08._reference (fldOffset=0x0)" P-INDEP
; V53 tmp48 [V53,T27] ( 2, 1 ) int -> r8 "field V08._length (fldOffset=0x8)" P-INDEP
;* V54 tmp49 [V54 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
@@ -168,7 +168,7 @@ G_M33298_IG10: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
mov rbx, rax
; gcrRegs +[rbx]
test rbx, rbx
- je G_M33298_IG29
+ je G_M33298_IG28
;; size=40 bbWeight=1 PerfScore 10.00
G_M33298_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
@@ -185,7 +185,7 @@ G_M33298_IG12: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
;; size=10 bbWeight=4 PerfScore 13.00
G_M33298_IG13: ; bbWeight=3.82, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
cmp edi, eax
- jae G_M33298_IG28
+ jae G_M33298_IG27
mov rax, bword ptr [rbp-0x30]
; byrRegs +[rax]
mov edi, edi
@@ -196,7 +196,7 @@ G_M33298_IG13: ; bbWeight=3.82, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
; byrRegs -[rax]
; gcr arg pop 0
test eax, eax
- jne G_M33298_IG30
+ jne G_M33298_IG29
;; size=40 bbWeight=3.82 PerfScore 38.18
G_M33298_IG14: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M33298_IG16
@@ -205,12 +205,12 @@ G_M33298_IG15: ; bbWeight=3.82, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
mov edi, edi
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rdi+rax], 128
- jne G_M33298_IG30
+ jne G_M33298_IG29
;; size=22 bbWeight=3.82 PerfScore 17.18
G_M33298_IG16: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbp-0x40]
cmp edi, dword ptr [rbp-0x28]
- jl G_M33298_IG31
+ jl G_M33298_IG30
xor r14d, r14d
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M33298_IG17: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
@@ -219,9 +219,9 @@ G_M33298_IG17: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
; gcr arg pop 0
mov r13d, eax
test r13d, r13d
- je G_M33298_IG25
- cmp r13d, 7
je SHORT G_M33298_IG23
+ cmp r13d, 7
+ je G_M33298_IG32
;; size=28 bbWeight=0.50 PerfScore 3.00
G_M33298_IG18: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15]
@@ -232,7 +232,7 @@ G_M33298_IG18: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=10 bbWeight=4 PerfScore 13.00
G_M33298_IG19: ; bbWeight=3.82, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, eax
- jae G_M33298_IG28
+ jae G_M33298_IG27
mov rax, bword ptr [rbp-0x30]
; byrRegs +[rax]
mov edi, edi
@@ -243,57 +243,33 @@ G_M33298_IG19: ; bbWeight=3.82, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; byrRegs -[rax]
; gcr arg pop 0
test eax, eax
- jne G_M33298_IG32
+ jne G_M33298_IG31
;; size=40 bbWeight=3.82 PerfScore 38.18
G_M33298_IG20: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M33298_IG22
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M33298_IG21: ; bbWeight=3.82, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M33298_IG21: ; bbWeight=3.82, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov edi, edi
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rdi+rax], 128
- jne G_M33298_IG32
- ;; size=22 bbWeight=3.82 PerfScore 17.18
+ jne SHORT G_M33298_IG31
+ ;; size=18 bbWeight=3.82 PerfScore 17.18
G_M33298_IG22: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov edx, dword ptr [rbp-0x40]
cmp edx, dword ptr [rbp-0x28]
- jge SHORT G_M33298_IG23
+ jge SHORT G_M33298_IG32
mov edx, dword ptr [rbp-0x40]
inc edx
mov dword ptr [rbp-0x40], edx
- ;; size=16 bbWeight=0.50 PerfScore 3.12
-G_M33298_IG23: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- cmp r13d, 3
- jne G_M33298_IG33
- ;; size=10 bbWeight=0.50 PerfScore 0.62
-G_M33298_IG24: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- lea rdi, [rbp-0x60]
- call [System.Reflection.TypeNameParser:CheckTopLevelAssemblyQualifiedName():ubyte:this]
- ; gcr arg pop 0
- test eax, eax
- je SHORT G_M33298_IG29
- lea rdi, [rbp-0x60]
- call [System.Reflection.TypeNameParser:GetNextAssemblyName():System.String:this]
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov r15, rax
+ jmp SHORT G_M33298_IG32
+ ;; size=18 bbWeight=0.50 PerfScore 4.12
+G_M33298_IG23: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs +[r15]
- test r15, r15
- je SHORT G_M33298_IG29
- lea rdi, [rbp-0x60]
- call [System.Reflection.TypeNameParser:get_Peek():int:this]
- ; gcrRegs -[rax]
- ; gcr arg pop 0
- xor edi, edi
- test eax, eax
- sete dil
- call [System.Diagnostics.Debug:Assert(ubyte)]
- ; gcr arg pop 0
- ;; size=56 bbWeight=0 PerfScore 0.00
-G_M33298_IG25: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; System.Reflection.TypeNameParser+NamespaceTypeName
cmp qword ptr [rbx], rdx
- jne SHORT G_M33298_IG34
+ jne G_M33298_IG34
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M33298_IG24: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rsi, gword ptr [rbx+0x08]
; gcrRegs +[rsi]
xor rdx, rdx
@@ -306,11 +282,11 @@ G_M33298_IG25: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
; gcrRegs -[rbx rsi r8 r15] +[rax]
; byrRegs -[rdx]
; gcr arg pop 0
- ;; size=36 bbWeight=0.50 PerfScore 5.25
-G_M33298_IG26: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ;; size=21 bbWeight=0.50 PerfScore 3.12
+G_M33298_IG25: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M33298_IG27: ; bbWeight=1, epilog, nogc, extend
+G_M33298_IG26: ; bbWeight=1, epilog, nogc, extend
add rsp, 64
pop rbx
pop r13
@@ -319,33 +295,33 @@ G_M33298_IG27: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=13 bbWeight=1 PerfScore 3.75
-G_M33298_IG28: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M33298_IG27: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M33298_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M33298_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
xor rax, rax
; gcrRegs +[rax]
- jmp SHORT G_M33298_IG26
+ jmp SHORT G_M33298_IG25
;; size=4 bbWeight=0 PerfScore 0.00
-G_M33298_IG30: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M33298_IG29: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] +[rbx r15]
mov edi, dword ptr [rbp-0x40]
inc edi
mov dword ptr [rbp-0x40], edi
jmp G_M33298_IG12
;; size=13 bbWeight=0 PerfScore 0.00
-G_M33298_IG31: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M33298_IG30: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov edi, dword ptr [rbp-0x40]
cmp edi, dword ptr [rbp-0x28]
- jae SHORT G_M33298_IG28
+ jae SHORT G_M33298_IG27
mov rax, bword ptr [rbp-0x30]
; byrRegs +[rax]
movzx r14, word ptr [rax+2*rdi]
jmp G_M33298_IG17
;; size=22 bbWeight=0 PerfScore 0.00
-G_M33298_IG32: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M33298_IG31: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[r15]
; byrRegs -[rax]
mov edi, dword ptr [rbp-0x40]
@@ -353,15 +329,44 @@ G_M33298_IG32: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov dword ptr [rbp-0x40], edi
jmp G_M33298_IG18
;; size=13 bbWeight=0 PerfScore 0.00
-G_M33298_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx]
+G_M33298_IG32: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ cmp r13d, 3
+ je SHORT G_M33298_IG33
lea rdi, [rbp-0x60]
call [System.Reflection.TypeNameParser:ParseError():this]
+ ; gcrRegs -[rbx]
; gcr arg pop 0
- jmp SHORT G_M33298_IG29
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M33298_IG34: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx r15]
+ jmp SHORT G_M33298_IG28
+ ;; size=18 bbWeight=0 PerfScore 0.00
+G_M33298_IG33: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rbx]
+ lea rdi, [rbp-0x60]
+ call [System.Reflection.TypeNameParser:CheckTopLevelAssemblyQualifiedName():ubyte:this]
...
+45 (+3.57%) : 285464.dasm - System.DateTimeFormat:TryFormatushort:ubyte (Tier1)
@@ -5,19 +5,19 @@
; optimized using Dynamic PGO
; rbp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 395
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 395
; 4 inlinees with PGO data; 28 single block inlinees; 9 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00 ] ( 12, 4 ) struct ( 8) [rbp-0x30] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.DateTime>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ushort]>
-; V02 arg2 [V02,T03] ( 9, 3 ) byref -> r15 single-def
+; V02 arg2 [V02,T05] ( 9, 3 ) byref -> r14 single-def
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
; V04 arg4 [V04,T13] ( 7, 2.00) ref -> [rbp+0x10] class-hnd single-def <System.IFormatProvider>
;* V05 arg5 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.TimeSpan>
; V06 loc0 [V06 ] ( 15, 2 ) ref -> [rbp-0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Globalization.DateTimeFormatInfo>
; V07 loc1 [V07 ] ( 12, 10 ) struct (32) [rbp-0x58] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Generic.ValueListBuilder`1[ushort]>
-; V08 loc2 [V08,T10] ( 4, 3 ) ubyte -> rbx
+; V08 loc2 [V08,T06] ( 6, 5 ) ubyte -> r13
; V09 loc3 [V09,T16] ( 6, 0 ) ushort -> r9
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11 ] ( 0, 0 ) int -> zero-ref
@@ -32,7 +32,7 @@
;* V20 tmp10 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V21 tmp11 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V22 tmp12 [V22,T48] ( 2, 0 ) int -> [rbp-0x5C] spill-single-def "Inlining Arg"
-; V23 tmp13 [V23,T36] ( 2, 0 ) byref -> rbx single-def "Inlining Arg"
+; V23 tmp13 [V23,T36] ( 2, 0 ) byref -> r13 single-def "Inlining Arg"
;* V24 tmp14 [V24 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V25 tmp15 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V26 tmp16 [V26 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -41,34 +41,34 @@
;* V29 tmp19 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V30 tmp20 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V31 tmp21 [V31,T49] ( 2, 0 ) int -> [rbp-0x60] spill-single-def "Inlining Arg"
-; V32 tmp22 [V32,T37] ( 2, 0 ) byref -> rbx single-def "Inlining Arg"
+; V32 tmp22 [V32,T37] ( 2, 0 ) byref -> r13 single-def "Inlining Arg"
;* V33 tmp23 [V33 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
; V34 tmp24 [V34,T19] ( 4, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
;* V35 tmp25 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V36 tmp26 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V37 tmp27 [V37,T50] ( 2, 0 ) int -> rbx "Inlining Arg"
+; V37 tmp27 [V37,T50] ( 2, 0 ) int -> [rbp-0x64] spill-single-def "Inlining Arg"
; V38 tmp28 [V38,T38] ( 2, 0 ) byref -> r13 single-def "Inlining Arg"
;* V39 tmp29 [V39 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
; V40 tmp30 [V40,T20] ( 4, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
;* V41 tmp31 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V42 tmp32 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V43 tmp33 [V43,T51] ( 2, 0 ) int -> rbx "Inlining Arg"
+; V43 tmp33 [V43,T51] ( 2, 0 ) int -> [rbp-0x68] spill-single-def "Inlining Arg"
; V44 tmp34 [V44,T39] ( 2, 0 ) byref -> r13 single-def "Inlining Arg"
; V45 tmp35 [V45,T11] ( 5, 2 ) ref -> rax class-hnd "Inline return value spill temp" <System.Globalization.DateTimeFormatInfo>
-; V46 tmp36 [V46,T02] ( 12, 5.97) ref -> [rbp-0x68] class-hnd spill-single-def "Inline stloc first use temp" <System.Globalization.CultureInfo>
+; V46 tmp36 [V46,T04] ( 12, 5.97) ref -> [rbp-0x70] class-hnd spill-single-def "Inline stloc first use temp" <System.Globalization.CultureInfo>
; V47 tmp37 [V47,T22] ( 3, 0 ) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <System.Globalization.DateTimeFormatInfo>
; V48 tmp38 [V48,T23] ( 3, 0 ) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <System.Globalization.DateTimeFormatInfo>
; V49 tmp39 [V49,T14] ( 3, 1.99) ref -> rax "guarded devirt return temp"
;* V50 tmp40 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Globalization.CultureInfo>
-; V51 tmp41 [V51,T40] ( 2, 0 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "impAppendStmt" <System.Globalization.CultureData>
-; V52 tmp42 [V52,T21] ( 4, 0 ) ref -> [rbp-0x78] class-hnd exact spill-single-def "NewObj constructor temp" <System.Globalization.DateTimeFormatInfo>
+; V51 tmp41 [V51,T40] ( 2, 0 ) ref -> [rbp-0x78] class-hnd exact spill-single-def "impAppendStmt" <System.Globalization.CultureData>
+; V52 tmp42 [V52,T21] ( 4, 0 ) ref -> [rbp-0x80] class-hnd exact spill-single-def "NewObj constructor temp" <System.Globalization.DateTimeFormatInfo>
;* V53 tmp43 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Globalization.DateTimeFormatInfo>
; V54 tmp44 [V54,T24] ( 3, 0 ) byref -> rdi single-def "Inlining Arg"
;* V55 tmp45 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V56 tmp46 [V56 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V57 tmp47 [V57,T01] ( 3, 6 ) int -> rdi "Inlining Arg"
+; V57 tmp47 [V57,T03] ( 3, 6 ) int -> rdi "Inlining Arg"
;* V58 tmp48 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V59 tmp49 [V59,T09] ( 2, 4 ) byref -> rbx single-def "Inlining Arg"
+; V59 tmp49 [V59,T02] ( 3, 6 ) byref -> r15 single-def "Inlining Arg"
;* V60 tmp50 [V60 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V61 tmp51 [V61 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V62 tmp52 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
@@ -79,28 +79,28 @@
;* V67 tmp57 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V68 tmp58 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V69 tmp59 [V69,T12] ( 3, 2 ) ref -> rsi class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V70 tmp60 [V70,T08] ( 7, 4 ) int -> registers "Single return block return value"
+; V70 tmp60 [V70,T10] ( 7, 4 ) int -> registers "Single return block return value"
; V71 tmp61 [V71 ] ( 12, 4 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed single-def "field V00._dateData (fldOffset=0x0)" P-DEP
-; V72 tmp62 [V72,T04] ( 9, 3 ) byref -> r14 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V73 tmp63 [V73,T07] ( 8, 2 ) int -> r12 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V74 tmp64 [V74,T06] ( 9, 2 ) byref -> registers "field V03._reference (fldOffset=0x0)" P-INDEP
-; V75 tmp65 [V75,T00] ( 9, 4 ) int -> registers "field V03._length (fldOffset=0x8)" P-INDEP
+; V72 tmp62 [V72,T00] ( 10, 4 ) byref -> rbx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V73 tmp63 [V73,T09] ( 8, 2 ) int -> r12 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V74 tmp64 [V74,T08] ( 9, 2 ) byref -> r13 "field V03._reference (fldOffset=0x0)" P-INDEP
+; V75 tmp65 [V75,T01] ( 9, 4 ) int -> registers "field V03._length (fldOffset=0x8)" P-INDEP
; V76 tmp66 [V76,T15] ( 7, 1 ) long -> [rbp+0x18] single-def "field V05._ticks (fldOffset=0x0)" P-INDEP
;* V77 tmp67 [V77 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V78 tmp68 [V78 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
-; V79 tmp69 [V79,T25] ( 3, 0 ) byref -> rbx "field V18._reference (fldOffset=0x0)" P-INDEP
+; V79 tmp69 [V79,T25] ( 3, 0 ) byref -> r13 "field V18._reference (fldOffset=0x0)" P-INDEP
; V80 tmp70 [V80,T29] ( 3, 0 ) int -> rcx "field V18._length (fldOffset=0x8)" P-INDEP
-; V81 tmp71 [V81,T41] ( 2, 0 ) byref -> rbx single-def "field V20._reference (fldOffset=0x0)" P-INDEP
+; V81 tmp71 [V81,T41] ( 2, 0 ) byref -> r13 single-def "field V20._reference (fldOffset=0x0)" P-INDEP
; V82 tmp72 [V82,T52] ( 2, 0 ) int -> rcx "field V20._length (fldOffset=0x8)" P-INDEP
;* V83 tmp73 [V83 ] ( 0, 0 ) byref -> zero-ref single-def "field V21._reference (fldOffset=0x0)" P-INDEP
;* V84 tmp74 [V84 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
;* V85 tmp75 [V85 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP
;* V86 tmp76 [V86 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
-; V87 tmp77 [V87,T42] ( 2, 0 ) byref -> rbx single-def "field V25._reference (fldOffset=0x0)" P-INDEP
+; V87 tmp77 [V87,T42] ( 2, 0 ) byref -> r13 single-def "field V25._reference (fldOffset=0x0)" P-INDEP
;* V88 tmp78 [V88,T56] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
-; V89 tmp79 [V89,T26] ( 3, 0 ) byref -> rbx "field V27._reference (fldOffset=0x0)" P-INDEP
+; V89 tmp79 [V89,T26] ( 3, 0 ) byref -> r13 "field V27._reference (fldOffset=0x0)" P-INDEP
; V90 tmp80 [V90,T30] ( 3, 0 ) int -> rax "field V27._length (fldOffset=0x8)" P-INDEP
-; V91 tmp81 [V91,T43] ( 2, 0 ) byref -> rbx single-def "field V29._reference (fldOffset=0x0)" P-INDEP
+; V91 tmp81 [V91,T43] ( 2, 0 ) byref -> r13 single-def "field V29._reference (fldOffset=0x0)" P-INDEP
; V92 tmp82 [V92,T53] ( 2, 0 ) int -> rax "field V29._length (fldOffset=0x8)" P-INDEP
;* V93 tmp83 [V93 ] ( 0, 0 ) byref -> zero-ref single-def "field V30._reference (fldOffset=0x0)" P-INDEP
;* V94 tmp84 [V94 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
@@ -111,9 +111,9 @@
;* V99 tmp89 [V99 ] ( 0, 0 ) byref -> zero-ref single-def "field V36._reference (fldOffset=0x0)" P-INDEP
;* V100 tmp90 [V100 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-INDEP
; V101 tmp91 [V101,T28] ( 3, 0 ) byref -> r13 "field V39._reference (fldOffset=0x0)" P-INDEP
-; V102 tmp92 [V102,T32] ( 3, 0 ) int -> rbx "field V39._length (fldOffset=0x8)" P-INDEP
+; V102 tmp92 [V102,T32] ( 3, 0 ) int -> rax "field V39._length (fldOffset=0x8)" P-INDEP
; V103 tmp93 [V103,T45] ( 2, 0 ) byref -> r13 single-def "field V41._reference (fldOffset=0x0)" P-INDEP
-; V104 tmp94 [V104,T55] ( 2, 0 ) int -> rbx "field V41._length (fldOffset=0x8)" P-INDEP
+; V104 tmp94 [V104,T55] ( 2, 0 ) int -> rax "field V41._length (fldOffset=0x8)" P-INDEP
;* V105 tmp95 [V105 ] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP
;* V106 tmp96 [V106 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
;* V107 tmp97 [V107 ] ( 0, 0 ) byref -> zero-ref single-def "field V55._reference (fldOffset=0x0)" P-INDEP
@@ -130,7 +130,7 @@
;* V118 tmp108 [V118 ] ( 0, 0 ) int -> zero-ref "field V68._length (fldOffset=0x8)" P-INDEP
; V119 tmp109 [V119,T46] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
; V120 tmp110 [V120,T47] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V121 cse0 [V121,T05] ( 5, 5 ) ref -> r13 "CSE - aggressive"
+; V121 cse0 [V121,T07] ( 5, 5 ) ref -> r13 "CSE - aggressive"
; V122 rat0 [V122,T33] ( 3, 0 ) int -> r9 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 88
@@ -149,65 +149,65 @@ G_M33800_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x50], ymm8
mov qword ptr [rbp-0x30], rdi
- mov r14, rsi
- ; byrRegs +[r14]
+ mov rbx, rsi
+ ; byrRegs +[rbx]
mov r12d, edx
- mov r15, rcx
- ; byrRegs +[r15]
+ mov r14, rcx
+ ; byrRegs +[r14]
mov r13, r8
; byrRegs +[r13]
- mov ebx, r9d
+ mov r15d, r9d
mov rax, gword ptr [rbp+0x10]
; gcrRegs +[rax]
;; size=61 bbWeight=1 PerfScore 13.58
-G_M33800_IG02: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=E000 {r13 r14 r15}, byref
- test ebx, ebx
- je G_M33800_IG15
- cmp ebx, 1
- je G_M33800_IG26
+G_M33800_IG02: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=6008 {rbx r13 r14}, byref
+ test r15d, r15d
+ je G_M33800_IG16
+ cmp r15d, 1
+ je G_M33800_IG27
test rax, rax
je G_M33800_IG12
- ;; size=26 bbWeight=1 PerfScore 3.75
-G_M33800_IG03: ; bbWeight=1.00, gcrefRegs=0001 {rax}, byrefRegs=E000 {r13 r14 r15}, byref
+ ;; size=28 bbWeight=1 PerfScore 3.75
+G_M33800_IG03: ; bbWeight=1.00, gcrefRegs=0001 {rax}, byrefRegs=6008 {rbx r13 r14}, byref
mov gword ptr [rbp+0x10], rax
mov rsi, rax
; gcrRegs +[rsi]
mov rdi, 0xD1FFAB1E ; System.Globalization.CultureInfo
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[rsi]
- mov gword ptr [rbp-0x68], rax
+ mov gword ptr [rbp-0x70], rax
; GC ptr vars +{V46}
test rax, rax
- je G_M33800_IG37
+ je G_M33800_IG38
cmp byte ptr [rax+0x61], 0
- jne G_M33800_IG37
+ jne G_M33800_IG38
mov rcx, 0xD1FFAB1E ; System.Globalization.CultureInfo
cmp qword ptr [rax], rcx
- jne G_M33800_IG41
+ jne G_M33800_IG42
cmp gword ptr [rax+0x20], 0
- je G_M33800_IG39
+ je G_M33800_IG40
;; size=75 bbWeight=1.00 PerfScore 16.92
-G_M33800_IG04: ; bbWeight=1.00, gcVars=0000000000000004 {V46}, gcrefRegs=0001 {rax}, byrefRegs=E000 {r13 r14 r15}, gcvars, byref
+G_M33800_IG04: ; bbWeight=1.00, gcVars=0000000000000010 {V46}, gcrefRegs=0001 {rax}, byrefRegs=6008 {rbx r13 r14}, gcvars, byref
mov rax, gword ptr [rax+0x20]
;; size=4 bbWeight=1.00 PerfScore 1.99
-G_M33800_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0001 {rax}, byrefRegs=E000 {r13 r14 r15}, gcvars, byref
+G_M33800_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0001 {rax}, byrefRegs=6008 {rbx r13 r14}, gcvars, byref
; GC ptr vars -{V46}
mov gword ptr [rbp-0x38], rax
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33800_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=E000 {r13 r14 r15}, byref
+G_M33800_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref
; gcrRegs -[rax]
- mov bword ptr [rbp-0x48], r14
+ mov bword ptr [rbp-0x48], rbx
mov dword ptr [rbp-0x40], r12d
xor rsi, rsi
; gcrRegs +[rsi]
mov gword ptr [rbp-0x58], rsi
;; size=14 bbWeight=1 PerfScore 3.25
-G_M33800_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=E000 {r13 r14 r15}, byref, isz
+G_M33800_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref, isz
; gcrRegs -[rsi]
mov dword ptr [rbp-0x50], esi
mov rsi, r13
; byrRegs +[rsi]
- mov edx, ebx
+ mov edx, r15d
lea r9, [rbp-0x58]
mov rdi, qword ptr [rbp-0x30]
mov rcx, gword ptr [rbp-0x38]
@@ -218,11 +218,11 @@ G_M33800_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=E000 {r13 r14 r
; byrRegs -[rsi r13]
mov edi, dword ptr [rbp-0x50]
cmp edi, dword ptr [rbp-0x40]
- ja G_M33800_IG42
- mov rbx, bword ptr [rbp-0x48]
- ; byrRegs +[rbx]
+ ja G_M33800_IG43
+ mov r15, bword ptr [rbp-0x48]
+ ; byrRegs +[r15]
test edi, edi
- jge SHORT G_M33800_IG08
+ jge SHORT G_M33800_IG13
mov r13, 0xD1FFAB1E
; gcrRegs +[r13]
mov rdi, r13
@@ -237,28 +237,28 @@ G_M33800_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=E000 {r13 r14 r
; gcrRegs +[rsi]
call [<unknown method>]
; gcrRegs -[rsi rdi r13]
- ;; size=84 bbWeight=1 PerfScore 21.50
-G_M33800_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=C008 {rbx r14 r15}, byref, isz
- cmp r14, rbx
- sete bl
- ; byrRegs -[rbx]
- movzx rbx, bl
...
+40 (+7.92%) : 217049.dasm - System.Reflection.RuntimeAssembly:GetType(System.String,ubyte,ubyte):System.Type:this (Instrumented Tier1)
@@ -15,7 +15,7 @@
;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Reflection.RuntimeAssembly>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V07 tmp2 [V07 ] ( 37, 32.82) struct (64) [rbp-0x60] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Reflection.TypeNameParser>
+; V07 tmp2 [V07 ] ( 37, 32.32) struct (64) [rbp-0x68] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Reflection.TypeNameParser>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
@@ -25,14 +25,14 @@
;* V14 tmp9 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp10 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V17 tmp12 [V17,T17] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <System.Type>
-; V18 tmp13 [V18,T09] ( 6, 3 ) ref -> r15 class-hnd single-def "Inline stloc first use temp" <System.Reflection.TypeNameParser+TypeName>
-; V19 tmp14 [V19,T18] ( 5, 1 ) ref -> r14 class-hnd "Inline stloc first use temp" <System.String>
+; V17 tmp12 [V17,T16] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <System.Type>
+; V18 tmp13 [V18,T09] ( 7, 3 ) ref -> r15 class-hnd single-def "Inline stloc first use temp" <System.Reflection.TypeNameParser+TypeName>
+; V19 tmp14 [V19,T17] ( 5, 1 ) ref -> r14 class-hnd "Inline stloc first use temp" <System.String>
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V21 tmp16 [V21,T19] ( 3, 1 ) ref -> rax "guarded devirt return temp"
;* V22 tmp17 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.TypeNameParser+NamespaceTypeName>
;* V23 tmp18 [V23 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V24 tmp19 [V24,T12] ( 4, 2 ) int -> rbx "Inline stloc first use temp"
+; V24 tmp19 [V24,T18] ( 4, 1 ) int -> r12 "Inline stloc first use temp"
; V25 tmp20 [V25,T22] ( 3, 0 ) int -> rdi "Span.get_Item index"
; V26 tmp21 [V26,T20] ( 3, 1 ) int -> r13
;* V27 tmp22 [V27 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp"
@@ -48,10 +48,10 @@
;* V37 tmp32 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V38 tmp33 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V39 tmp34 [V39 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-; V40 tmp35 [V40,T13] ( 2, 2 ) byref -> rax "field V09._reference (fldOffset=0x0)" P-INDEP
-; V41 tmp36 [V41,T15] ( 2, 2 ) int -> rsi "field V09._length (fldOffset=0x8)" P-INDEP
-; V42 tmp37 [V42,T14] ( 2, 2 ) byref -> rax single-def "field V10._reference (fldOffset=0x0)" P-INDEP
-; V43 tmp38 [V43,T16] ( 2, 2 ) int -> rsi "field V10._length (fldOffset=0x8)" P-INDEP
+; V40 tmp35 [V40,T12] ( 2, 2 ) byref -> rax "field V09._reference (fldOffset=0x0)" P-INDEP
+; V41 tmp36 [V41,T14] ( 2, 2 ) int -> rsi "field V09._length (fldOffset=0x8)" P-INDEP
+; V42 tmp37 [V42,T13] ( 2, 2 ) byref -> rax single-def "field V10._reference (fldOffset=0x0)" P-INDEP
+; V43 tmp38 [V43,T15] ( 2, 2 ) int -> rsi "field V10._length (fldOffset=0x8)" P-INDEP
;* V44 tmp39 [V44 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP
;* V45 tmp40 [V45 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
;* V46 tmp41 [V46 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP
@@ -70,30 +70,34 @@
; V59 cse0 [V59,T02] ( 3, 11.82) int -> rdi "CSE - aggressive"
; V60 cse1 [V60,T03] ( 3, 11.82) int -> rax "CSE - aggressive"
;
-; Lcl frame size = 64
+; Lcl frame size = 72
G_M21860_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
+ push r12
push rbx
- sub rsp, 64
- lea rbp, [rsp+0x60]
+ sub rsp, 72
+ lea rbp, [rsp+0x70]
+ xor eax, eax
+ mov qword ptr [rbp-0x68], rax
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x60], ymm8
- vmovdqu ymmword ptr [rbp-0x40], ymm8
+ vmovdqa xmmword ptr [rbp-0x40], xmm8
+ mov qword ptr [rbp-0x30], rax
mov rbx, rsi
; gcrRegs +[rbx]
- ;; size=35 bbWeight=1 PerfScore 10.33
+ ;; size=47 bbWeight=1 PerfScore 13.58
G_M21860_IG02: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdi]
test rbx, rbx
- je G_M21860_IG23
+ je G_M21860_IG21
;; size=9 bbWeight=1 PerfScore 1.25
G_M21860_IG03: ; bbWeight=0.47, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
cmp dword ptr [rbx+0x08], 0
- je G_M21860_IG23
+ je G_M21860_IG21
;; size=10 bbWeight=0.47 PerfScore 1.88
G_M21860_IG04: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
lea rax, bword ptr [rbx+0x0C]
@@ -101,36 +105,36 @@ G_M21860_IG04: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {},
mov esi, dword ptr [rbx+0x08]
xor r8, r8
; gcrRegs +[r8]
- mov gword ptr [rbp-0x60], r8
+ mov gword ptr [rbp-0x68], r8
;; size=14 bbWeight=1 PerfScore 3.75
G_M21860_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0001 {rax}, byref
; gcrRegs -[rbx r8]
- mov gword ptr [rbp-0x58], r8
- mov byte ptr [rbp-0x38], 0
- mov byte ptr [rbp-0x37], 0
- mov byte ptr [rbp-0x36], 0
- mov byte ptr [rbp-0x35], 0
- mov byte ptr [rbp-0x34], 0
+ mov gword ptr [rbp-0x60], r8
+ mov byte ptr [rbp-0x40], 0
+ mov byte ptr [rbp-0x3F], 0
+ mov byte ptr [rbp-0x3E], 0
+ mov byte ptr [rbp-0x3D], 0
+ mov byte ptr [rbp-0x3C], 0
;; size=24 bbWeight=1 PerfScore 6.00
G_M21860_IG06: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0001 {rax}, byref
- mov gword ptr [rbp-0x50], r8
+ mov gword ptr [rbp-0x58], r8
;; size=4 bbWeight=1 PerfScore 1.00
G_M21860_IG07: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0001 {rax}, byref
- mov gword ptr [rbp-0x48], r8
- mov bword ptr [rbp-0x30], rax
- mov dword ptr [rbp-0x28], esi
+ mov gword ptr [rbp-0x50], r8
+ mov bword ptr [rbp-0x38], rax
+ mov dword ptr [rbp-0x30], esi
;; size=11 bbWeight=1 PerfScore 3.00
G_M21860_IG08: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; byrRegs -[rax]
- mov dword ptr [rbp-0x40], r8d
+ mov dword ptr [rbp-0x48], r8d
;; size=4 bbWeight=1 PerfScore 1.00
G_M21860_IG09: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- mov dword ptr [rbp-0x3C], r8d
- mov byte ptr [rbp-0x38], dl
- mov byte ptr [rbp-0x37], cl
- mov gword ptr [rbp-0x48], rdi
+ mov dword ptr [rbp-0x44], r8d
+ mov byte ptr [rbp-0x40], dl
+ mov byte ptr [rbp-0x3F], cl
mov gword ptr [rbp-0x50], rdi
- lea rdi, [rbp-0x60]
+ mov gword ptr [rbp-0x58], rdi
+ lea rdi, [rbp-0x68]
; gcrRegs -[rdi]
call [<unknown method>]
; gcrRegs +[rax]
@@ -138,25 +142,25 @@ G_M21860_IG09: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
mov r15, rax
; gcrRegs +[r15]
test r15, r15
- je G_M21860_IG24
+ je G_M21860_IG22
;; size=40 bbWeight=1 PerfScore 10.00
G_M21860_IG10: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
xor r14, r14
; gcrRegs +[r14]
- mov edi, dword ptr [rbp-0x40]
- mov dword ptr [rbp-0x3C], edi
+ mov edi, dword ptr [rbp-0x48]
+ mov dword ptr [rbp-0x44], edi
;; size=9 bbWeight=0.50 PerfScore 1.12
G_M21860_IG11: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
- mov edi, dword ptr [rbp-0x40]
- mov eax, dword ptr [rbp-0x28]
+ mov edi, dword ptr [rbp-0x48]
+ mov eax, dword ptr [rbp-0x30]
cmp edi, eax
jge SHORT G_M21860_IG15
;; size=10 bbWeight=4 PerfScore 13.00
G_M21860_IG12: ; bbWeight=3.82, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
cmp edi, eax
- jae G_M21860_IG22
- mov rax, bword ptr [rbp-0x30]
+ jae G_M21860_IG20
+ mov rax, bword ptr [rbp-0x38]
; byrRegs +[rax]
mov edi, edi
movzx rdi, word ptr [rax+2*rdi]
@@ -166,7 +170,7 @@ G_M21860_IG12: ; bbWeight=3.82, gcrefRegs=C000 {r14 r15}, byrefRegs=0000
; byrRegs -[rax]
; gcr arg pop 0
test eax, eax
- jne G_M21860_IG25
+ jne G_M21860_IG23
;; size=40 bbWeight=3.82 PerfScore 38.18
G_M21860_IG13: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M21860_IG15
@@ -175,61 +179,27 @@ G_M21860_IG14: ; bbWeight=3.82, gcrefRegs=C000 {r14 r15}, byrefRegs=0000
mov edi, edi
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rdi+rax], 128
- jne G_M21860_IG25
+ jne G_M21860_IG23
;; size=22 bbWeight=3.82 PerfScore 17.18
G_M21860_IG15: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
- mov edi, dword ptr [rbp-0x40]
- cmp edi, dword ptr [rbp-0x28]
- jl G_M21860_IG26
+ mov edi, dword ptr [rbp-0x48]
+ cmp edi, dword ptr [rbp-0x30]
+ jl G_M21860_IG24
xor r13d, r13d
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M21860_IG16: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M21860_IG16: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
movzx rdi, r13w
call [System.Reflection.TypeNameParser:CharToToken(ushort):int]
; gcr arg pop 0
- mov ebx, eax
- test ebx, ebx
- je SHORT G_M21860_IG19
- cmp ebx, 7
- je SHORT G_M21860_IG17
- lea rdi, [rbp-0x60]
- call [System.Reflection.TypeNameParser:Skip():this]
- ; gcrRegs -[r14]
- ; gcr arg pop 0
- ;; size=31 bbWeight=0.50 PerfScore 4.75
-G_M21860_IG17: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
- cmp ebx, 3
- jne G_M21860_IG27
- ;; size=9 bbWeight=0.50 PerfScore 0.62
-G_M21860_IG18: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
- lea rdi, [rbp-0x60]
- call [System.Reflection.TypeNameParser:CheckTopLevelAssemblyQualifiedName():ubyte:this]
- ; gcr arg pop 0
- test eax, eax
- je G_M21860_IG24
- lea rdi, [rbp-0x60]
- call [System.Reflection.TypeNameParser:GetNextAssemblyName():System.String:this]
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov r14, rax
- ; gcrRegs +[r14]
- test r14, r14
- je SHORT G_M21860_IG24
- lea rdi, [rbp-0x60]
- call [System.Reflection.TypeNameParser:get_Peek():int:this]
- ; gcrRegs -[rax]
- ; gcr arg pop 0
- xor edi, edi
- test eax, eax
- sete dil
- call [System.Diagnostics.Debug:Assert(ubyte)]
- ; gcr arg pop 0
- ;; size=60 bbWeight=0 PerfScore 0.00
-G_M21860_IG19: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov r12d, eax
+ test r12d, r12d
+ jne G_M21860_IG25
mov rsi, 0xD1FFAB1E ; System.Reflection.TypeNameParser+NamespaceTypeName
cmp qword ptr [r15], rsi
- jne SHORT G_M21860_IG28
- lea rsi, [rbp-0x60]
+ jne G_M21860_IG28
+ ;; size=41 bbWeight=0.50 PerfScore 4.50
...
libraries.crossgen2.linux.x64.checked.mch
-32 (-30.19%) : 226656.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -10,14 +10,16 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> registers
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r8 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> r9 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> rax "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> r9 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> r8 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> r8 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -33,72 +35,59 @@ G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, b
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx rdi]
cmp esi, ecx
- jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jl SHORT G_M264_IG11
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref
; byrRegs +[rdx rdi]
- mov r8d, ecx
- ;; size=3 bbWeight=0.50 PerfScore 0.12
+ mov eax, ecx
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- dec r8d
- mov eax, r8d
- test eax, eax
- jl SHORT G_M264_IG06
+ dec eax
+ js SHORT G_M264_IG09
cmp eax, esi
- jae SHORT G_M264_IG14
- mov r9d, eax
- mov r10d, dword ptr [rdi+4*r9]
- cmp eax, ecx
- jae SHORT G_M264_IG14
- cmp r10d, dword ptr [rdx+4*r9]
- je SHORT G_M264_IG08
- ;; size=31 bbWeight=4 PerfScore 42.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- test r8d, r8d
- jge SHORT G_M264_IG09
- xor eax, eax
- ;; size=7 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
- pop rbp
- ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, gcvars, byref, isz
+ jae SHORT G_M264_IG13
mov r8d, eax
- jmp SHORT G_M264_IG05
- ;; size=5 bbWeight=2 PerfScore 4.50
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- cmp r8d, esi
- jae SHORT G_M264_IG14
- mov r9d, r8d
- mov eax, dword ptr [rdi+4*r9]
- cmp r8d, ecx
- jae SHORT G_M264_IG14
- cmp eax, dword ptr [rdx+4*r9]
- jb SHORT G_M264_IG12
- ;; size=23 bbWeight=0.50 PerfScore 4.38
-G_M264_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r9d, dword ptr [rdi+4*r8]
+ cmp eax, ecx
+ jae SHORT G_M264_IG13
+ mov r8d, dword ptr [rdx+4*r8]
+ cmp r9d, r8d
+ je SHORT G_M264_IG05
+ ;; size=28 bbWeight=4 PerfScore 37.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx rdi]
+ cmp r8d, r9d
+ ja SHORT G_M264_IG11
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [CORINFO_HELP_RNGCHKFAIL]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 106, prolog size 4, PerfScore 58.38, instruction count 43, allocated bytes for code 106 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 74, prolog size 4, PerfScore 44.50, instruction count 32, allocated bytes for code 74 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
-29 (-25.66%) : 127211.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
@@ -8,15 +8,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> rdi class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 6, 11 ) ref -> rsi class-hnd single-def <System.String>
-; V02 arg2 [V02,T05] ( 4, 6.50) int -> rdx single-def
-; V03 arg3 [V03,T07] ( 5, 4.50) int -> rcx single-def
-; V04 loc0 [V04,T03] ( 6, 13 ) int -> r8
-; V05 loc1 [V05,T00] ( 11, 27.50) int -> r9
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rdi class-hnd single-def <System.String>
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rsi class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 3, 6 ) int -> rdx single-def
+; V03 arg3 [V03,T08] ( 5, 4.50) int -> rcx single-def
+; V04 loc0 [V04,T01] ( 5, 12 ) int -> r8
+; V05 loc1 [V05,T00] ( 7, 25 ) int -> r9
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> rax "CSE - aggressive"
-; V08 cse1 [V08,T01] ( 6, 13.50) int -> r11 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> r11 "CSE - aggressive"
+; V08 cse1 [V08,T06] ( 3, 8.50) int -> r10 "CSE - aggressive"
+; V09 cse2 [V09,T09] ( 4, 6.50) int -> rax "CSE - aggressive"
+; V10 cse3 [V10,T03] ( 3, 12 ) int -> r11 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -38,54 +40,43 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {},
;; size=3 bbWeight=2 PerfScore 0.50
G_M6389_IG04: ; bbWeight=8, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
cmp r9d, r8d
- jge SHORT G_M6389_IG06
+ jge SHORT G_M6389_IG08
;; size=5 bbWeight=8 PerfScore 10.00
G_M6389_IG05: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
cmp r9d, eax
- jae SHORT G_M6389_IG11
+ jae SHORT G_M6389_IG10
mov r10d, r9d
movzx r10, word ptr [rdi+2*r10+0x0C]
lea r11d, [rdx+r9]
cmp r11d, dword ptr [rsi+0x08]
- jae SHORT G_M6389_IG11
- cmp r10w, word ptr [rsi+2*r11+0x0C]
+ jae SHORT G_M6389_IG10
+ movzx r11, word ptr [rsi+2*r11+0x0C]
+ cmp r10d, r11d
je SHORT G_M6389_IG03
- ;; size=32 bbWeight=4 PerfScore 48.00
-G_M6389_IG06: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
- cmp r9d, r8d
- jge SHORT G_M6389_IG09
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
- cmp r9d, eax
- jae SHORT G_M6389_IG11
- mov eax, r9d
- movzx rax, word ptr [rdi+2*rax+0x0C]
- lea r11d, [rdx+r9]
- cmp r11d, dword ptr [rsi+0x08]
- jae SHORT G_M6389_IG11
- mov ecx, r11d
- movzx rcx, word ptr [rsi+2*rcx+0x0C]
- sub eax, ecx
- ;; size=33 bbWeight=0.50 PerfScore 5.25
-G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=35 bbWeight=4 PerfScore 45.00
+G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi rdi]
+ mov eax, r10d
+ sub eax, r11d
+ ;; size=6 bbWeight=0.50 PerfScore 0.25
+G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rsi rdi]
+G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub eax, ecx
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [CORINFO_HELP_RNGCHKFAIL]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 113, prolog size 4, PerfScore 72.88, instruction count 39, allocated bytes for code 113 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 84, prolog size 4, PerfScore 63.62, instruction count 30, allocated bytes for code 84 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================
Unwind Info:
-16 (-9.30%) : 141961.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String):this (FullOpts)
@@ -11,31 +11,29 @@
; V00 this [V00,T02] ( 3, 10 ) ref -> r15 this class-hnd single-def <System.Configuration.Internal.WriteFileContext>
; V01 arg1 [V01,T03] ( 3, 10 ) ref -> r14 class-hnd single-def <System.String>
; V02 arg2 [V02,T00] ( 6, 18 ) ref -> rbx class-hnd single-def <System.String>
-; V03 loc0 [V03,T01] ( 3, 17 ) ubyte -> r12
+; V03 loc0 [V03,T01] ( 2, 16 ) ubyte -> rax
; V04 loc1 [V04,T04] ( 4, 9 ) int -> r13
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T05] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V07 tmp2 [V07,T06] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
; V08 tmp3 [V08,T07] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M51267_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
- push r12
push rbx
- push rax
- lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov r15, rdi
; gcrRegs +[r15]
mov r14, rsi
; gcrRegs +[r14]
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=25 bbWeight=1 PerfScore 8.25
+ ;; size=22 bbWeight=1 PerfScore 6.25
G_M51267_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
xor r13d, r13d
jmp SHORT G_M51267_IG04
@@ -54,10 +52,9 @@ G_M51267_IG04: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
; gcrRegs +[rdx]
call [<unknown method>]
; gcrRegs -[rdx rsi rdi]
- mov r12d, eax
- test r12d, r12d
- jne SHORT G_M51267_IG06
- ;; size=23 bbWeight=8 PerfScore 42.00
+ test eax, eax
+ jne SHORT G_M51267_IG07
+ ;; size=19 bbWeight=8 PerfScore 40.00
G_M51267_IG05: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
cmp r13d, 0x2710
jge SHORT G_M51267_IG08
@@ -72,24 +69,22 @@ G_M51267_IG05: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
call [<unknown method>]
; gcrRegs -[rdi]
test eax, eax
- je SHORT G_M51267_IG03
+ jne SHORT G_M51267_IG08
;; size=35 bbWeight=4 PerfScore 41.00
-G_M51267_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r14-r15]
- test r12d, r12d
- je SHORT G_M51267_IG08
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M51267_IG07: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
+G_M51267_IG06: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M51267_IG03
+ ;; size=2 bbWeight=2 PerfScore 4.00
+G_M51267_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rbx r14-r15]
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=1 PerfScore 4.25
+ ;; size=9 bbWeight=1 PerfScore 3.50
G_M51267_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rbx]
call [CORINFO_HELP_READYTORUN_NEW]
; gcrRegs +[rax]
mov r15, rax
@@ -114,7 +109,7 @@ G_M51267_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {
int3
;; size=49 bbWeight=0 PerfScore 0.00
-; Total bytes of code 172, prolog size 16, PerfScore 106.00, instruction count 55, allocated bytes for code 172 (MethodHash=338d37bc) for method System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String):this (FullOpts)
+; Total bytes of code 156, prolog size 13, PerfScore 104.00, instruction count 49, allocated bytes for code 156 (MethodHash=338d37bc) for method System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String):this (FullOpts)
; ============================================================
Unwind Info:
@@ -122,14 +117,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0B
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+6 (+5.22%) : 27908.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
@@ -11,8 +11,8 @@
;
; V00 this [V00,T03] ( 4, 3.50) ref -> rdi this class-hnd single-def <System.Threading.PortableThreadPool>
; V01 arg1 [V01,T01] ( 4, 7 ) ref -> rsi class-hnd single-def <System.Threading.PortableThreadPool+WaitThread>
-; V02 loc0 [V02,T00] ( 9, 19.50) ref -> registers class-hnd <System.Threading.PortableThreadPool+WaitThreadNode>
-; V03 loc1 [V03,T02] ( 3, 8.50) ref -> rbx class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
+; V02 loc0 [V02,T00] ( 8, 19 ) ref -> registers class-hnd <System.Threading.PortableThreadPool+WaitThreadNode>
+; V03 loc1 [V03,T02] ( 3, 8.50) ref -> registers class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V06 tmp2 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -56,54 +56,59 @@ G_M1296_IG05: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0048 {r
mov rdi, gword ptr [rbx+0x10]
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M1296_IG06
+ je SHORT G_M1296_IG08
cmp gword ptr [rdi+0x08], rsi
jne SHORT G_M1296_IG07
;; size=15 bbWeight=4 PerfScore 29.00
G_M1296_IG06: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
- test rdi, rdi
- jne SHORT G_M1296_IG08
+ mov rax, rbx
+ ; gcrRegs +[rax]
+ mov rbx, rdi
+ mov rdi, rax
+ jmp SHORT G_M1296_IG09
+ ;; size=11 bbWeight=0.50 PerfScore 1.38
+G_M1296_IG07: ; bbWeight=2, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax rbx] +[rsi]
+ mov rbx, rdi
+ ; gcrRegs +[rbx]
+ jmp SHORT G_M1296_IG05
+ ;; size=5 bbWeight=2 PerfScore 4.50
+G_M1296_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx rsi rdi]
mov rdi, qword ptr [(reloc)] ; const ptr
- ; gcrRegs -[rdi]
mov rdi, gword ptr [rdi]
; gcrRegs +[rdi]
mov rsi, qword ptr [(reloc)] ; const ptr
mov rsi, gword ptr [rsi]
; gcrRegs +[rsi]
call [<unknown method>]
- ; gcrRegs -[rbx rsi rdi]
+ ; gcrRegs -[rsi rdi]
; gcr arg pop 0
- jmp SHORT G_M1296_IG09
- ;; size=33 bbWeight=0.50 PerfScore 7.12
-G_M1296_IG07: ; bbWeight=2, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rsi rdi]
- mov rbx, rdi
- ; gcrRegs +[rbx]
- jmp SHORT G_M1296_IG05
- ;; size=5 bbWeight=2 PerfScore 4.50
-G_M1296_IG08: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi]
- mov rsi, gword ptr [rdi+0x10]
+ jmp SHORT G_M1296_IG10
+ ;; size=28 bbWeight=0.50 PerfScore 6.50
+G_M1296_IG09: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx rdi]
+ mov rsi, gword ptr [rbx+0x10]
; gcrRegs +[rsi]
- lea rdi, bword ptr [rbx+0x10]
+ lea rdi, bword ptr [rdi+0x10]
; gcrRegs -[rdi]
; byrRegs +[rdi]
call [CORINFO_HELP_ASSIGN_REF]
; gcrRegs -[rbx rsi]
; byrRegs -[rdi]
;; size=14 bbWeight=0.50 PerfScore 2.75
-G_M1296_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M1296_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
-G_M1296_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M1296_IG11: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 115, prolog size 8, PerfScore 58.12, instruction count 38, allocated bytes for code 115 (MethodHash=2a35faef) for method System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
+; Total bytes of code 121, prolog size 8, PerfScore 58.88, instruction count 40, allocated bytes for code 121 (MethodHash=2a35faef) for method System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
; ============================================================
Unwind Info:
+14 (+5.36%) : 32010.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
@@ -8,22 +8,23 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 7, 4.50) ref -> rbx this class-hnd single-def <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 8, 4.38) ref -> r15 class-hnd single-def <System.Object>
+; V00 this [V00,T01] ( 6, 4 ) ref -> r15 this class-hnd single-def <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
+; V01 arg1 [V01,T00] ( 8, 4.38) ref -> rbx class-hnd single-def <System.Object>
; V02 arg2 [V02,T03] ( 3, 2.50) ref -> r14 class-hnd single-def <System.Collections.IComparer>
;* V03 loc0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
-; V04 loc1 [V04,T10] ( 2, 1 ) ref -> r15 class-hnd single-def <System.__Canon>
-; V05 loc2 [V05,T11] ( 2, 1 ) ref -> r13 class-hnd single-def <System.__Canon>
+; V04 loc1 [V04,T11] ( 2, 1 ) ref -> rbx class-hnd single-def <System.__Canon>
+; V05 loc2 [V05,T12] ( 2, 1 ) ref -> r13 class-hnd single-def <System.__Canon>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T07] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
+; V07 tmp1 [V07,T08] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
; V08 tmp2 [V08,T02] ( 5, 5.75) ref -> r13 class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
-; V09 tmp3 [V09,T08] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
+; V09 tmp3 [V09,T09] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
; V10 tmp4 [V10,T04] ( 3, 2.50) ref -> rdi class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
-; V11 tmp5 [V11,T09] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
+; V11 tmp5 [V11,T10] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
; V12 tmp6 [V12,T05] ( 3, 2.50) ref -> rdi class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
; V13 tmp7 [V13,T06] ( 2, 2 ) long -> rdi "argument with side effect"
+; V14 cse0 [V14,T07] ( 5, 1.50) long -> [rbp-0x38] multi-def "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 24
G_M49351_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
@@ -32,34 +33,35 @@ G_M49351_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
push r13
push r12
push rbx
- push rax
- lea rbp, [rsp+0x30]
+ sub rsp, 24
+ lea rbp, [rsp+0x40]
mov qword ptr [rbp-0x30], rdi
- mov rbx, rdi
- ; gcrRegs +[rbx]
- mov r15, rsi
+ mov r15, rdi
; gcrRegs +[r15]
+ mov rbx, rsi
+ ; gcrRegs +[rbx]
mov r14, rdx
; gcrRegs +[r14]
- ;; size=29 bbWeight=1 PerfScore 9.25
+ ;; size=32 bbWeight=1 PerfScore 8.50
G_M49351_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- mov r13, r15
+ mov r13, rbx
; gcrRegs +[r13]
test r13, r13
je SHORT G_M49351_IG05
;; size=8 bbWeight=1 PerfScore 1.50
G_M49351_IG03: ; bbWeight=0.25, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
mov r12, qword ptr [r13]
- mov rdi, qword ptr [rbx]
+ mov rax, qword ptr [r15]
+ mov rdi, rax
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcr arg pop 0
cmp r12, rax
je SHORT G_M49351_IG05
- ;; size=18 bbWeight=0.25 PerfScore 2.06
+ ;; size=21 bbWeight=0.25 PerfScore 2.12
G_M49351_IG04: ; bbWeight=0.12, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r13]
mov rdi, rax
- mov rsi, r15
+ mov rsi, rbx
; gcrRegs +[rsi]
call [CORINFO_HELP_CHKCASTANY]
; gcrRegs -[rsi] +[rax]
@@ -69,38 +71,40 @@ G_M49351_IG04: ; bbWeight=0.12, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
;; size=15 bbWeight=0.12 PerfScore 0.47
G_M49351_IG05: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- test rbx, rbx
+ test r15, r15
je SHORT G_M49351_IG13
;; size=5 bbWeight=1 PerfScore 1.25
G_M49351_IG06: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- mov rdi, r15
+ mov rdi, rbx
; gcrRegs +[rdi]
test rdi, rdi
je SHORT G_M49351_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M49351_IG07: ; bbWeight=0.25, gcrefRegs=E088 {rbx rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
mov r12, qword ptr [rdi]
- mov rdi, qword ptr [rbx]
+ mov rax, qword ptr [r15]
+ mov qword ptr [rbp-0x38], rax
+ mov rdi, rax
; gcrRegs -[rdi]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcr arg pop 0
cmp r12, rax
je SHORT G_M49351_IG09
- ;; size=17 bbWeight=0.25 PerfScore 2.06
+ ;; size=24 bbWeight=0.25 PerfScore 2.38
G_M49351_IG08: ; bbWeight=0.12, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
mov rdi, rax
- mov rsi, r15
+ mov rsi, rbx
; gcrRegs +[rsi]
call [CORINFO_HELP_CHKCASTANY]
- ; gcrRegs -[rsi r15] +[rax]
+ ; gcrRegs -[rbx rsi] +[rax]
; gcr arg pop 0
;; size=12 bbWeight=0.12 PerfScore 0.44
-G_M49351_IG09: ; bbWeight=0.50, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref
+G_M49351_IG09: ; bbWeight=0.50, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- mov r15, gword ptr [rbx+0x08]
- ; gcrRegs +[r15]
+ mov rbx, gword ptr [r15+0x08]
+ ; gcrRegs +[rbx]
mov r13, gword ptr [r13+0x08]
- mov rdi, qword ptr [rbx]
+ mov rdi, qword ptr [rbp-0x38]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcr arg pop 0
mov rdi, rax
@@ -108,12 +112,12 @@ G_M49351_IG09: ; bbWeight=0.50, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0
; gcrRegs +[rcx]
mov rsi, r14
; gcrRegs +[rsi]
- mov rdx, r15
+ mov rdx, rbx
; gcrRegs +[rdx]
lea rax, [(reloc)] ; function address
- ;; size=36 bbWeight=0.50 PerfScore 5.25
+ ;; size=37 bbWeight=0.50 PerfScore 4.75
G_M49351_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
+ add rsp, 24
pop rbx
pop r12
pop r13
@@ -122,12 +126,12 @@ G_M49351_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
tail.jmp [rax]<unknown method>
;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M49351_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rcx rdx rsi r13-r15]
+G_M49351_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rcx rdx rbx rsi r13-r14]
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M49351_IG12: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
+ add rsp, 24
pop rbx
pop r12
pop r13
@@ -137,8 +141,8 @@ G_M49351_IG12: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M49351_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r15]
- mov rdi, r15
+ ; gcrRegs +[rbx]
+ mov rdi, rbx
; gcrRegs +[rdi]
test rdi, rdi
je SHORT G_M49351_IG18
@@ -155,18 +159,18 @@ G_M49351_IG14: ; bbWeight=0.25, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0
;; size=19 bbWeight=0.25 PerfScore 2.12
G_M49351_IG15: ; bbWeight=0.12, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rdi, rax
- mov rsi, r15
+ mov rsi, rbx
; gcrRegs +[rsi]
call [CORINFO_HELP_CHKCASTANY]
- ; gcrRegs -[rsi r15] +[rax]
+ ; gcrRegs -[rbx rsi] +[rax]
; gcr arg pop 0
;; size=12 bbWeight=0.12 PerfScore 0.44
-G_M49351_IG16: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M49351_IG16: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M49351_IG17: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
+ add rsp, 24
pop rbx
pop r12
pop r13
@@ -175,11 +179,11 @@ G_M49351_IG17: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M49351_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M49351_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M49351_IG19: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
+ add rsp, 24
pop rbx
pop r12
pop r13
@@ -189,7 +193,7 @@ G_M49351_IG19: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-; Total bytes of code 261, prolog size 29, PerfScore 35.72, instruction count 93, allocated bytes for code 261 (MethodHash=56213f38) for method Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
+; Total bytes of code 275, prolog size 32, PerfScore 34.84, instruction count 96, allocated bytes for code 275 (MethodHash=56213f38) for method Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -197,12 +201,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0B
+ SizeOfProlog : 0x0E
CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18
CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
+19 (+6.67%) : 32025.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
@@ -8,7 +8,7 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 7, 4.50) ref -> r15 this class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
+; V00 this [V00,T01] ( 6, 4 ) ref -> r15 this class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
; V01 arg1 [V01,T00] ( 7, 4.75) ref -> rbx class-hnd single-def <System.Object>
; V02 arg2 [V02,T03] ( 3, 2.50) ref -> r14 class-hnd single-def <System.Collections.IComparer>
; V03 loc0 [V03,T04] ( 5, 2.38) ref -> r13 class-hnd exact single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
@@ -16,38 +16,40 @@
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
;* V06 loc3 [V06 ] ( 0, 0 ) int -> zero-ref single-def
;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
-; V08 loc5 [V08,T13] ( 2, 1 ) ref -> rbx class-hnd single-def <System.__Canon>
-; V09 loc6 [V09,T14] ( 2, 1 ) ref -> r13 class-hnd single-def <System.__Canon>
+; V08 loc5 [V08,T14] ( 2, 1 ) ref -> rbx class-hnd single-def <System.__Canon>
+; V09 loc6 [V09,T15] ( 2, 1 ) ref -> r13 class-hnd single-def <System.__Canon>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T09] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
+; V11 tmp1 [V11,T10] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
; V12 tmp2 [V12,T02] ( 3, 4.50) ref -> rdi class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
-; V13 tmp3 [V13,T10] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
+; V13 tmp3 [V13,T11] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
; V14 tmp4 [V14,T05] ( 3, 2.50) ref -> rdi class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
-; V15 tmp5 [V15,T11] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
-;* V16 tmp6 [V16,T12] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
-;* V17 tmp7 [V17,T15] ( 0, 0 ) int -> zero-ref single-def
-; V18 tmp8 [V18,T08] ( 3, 1.50) int -> rax
+; V15 tmp5 [V15,T12] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
+;* V16 tmp6 [V16,T13] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
+;* V17 tmp7 [V17,T16] ( 0, 0 ) int -> zero-ref single-def
+; V18 tmp8 [V18,T09] ( 3, 1.50) int -> rax
; V19 tmp9 [V19,T06] ( 2, 2 ) int -> rdi "Single return block return value"
; V20 tmp10 [V20,T07] ( 2, 2 ) long -> rdi "argument with side effect"
+; V21 cse0 [V21,T08] ( 5, 1.50) long -> r12 multi-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M56277_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
+ push r12
push rbx
- sub rsp, 16
+ push rax
lea rbp, [rsp+0x30]
- mov qword ptr [rbp-0x28], rdi
+ mov qword ptr [rbp-0x30], rdi
mov r15, rdi
; gcrRegs +[r15]
mov rbx, rsi
; gcrRegs +[rbx]
mov r14, rdx
; gcrRegs +[r14]
- ;; size=30 bbWeight=1 PerfScore 7.50
+ ;; size=29 bbWeight=1 PerfScore 9.25
G_M56277_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, rbx
; gcrRegs +[rdi]
@@ -56,13 +58,14 @@ G_M56277_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
;; size=8 bbWeight=1 PerfScore 1.50
G_M56277_IG03: ; bbWeight=0.25, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref, isz
mov r13, qword ptr [rdi]
- mov rdi, qword ptr [r15]
+ mov r12, qword ptr [r15]
+ mov rdi, r12
; gcrRegs -[rdi]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcr arg pop 0
cmp r13, rax
je SHORT G_M56277_IG05
- ;; size=17 bbWeight=0.25 PerfScore 2.06
+ ;; size=20 bbWeight=0.25 PerfScore 2.12
G_M56277_IG04: ; bbWeight=0.12, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
mov rdi, rax
mov rsi, rbx
@@ -71,13 +74,13 @@ G_M56277_IG04: ; bbWeight=0.12, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
;; size=12 bbWeight=0.12 PerfScore 0.44
-G_M56277_IG05: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M56277_IG05: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov r13, rbx
; gcrRegs +[r13]
test r15, r15
- je SHORT G_M56277_IG14
- ;; size=8 bbWeight=1 PerfScore 1.50
+ je G_M56277_IG14
+ ;; size=12 bbWeight=1 PerfScore 1.50
G_M56277_IG06: ; bbWeight=0.50, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
test r13, r13
@@ -85,12 +88,13 @@ G_M56277_IG06: ; bbWeight=0.50, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0
;; size=5 bbWeight=0.50 PerfScore 0.62
G_M56277_IG07: ; bbWeight=0.25, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rbx, qword ptr [r13]
- mov rdi, qword ptr [r15]
+ mov r12, qword ptr [r15]
+ mov rdi, r12
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcr arg pop 0
cmp rbx, rax
je SHORT G_M56277_IG09
- ;; size=18 bbWeight=0.25 PerfScore 2.06
+ ;; size=21 bbWeight=0.25 PerfScore 2.12
G_M56277_IG08: ; bbWeight=0.12, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref
mov rdi, rax
mov rsi, r13
@@ -107,7 +111,7 @@ G_M56277_IG09: ; bbWeight=0.50, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0
mov rbx, gword ptr [r15+0x08]
; gcrRegs +[rbx]
mov r13, gword ptr [r13+0x08]
- mov rdi, qword ptr [r15]
+ mov rdi, r12
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcr arg pop 0
mov rdi, rax
@@ -118,16 +122,17 @@ G_M56277_IG09: ; bbWeight=0.50, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0
mov rdx, rbx
; gcrRegs +[rdx]
lea rax, [(reloc)] ; function address
- ;; size=46 bbWeight=0.50 PerfScore 6.00
+ ;; size=46 bbWeight=0.50 PerfScore 5.12
G_M56277_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 16
+ add rsp, 8
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
tail.jmp [rax]<unknown method>
- ;; size=15 bbWeight=0.50 PerfScore 2.38
+ ;; size=17 bbWeight=0.50 PerfScore 2.62
G_M56277_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx rdx rbx rsi r13-r14]
mov edi, 1
@@ -138,14 +143,15 @@ G_M56277_IG12: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {},
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M56277_IG13: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 16
+ add rsp, 8
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
G_M56277_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx]
mov rdi, rbx
@@ -176,40 +182,43 @@ G_M56277_IG17: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {},
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M56277_IG18: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 16
+ add rsp, 8
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
G_M56277_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M56277_IG20: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 16
+ add rsp, 8
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
G_M56277_IG21: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
mov eax, edi
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M56277_IG22: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 16
+ add rsp, 8
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
-; Total bytes of code 285, prolog size 30, PerfScore 37.06, instruction count 101, allocated bytes for code 285 (MethodHash=ba80242a) for method Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
+; Total bytes of code 304, prolog size 29, PerfScore 39.31, instruction count 109, allocated bytes for code 304 (MethodHash=ba80242a) for method Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -217,13 +226,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0C
- CountOfUnwindCodes: 6
+ SizeOfProlog : 0x0B
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
libraries.pmi.linux.x64.checked.mch
-32 (-30.48%) : 291734.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -9,14 +9,16 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> registers
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r8 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> r9 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> rax "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> r9 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> r8 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> r8 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -32,72 +34,59 @@ G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, b
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx rdi]
cmp esi, ecx
- jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jl SHORT G_M264_IG11
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref
; byrRegs +[rdx rdi]
- mov r8d, ecx
- ;; size=3 bbWeight=0.50 PerfScore 0.12
+ mov eax, ecx
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- dec r8d
- mov eax, r8d
- test eax, eax
- jl SHORT G_M264_IG06
+ dec eax
+ js SHORT G_M264_IG09
cmp eax, esi
- jae SHORT G_M264_IG14
- mov r9d, eax
- mov r10d, dword ptr [rdi+4*r9]
- cmp eax, ecx
- jae SHORT G_M264_IG14
- cmp r10d, dword ptr [rdx+4*r9]
- je SHORT G_M264_IG08
- ;; size=31 bbWeight=4 PerfScore 42.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- test r8d, r8d
- jge SHORT G_M264_IG09
- xor eax, eax
- ;; size=7 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
- pop rbp
- ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, gcvars, byref, isz
+ jae SHORT G_M264_IG13
mov r8d, eax
- jmp SHORT G_M264_IG05
- ;; size=5 bbWeight=2 PerfScore 4.50
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- cmp r8d, esi
- jae SHORT G_M264_IG14
- mov r9d, r8d
- mov eax, dword ptr [rdi+4*r9]
- cmp r8d, ecx
- jae SHORT G_M264_IG14
- cmp eax, dword ptr [rdx+4*r9]
- jb SHORT G_M264_IG12
- ;; size=23 bbWeight=0.50 PerfScore 4.38
-G_M264_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r9d, dword ptr [rdi+4*r8]
+ cmp eax, ecx
+ jae SHORT G_M264_IG13
+ mov r8d, dword ptr [rdx+4*r8]
+ cmp r9d, r8d
+ je SHORT G_M264_IG05
+ ;; size=28 bbWeight=4 PerfScore 37.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx rdi]
+ cmp r8d, r9d
+ ja SHORT G_M264_IG11
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 105, prolog size 4, PerfScore 58.38, instruction count 43, allocated bytes for code 105 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 73, prolog size 4, PerfScore 44.50, instruction count 32, allocated bytes for code 73 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
-29 (-25.89%) : 157853.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
@@ -7,15 +7,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> rdi class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 6, 11 ) ref -> rsi class-hnd single-def <System.String>
-; V02 arg2 [V02,T05] ( 4, 6.50) int -> rdx single-def
-; V03 arg3 [V03,T07] ( 5, 4.50) int -> rcx single-def
-; V04 loc0 [V04,T03] ( 6, 13 ) int -> r8
-; V05 loc1 [V05,T00] ( 11, 27.50) int -> r9
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rdi class-hnd single-def <System.String>
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rsi class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 3, 6 ) int -> rdx single-def
+; V03 arg3 [V03,T08] ( 5, 4.50) int -> rcx single-def
+; V04 loc0 [V04,T01] ( 5, 12 ) int -> r8
+; V05 loc1 [V05,T00] ( 7, 25 ) int -> r9
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> rax "CSE - aggressive"
-; V08 cse1 [V08,T01] ( 6, 13.50) int -> r11 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> r11 "CSE - aggressive"
+; V08 cse1 [V08,T06] ( 3, 8.50) int -> r10 "CSE - aggressive"
+; V09 cse2 [V09,T09] ( 4, 6.50) int -> rax "CSE - aggressive"
+; V10 cse3 [V10,T03] ( 3, 12 ) int -> r11 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -37,54 +39,43 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {},
;; size=3 bbWeight=2 PerfScore 0.50
G_M6389_IG04: ; bbWeight=8, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
cmp r9d, r8d
- jge SHORT G_M6389_IG06
+ jge SHORT G_M6389_IG08
;; size=5 bbWeight=8 PerfScore 10.00
G_M6389_IG05: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
cmp r9d, eax
- jae SHORT G_M6389_IG11
+ jae SHORT G_M6389_IG10
mov r10d, r9d
movzx r10, word ptr [rdi+2*r10+0x0C]
lea r11d, [rdx+r9]
cmp r11d, dword ptr [rsi+0x08]
- jae SHORT G_M6389_IG11
- cmp r10w, word ptr [rsi+2*r11+0x0C]
+ jae SHORT G_M6389_IG10
+ movzx r11, word ptr [rsi+2*r11+0x0C]
+ cmp r10d, r11d
je SHORT G_M6389_IG03
- ;; size=32 bbWeight=4 PerfScore 48.00
-G_M6389_IG06: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
- cmp r9d, r8d
- jge SHORT G_M6389_IG09
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
- cmp r9d, eax
- jae SHORT G_M6389_IG11
- mov eax, r9d
- movzx rax, word ptr [rdi+2*rax+0x0C]
- lea r11d, [rdx+r9]
- cmp r11d, dword ptr [rsi+0x08]
- jae SHORT G_M6389_IG11
- mov ecx, r11d
- movzx rcx, word ptr [rsi+2*rcx+0x0C]
- sub eax, ecx
- ;; size=33 bbWeight=0.50 PerfScore 5.25
-G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=35 bbWeight=4 PerfScore 45.00
+G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi rdi]
+ mov eax, r10d
+ sub eax, r11d
+ ;; size=6 bbWeight=0.50 PerfScore 0.25
+G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rsi rdi]
+G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub eax, ecx
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 112, prolog size 4, PerfScore 72.88, instruction count 39, allocated bytes for code 112 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 83, prolog size 4, PerfScore 63.62, instruction count 30, allocated bytes for code 83 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================
Unwind Info:
-13 (-12.26%) : 146661.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
@@ -8,10 +8,10 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 10, 20 ) ref -> rbx class-hnd <System.Xml.Schema.XmlSchemaObject>
+; V00 arg0 [V00,T00] ( 9, 19.50) ref -> rbx class-hnd <System.Xml.Schema.XmlSchemaObject>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
-; V03 tmp2 [V03,T02] ( 3, 2 ) ref -> rax class-hnd "spilling QMark2" <System.Xml.Schema.XmlSchema>
+; V02 tmp1 [V02,T02] ( 2, 2 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V03 tmp2 [V03,T01] ( 2, 2 ) ref -> rax class-hnd "spilling QMark2" <System.Xml.Schema.XmlSchema>
;
; Lcl frame size = 8
@@ -31,7 +31,7 @@ G_M32300_IG03: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=4 bbWeight=2 PerfScore 4.00
G_M32300_IG04: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
- je SHORT G_M32300_IG06
+ je SHORT G_M32300_IG08
;; size=5 bbWeight=8 PerfScore 10.00
G_M32300_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rsi, rbx
@@ -43,52 +43,34 @@ G_M32300_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
test rax, rax
je SHORT G_M32300_IG03
;; size=23 bbWeight=4 PerfScore 11.00
-G_M32300_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M32300_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- test rbx, rbx
- je SHORT G_M32300_IG12
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M32300_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rdi, 0xD1FFAB1E ; System.Xml.Schema.XmlSchema
- cmp qword ptr [rbx], rdi
- je SHORT G_M32300_IG09
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M32300_IG08: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rsi, rbx
- ; gcrRegs +[rsi]
- call CORINFO_HELP_CHKCASTCLASS_SPECIAL
- ; gcrRegs -[rbx rsi] +[rax]
- ; gcr arg pop 0
- jmp SHORT G_M32300_IG10
- ;; size=10 bbWeight=0.25 PerfScore 0.81
-G_M32300_IG09: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax] +[rbx]
+ mov rax, 0xD1FFAB1E ; System.Xml.Schema.XmlSchema
+ cmp qword ptr [rbx], rax
mov rax, rbx
; gcrRegs +[rax]
- ;; size=3 bbWeight=0.25 PerfScore 0.06
-G_M32300_IG10: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
+ cmove rax, rbx
mov rax, gword ptr [rax+0x30]
- ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M32300_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=24 bbWeight=0.50 PerfScore 2.88
+G_M32300_IG07: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M32300_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax]
+G_M32300_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rbx]
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
;; size=10 bbWeight=0.50 PerfScore 0.12
-G_M32300_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M32300_IG09: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 106, prolog size 11, PerfScore 38.38, instruction count 33, allocated bytes for code 106 (MethodHash=8b5f81d3) for method System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
+; Total bytes of code 93, prolog size 11, PerfScore 36.00, instruction count 28, allocated bytes for code 93 (MethodHash=8b5f81d3) for method System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
; ============================================================
Unwind Info:
+46 (+5.60%) : 102188.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindNamespaceOrTypeOrExpressionSyntaxForSemanticModel(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
@@ -9,59 +9,60 @@
; Final local variable assignments
;
; V00 this [V00,T01] ( 7, 4.50) ref -> r15 this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Binder>
-; V01 arg1 [V01,T00] ( 19, 10.75) ref -> rbx class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax>
+; V01 arg1 [V01,T00] ( 18, 10.25) ref -> rbx class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax>
; V02 arg2 [V02,T03] ( 4, 3 ) ref -> r14 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag>
; V03 loc0 [V03,T21] ( 3, 2 ) ref -> r13 class-hnd <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
-; V04 loc1 [V04,T07] ( 8, 3.50) ref -> [rbp-0x30] class-hnd <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
+; V04 loc1 [V04,T07] ( 8, 3.50) ref -> [rbp-0x38] class-hnd <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.CodeAnalysis.VisualBasic.BoundNamespaceExpression>
-; V06 loc3 [V06,T10] ( 6, 3 ) ref -> [rbp-0x38] class-hnd exact spill-single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]>
+; V06 loc3 [V06,T10] ( 6, 3 ) ref -> [rbp-0x40] class-hnd exact spill-single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T13] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
-;* V09 tmp2 [V09,T38] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax>
+;* V09 tmp2 [V09,T39] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax>
;* V10 tmp3 [V10 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-; V11 tmp4 [V11,T34] ( 3, 1 ) long -> rcx "fgMakeTemp is creating a new local variable"
+; V11 tmp4 [V11,T35] ( 3, 1 ) long -> rcx "fgMakeTemp is creating a new local variable"
; V12 tmp5 [V12,T02] ( 6, 5.50) ref -> rdi class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax>
; V13 tmp6 [V13,T22] ( 3, 2 ) long -> rdi "fgMakeTemp is creating a new local variable"
-; V14 tmp7 [V14,T23] ( 2, 2 ) ref -> r14 class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.BoundNamespaceExpression>
+; V14 tmp7 [V14,T23] ( 2, 2 ) ref -> r12 class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.BoundNamespaceExpression>
;* V15 tmp8 [V15 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-; V16 tmp9 [V16,T35] ( 3, 1 ) long -> rdi "fgMakeTemp is creating a new local variable"
+; V16 tmp9 [V16,T36] ( 3, 1 ) long -> rdi "fgMakeTemp is creating a new local variable"
; V17 tmp10 [V17,T08] ( 4, 3.50) ref -> r13 class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax>
; V18 tmp11 [V18,T24] ( 2, 2 ) ref -> r13 class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-; V20 tmp13 [V20,T36] ( 3, 1 ) long -> rdi "fgMakeTemp is creating a new local variable"
+; V20 tmp13 [V20,T37] ( 3, 1 ) long -> rdi "fgMakeTemp is creating a new local variable"
; V21 tmp14 [V21,T09] ( 4, 3.50) ref -> rsi class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax>
; V22 tmp15 [V22,T14] ( 3, 2.25) ref -> rsi single-def "CASTCLASS eval op1"
-; V23 tmp16 [V23,T30] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
+; V23 tmp16 [V23,T31] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
; V24 tmp17 [V24,T12] ( 3, 2.50) ref -> rdi class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode>
; V25 tmp18 [V25,T15] ( 3, 2.25) ref -> rsi single-def "CASTCLASS eval op1"
-; V26 tmp19 [V26,T20] ( 3, 2.25) long -> rax "fgMakeTemp is creating a new local variable"
-; V27 tmp20 [V27,T16] ( 3, 2.25) ref -> rdi class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode>
+; V26 tmp19 [V26,T20] ( 3, 2.25) long -> rcx "fgMakeTemp is creating a new local variable"
+; V27 tmp20 [V27,T16] ( 3, 2.25) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode>
; V28 tmp21 [V28,T17] ( 3, 2.25) ref -> rsi single-def "CASTCLASS eval op1"
-; V29 tmp22 [V29,T31] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
+; V29 tmp22 [V29,T32] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
; V30 tmp23 [V30,T04] ( 6, 3.75) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode>
;* V31 tmp24 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.Symbols.NamespaceSymbol>
;* V32 tmp25 [V32 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <Microsoft.CodeAnalysis.VisualBasic.Symbols.NamespaceExtent>
;* V33 tmp26 [V33 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.VisualBasic.Symbols.NamespaceExtent>
; V34 tmp27 [V34,T18] ( 3, 2.25) ref -> rsi single-def "CASTCLASS eval op1"
-; V35 tmp28 [V35,T32] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
+; V35 tmp28 [V35,T33] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
; V36 tmp29 [V36,T05] ( 6, 3.75) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode>
;* V37 tmp30 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
; V38 tmp31 [V38,T19] ( 3, 2.25) ref -> rsi single-def "CASTCLASS eval op1"
-; V39 tmp32 [V39,T33] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
+; V39 tmp32 [V39,T34] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
; V40 tmp33 [V40,T06] ( 6, 3.75) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode>
;* V41 tmp34 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag>
-; V42 tmp35 [V42,T29] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
+; V42 tmp35 [V42,T30] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
;* V43 tmp36 [V43 ] ( 0, 0 ) ref -> zero-ref "field V32._symbolOrCompilation (fldOffset=0x0)" P-DEP
;* V44 tmp37 [V44 ] ( 0, 0 ) int -> zero-ref "field V32._kind (fldOffset=0x8)" P-DEP
-; V45 tmp38 [V45,T40] ( 1, 0.50) ref -> rax "field V33._symbolOrCompilation (fldOffset=0x0)" P-INDEP
-; V46 tmp39 [V46,T39] ( 2, 1 ) int -> rdx "field V33._kind (fldOffset=0x8)" P-INDEP
+; V45 tmp38 [V45,T41] ( 1, 0.50) ref -> rax "field V33._symbolOrCompilation (fldOffset=0x0)" P-INDEP
+; V46 tmp39 [V46,T40] ( 2, 1 ) int -> rdx "field V33._kind (fldOffset=0x8)" P-INDEP
; V47 tmp40 [V47,T11] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
; V48 tmp41 [V48,T25] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
; V49 tmp42 [V49,T26] ( 2, 2 ) ref -> r9 single-def "argument with side effect"
; V50 tmp43 [V50,T27] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-;* V51 cse0 [V51,T41] ( 0, 0 ) long -> zero-ref "CSE - conservative"
-; V52 cse1 [V52,T28] ( 6, 1.75) long -> r12 "CSE - conservative"
-; V53 cse2 [V53,T37] ( 3, 1 ) long -> r14 "CSE - conservative"
+;* V51 cse0 [V51,T42] ( 0, 0 ) long -> zero-ref "CSE - conservative"
+; V52 cse1 [V52,T29] ( 3, 1.50) ref -> r14 "CSE - conservative"
+; V53 cse2 [V53,T28] ( 6, 1.75) long -> [rbp-0x30] spill-single-def "CSE - conservative"
+; V54 cse3 [V54,T38] ( 3, 1 ) long -> r12 "CSE - conservative"
;
; Lcl frame size = 24
@@ -109,7 +110,7 @@ G_M39228_IG03: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
call [<unknown method>]
; gcrRegs -[rdi]
cmp eax, 789
- jne G_M39228_IG31
+ jne G_M39228_IG33
;; size=59 bbWeight=0.50 PerfScore 5.88
G_M39228_IG04: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
mov rdi, rbx
@@ -117,7 +118,7 @@ G_M39228_IG04: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
call [<unknown method>]
; gcrRegs -[rdi]
test eax, eax
- je G_M39228_IG31
+ je G_M39228_IG33
;; size=17 bbWeight=0.50 PerfScore 2.25
G_M39228_IG05: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax
@@ -142,49 +143,54 @@ G_M39228_IG07: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
; gcrRegs -[rdx rsi rdi r14] +[rax]
mov r13, rax
; gcrRegs +[r13]
- mov rsi, gword ptr [rbx+0x08]
+ mov r14, gword ptr [rbx+0x08]
+ ; gcrRegs +[r14]
+ mov rsi, r14
; gcrRegs +[rsi]
mov rdi, rsi
; gcrRegs +[rdi]
test rdi, rdi
je G_M39228_IG30
- ;; size=34 bbWeight=0.50 PerfScore 3.75
-G_M39228_IG08: ; bbWeight=0.25, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=37 bbWeight=0.50 PerfScore 3.88
+G_M39228_IG08: ; bbWeight=0.25, gcrefRegs=E0C8 {rbx rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- mov r14, qword ptr [rdi]
- mov r12, 0xD1FFAB1E ; Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode
- mov rdi, r12
+ mov r12, qword ptr [rdi]
+ mov rax, 0xD1FFAB1E ; Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode
+ mov rdi, rax
; gcrRegs -[rdi]
- cmp r14, rdi
+ mov qword ptr [rbp-0x30], rdi
+ mov rax, rdi
+ cmp r12, rax
je SHORT G_M39228_IG10
- ;; size=21 bbWeight=0.25 PerfScore 0.94
-G_M39228_IG09: ; bbWeight=0.12, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=0000 {}, byref
+ ;; size=28 bbWeight=0.25 PerfScore 1.25
+G_M39228_IG09: ; bbWeight=0.12, gcrefRegs=E048 {rbx rsi r13 r14 r15}, byrefRegs=0000 {}, byref
+ mov rdi, rax
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.12 PerfScore 0.12
-G_M39228_IG10: ; bbWeight=0.50, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=8 bbWeight=0.12 PerfScore 0.16
+G_M39228_IG10: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- mov rsi, gword ptr [rbx+0x08]
+ mov rsi, r14
; gcrRegs +[rsi]
- mov rdi, rsi
- ; gcrRegs +[rdi]
- mov rax, r12
- cmp r14, rax
+ mov rax, rsi
+ ; gcrRegs +[rax]
+ mov rdi, qword ptr [rbp-0x30]
+ mov rcx, rdi
+ cmp r12, rcx
je SHORT G_M39228_IG12
- ;; size=15 bbWeight=0.50 PerfScore 1.88
+ ;; size=18 bbWeight=0.50 PerfScore 1.50
G_M39228_IG11: ; bbWeight=0.12, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- mov rdi, rax
+ ; gcrRegs -[rax r14]
+ mov rdi, rcx
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] +[rax]
+ ;; size=8 bbWeight=0.12 PerfScore 0.16
+G_M39228_IG12: ; bbWeight=0.50, gcrefRegs=A009 {rax rbx r13 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, rax
; gcrRegs +[rdi]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M39228_IG12: ; bbWeight=0.50, gcrefRegs=A088 {rbx rdi r13 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
cmp dword ptr [rdi], edi
call [<unknown method>]
- ; gcrRegs -[rdi]
+ ; gcrRegs -[rax rdi]
cmp eax, 401
jne G_M39228_IG30
mov rsi, gword ptr [rbx+0x08]
@@ -193,12 +199,13 @@ G_M39228_IG12: ; bbWeight=0.50, gcrefRegs=A088 {rbx rdi r13 r15}, byrefRe
; gcrRegs +[rax]
test rax, rax
je SHORT G_M39228_IG15
- ;; size=31 bbWeight=0.50 PerfScore 5.38
-G_M39228_IG13: ; bbWeight=0.25, gcrefRegs=A049 {rax rbx rsi r13 r15}, byrefRegs=0000 {}, byref, isz
- mov rdi, r12
+ ;; size=34 bbWeight=0.50 PerfScore 5.50
+G_M39228_IG13: ; bbWeight=0.25, gcrefRegs=A049 {rax rbx rsi r13 r15}, byrefRegs=0000 {}, byref
+ mov r14, qword ptr [rbp-0x30]
+ mov rdi, r14
cmp qword ptr [rax], rdi
- je SHORT G_M39228_IG15
- ;; size=8 bbWeight=0.25 PerfScore 1.06
+ je G_M39228_IG32
+ ;; size=16 bbWeight=0.25 PerfScore 1.31
G_M39228_IG14: ; bbWeight=0.12, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
@@ -213,7 +220,7 @@ G_M39228_IG15: ; bbWeight=0.50, gcrefRegs=A009 {rax rbx r13 r15}, byrefRe
G_M39228_IG16: ; bbWeight=0.25, gcrefRegs=A089 {rax rbx rdi r13 r15}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax
cmp qword ptr [rdi], rcx
- jne G_M39228_IG36
+ jne G_M39228_IG38
;; size=19 bbWeight=0.25 PerfScore 1.06
G_M39228_IG17: ; bbWeight=0.50, gcrefRegs=A088 {rbx rdi r13 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
@@ -230,9 +237,9 @@ G_M39228_IG17: ; bbWeight=0.50, gcrefRegs=A088 {rbx rdi r13 r15}, byrefRe
jne G_M39228_IG30
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.VisualBasic.BoundNamespaceExpression
cmp qword ptr [r13], rdi
- jne G_M39228_IG37
- mov r14, r13
- ; gcrRegs +[r14]
+ jne G_M39228_IG39
+ mov r12, r13
+ ; gcrRegs +[r12]
mov rdi, gword ptr [r13+0x30]
; gcrRegs +[rdi]
mov rax, qword ptr [rdi]
@@ -248,34 +255,35 @@ G_M39228_IG17: ; bbWeight=0.50, gcrefRegs=A088 {rbx rdi r13 r15}, byrefRe
test rax, rax
je SHORT G_M39228_IG20
;; size=103 bbWeight=0.50 PerfScore 15.12
-G_M39228_IG18: ; bbWeight=0.25, gcrefRegs=C049 {rax rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M39228_IG18: ; bbWeight=0.25, gcrefRegs=9049 {rax rbx rsi r12 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r13]
- mov rdi, r12
+ mov r14, qword ptr [rbp-0x30]
+ mov rdi, r14
cmp qword ptr [rax], rdi
- je SHORT G_M39228_IG20
- ;; size=8 bbWeight=0.25 PerfScore 1.06
-G_M39228_IG19: ; bbWeight=0.12, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref
+ je G_M39228_IG31
+ ;; size=16 bbWeight=0.25 PerfScore 1.31
+G_M39228_IG19: ; bbWeight=0.12, gcrefRegs=9048 {rbx rsi r12 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] +[rax]
;; size=5 bbWeight=0.12 PerfScore 0.12
-G_M39228_IG20: ; bbWeight=0.50, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M39228_IG20: ; bbWeight=0.50, gcrefRegs=9009 {rax rbx r12 r15}, byrefRegs=0000 {}, byref, isz
mov r13, rax
; gcrRegs +[r13]
test r13, r13
je SHORT G_M39228_IG22
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M39228_IG21: ; bbWeight=0.25, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M39228_IG21: ; bbWeight=0.25, gcrefRegs=B009 {rax rbx r12 r13 r15}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax
cmp qword ptr [r13], rdi
...
+18 (+6.43%) : 102712.dasm - Microsoft.CodeAnalysis.VisualBasic.BinderFactory:BuildAttributeBinder(Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Binder:this (FullOpts)
@@ -14,39 +14,44 @@
;* V03 loc0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode>
;* V04 loc1 [V04 ] ( 0, 0 ) ushort -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T09] ( 3, 2.25) ref -> rsi single-def "CASTCLASS eval op1"
-; V07 tmp2 [V07,T17] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
-; V08 tmp3 [V08,T07] ( 3, 2.50) ref -> rdi class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode>
-; V09 tmp4 [V09,T10] ( 3, 2.25) ref -> rsi single-def "CASTCLASS eval op1"
-; V10 tmp5 [V10,T13] ( 3, 2.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V11 tmp6 [V11,T05] ( 4, 3.25) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode>
-; V12 tmp7 [V12,T11] ( 3, 2.25) ref -> rsi single-def "CASTCLASS eval op1"
-; V13 tmp8 [V13,T18] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
-; V14 tmp9 [V14,T08] ( 3, 2.50) ref -> rdi class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode>
-; V15 tmp10 [V15,T12] ( 3, 2.25) ref -> rsi single-def "CASTCLASS eval op1"
-; V16 tmp11 [V16,T14] ( 3, 2.25) long -> rax "fgMakeTemp is creating a new local variable"
-; V17 tmp12 [V17,T06] ( 4, 3.25) ref -> rdi class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode>
+; V06 tmp1 [V06,T07] ( 3, 2.25) ref -> rsi single-def "CASTCLASS eval op1"
+; V07 tmp2 [V07,T18] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
+; V08 tmp3 [V08,T05] ( 3, 2.50) ref -> rdi class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode>
+; V09 tmp4 [V09,T08] ( 3, 2.25) ref -> rsi single-def "CASTCLASS eval op1"
+; V10 tmp5 [V10,T13] ( 3, 2.25) long -> rax "fgMakeTemp is creating a new local variable"
+; V11 tmp6 [V11,T09] ( 3, 2.25) ref -> r13 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode>
+; V12 tmp7 [V12,T10] ( 3, 2.25) ref -> rsi single-def "CASTCLASS eval op1"
+; V13 tmp8 [V13,T19] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
+; V14 tmp9 [V14,T06] ( 3, 2.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode>
+; V15 tmp10 [V15,T11] ( 3, 2.25) ref -> rsi single-def "CASTCLASS eval op1"
+; V16 tmp11 [V16,T14] ( 3, 2.25) long -> rdi "fgMakeTemp is creating a new local variable"
+; V17 tmp12 [V17,T12] ( 3, 2.25) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode>
; V18 tmp13 [V18,T04] ( 2, 4 ) ref -> r14 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxTree>
; V19 tmp14 [V19,T00] ( 5, 10 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.AttributeBinder>
-; V20 cse0 [V20,T15] ( 3, 1.50) ref -> r13 "CSE - moderate"
-; V21 cse1 [V21,T16] ( 3, 1.50) ref -> r13 "CSE - moderate"
+; V20 cse0 [V20,T16] ( 3, 1.50) ref -> r13 "CSE - moderate"
+; V21 cse1 [V21,T17] ( 3, 1.50) ref -> r13 "CSE - moderate"
+; V22 cse2 [V22,T15] ( 5, 1.75) long -> [rbp-0x30] spill-single-def "CSE - moderate"
+; V23 cse3 [V23,T20] ( 3, 1 ) long -> r12 "CSE - conservative"
+; V24 cse4 [V24,T21] ( 3, 1 ) long -> r12 "CSE - conservative"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M14290_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
+ push r12
push rbx
- lea rbp, [rsp+0x20]
+ push rax
+ lea rbp, [rsp+0x30]
mov r14, rdi
; gcrRegs +[r14]
mov rbx, rsi
; gcrRegs +[rbx]
mov r15, rdx
; gcrRegs +[r15]
- ;; size=22 bbWeight=1 PerfScore 6.25
+ ;; size=25 bbWeight=1 PerfScore 8.25
G_M14290_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
test rbx, rbx
je G_M14290_IG14
@@ -62,12 +67,16 @@ G_M14290_IG03: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
je G_M14290_IG14
;; size=19 bbWeight=0.50 PerfScore 1.88
G_M14290_IG04: ; bbWeight=0.25, gcrefRegs=E0C8 {rbx rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov r12, qword ptr [rdi]
mov rax, 0xD1FFAB1E ; Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode
- cmp qword ptr [rdi], rax
- je SHORT G_M14290_IG06
- ;; size=15 bbWeight=0.25 PerfScore 1.06
-G_M14290_IG05: ; bbWeight=0.12, gcrefRegs=E048 {rbx rsi r13 r14 r15}, byrefRegs=0000 {}, byref
+ mov rdi, rax
; gcrRegs -[rdi]
+ mov qword ptr [rbp-0x30], rdi
+ mov rax, rdi
+ cmp r12, rax
+ je SHORT G_M14290_IG06
+ ;; size=28 bbWeight=0.25 PerfScore 1.25
+G_M14290_IG05: ; bbWeight=0.12, gcrefRegs=E048 {rbx rsi r13 r14 r15}, byrefRegs=0000 {}, byref
mov rdi, rax
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] +[rax]
@@ -76,35 +85,39 @@ G_M14290_IG06: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRe
; gcrRegs -[rax]
mov rsi, r13
; gcrRegs +[rsi]
- mov rax, rsi
- ; gcrRegs +[rax]
- mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode
- cmp qword ptr [rax], rdi
+ mov r13, rsi
+ mov rdi, qword ptr [rbp-0x30]
+ mov rax, rdi
+ cmp r12, rax
je SHORT G_M14290_IG08
- ;; size=21 bbWeight=0.50 PerfScore 2.38
+ ;; size=18 bbWeight=0.50 PerfScore 1.50
G_M14290_IG07: ; bbWeight=0.12, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax r13]
+ ; gcrRegs -[r13]
+ mov rdi, rax
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.12 PerfScore 0.12
-G_M14290_IG08: ; bbWeight=0.50, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- mov r13, gword ptr [rax+0x08]
+ mov r13, rax
; gcrRegs +[r13]
+ ;; size=11 bbWeight=0.12 PerfScore 0.19
+G_M14290_IG08: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ mov r13, gword ptr [r13+0x08]
mov rsi, r13
; gcrRegs +[rsi]
- mov rdi, rsi
- ; gcrRegs +[rdi]
- test rdi, rdi
+ mov rax, rsi
+ ; gcrRegs +[rax]
+ test rax, rax
je SHORT G_M14290_IG14
;; size=15 bbWeight=0.50 PerfScore 1.88
-G_M14290_IG09: ; bbWeight=0.25, gcrefRegs=E0C8 {rbx rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M14290_IG09: ; bbWeight=0.25, gcrefRegs=E049 {rax rbx rsi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov r12, qword ptr [rax]
+ mov rdi, qword ptr [rbp-0x30]
+ mov rax, rdi
; gcrRegs -[rax]
- mov rax, 0xD1FFAB1E ; Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode
- cmp qword ptr [rdi], rax
+ cmp r12, rax
je SHORT G_M14290_IG11
- ;; size=15 bbWeight=0.25 PerfScore 1.06
+ ;; size=15 bbWeight=0.25 PerfScore 1.12
G_M14290_IG10: ; bbWeight=0.12, gcrefRegs=E048 {rbx rsi r13 r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
mov rdi, rax
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] +[rax]
@@ -113,24 +126,23 @@ G_M14290_IG11: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRe
; gcrRegs -[rax]
mov rsi, r13
; gcrRegs +[rsi]
- mov rdi, rsi
- ; gcrRegs +[rdi]
- mov rax, 0xD1FFAB1E ; Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode
- cmp qword ptr [rdi], rax
+ mov rax, rsi
+ ; gcrRegs +[rax]
+ mov rdi, qword ptr [rbp-0x30]
+ cmp r12, rdi
je SHORT G_M14290_IG13
- ;; size=21 bbWeight=0.50 PerfScore 2.38
+ ;; size=15 bbWeight=0.50 PerfScore 1.38
G_M14290_IG12: ; bbWeight=0.12, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi r13]
- mov rdi, rax
+ ; gcrRegs -[rax r13]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] +[rax]
+ ;; size=5 bbWeight=0.12 PerfScore 0.12
+G_M14290_IG13: ; bbWeight=0.50, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, rax
; gcrRegs +[rdi]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M14290_IG13: ; bbWeight=0.50, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
+ cmp dword ptr [rdi], edi
call [<unknown method>]
- ; gcrRegs -[rdi]
+ ; gcrRegs -[rax rdi]
add eax, -59
cmp eax, 4
ja SHORT G_M14290_IG14
@@ -142,7 +154,7 @@ G_M14290_IG13: ; bbWeight=0.50, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRe
test rax, rax
je SHORT G_M14290_IG14
mov rbx, gword ptr [rbx+0x08]
- ;; size=41 bbWeight=0.50 PerfScore 4.62
+ ;; size=46 bbWeight=0.50 PerfScore 6.25
G_M14290_IG14: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov r14, gword ptr [r14+0x10]
@@ -175,15 +187,17 @@ G_M14290_IG14: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
; gcrRegs +[rax]
;; size=61 bbWeight=1 PerfScore 10.75
G_M14290_IG15: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 3.50
+ ;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 280, prolog size 13, PerfScore 37.62, instruction count 75, allocated bytes for code 280 (MethodHash=e9e3c82d) for method Microsoft.CodeAnalysis.VisualBasic.BinderFactory:BuildAttributeBinder(Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Binder:this (FullOpts)
+; Total bytes of code 298, prolog size 16, PerfScore 40.38, instruction count 88, allocated bytes for code 298 (MethodHash=e9e3c82d) for method Microsoft.CodeAnalysis.VisualBasic.BinderFactory:BuildAttributeBinder(Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Binder:this (FullOpts)
; ============================================================
Unwind Info:
@@ -191,12 +205,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x0B
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+14 (+16.09%) : 138480.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
@@ -14,15 +14,18 @@
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlDocument>
; V04 tmp2 [V04,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
; V05 tmp3 [V05,T04] ( 3, 1.25) long -> rsi "fgMakeTemp is creating a new local variable"
-; V06 tmp4 [V06,T00] ( 6, 8.75) ref -> rdi class-hnd "spilling QMark2" <System.Xml.XmlElement>
-; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
+; V06 tmp4 [V06,T01] ( 5, 5.75) ref -> rdi class-hnd "spilling QMark2" <System.Xml.XmlElement>
+; V07 tmp5 [V07,T00] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
+; V08 cse0 [V08,T05] ( 3, 1 ) long -> rbx "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M56653_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
+ push rbx
+ push rax
+ lea rbp, [rsp+0x10]
+ ;; size=8 bbWeight=1 PerfScore 3.50
G_M56653_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
mov rdi, gword ptr [rdi+0x08]
@@ -37,10 +40,11 @@ G_M56653_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
je SHORT G_M56653_IG07
;; size=30 bbWeight=1 PerfScore 10.75
G_M56653_IG03: ; bbWeight=0.25, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz
+ mov rbx, qword ptr [rdi]
mov rsi, 0xD1FFAB1E ; System.Xml.XmlElement
- cmp qword ptr [rdi], rsi
+ cmp rbx, rsi
je SHORT G_M56653_IG05
- ;; size=15 bbWeight=0.25 PerfScore 1.06
+ ;; size=18 bbWeight=0.25 PerfScore 0.88
G_M56653_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
mov rdi, rsi
@@ -51,26 +55,29 @@ G_M56653_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {},
mov rdi, rax
; gcrRegs +[rdi]
;; size=14 bbWeight=0.12 PerfScore 0.22
-G_M56653_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M56653_IG05: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- mov rax, qword ptr [rdi]
- mov rax, qword ptr [rax+0x70]
- ;; size=7 bbWeight=1 PerfScore 4.00
-G_M56653_IG06: ; bbWeight=1, epilog, nogc, extend
+ mov rax, qword ptr [rbx+0x70]
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M56653_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
pop rbp
tail.jmp [rax+0x18]<unknown method>
- ;; size=5 bbWeight=1 PerfScore 2.50
+ ;; size=10 bbWeight=0.50 PerfScore 1.62
G_M56653_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi]
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M56653_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
pop rbp
ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 87, prolog size 4, PerfScore 20.66, instruction count 24, allocated bytes for code 87 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
+; Total bytes of code 101, prolog size 8, PerfScore 19.22, instruction count 30, allocated bytes for code 101 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -78,9 +85,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x01
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x03
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
libraries_tests.run.linux.x64.Release.mch
-30 (-29.41%) : 572310.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (Tier1)
@@ -5,19 +5,21 @@
; optimized using Dynamic PGO
; rbp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2670
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 2670
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T01] ( 7, 7 ) int -> registers
+; V02 loc0 [V02,T00] ( 7, 7 ) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 6, 12 ) int -> rax "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 3 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 4 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 3 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T02] ( 6, 5 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T03] ( 6, 6 ) long -> r9 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T05] ( 2, 4 ) int -> rax "dup spill"
+; V05 tmp2 [V05,T03] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T02] ( 4, 3 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T04] ( 2, 2 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T01] ( 5, 4 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T06] ( 3, 3 ) int -> r9 "CSE - aggressive"
+; V10 cse1 [V10,T07] ( 3, 3 ) int -> r8 "CSE - aggressive"
+; V11 cse2 [V11,T08] ( 3, 3 ) long -> r8 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -33,45 +35,35 @@ G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, b
;; size=6 bbWeight=1 PerfScore 1.50
G_M264_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
dec eax
- mov r8d, eax
- test r8d, r8d
- jl SHORT G_M264_IG04
- cmp r8d, esi
- jae SHORT G_M264_IG10
- mov r9d, r8d
- mov r10d, dword ptr [rdi+4*r9]
- cmp r8d, ecx
- jae SHORT G_M264_IG10
- cmp r10d, dword ptr [rdx+4*r9]
- je SHORT G_M264_IG07
- ;; size=33 bbWeight=1 PerfScore 10.50
-G_M264_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- test eax, eax
- jl SHORT G_M264_IG12
+ js SHORT G_M264_IG06
cmp eax, esi
jae SHORT G_M264_IG10
- mov r9d, eax
- mov esi, dword ptr [rdi+4*r9]
+ mov r8d, eax
+ mov r9d, dword ptr [rdi+4*r8]
cmp eax, ecx
jae SHORT G_M264_IG10
- cmp esi, dword ptr [rdx+4*r9]
- jae SHORT G_M264_IG08
- ;; size=25 bbWeight=1 PerfScore 10.00
-G_M264_IG05: ; bbWeight=0.95, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r8d, dword ptr [rdx+4*r8]
+ cmp r9d, r8d
+ je SHORT G_M264_IG03
+ cmp r8d, r9d
+ jbe SHORT G_M264_IG08
+ ;; size=33 bbWeight=1 PerfScore 10.50
+G_M264_IG04: ; bbWeight=0.95, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rdx rdi]
mov eax, -1
;; size=5 bbWeight=0.95 PerfScore 0.24
-G_M264_IG06: ; bbWeight=0.95, epilog, nogc, extend
+G_M264_IG05: ; bbWeight=0.95, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.95 PerfScore 1.42
-G_M264_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, gcvars, byref, isz
- ; byrRegs +[rdx rdi]
- mov eax, r8d
- jmp SHORT G_M264_IG03
- ;; size=5 bbWeight=0.50 PerfScore 1.12
-G_M264_IG08: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdx rdi]
+G_M264_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M264_IG07: ; bbWeight=1, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M264_IG08: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, 1
;; size=5 bbWeight=0.05 PerfScore 0.01
G_M264_IG09: ; bbWeight=0.05, epilog, nogc, extend
@@ -84,18 +76,11 @@ G_M264_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
;; size=5 bbWeight=0 PerfScore 0.00
G_M264_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp esi, ecx
- jl SHORT G_M264_IG05
+ jl SHORT G_M264_IG04
jmp SHORT G_M264_IG08
;; size=6 bbWeight=0 PerfScore 0.00
-G_M264_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- xor eax, eax
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M264_IG13: ; bbWeight=0, epilog, nogc, extend
- pop rbp
- ret
- ;; size=2 bbWeight=0 PerfScore 0.00
-; Total bytes of code 102, prolog size 4, PerfScore 26.12, instruction count 42, allocated bytes for code 102 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 72, prolog size 4, PerfScore 16.75, instruction count 31, allocated bytes for code 72 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================
Unwind Info:
-30 (-29.41%) : 578398.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (Tier1)
@@ -5,19 +5,21 @@
; optimized using Dynamic PGO
; rbp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1920
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1920
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T01] ( 7, 7 ) int -> registers
+; V02 loc0 [V02,T00] ( 7, 7 ) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 6, 12 ) int -> rax "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 3 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 4 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 3 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T02] ( 6, 5 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T03] ( 6, 6 ) long -> r9 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T05] ( 2, 4 ) int -> rax "dup spill"
+; V05 tmp2 [V05,T03] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T02] ( 4, 3 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T04] ( 2, 2 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T01] ( 5, 4 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T06] ( 3, 3 ) int -> r9 "CSE - aggressive"
+; V10 cse1 [V10,T07] ( 3, 3 ) int -> r8 "CSE - aggressive"
+; V11 cse2 [V11,T08] ( 3, 3 ) long -> r8 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -33,45 +35,35 @@ G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, b
;; size=6 bbWeight=1 PerfScore 1.50
G_M264_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
dec eax
- mov r8d, eax
- test r8d, r8d
- jl SHORT G_M264_IG04
- cmp r8d, esi
- jae SHORT G_M264_IG10
- mov r9d, r8d
- mov r10d, dword ptr [rdi+4*r9]
- cmp r8d, ecx
- jae SHORT G_M264_IG10
- cmp r10d, dword ptr [rdx+4*r9]
- je SHORT G_M264_IG07
- ;; size=33 bbWeight=1 PerfScore 10.50
-G_M264_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- test eax, eax
- jl SHORT G_M264_IG12
+ js SHORT G_M264_IG06
cmp eax, esi
jae SHORT G_M264_IG10
- mov r9d, eax
- mov esi, dword ptr [rdi+4*r9]
+ mov r8d, eax
+ mov r9d, dword ptr [rdi+4*r8]
cmp eax, ecx
jae SHORT G_M264_IG10
- cmp esi, dword ptr [rdx+4*r9]
- jae SHORT G_M264_IG08
- ;; size=25 bbWeight=1 PerfScore 10.00
-G_M264_IG05: ; bbWeight=0.95, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r8d, dword ptr [rdx+4*r8]
+ cmp r9d, r8d
+ je SHORT G_M264_IG03
+ cmp r8d, r9d
+ jbe SHORT G_M264_IG08
+ ;; size=33 bbWeight=1 PerfScore 10.50
+G_M264_IG04: ; bbWeight=0.95, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rdx rdi]
mov eax, -1
;; size=5 bbWeight=0.95 PerfScore 0.24
-G_M264_IG06: ; bbWeight=0.95, epilog, nogc, extend
+G_M264_IG05: ; bbWeight=0.95, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.95 PerfScore 1.43
-G_M264_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, gcvars, byref, isz
- ; byrRegs +[rdx rdi]
- mov eax, r8d
- jmp SHORT G_M264_IG03
- ;; size=5 bbWeight=0.50 PerfScore 1.12
-G_M264_IG08: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdx rdi]
+G_M264_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M264_IG07: ; bbWeight=1, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M264_IG08: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, 1
;; size=5 bbWeight=0.05 PerfScore 0.01
G_M264_IG09: ; bbWeight=0.05, epilog, nogc, extend
@@ -84,18 +76,11 @@ G_M264_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
;; size=5 bbWeight=0 PerfScore 0.00
G_M264_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp esi, ecx
- jl SHORT G_M264_IG05
+ jl SHORT G_M264_IG04
jmp SHORT G_M264_IG08
;; size=6 bbWeight=0 PerfScore 0.00
-G_M264_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- xor eax, eax
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M264_IG13: ; bbWeight=0, epilog, nogc, extend
- pop rbp
- ret
- ;; size=2 bbWeight=0 PerfScore 0.00
-; Total bytes of code 102, prolog size 4, PerfScore 26.12, instruction count 42, allocated bytes for code 102 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 72, prolog size 4, PerfScore 16.75, instruction count 31, allocated bytes for code 72 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================
Unwind Info:
-30 (-29.41%) : 589312.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (Tier1)
@@ -5,19 +5,21 @@
; optimized using Dynamic PGO
; rbp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2664
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 2664
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T01] ( 7, 7 ) int -> registers
+; V02 loc0 [V02,T00] ( 7, 7 ) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 6, 12 ) int -> rax "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 3 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 4 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 3 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T02] ( 6, 5 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T03] ( 6, 6 ) long -> r9 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T05] ( 2, 4 ) int -> rax "dup spill"
+; V05 tmp2 [V05,T03] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T02] ( 4, 3 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T04] ( 2, 2 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T01] ( 5, 4 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T06] ( 3, 3 ) int -> r9 "CSE - aggressive"
+; V10 cse1 [V10,T07] ( 3, 3 ) int -> r8 "CSE - aggressive"
+; V11 cse2 [V11,T08] ( 3, 3 ) long -> r8 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -33,45 +35,35 @@ G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, b
;; size=6 bbWeight=1 PerfScore 1.50
G_M264_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
dec eax
- mov r8d, eax
- test r8d, r8d
- jl SHORT G_M264_IG04
- cmp r8d, esi
- jae SHORT G_M264_IG10
- mov r9d, r8d
- mov r10d, dword ptr [rdi+4*r9]
- cmp r8d, ecx
- jae SHORT G_M264_IG10
- cmp r10d, dword ptr [rdx+4*r9]
- je SHORT G_M264_IG07
- ;; size=33 bbWeight=1 PerfScore 10.50
-G_M264_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- test eax, eax
- jl SHORT G_M264_IG12
+ js SHORT G_M264_IG06
cmp eax, esi
jae SHORT G_M264_IG10
- mov r9d, eax
- mov esi, dword ptr [rdi+4*r9]
+ mov r8d, eax
+ mov r9d, dword ptr [rdi+4*r8]
cmp eax, ecx
jae SHORT G_M264_IG10
- cmp esi, dword ptr [rdx+4*r9]
- jae SHORT G_M264_IG08
- ;; size=25 bbWeight=1 PerfScore 10.00
-G_M264_IG05: ; bbWeight=0.95, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r8d, dword ptr [rdx+4*r8]
+ cmp r9d, r8d
+ je SHORT G_M264_IG03
+ cmp r8d, r9d
+ jbe SHORT G_M264_IG08
+ ;; size=33 bbWeight=1 PerfScore 10.50
+G_M264_IG04: ; bbWeight=0.95, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rdx rdi]
mov eax, -1
;; size=5 bbWeight=0.95 PerfScore 0.24
-G_M264_IG06: ; bbWeight=0.95, epilog, nogc, extend
+G_M264_IG05: ; bbWeight=0.95, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.95 PerfScore 1.43
-G_M264_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, gcvars, byref, isz
- ; byrRegs +[rdx rdi]
- mov eax, r8d
- jmp SHORT G_M264_IG03
- ;; size=5 bbWeight=0.50 PerfScore 1.12
-G_M264_IG08: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdx rdi]
+G_M264_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M264_IG07: ; bbWeight=1, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M264_IG08: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, 1
;; size=5 bbWeight=0.05 PerfScore 0.01
G_M264_IG09: ; bbWeight=0.05, epilog, nogc, extend
@@ -84,18 +76,11 @@ G_M264_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
;; size=5 bbWeight=0 PerfScore 0.00
G_M264_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp esi, ecx
- jl SHORT G_M264_IG05
+ jl SHORT G_M264_IG04
jmp SHORT G_M264_IG08
;; size=6 bbWeight=0 PerfScore 0.00
-G_M264_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- xor eax, eax
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M264_IG13: ; bbWeight=0, epilog, nogc, extend
- pop rbp
- ret
- ;; size=2 bbWeight=0 PerfScore 0.00
-; Total bytes of code 102, prolog size 4, PerfScore 26.12, instruction count 42, allocated bytes for code 102 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 72, prolog size 4, PerfScore 16.75, instruction count 31, allocated bytes for code 72 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================
Unwind Info:
+25 (+8.42%) : 89853.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
@@ -20,16 +20,16 @@
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions>
;* V09 tmp7 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V10 tmp8 [V10,T10] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-; V11 tmp9 [V11,T03] ( 5, 5.00) ubyte -> r15 "Inline stloc first use temp"
+; V11 tmp9 [V11,T06] ( 5, 3 ) ubyte -> r14 "Inline stloc first use temp"
;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V14 tmp12 [V14,T06] ( 5, 4.00) ref -> r14 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
-; V15 tmp13 [V15,T04] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
+; V14 tmp12 [V14,T05] ( 5, 4.00) ref -> r15 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
+; V15 tmp13 [V15,T03] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
; V16 tmp14 [V16,T08] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
-; V17 tmp15 [V17,T01] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V18 tmp16 [V18,T05] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
+; V17 tmp15 [V17,T01] ( 5, 5.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V18 tmp16 [V18,T04] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
; V19 tmp17 [V19,T09] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
-; V20 tmp18 [V20,T02] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V20 tmp18 [V20,T02] ( 5, 5.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V21 tmp19 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
; V22 tmp20 [V22 ] ( 4, 2 ) ubyte -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V01.hasValue (fldOffset=0x0)" P-DEP
; V23 tmp21 [V23 ] ( 3, 1 ) ubyte -> [rbp-0x1F] do-not-enreg[X] addr-exposed "field V01.value (fldOffset=0x1)" P-DEP
@@ -37,7 +37,7 @@
;
; Lcl frame size = 8
-G_M43884_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M43884_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
@@ -56,52 +56,50 @@ G_M43884_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rdi]
mov word ptr [rbp-0x20], di
cmp byte ptr [rbp-0x20], 0
- jne G_M43884_IG18
+ jne G_M43884_IG16
cmp byte ptr [r15+0x88], 0
- jne G_M43884_IG20
+ jne G_M43884_IG18
;; size=44 bbWeight=1 PerfScore 14.00
G_M43884_IG03: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[r15]
- xor r15d, r15d
- mov r14, gword ptr [rbx+0x88]
- ; gcrRegs +[r14]
- test r14, r14
- je G_M43884_IG17
+ xor r14d, r14d
+ mov r15, gword ptr [rbx+0x88]
+ ; gcrRegs +[r15]
+ test r15, r15
+ je G_M43884_IG15
;; size=19 bbWeight=1.00 PerfScore 3.50
-G_M43884_IG04: ; bbWeight=1.00, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
- test byte ptr [r14+0x18], 2
- je G_M43884_IG17
+G_M43884_IG04: ; bbWeight=1.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ test byte ptr [r15+0x18], 2
+ je G_M43884_IG15
;; size=11 bbWeight=1.00 PerfScore 3.99
-G_M43884_IG05: ; bbWeight=1.00, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
- mov rsi, gword ptr [r14+0x08]
+G_M43884_IG05: ; bbWeight=1.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ mov rsi, gword ptr [r15+0x08]
; gcrRegs +[rsi]
mov rax, rsi
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M43884_IG09
+ je SHORT G_M43884_IG08
;; size=12 bbWeight=1.00 PerfScore 3.50
-G_M43884_IG06: ; bbWeight=0.50, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r14]
+G_M43884_IG06: ; bbWeight=0.50, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r15]
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]
cmp qword ptr [rax], rdi
- je SHORT G_M43884_IG08
- ;; size=15 bbWeight=0.50 PerfScore 2.13
+ je G_M43884_IG20
+ ;; size=19 bbWeight=0.50 PerfScore 2.13
G_M43884_IG07: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M43884_IG08: ; bbWeight=1.00, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
- movzx r15, byte ptr [rax+0x94]
- ;; size=8 bbWeight=1.00 PerfScore 2.00
-G_M43884_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M43884_IG20
+ ;; size=10 bbWeight=0.25 PerfScore 0.75
+G_M43884_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- test r15d, r15d
- jne SHORT G_M43884_IG14
+ test r14d, r14d
+ jne SHORT G_M43884_IG12
cmp gword ptr [rbx+0x90], 0
- je SHORT G_M43884_IG16
+ je SHORT G_M43884_IG14
;; size=15 bbWeight=1 PerfScore 5.25
-G_M43884_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M43884_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x90]
; gcrRegs +[rdi]
mov rsi, gword ptr [rdi+0x08]
@@ -109,29 +107,27 @@ G_M43884_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov rax, rsi
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M43884_IG14
+ je SHORT G_M43884_IG12
;; size=19 bbWeight=1 PerfScore 5.50
-G_M43884_IG11: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
+G_M43884_IG10: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rdi]
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]
cmp qword ptr [rax], rdi
- je SHORT G_M43884_IG13
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M43884_IG12: ; bbWeight=0.25, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ je G_M43884_IG21
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M43884_IG11: ; bbWeight=0.25, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M43884_IG13: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- movzx r15, byte ptr [rax+0x94]
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M43884_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M43884_IG21
+ ;; size=7 bbWeight=0.25 PerfScore 0.75
+G_M43884_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
xor eax, eax
- cmp r15d, 2
+ cmp r14d, 2
sete al
;; size=9 bbWeight=1 PerfScore 1.50
-G_M43884_IG15: ; bbWeight=1, epilog, nogc, extend
+G_M43884_IG13: ; bbWeight=1, epilog, nogc, extend
add rsp, 8
pop rbx
pop r14
@@ -139,7 +135,7 @@ G_M43884_IG15: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=11 bbWeight=1 PerfScore 3.25
-G_M43884_IG16: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43884_IG14: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx]
lea rsi, bword ptr [rbx+0x90]
; byrRegs +[rsi]
@@ -148,19 +144,19 @@ G_M43884_IG16: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=000
call [<unknown method>]
; gcrRegs -[rdi]
; byrRegs -[rsi]
- jmp SHORT G_M43884_IG10
+ jmp SHORT G_M43884_IG09
;; size=18 bbWeight=0.13 PerfScore 0.73
-G_M43884_IG17: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M43884_IG15: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, rbx
; gcrRegs +[rdi]
call [Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:EnsureAttributesAreBound():this]
; gcrRegs -[rdi]
- mov r14, gword ptr [rbx+0x88]
- ; gcrRegs +[r14]
+ mov r15, gword ptr [rbx+0x88]
+ ; gcrRegs +[r15]
jmp G_M43884_IG05
;; size=21 bbWeight=0.00 PerfScore 0.02
-G_M43884_IG18: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx r14] +[r15]
+G_M43884_IG16: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
mov di, word ptr [r15+0x98]
mov word ptr [rbp-0x20], di
lea rdi, [rbp-0x20]
@@ -168,6 +164,17 @@ G_M43884_IG18: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byr
; gcrRegs -[r15]
nop
;; size=23 bbWeight=0 PerfScore 0.00
+G_M43884_IG17: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M43884_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0 PerfScore 0.00
G_M43884_IG19: ; bbWeight=0, epilog, nogc, extend
add rsp, 8
pop rbx
@@ -176,19 +183,18 @@ G_M43884_IG19: ; bbWeight=0, epilog, nogc, extend
pop rbp
ret
;; size=11 bbWeight=0 PerfScore 0.00
-G_M43884_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- xor eax, eax
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M43884_IG21: ; bbWeight=0, epilog, nogc, extend
- add rsp, 8
- pop rbx
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=11 bbWeight=0 PerfScore 0.00
+G_M43884_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rax rbx]
+ movzx r14, byte ptr [rax+0x94]
+ jmp G_M43884_IG08
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M43884_IG21: ; bbWeight=0, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
+ movzx r14, byte ptr [rax+0x94]
+ jmp G_M43884_IG12
+ ;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 297, prolog size 12, PerfScore 55.74, instruction count 79, allocated bytes for code 297 (MethodHash=8b225493) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
+; Total bytes of code 322, prolog size 12, PerfScore 52.74, instruction count 83, allocated bytes for code 322 (MethodHash=8b225493) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
; ============================================================
Unwind Info:
+45 (+9.00%) : 334294.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)
@@ -9,18 +9,18 @@
; 13 inlinees with PGO data; 19 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 28, 17.55) byref -> rbx this single-def
-; V01 loc0 [V01,T07] ( 6, 4 ) ref -> r15 class-hnd single-def <System.Reflection.TypeNameParser+TypeName>
-; V02 loc1 [V02,T14] ( 5, 2 ) ref -> r14 class-hnd <System.String>
+; V00 this [V00,T00] ( 28, 16.55) byref -> rbx this single-def
+; V01 loc0 [V01,T07] ( 7, 4 ) ref -> r15 class-hnd single-def <System.Reflection.TypeNameParser+TypeName>
+; V02 loc1 [V02,T13] ( 5, 2 ) ref -> r14 class-hnd <System.String>
;* V03 loc2 [V03 ] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T15] ( 3, 2 ) ref -> rax "guarded devirt return temp"
+; V05 tmp1 [V05,T14] ( 3, 2 ) ref -> rax "guarded devirt return temp"
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.TypeNameParser+NamespaceTypeName>
;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V08 tmp4 [V08,T08] ( 4, 4 ) int -> r13 "Inline stloc first use temp"
+; V08 tmp4 [V08,T10] ( 4, 3 ) int -> r13 "Inline stloc first use temp"
; V09 tmp5 [V09,T19] ( 3, 1.92) int -> rdi "Span.get_Item index"
; V10 tmp6 [V10,T18] ( 3, 1.92) byref -> rax single-def "Span.get_Item ptrToSpan"
-; V11 tmp7 [V11,T16] ( 3, 2 ) int -> rdi
+; V11 tmp7 [V11,T15] ( 3, 2 ) int -> rdi
;* V12 tmp8 [V12 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp"
; V13 tmp9 [V13,T05] ( 3, 5.72) int -> rdi "Span.get_Item index"
; V14 tmp10 [V14,T03] ( 3, 5.72) byref -> rax "Span.get_Item ptrToSpan"
@@ -43,8 +43,8 @@
;* V31 tmp27 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V32 tmp28 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V33 tmp29 [V33 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[System.String]>
-; V34 tmp30 [V34,T09] ( 2, 4 ) ref -> rsi class-hnd exact single-def "impAppendStmt" <System.String>
-; V35 tmp31 [V35,T10] ( 2, 4 ) ref -> rax single-def "Single return block return value"
+; V34 tmp30 [V34,T08] ( 2, 4 ) ref -> rsi class-hnd exact single-def "impAppendStmt" <System.String>
+; V35 tmp31 [V35,T09] ( 2, 4 ) ref -> rax single-def "Single return block return value"
;* V36 tmp32 [V36 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
;* V37 tmp33 [V37 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
;* V38 tmp34 [V38 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP
@@ -71,22 +71,24 @@
;* V59 tmp55 [V59 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-INDEP
; V60 tmp56 [V60,T17] ( 2, 2 ) byref -> rdx single-def "field V33._reference (fldOffset=0x0)" P-INDEP
;* V61 tmp57 [V61,T22] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP
-; V62 cse0 [V62,T11] ( 3, 3 ) int -> rdx "CSE - moderate"
-; V63 cse1 [V63,T12] ( 3, 2.95) int -> rdi "CSE - moderate"
-; V64 cse2 [V64,T13] ( 3, 2.95) int -> rdi "CSE - moderate"
+; V62 cse0 [V62,T16] ( 3, 2 ) int -> r12 "CSE - moderate"
+; V63 cse1 [V63,T11] ( 3, 2.95) int -> rdi "CSE - moderate"
+; V64 cse2 [V64,T12] ( 3, 2.95) int -> rdi "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M8635_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
+ push r12
push rbx
- lea rbp, [rsp+0x20]
+ push rax
+ lea rbp, [rsp+0x30]
mov rbx, rdi
; byrRegs +[rbx]
- ;; size=16 bbWeight=1 PerfScore 5.75
+ ;; size=19 bbWeight=1 PerfScore 7.75
G_M8635_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rdi, rbx
; byrRegs +[rdi]
@@ -96,7 +98,7 @@ G_M8635_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byre
mov r15, rax
; gcrRegs +[r15]
test r15, r15
- je G_M8635_IG16
+ je G_M8635_IG25
xor r14, r14
; gcrRegs +[r14]
mov edi, dword ptr [rbx+0x20]
@@ -112,7 +114,7 @@ G_M8635_IG04: ; bbWeight=0.95, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {
lea rax, bword ptr [rbx+0x30]
; byrRegs +[rax]
cmp edi, dword ptr [rax+0x08]
- jae G_M8635_IG22
+ jae G_M8635_IG19
mov rax, bword ptr [rax]
mov edi, edi
movzx r13, word ptr [rax+2*rdi]
@@ -126,60 +128,48 @@ G_M8635_IG04: ; bbWeight=0.95, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {
mov edi, r13d
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rdi+rax], 128
- jne G_M8635_IG23
+ jne G_M8635_IG20
jmp SHORT G_M8635_IG06
;; size=76 bbWeight=0.95 PerfScore 20.01
G_M8635_IG05: ; bbWeight=0.95, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref
mov edi, r13d
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
test eax, eax
- jne G_M8635_IG23
+ jne G_M8635_IG20
;; size=17 bbWeight=0.95 PerfScore 4.29
-G_M8635_IG06: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref, isz
+G_M8635_IG06: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref
mov edi, dword ptr [rbx+0x20]
cmp edi, dword ptr [rbx+0x38]
- jl SHORT G_M8635_IG09
- ;; size=8 bbWeight=1 PerfScore 6.00
+ jl G_M8635_IG13
+ ;; size=12 bbWeight=1 PerfScore 6.00
G_M8635_IG07: ; bbWeight=0.68, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref
xor edi, edi
;; size=2 bbWeight=0.68 PerfScore 0.17
-G_M8635_IG08: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref, isz
+G_M8635_IG08: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref
movzx rdi, di
call [System.Reflection.TypeNameParser:CharToToken(ushort):int]
mov r13d, eax
test r13d, r13d
- je G_M8635_IG19
+ je G_M8635_IG14
cmp r13d, 7
- jne SHORT G_M8635_IG10
- jmp G_M8635_IG14
- ;; size=32 bbWeight=1 PerfScore 8.00
-G_M8635_IG09: ; bbWeight=0.32, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref, isz
- mov edi, dword ptr [rbx+0x20]
- lea rax, bword ptr [rbx+0x30]
- ; byrRegs +[rax]
- cmp edi, dword ptr [rax+0x08]
- jae G_M8635_IG22
- mov rax, bword ptr [rax]
- movzx rdi, word ptr [rax+2*rdi]
- jmp SHORT G_M8635_IG08
- ;; size=25 bbWeight=0.32 PerfScore 4.00
-G_M8635_IG10: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
+ je G_M8635_IG23
+ ;; size=31 bbWeight=1 PerfScore 6.00
+G_M8635_IG09: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[r14]
- ; byrRegs -[rax]
mov edi, dword ptr [rbx+0x20]
cmp edi, dword ptr [rbx+0x38]
- jge SHORT G_M8635_IG13
+ jge SHORT G_M8635_IG11
;; size=8 bbWeight=1 PerfScore 6.00
-G_M8635_IG11: ; bbWeight=0.95, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
+G_M8635_IG10: ; bbWeight=0.95, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
lea rax, bword ptr [rbx+0x30]
; byrRegs +[rax]
cmp edi, dword ptr [rax+0x08]
- jae G_M8635_IG22
+ jae G_M8635_IG19
mov rax, bword ptr [rax]
mov edi, edi
movzx r14, word ptr [rax+2*rdi]
cmp r14d, 256
- jae SHORT G_M8635_IG12
+ jae G_M8635_IG18
xor edi, edi
cmp r14d, 256
setb dil
@@ -188,73 +178,34 @@ G_M8635_IG11: ; bbWeight=0.95, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}
mov edi, r14d
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rdi+rax], 128
- jne G_M8635_IG24
- jmp SHORT G_M8635_IG13
- ;; size=76 bbWeight=0.95 PerfScore 20.01
-G_M8635_IG12: ; bbWeight=0.95, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
- mov edi, r14d
- call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
- test eax, eax
- jne G_M8635_IG24
- ;; size=17 bbWeight=0.95 PerfScore 4.29
-G_M8635_IG13: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
- mov edx, dword ptr [rbx+0x20]
- cmp edx, dword ptr [rbx+0x38]
- jge SHORT G_M8635_IG14
- inc edx
- mov dword ptr [rbx+0x20], edx
- ;; size=13 bbWeight=1 PerfScore 7.25
-G_M8635_IG14: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
- cmp r13d, 3
- jne G_M8635_IG25
- ;; size=10 bbWeight=1 PerfScore 1.25
-G_M8635_IG15: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
- mov rdi, rbx
- ; byrRegs +[rdi]
- call [System.Reflection.TypeNameParser:CheckTopLevelAssemblyQualifiedName():ubyte:this]
- ; byrRegs -[rdi]
- test eax, eax
- je SHORT G_M8635_IG16
- mov rdi, rbx
- ; byrRegs +[rdi]
- call [System.Reflection.TypeNameParser:GetNextAssemblyName():System.String:this]
- ; gcrRegs +[rax]
- ; byrRegs -[rdi]
- mov r14, rax
- ; gcrRegs +[r14]
- test r14, r14
- jne SHORT G_M8635_IG18
- ;; size=30 bbWeight=0 PerfScore 0.00
-G_M8635_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax r14-r15]
- ; byrRegs -[rbx]
- xor rax, rax
- ; gcrRegs +[rax]
+ jne SHORT G_M8635_IG21
+ ;; size=74 bbWeight=0.95 PerfScore 18.10
+G_M8635_IG11: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
+ mov r12d, dword ptr [rbx+0x20]
+ cmp r12d, dword ptr [rbx+0x38]
+ jge G_M8635_IG23
+ ;; size=14 bbWeight=1 PerfScore 6.00
+G_M8635_IG12: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
+ jmp SHORT G_M8635_IG22
;; size=2 bbWeight=0 PerfScore 0.00
-G_M8635_IG17: ; bbWeight=0, epilog, nogc, extend
- pop rbx
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M8635_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, gcvars, byref
- ; gcrRegs -[rax] +[r14-r15]
- ; byrRegs +[rbx]
- mov rdi, rbx
- ; byrRegs +[rdi]
- call [System.Reflection.TypeNameParser:get_Peek():int:this]
- ; byrRegs -[rdi]
- xor edi, edi
- test eax, eax
- sete dil
- call [<unknown method>]
- ;; size=23 bbWeight=0 PerfScore 0.00
-G_M8635_IG19: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref, isz
+G_M8635_IG13: ; bbWeight=0.32, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref, isz
+ ; gcrRegs +[r14]
+ mov edi, dword ptr [rbx+0x20]
+ lea rax, bword ptr [rbx+0x30]
+ ; byrRegs +[rax]
+ cmp edi, dword ptr [rax+0x08]
+ jae SHORT G_M8635_IG19
+ mov rax, bword ptr [rax]
+ movzx rdi, word ptr [rax+2*rdi]
+ jmp G_M8635_IG08
+ ;; size=24 bbWeight=0.32 PerfScore 4.00
+G_M8635_IG14: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref
+ ; byrRegs -[rax]
...
+28 (+9.09%) : 57612.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
@@ -20,16 +20,16 @@
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions>
;* V09 tmp7 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V10 tmp8 [V10,T10] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-; V11 tmp9 [V11,T03] ( 5, 5 ) ubyte -> r14 "Inline stloc first use temp"
+; V11 tmp9 [V11,T06] ( 5, 3 ) ubyte -> r14 "Inline stloc first use temp"
;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V14 tmp12 [V14,T06] ( 5, 4 ) ref -> r13 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
-; V15 tmp13 [V15,T04] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
+; V14 tmp12 [V14,T05] ( 5, 4 ) ref -> r13 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
+; V15 tmp13 [V15,T03] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
; V16 tmp14 [V16,T08] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
-; V17 tmp15 [V17,T01] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V18 tmp16 [V18,T05] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
+; V17 tmp15 [V17,T01] ( 5, 5.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V18 tmp16 [V18,T04] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
; V19 tmp17 [V19,T09] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
-; V20 tmp18 [V20,T02] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V20 tmp18 [V20,T02] ( 5, 5.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V21 tmp19 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
; V22 tmp20 [V22 ] ( 4, 2 ) ubyte -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V01.hasValue (fldOffset=0x0)" P-DEP
; V23 tmp21 [V23 ] ( 3, 1 ) ubyte -> [rbp-0x27] do-not-enreg[X] addr-exposed "field V01.value (fldOffset=0x1)" P-DEP
@@ -57,16 +57,16 @@ G_M43884_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rdi]
mov word ptr [rbp-0x28], di
cmp byte ptr [rbp-0x28], 0
- jne G_M43884_IG15
+ jne G_M43884_IG13
cmp byte ptr [r15+0x88], 0
- jne G_M43884_IG17
+ jne G_M43884_IG15
xor r14d, r14d
mov r13, gword ptr [rbx+0x88]
; gcrRegs +[r13]
test r13, r13
- je G_M43884_IG19
+ je G_M43884_IG17
test byte ptr [r13+0x18], 2
- je G_M43884_IG19
+ je G_M43884_IG17
;; size=74 bbWeight=1 PerfScore 21.50
G_M43884_IG03: ; bbWeight=1, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15]
@@ -75,30 +75,28 @@ G_M43884_IG03: ; bbWeight=1, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {},
mov rax, rsi
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M43884_IG07
+ je SHORT G_M43884_IG06
;; size=12 bbWeight=1 PerfScore 3.50
-G_M43884_IG04: ; bbWeight=0.50, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M43884_IG04: ; bbWeight=0.50, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[r13]
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]
cmp qword ptr [rax], rdi
- je SHORT G_M43884_IG06
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ je G_M43884_IG18
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
G_M43884_IG05: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M43884_IG06: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
- movzx r14, byte ptr [rax+0x94]
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M43884_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M43884_IG18
+ ;; size=10 bbWeight=0.25 PerfScore 0.75
+G_M43884_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
test r14d, r14d
- jne SHORT G_M43884_IG12
+ jne SHORT G_M43884_IG10
cmp gword ptr [rbx+0x90], 0
- je SHORT G_M43884_IG14
+ je SHORT G_M43884_IG12
;; size=15 bbWeight=1 PerfScore 5.25
-G_M43884_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M43884_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x90]
; gcrRegs +[rdi]
mov rsi, gword ptr [rdi+0x08]
@@ -106,29 +104,27 @@ G_M43884_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov rax, rsi
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M43884_IG12
+ je SHORT G_M43884_IG10
;; size=19 bbWeight=1 PerfScore 5.50
-G_M43884_IG09: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
+G_M43884_IG08: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rdi]
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]
cmp qword ptr [rax], rdi
- je SHORT G_M43884_IG11
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M43884_IG10: ; bbWeight=0.25, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ je G_M43884_IG19
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M43884_IG09: ; bbWeight=0.25, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M43884_IG11: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- movzx r14, byte ptr [rax+0x94]
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M43884_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jmp G_M43884_IG19
+ ;; size=10 bbWeight=0.25 PerfScore 0.75
+G_M43884_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
xor eax, eax
cmp r14d, 2
sete al
;; size=9 bbWeight=1 PerfScore 1.50
-G_M43884_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M43884_IG11: ; bbWeight=1, epilog, nogc, extend
add rsp, 16
pop rbx
pop r13
@@ -137,7 +133,7 @@ G_M43884_IG13: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=13 bbWeight=1 PerfScore 3.75
-G_M43884_IG14: ; bbWeight=0.23, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43884_IG12: ; bbWeight=0.23, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx]
lea rsi, bword ptr [rbx+0x90]
; byrRegs +[rsi]
@@ -146,9 +142,9 @@ G_M43884_IG14: ; bbWeight=0.23, gcVars=0000000000000000 {}, gcrefRegs=000
call [<unknown method>]
; gcrRegs -[rdi]
; byrRegs -[rsi]
- jmp SHORT G_M43884_IG08
+ jmp SHORT G_M43884_IG07
;; size=18 bbWeight=0.23 PerfScore 1.33
-G_M43884_IG15: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+G_M43884_IG13: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] +[r15]
mov di, word ptr [r15+0x98]
mov word ptr [rbp-0x28], di
@@ -157,6 +153,18 @@ G_M43884_IG15: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byr
; gcrRegs -[r15]
nop
;; size=23 bbWeight=0 PerfScore 0.00
+G_M43884_IG14: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 16
+ pop rbx
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M43884_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0 PerfScore 0.00
G_M43884_IG16: ; bbWeight=0, epilog, nogc, extend
add rsp, 16
pop rbx
@@ -166,19 +174,7 @@ G_M43884_IG16: ; bbWeight=0, epilog, nogc, extend
pop rbp
ret
;; size=13 bbWeight=0 PerfScore 0.00
-G_M43884_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- xor eax, eax
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M43884_IG18: ; bbWeight=0, epilog, nogc, extend
- add rsp, 16
- pop rbx
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=13 bbWeight=0 PerfScore 0.00
-G_M43884_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M43884_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx]
mov rdi, rbx
; gcrRegs +[rdi]
@@ -188,8 +184,18 @@ G_M43884_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {
; gcrRegs +[r13]
jmp G_M43884_IG03
;; size=21 bbWeight=0 PerfScore 0.00
+G_M43884_IG18: ; bbWeight=0, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r13] +[rax]
+ movzx r14, byte ptr [rax+0x94]
+ jmp G_M43884_IG06
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M43884_IG19: ; bbWeight=0, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
+ movzx r14, byte ptr [rax+0x94]
+ jmp G_M43884_IG10
+ ;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 308, prolog size 17, PerfScore 57.08, instruction count 83, allocated bytes for code 308 (MethodHash=8b225493) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
+; Total bytes of code 336, prolog size 17, PerfScore 54.08, instruction count 87, allocated bytes for code 336 (MethodHash=8b225493) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
; ============================================================
Unwind Info:
librariestestsnotieredcompilation.run.linux.x64.Release.mch
-32 (-30.48%) : 31533.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -9,14 +9,16 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> registers
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r8 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> r9 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> rax "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> r9 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> r8 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> r8 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -32,72 +34,59 @@ G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, b
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx rdi]
cmp esi, ecx
- jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jl SHORT G_M264_IG11
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref
; byrRegs +[rdx rdi]
- mov r8d, ecx
- ;; size=3 bbWeight=0.50 PerfScore 0.12
+ mov eax, ecx
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- dec r8d
- mov eax, r8d
- test eax, eax
- jl SHORT G_M264_IG06
+ dec eax
+ js SHORT G_M264_IG09
cmp eax, esi
- jae SHORT G_M264_IG14
- mov r9d, eax
- mov r10d, dword ptr [rdi+4*r9]
- cmp eax, ecx
- jae SHORT G_M264_IG14
- cmp r10d, dword ptr [rdx+4*r9]
- je SHORT G_M264_IG08
- ;; size=31 bbWeight=4 PerfScore 42.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- test r8d, r8d
- jge SHORT G_M264_IG09
- xor eax, eax
- ;; size=7 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
- pop rbp
- ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, gcvars, byref, isz
+ jae SHORT G_M264_IG13
mov r8d, eax
- jmp SHORT G_M264_IG05
- ;; size=5 bbWeight=2 PerfScore 4.50
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- cmp r8d, esi
- jae SHORT G_M264_IG14
- mov r9d, r8d
- mov eax, dword ptr [rdi+4*r9]
- cmp r8d, ecx
- jae SHORT G_M264_IG14
- cmp eax, dword ptr [rdx+4*r9]
- jb SHORT G_M264_IG12
- ;; size=23 bbWeight=0.50 PerfScore 4.38
-G_M264_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r9d, dword ptr [rdi+4*r8]
+ cmp eax, ecx
+ jae SHORT G_M264_IG13
+ mov r8d, dword ptr [rdx+4*r8]
+ cmp r9d, r8d
+ je SHORT G_M264_IG05
+ ;; size=28 bbWeight=4 PerfScore 37.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx rdi]
+ cmp r8d, r9d
+ ja SHORT G_M264_IG11
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 105, prolog size 4, PerfScore 58.38, instruction count 43, allocated bytes for code 105 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 73, prolog size 4, PerfScore 44.50, instruction count 32, allocated bytes for code 73 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
-29 (-25.89%) : 97293.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
@@ -7,15 +7,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> rdi class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 6, 11 ) ref -> rsi class-hnd single-def <System.String>
-; V02 arg2 [V02,T05] ( 4, 6.50) int -> rdx single-def
-; V03 arg3 [V03,T07] ( 5, 4.50) int -> rcx single-def
-; V04 loc0 [V04,T03] ( 6, 13 ) int -> r8
-; V05 loc1 [V05,T00] ( 11, 27.50) int -> r9
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rdi class-hnd single-def <System.String>
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rsi class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 3, 6 ) int -> rdx single-def
+; V03 arg3 [V03,T08] ( 5, 4.50) int -> rcx single-def
+; V04 loc0 [V04,T01] ( 5, 12 ) int -> r8
+; V05 loc1 [V05,T00] ( 7, 25 ) int -> r9
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> rax "CSE - aggressive"
-; V08 cse1 [V08,T01] ( 6, 13.50) int -> r11 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> r11 "CSE - aggressive"
+; V08 cse1 [V08,T06] ( 3, 8.50) int -> r10 "CSE - aggressive"
+; V09 cse2 [V09,T09] ( 4, 6.50) int -> rax "CSE - aggressive"
+; V10 cse3 [V10,T03] ( 3, 12 ) int -> r11 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -37,54 +39,43 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {},
;; size=3 bbWeight=2 PerfScore 0.50
G_M6389_IG04: ; bbWeight=8, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
cmp r9d, r8d
- jge SHORT G_M6389_IG06
+ jge SHORT G_M6389_IG08
;; size=5 bbWeight=8 PerfScore 10.00
G_M6389_IG05: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
cmp r9d, eax
- jae SHORT G_M6389_IG11
+ jae SHORT G_M6389_IG10
mov r10d, r9d
movzx r10, word ptr [rdi+2*r10+0x0C]
lea r11d, [rdx+r9]
cmp r11d, dword ptr [rsi+0x08]
- jae SHORT G_M6389_IG11
- cmp r10w, word ptr [rsi+2*r11+0x0C]
+ jae SHORT G_M6389_IG10
+ movzx r11, word ptr [rsi+2*r11+0x0C]
+ cmp r10d, r11d
je SHORT G_M6389_IG03
- ;; size=32 bbWeight=4 PerfScore 48.00
-G_M6389_IG06: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
- cmp r9d, r8d
- jge SHORT G_M6389_IG09
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
- cmp r9d, eax
- jae SHORT G_M6389_IG11
- mov eax, r9d
- movzx rax, word ptr [rdi+2*rax+0x0C]
- lea r11d, [rdx+r9]
- cmp r11d, dword ptr [rsi+0x08]
- jae SHORT G_M6389_IG11
- mov ecx, r11d
- movzx rcx, word ptr [rsi+2*rcx+0x0C]
- sub eax, ecx
- ;; size=33 bbWeight=0.50 PerfScore 5.25
-G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=35 bbWeight=4 PerfScore 45.00
+G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi rdi]
+ mov eax, r10d
+ sub eax, r11d
+ ;; size=6 bbWeight=0.50 PerfScore 0.25
+G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rsi rdi]
+G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub eax, ecx
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 112, prolog size 4, PerfScore 72.88, instruction count 39, allocated bytes for code 112 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 83, prolog size 4, PerfScore 63.62, instruction count 30, allocated bytes for code 83 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================
Unwind Info:
-5 (-7.94%) : 16566.dasm - System.Buffers.ReadOnlySequence1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment
1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 9, 21.50) ref -> rdi class-hnd <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
+; V00 arg0 [V00,T00] ( 8, 21 ) ref -> rdi class-hnd <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
; V01 arg1 [V01,T02] ( 3, 6 ) ref -> rsi class-hnd single-def <System.Object>
; V02 arg2 [V02,T04] ( 3, 2.50) int -> rdx single-def
; V03 arg3 [V03,T01] ( 7, 9.50) long -> rcx
@@ -45,7 +45,7 @@ G_M36051_IG03: ; bbWeight=2, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {},
;; size=17 bbWeight=2 PerfScore 11.50
G_M36051_IG04: ; bbWeight=8, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
test rdi, rdi
- je SHORT G_M36051_IG06
+ je SHORT G_M36051_IG09
;; size=5 bbWeight=8 PerfScore 10.00
G_M36051_IG05: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
cmp rdi, rsi
@@ -53,12 +53,10 @@ G_M36051_IG05: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {},
;; size=5 bbWeight=4 PerfScore 5.00
G_M36051_IG06: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
- test rdi, rdi
- je SHORT G_M36051_IG09
movsxd rax, edx
cmp rax, rcx
jl SHORT G_M36051_IG09
- ;; size=13 bbWeight=0.50 PerfScore 1.38
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
G_M36051_IG07: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
mov edx, ecx
mov rax, rdi
@@ -76,7 +74,7 @@ G_M36051_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 63, prolog size 4, PerfScore 33.12, instruction count 25, allocated bytes for code 63 (MethodHash=6911732c) for method System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
+; Total bytes of code 58, prolog size 4, PerfScore 32.50, instruction count 23, allocated bytes for code 58 (MethodHash=6911732c) for method System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
; ============================================================
Unwind Info:
+29 (+5.50%) : 188075.dasm - System.Tests.ConvertToStringTests:FromUInt32Array() (FullOpts)
@@ -10,7 +10,7 @@
;
; V00 loc0 [V00,T06] ( 5, 17.00) ref -> rbx class-hnd exact single-def <<unknown class>>
; V01 loc1 [V01,T07] ( 5, 17 ) int -> r15
-; V02 loc2 [V02,T00] ( 10, 28 ) ref -> registers class-hnd <System.String>
+; V02 loc2 [V02,T00] ( 10, 24 ) ref -> r12 class-hnd <System.String>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (16) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T21] ( 3, 6 ) ref -> rbx class-hnd exact single-def "dup spill" <<unknown class>>
;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
@@ -19,7 +19,7 @@
; V08 tmp5 [V08,T19] ( 4, 6.00) ref -> r13 class-hnd "Inline return value spill temp" <System.String>
; V09 tmp6 [V09,T02] ( 4, 20.00) int -> rdi "Inlining Arg"
;* V10 tmp7 [V10 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V11 tmp8 [V11,T09] ( 7, 12 ) ref -> rax class-hnd "Inline return value spill temp" <System.String>
+; V11 tmp8 [V11,T09] ( 6, 10 ) ref -> rax class-hnd "Inline return value spill temp" <System.String>
; V12 tmp9 [V12,T03] ( 4, 20.00) int -> rdi "Inlining Arg"
;* V13 tmp10 [V13 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V14 tmp11 [V14 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
@@ -32,22 +32,22 @@
;* V21 tmp18 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V22 tmp19 [V22,T16] ( 2, 8 ) int -> r12 "Inlining Arg"
; V23 tmp20 [V23,T12] ( 2, 8 ) byref -> [rbp-0x38] spill-single-def "Inlining Arg"
-; V24 tmp21 [V24,T04] ( 4, 20.00) int -> r13 ld-addr-op "Inlining Arg"
+; V24 tmp21 [V24,T04] ( 4, 20.00) int -> r12 ld-addr-op "Inlining Arg"
;* V25 tmp22 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Globalization.NumberFormatInfo>
-; V26 tmp23 [V26,T20] ( 4, 6.00) ref -> r12 class-hnd "Inline return value spill temp" <System.String>
+; V26 tmp23 [V26,T20] ( 4, 6.00) ref -> r13 class-hnd "Inline return value spill temp" <System.String>
;* V27 tmp24 [V27 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V28 tmp25 [V28,T10] ( 7, 12 ) ref -> rax class-hnd "Inline return value spill temp" <System.String>
+; V28 tmp25 [V28,T10] ( 6, 10 ) ref -> rax class-hnd "Inline return value spill temp" <System.String>
; V29 tmp26 [V29,T05] ( 4, 20.00) int -> rdi "Inlining Arg"
;* V30 tmp27 [V30 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V31 tmp28 [V31 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V32 tmp29 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V33 tmp30 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V34 tmp31 [V34,T17] ( 2, 8 ) int -> r14 "Inlining Arg"
-; V35 tmp32 [V35,T13] ( 2, 8 ) byref -> r12 "Inlining Arg"
+; V35 tmp32 [V35,T13] ( 2, 8 ) byref -> r13 "Inlining Arg"
;* V36 tmp33 [V36 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V37 tmp34 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V38 tmp35 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V39 tmp36 [V39,T18] ( 2, 8 ) int -> r13 "Inlining Arg"
+; V39 tmp36 [V39,T18] ( 2, 8 ) int -> r12 "Inlining Arg"
; V40 tmp37 [V40,T14] ( 2, 8 ) byref -> [rbp-0x40] spill-single-def "Inlining Arg"
; V41 tmp38 [V41,T22] ( 2, 4 ) byref -> r13 "field V13._reference (fldOffset=0x0)" P-INDEP
; V42 tmp39 [V42,T30] ( 2, 4 ) int -> [rbp-0x30] spill-single-def "field V13._length (fldOffset=0x8)" P-INDEP
@@ -63,11 +63,11 @@
; V52 tmp49 [V52,T33] ( 2, 4 ) int -> rcx "field V20._length (fldOffset=0x8)" P-INDEP
;* V53 tmp50 [V53 ] ( 0, 0 ) byref -> zero-ref "field V21._reference (fldOffset=0x0)" P-INDEP
;* V54 tmp51 [V54 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
-; V55 tmp52 [V55,T26] ( 2, 4 ) byref -> r12 "field V30._reference (fldOffset=0x0)" P-INDEP
+; V55 tmp52 [V55,T26] ( 2, 4 ) byref -> r13 "field V30._reference (fldOffset=0x0)" P-INDEP
; V56 tmp53 [V56,T34] ( 2, 4 ) int -> r14 "field V30._length (fldOffset=0x8)" P-INDEP
;* V57 tmp54 [V57 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP
;* V58 tmp55 [V58 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
-; V59 tmp56 [V59,T27] ( 2, 4 ) byref -> r12 "field V32._reference (fldOffset=0x0)" P-INDEP
+; V59 tmp56 [V59,T27] ( 2, 4 ) byref -> r13 "field V32._reference (fldOffset=0x0)" P-INDEP
; V60 tmp57 [V60,T35] ( 2, 4 ) int -> r14 "field V32._length (fldOffset=0x8)" P-INDEP
;* V61 tmp58 [V61 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-INDEP
;* V62 tmp59 [V62 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP
@@ -125,12 +125,12 @@ G_M53077_IG05: ; bbWeight=4.00, gcrefRegs=2008 {rbx r13}, byrefRegs=0000
; gcrRegs +[r12]
mov edi, dword ptr [rbx+4*r14+0x10]
cmp edi, 300
- jae SHORT G_M53077_IG08
+ jae SHORT G_M53077_IG09
;; size=16 bbWeight=4.00 PerfScore 14.00
G_M53077_IG06: ; bbWeight=1.76, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref, isz
call [System.Number:UInt32ToDecStrForKnownSmallNumber(uint):System.String]
; gcrRegs +[rax]
- jmp SHORT G_M53077_IG09
+ jmp SHORT G_M53077_IG10
;; size=8 bbWeight=1.76 PerfScore 8.81
G_M53077_IG07: ; bbWeight=0.24, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax r12-r13]
@@ -140,25 +140,87 @@ G_M53077_IG07: ; bbWeight=0.24, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs +[r13]
jmp SHORT G_M53077_IG05
;; size=11 bbWeight=0.24 PerfScore 1.25
-G_M53077_IG08: ; bbWeight=0.24, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax] +[r12]
+G_M53077_IG08: ; bbWeight=2, gcrefRegs=3009 {rax rbx r12 r13}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r12]
+ test r12, r12
+ je G_M53077_IG26
+ jmp G_M53077_IG20
+ ;; size=14 bbWeight=2 PerfScore 6.50
+G_M53077_IG09: ; bbWeight=0.24, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
call [System.Number:UInt32ToDecStr_NoSmallNumberCheck(uint):System.String]
; gcrRegs +[rax]
;; size=6 bbWeight=0.24 PerfScore 0.72
-G_M53077_IG09: ; bbWeight=4, gcrefRegs=3009 {rax rbx r12 r13}, byrefRegs=0000 {}, byref, isz
- mov rdi, rax
- ; gcrRegs +[rdi]
- or rdi, r12
- ; gcrRegs -[rdi]
- je SHORT G_M53077_IG12
- ;; size=8 bbWeight=4 PerfScore 6.00
-G_M53077_IG10: ; bbWeight=2, gcrefRegs=3009 {rax rbx r12 r13}, byrefRegs=0000 {}, byref
+G_M53077_IG10: ; bbWeight=4, gcrefRegs=3009 {rax rbx r12 r13}, byrefRegs=0000 {}, byref, isz
test rax, rax
- je G_M53077_IG23
+ jne SHORT G_M53077_IG08
+ ;; size=5 bbWeight=4 PerfScore 5.00
+G_M53077_IG11: ; bbWeight=2, gcrefRegs=3009 {rax rbx r12 r13}, byrefRegs=0000 {}, byref
test r12, r12
- je G_M53077_IG23
+ jne G_M53077_IG26
+ ;; size=9 bbWeight=2 PerfScore 2.50
+G_M53077_IG12: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax r12-r13]
+ mov r12d, dword ptr [rbx+4*r14+0x10]
+ call [System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo]
+ ; gcrRegs +[rax]
+ cmp r12d, 300
+ jae G_M53077_IG22
+ ;; size=24 bbWeight=4.00 PerfScore 25.00
+G_M53077_IG13: ; bbWeight=1.76, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ mov edi, r12d
+ call [System.Number:UInt32ToDecStrForKnownSmallNumber(uint):System.String]
+ ; gcrRegs +[rax]
+ mov r13, rax
+ ; gcrRegs +[r13]
+ ;; size=12 bbWeight=1.76 PerfScore 6.16
+G_M53077_IG14: ; bbWeight=4.00, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ mov r12, r13
+ ; gcrRegs +[r12]
+ lea r14, bword ptr [rbx+4*r14+0x10]
+ ; byrRegs +[r14]
+ call [System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo]
+ ; gcrRegs +[rax]
+ mov edi, dword ptr [r14]
+ cmp edi, 300
+ jae G_M53077_IG25
+ ;; size=29 bbWeight=4.00 PerfScore 30.00
+G_M53077_IG15: ; bbWeight=1.76, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ ; byrRegs -[r14]
+ call [System.Number:UInt32ToDecStrForKnownSmallNumber(uint):System.String]
+ ; gcrRegs +[rax]
+ ;; size=6 bbWeight=1.76 PerfScore 5.28
+G_M53077_IG16: ; bbWeight=4, gcrefRegs=3009 {rax rbx r12 r13}, byrefRegs=0000 {}, byref
+ test rax, rax
+ jne G_M53077_IG23
+ ;; size=9 bbWeight=4 PerfScore 5.00
+G_M53077_IG17: ; bbWeight=2, gcrefRegs=3009 {rax rbx r12 r13}, byrefRegs=0000 {}, byref
+ test r12, r12
+ jne G_M53077_IG27
+ ;; size=9 bbWeight=2 PerfScore 2.50
+G_M53077_IG18: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax r12-r13]
+ inc r15d
+ cmp r15d, 5
+ jl G_M53077_IG03
+ ;; size=13 bbWeight=4 PerfScore 6.00
+G_M53077_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rbx]
+ add rsp, 40
+ pop rbx
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=15 bbWeight=1 PerfScore 4.25
+G_M53077_IG20: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=1009 {rax rbx r12}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rax rbx r12]
lea r13, bword ptr [rax+0x0C]
- ; gcrRegs -[r13]
; byrRegs +[r13]
mov eax, dword ptr [rax+0x08]
; gcrRegs -[rax]
@@ -181,8 +243,8 @@ G_M53077_IG10: ; bbWeight=2, gcrefRegs=3009 {rax rbx r12 r13}, byrefRegs=
mov ecx, r12d
xor edi, edi
mov dword ptr [rsp], edi
- ;; size=82 bbWeight=2 PerfScore 41.00
-G_M53077_IG11: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=2004 {rdx r13}, gcvars, byref
+ ;; size=64 bbWeight=2 PerfScore 36.00
+G_M53077_IG21: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=2004 {rdx r13}, gcvars, byref
; GC ptr vars -{V23}
mov dword ptr [rsp+0x08], edi
mov rdi, r13
@@ -192,118 +254,62 @@ G_M53077_IG11: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0008 {
xor r9d, r9d
call [<unknown method>]
; byrRegs -[rdx rdi r13]
- ;; size=22 bbWeight=2 PerfScore 11.50
-G_M53077_IG12: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov r13d, dword ptr [rbx+4*r14+0x10]
- call [System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo]
+ jmp G_M53077_IG12
+ ;; size=27 bbWeight=2 PerfScore 15.50
+G_M53077_IG22: ; bbWeight=0.24, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov edi, r12d
+ call [System.Number:UInt32ToDecStr_NoSmallNumberCheck(uint):System.String]
; gcrRegs +[rax]
- cmp r13d, 300
- jae SHORT G_M53077_IG16
- ;; size=20 bbWeight=4.00 PerfScore 25.00
-G_M53077_IG13: ; bbWeight=1.76, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov edi, r13d
- call [System.Number:UInt32ToDecStrForKnownSmallNumber(uint):System.String]
- ; gcrRegs +[rax]
- mov r12, rax
- ; gcrRegs +[r12]
- ;; size=12 bbWeight=1.76 PerfScore 6.16
-G_M53077_IG14: ; bbWeight=4.00, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov r13, r12
+ mov r13, rax
; gcrRegs +[r13]
- lea r14, bword ptr [rbx+4*r14+0x10]
- ; byrRegs +[r14]
- call [System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo]
- ; gcrRegs +[rax]
- mov edi, dword ptr [r14]
- cmp edi, 300
- jae SHORT G_M53077_IG17
- ;; size=25 bbWeight=4.00 PerfScore 30.00
-G_M53077_IG15: ; bbWeight=1.76, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- ; byrRegs -[r14]
- call [System.Number:UInt32ToDecStrForKnownSmallNumber(uint):System.String]
- ; gcrRegs +[rax]
- jmp SHORT G_M53077_IG18
- ;; size=8 bbWeight=1.76 PerfScore 8.81
-G_M53077_IG16: ; bbWeight=0.24, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax r12-r13]
- mov edi, r13d
- call [System.Number:UInt32ToDecStr_NoSmallNumberCheck(uint):System.String]
- ; gcrRegs +[rax]
- mov r12, rax
+ jmp G_M53077_IG14
+ ;; size=17 bbWeight=0.24 PerfScore 1.31
+G_M53077_IG23: ; bbWeight=2, gcrefRegs=3009 {rax rbx r12 r13}, byrefRegs=0000 {}, byref
; gcrRegs +[r12]
- jmp SHORT G_M53077_IG14
- ;; size=14 bbWeight=0.24 PerfScore 1.31
-G_M53077_IG17: ; bbWeight=0.24, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax] +[r13]
- call [System.Number:UInt32ToDecStr_NoSmallNumberCheck(uint):System.String]
- ; gcrRegs +[rax]
- ;; size=6 bbWeight=0.24 PerfScore 0.72
-G_M53077_IG18: ; bbWeight=4, gcrefRegs=3009 {rax rbx r12 r13}, byrefRegs=0000 {}, byref, isz
...
+42 (+10.85%) : 20618.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
@@ -13,37 +13,41 @@
; V02 arg2 [V02,T09] ( 5, 4 ) byref -> rbx single-def
; V03 arg3 [V03,T01] ( 12, 14.50) byref -> r8 single-def
; V04 loc0 [V04,T13] ( 6, 3 ) ubyte -> rcx
-; V05 loc1 [V05,T07] ( 6, 8 ) ubyte -> rcx
-; V06 loc2 [V06,T11] ( 5, 5.50) ubyte -> rax
-; V07 loc3 [V07,T03] ( 7, 14 ) int -> rdx
-; V08 loc4 [V08,T02] ( 5, 14.50) int -> r9
-; V09 loc5 [V09,T04] ( 4, 12 ) ubyte -> r11
+; V05 loc1 [V05,T07] ( 6, 8 ) ubyte -> r15
+; V06 loc2 [V06,T12] ( 4, 3.50) ubyte -> r14
+; V07 loc3 [V07,T03] ( 7, 14 ) int -> rcx
+; V08 loc4 [V08,T02] ( 5, 14.50) int -> r13
+; V09 loc5 [V09,T04] ( 4, 12 ) ubyte -> r12
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V11 tmp1 [V11,T14] ( 3, 3 ) int -> rcx "Span.get_Item index"
; V12 tmp2 [V12,T15] ( 3, 1.50) int -> rax
-; V13 tmp3 [V13,T00] ( 3, 24 ) int -> r11 "Span.get_Item index"
-; V14 tmp4 [V14 ] ( 3, 3 ) struct ( 8) [rbp-0x10] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-; V15 tmp5 [V15 ] ( 3, 3 ) struct ( 8) [rbp-0x18] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-; V16 tmp6 [V16,T12] ( 4, 4 ) int -> rax "Single return block return value"
+; V13 tmp3 [V13,T00] ( 3, 24 ) int -> rdx "Span.get_Item index"
+; V14 tmp4 [V14 ] ( 3, 3 ) struct ( 8) [rbp-0x30] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
+; V15 tmp5 [V15 ] ( 3, 3 ) struct ( 8) [rbp-0x38] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
+; V16 tmp6 [V16,T11] ( 4, 4 ) int -> rax "Single return block return value"
; V17 tmp7 [V17,T08] ( 3, 5.50) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V18 tmp8 [V18,T06] ( 5, 7 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V19 tmp9 [V19 ] ( 3, 3 ) ubyte -> [rbp-0x10] do-not-enreg[X] addr-exposed "field V14.hasValue (fldOffset=0x0)" P-DEP
-; V20 tmp10 [V20 ] ( 3, 3 ) int -> [rbp-0x0C] do-not-enreg[X] addr-exposed "field V14.value (fldOffset=0x4)" P-DEP
-; V21 tmp11 [V21 ] ( 3, 3 ) ubyte -> [rbp-0x18] do-not-enreg[X] addr-exposed "field V15.hasValue (fldOffset=0x0)" P-DEP
-; V22 tmp12 [V22 ] ( 3, 3 ) int -> [rbp-0x14] do-not-enreg[X] addr-exposed "field V15.value (fldOffset=0x4)" P-DEP
-; V23 cse0 [V23,T05] ( 3, 12 ) int -> r10 "CSE - aggressive"
+; V19 tmp9 [V19 ] ( 3, 3 ) ubyte -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V14.hasValue (fldOffset=0x0)" P-DEP
+; V20 tmp10 [V20 ] ( 3, 3 ) int -> [rbp-0x2C] do-not-enreg[X] addr-exposed "field V14.value (fldOffset=0x4)" P-DEP
+; V21 tmp11 [V21 ] ( 3, 3 ) ubyte -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V15.hasValue (fldOffset=0x0)" P-DEP
+; V22 tmp12 [V22 ] ( 3, 3 ) int -> [rbp-0x34] do-not-enreg[X] addr-exposed "field V15.value (fldOffset=0x4)" P-DEP
+; V23 cse0 [V23,T05] ( 3, 12 ) int -> rax "CSE - aggressive"
; V24 cse1 [V24,T16] ( 3, 1.50) int -> rax "CSE - moderate"
;
; Lcl frame size = 24
G_M45882_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
+ push r15
+ push r14
+ push r13
+ push r12
push rbx
sub rsp, 24
- lea rbp, [rsp+0x20]
+ lea rbp, [rsp+0x40]
mov rbx, rcx
; byrRegs +[rbx]
- ;; size=14 bbWeight=1 PerfScore 3.00
+ ;; size=22 bbWeight=1 PerfScore 7.00
G_M45882_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0188 {rbx rdi r8}, byref
; byrRegs +[rdi r8]
xor eax, eax
@@ -73,21 +77,25 @@ G_M45882_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0188 {rbx rd
G_M45882_IG05: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 24
pop rbx
+ pop r12
+ pop r13
+ pop r14
+ pop r15
pop rbp
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
G_M45882_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0188 {rbx rdi r8}, gcvars, byref, isz
cmp ecx, 128
jge SHORT G_M45882_IG07
xor edi, edi
; byrRegs -[rdi]
- mov qword ptr [rbp-0x18], rdi
- lea rdi, [rbp-0x18]
+ mov qword ptr [rbp-0x38], rdi
+ lea rdi, [rbp-0x38]
mov esi, ecx
call [<unknown method>]
; byrRegs -[r8]
; gcr arg pop 0
- mov rax, qword ptr [rbp-0x18]
+ mov rax, qword ptr [rbp-0x38]
mov qword ptr [rbx], rax
jmp G_M45882_IG24
;; size=38 bbWeight=0.50 PerfScore 5.12
@@ -102,13 +110,13 @@ G_M45882_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0188 {rbx rd
;; size=23 bbWeight=0.50 PerfScore 2.38
G_M45882_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0188 {rbx rdi r8}, byref, isz
and ecx, -129
- movzx rcx, cl
- lea eax, [rcx+0x01]
+ movzx r15, cl
+ lea eax, [r15+0x01]
cmp eax, esi
jle SHORT G_M45882_IG11
xor eax, eax
mov dword ptr [r8], eax
- ;; size=21 bbWeight=0.50 PerfScore 1.75
+ ;; size=23 bbWeight=0.50 PerfScore 1.75
G_M45882_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx rdi r8]
xor eax, eax
@@ -116,9 +124,13 @@ G_M45882_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
G_M45882_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 24
pop rbx
+ pop r12
+ pop r13
+ pop r14
+ pop r15
pop rbp
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
G_M45882_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0188 {rbx rdi r8}, gcvars, byref, isz
; byrRegs +[rbx rdi r8]
cmp edx, 2
@@ -132,89 +144,88 @@ G_M45882_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0188 {rbx rd
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M45882_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0188 {rbx rdi r8}, byref, isz
- movzx rax, al
- test eax, eax
+ movzx r14, al
+ test r14d, r14d
je SHORT G_M45882_IG15
- cmp ecx, 4
+ cmp r15d, 4
jle SHORT G_M45882_IG15
- ;; size=12 bbWeight=0.50 PerfScore 1.38
+ ;; size=15 bbWeight=0.50 PerfScore 1.38
G_M45882_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref
; byrRegs -[rbx rdi]
- xor ecx, ecx
- mov dword ptr [r8], ecx
+ xor esi, esi
+ mov dword ptr [r8], esi
mov eax, 3
jmp G_M45882_IG26
;; size=15 bbWeight=0.50 PerfScore 1.75
G_M45882_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0188 {rbx rdi r8}, byref, isz
; byrRegs +[rbx rdi]
- xor edx, edx
- xor r9d, r9d
- test ecx, ecx
+ xor ecx, ecx
+ xor r13d, r13d
+ test r15d, r15d
jle SHORT G_M45882_IG20
- ;; size=9 bbWeight=0.50 PerfScore 0.88
+ ;; size=10 bbWeight=0.50 PerfScore 0.88
G_M45882_IG16: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0188 {rbx rdi r8}, byref, isz
- mov r10d, dword ptr [r8]
- mov r11d, r10d
- cmp r11d, esi
+ mov eax, dword ptr [r8]
+ mov edx, eax
+ cmp edx, esi
jae G_M45882_IG27
- movzx r11, byte ptr [rdi+r11]
- inc r10d
- mov dword ptr [r8], r10d
- test edx, edx
+ movzx r12, byte ptr [rdi+rdx]
+ inc eax
+ mov dword ptr [r8], eax
+ test ecx, ecx
jne SHORT G_M45882_IG19
- ;; size=30 bbWeight=4 PerfScore 32.00
+ ;; size=27 bbWeight=4 PerfScore 32.00
G_M45882_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0188 {rbx rdi r8}, byref, isz
- test eax, eax
+ test r14d, r14d
je SHORT G_M45882_IG18
- test r11d, r11d
+ test r12d, r12d
je SHORT G_M45882_IG21
- ;; size=9 bbWeight=2 PerfScore 5.00
+ jmp SHORT G_M45882_IG19
+ ;; size=12 bbWeight=2 PerfScore 9.00
G_M45882_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0188 {rbx rdi r8}, byref, isz
- test eax, eax
- jne SHORT G_M45882_IG19
- test r11d, r11d
+ test r12d, r12d
je SHORT G_M45882_IG19
- mov r10d, ecx
- sub r10d, r9d
- cmp r10d, 4
+ mov eax, r15d
+ sub eax, r13d
+ cmp eax, 4
jg SHORT G_M45882_IG14
- ;; size=21 bbWeight=2 PerfScore 8.50
+ ;; size=16 bbWeight=2 PerfScore 6.00
G_M45882_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0188 {rbx rdi r8}, byref, isz
- shl edx, 8
- or edx, r11d
- inc r9d
- cmp r9d, ecx
+ shl ecx, 8
+ or ecx, r12d
+ inc r13d
+ cmp r13d, r15d
jl SHORT G_M45882_IG16
;; size=14 bbWeight=4 PerfScore 9.00
G_M45882_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0108 {rbx r8}, byref, isz
; byrRegs -[rdi]
- test edx, edx
+ test ecx, ecx
jl SHORT G_M45882_IG14
- test eax, eax
+ test r14d, r14d
je SHORT G_M45882_IG23
jmp SHORT G_M45882_IG22
- ;; size=10 bbWeight=0.50 PerfScore 2.25
+ ;; size=11 bbWeight=0.50 PerfScore 2.25
G_M45882_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref, isz
; byrRegs -[rbx]
- xor edx, edx
- mov dword ptr [r8], edx
+ xor ecx, ecx
+ mov dword ptr [r8], ecx
mov eax, 4
jmp SHORT G_M45882_IG26
;; size=12 bbWeight=0.50 PerfScore 1.75
G_M45882_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0108 {rbx r8}, byref, isz
; byrRegs +[rbx]
- cmp edx, 128
+ cmp ecx, 128
jb SHORT G_M45882_IG21
;; size=8 bbWeight=0.50 PerfScore 0.62
G_M45882_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
; byrRegs -[r8]
xor edi, edi
- mov qword ptr [rbp-0x10], rdi
- lea rdi, [rbp-0x10]
- mov esi, edx
+ mov qword ptr [rbp-0x30], rdi
+ lea rdi, [rbp-0x30]
+ mov esi, ecx
call [<unknown method>]
; gcr arg pop 0
- mov rax, qword ptr [rbp-0x10]
+ mov rax, qword ptr [rbp-0x30]
mov qword ptr [rbx], rax
;; size=25 bbWeight=0.50 PerfScore 3.50
...
+14 (+16.09%) : 167450.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
@@ -14,15 +14,18 @@
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlDocument>
; V04 tmp2 [V04,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
; V05 tmp3 [V05,T04] ( 3, 1.25) long -> rsi "fgMakeTemp is creating a new local variable"
-; V06 tmp4 [V06,T00] ( 6, 8.75) ref -> rdi class-hnd "spilling QMark2" <System.Xml.XmlElement>
-; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
+; V06 tmp4 [V06,T01] ( 5, 5.75) ref -> rdi class-hnd "spilling QMark2" <System.Xml.XmlElement>
+; V07 tmp5 [V07,T00] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
+; V08 cse0 [V08,T05] ( 3, 1 ) long -> rbx "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M56653_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
+ push rbx
+ push rax
+ lea rbp, [rsp+0x10]
+ ;; size=8 bbWeight=1 PerfScore 3.50
G_M56653_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
mov rdi, gword ptr [rdi+0x08]
@@ -37,10 +40,11 @@ G_M56653_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
je SHORT G_M56653_IG07
;; size=30 bbWeight=1 PerfScore 10.75
G_M56653_IG03: ; bbWeight=0.25, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz
+ mov rbx, qword ptr [rdi]
mov rsi, 0xD1FFAB1E ; System.Xml.XmlElement
- cmp qword ptr [rdi], rsi
+ cmp rbx, rsi
je SHORT G_M56653_IG05
- ;; size=15 bbWeight=0.25 PerfScore 1.06
+ ;; size=18 bbWeight=0.25 PerfScore 0.88
G_M56653_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
mov rdi, rsi
@@ -51,26 +55,29 @@ G_M56653_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {},
mov rdi, rax
; gcrRegs +[rdi]
;; size=14 bbWeight=0.12 PerfScore 0.22
-G_M56653_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M56653_IG05: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- mov rax, qword ptr [rdi]
- mov rax, qword ptr [rax+0x70]
- ;; size=7 bbWeight=1 PerfScore 4.00
-G_M56653_IG06: ; bbWeight=1, epilog, nogc, extend
+ mov rax, qword ptr [rbx+0x70]
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M56653_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
pop rbp
tail.jmp [rax+0x18]<unknown method>
- ;; size=5 bbWeight=1 PerfScore 2.50
+ ;; size=10 bbWeight=0.50 PerfScore 1.62
G_M56653_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi]
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M56653_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
pop rbp
ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 87, prolog size 4, PerfScore 20.66, instruction count 24, allocated bytes for code 87 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
+; Total bytes of code 101, prolog size 8, PerfScore 19.22, instruction count 30, allocated bytes for code 101 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -78,9 +85,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x01
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x03
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
realworld.run.linux.x64.checked.mch
-16 (-7.17%) : 812.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
@@ -12,7 +12,7 @@
; V01 arg1 [V01,T06] ( 7, 4.50) byref -> rdx single-def
; V02 loc0 [V02,T07] ( 5, 3 ) ushort -> rcx
; V03 loc1 [V03,T05] ( 5, 7 ) int -> rax
-; V04 loc2 [V04,T00] ( 7, 13.50) int -> r8
+; V04 loc2 [V04,T00] ( 5, 12.50) int -> r8
; V05 loc3 [V05,T09] ( 3, 1.50) int -> rax
; V06 loc4 [V06,T10] ( 3, 1.50) int -> rax
; V07 loc5 [V07,T11] ( 3, 1.50) int -> r8
@@ -20,9 +20,9 @@
; V09 tmp1 [V09,T04] ( 2, 8 ) int -> r8 "impSpillLclRefs"
;* V10 tmp2 [V10 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
; V11 tmp3 [V11,T08] ( 2, 2 ) int -> rcx "Single return block return value"
-; V12 tmp4 [V12,T03] ( 7, 7.50) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp5 [V13,T02] ( 8, 8.50) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V14 cse0 [V14,T01] ( 5, 11 ) int -> r9 multi-def "CSE - aggressive"
+; V12 tmp4 [V12,T03] ( 6, 7 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp5 [V13,T02] ( 7, 8 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V14 cse0 [V14,T01] ( 4, 10.50) int -> r9 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -46,8 +46,8 @@ G_M3969_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi
cmp esi, 1
jne SHORT G_M3969_IG04
mov dword ptr [rdx], -1
- jmp G_M3969_IG11
- ;; size=36 bbWeight=0.50 PerfScore 4.12
+ jmp SHORT G_M3969_IG11
+ ;; size=33 bbWeight=0.50 PerfScore 4.12
G_M3969_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
cmp esi, 2
jne SHORT G_M3969_IG05
@@ -89,23 +89,19 @@ G_M3969_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi},
;; size=18 bbWeight=2 PerfScore 6.00
G_M3969_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
cmp r8d, esi
- jae SHORT G_M3969_IG09
+ jae SHORT G_M3969_IG10
mov r9d, r8d
movzx r9, word ptr [rdi+2*r9]
lea r10d, [r9-0x30]
cmp r10d, 9
jbe SHORT G_M3969_IG07
;; size=23 bbWeight=4 PerfScore 21.00
-G_M3969_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- cmp r8d, esi
- jae SHORT G_M3969_IG10
- mov r9d, r8d
- movzx r9, word ptr [rdi+2*r9]
+G_M3969_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref, isz
+ ; byrRegs -[rdi]
test r9d, r9d
jne SHORT G_M3969_IG13
- ;; size=18 bbWeight=0.50 PerfScore 2.38
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
G_M3969_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref
- ; byrRegs -[rdi]
mov dword ptr [rdx], eax
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M3969_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -143,7 +139,7 @@ G_M3969_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 223, prolog size 4, PerfScore 52.38, instruction count 76, allocated bytes for code 223 (MethodHash=db41f07e) for method System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
+; Total bytes of code 207, prolog size 4, PerfScore 50.62, instruction count 72, allocated bytes for code 207 (MethodHash=db41f07e) for method System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
; ============================================================
Unwind Info:
-11 (-5.02%) : 18490.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
@@ -15,8 +15,8 @@
; V04 loc3 [V04,T01] ( 8, 25 ) int -> r9
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T06] ( 2, 16 ) int -> r9 "dup spill"
-; V08 tmp2 [V08,T03] ( 3, 17 ) int -> rax "dup spill"
+; V07 tmp1 [V07,T05] ( 2, 16 ) int -> r9 "dup spill"
+; V08 tmp2 [V08,T06] ( 2, 16 ) int -> r9 "dup spill"
; V09 tmp3 [V09,T07] ( 2, 16 ) int -> r8 "dup spill"
; V10 tmp4 [V10,T08] ( 2, 16 ) int -> rdx "dup spill"
; V11 tmp5 [V11,T09] ( 2, 16 ) int -> r8 "dup spill"
@@ -28,8 +28,8 @@
;* V17 tmp11 [V17 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V18 tmp12 [V18 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
; V19 tmp13 [V19,T14] ( 3, 6 ) ref -> rdx single-def "arr expr"
-; V20 tmp14 [V20,T04] ( 2, 16 ) ref -> rdx "arr expr"
-; V21 tmp15 [V21,T05] ( 2, 16 ) ref -> rdx "arr expr"
+; V20 tmp14 [V20,T03] ( 2, 16 ) ref -> rdx "arr expr"
+; V21 tmp15 [V21,T04] ( 2, 16 ) ref -> rdx "arr expr"
; V22 cse0 [V22,T11] ( 5, 10.50) ref -> rcx "CSE - moderate"
; V23 cse1 [V23,T12] ( 4, 10 ) int -> rsi "CSE - moderate"
;
@@ -55,7 +55,7 @@ G_M61853_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byr
cmp edx, 123
je SHORT G_M61853_IG04
;; size=35 bbWeight=1 PerfScore 11.00
-G_M61853_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M61853_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
; byrRegs -[rdi]
cmp edx, 123
@@ -65,8 +65,8 @@ G_M61853_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
cmp byte ptr [rax+rcx], 4
setae cl
movzx rcx, cl
- jmp G_M61853_IG11
- ;; size=36 bbWeight=0.50 PerfScore 4.00
+ jmp SHORT G_M61853_IG11
+ ;; size=33 bbWeight=0.50 PerfScore 4.00
G_M61853_IG04: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0080 {rdi}, byref
; gcrRegs +[rcx]
; byrRegs +[rdi]
@@ -111,30 +111,27 @@ G_M61853_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
jne SHORT G_M61853_IG13
;; size=5 bbWeight=0.50 PerfScore 0.62
G_M61853_IG09: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- lea eax, [r9-0x01]
- mov r9d, eax
+ dec r9d
test r9d, r9d
- jle SHORT G_M61853_IG10
+ jle SHORT G_M61853_IG13
inc r8d
mov rdx, rcx
; gcrRegs +[rdx]
cmp r8d, esi
jae SHORT G_M61853_IG15
- mov edi, r8d
- movzx rdx, word ptr [rdx+2*rdi+0x0C]
+ mov eax, r8d
+ movzx rdx, word ptr [rdx+2*rax+0x0C]
; gcrRegs -[rdx]
- lea edi, [rdx-0x30]
- cmp edi, 9
+ lea eax, [rdx-0x30]
+ cmp eax, 9
jbe SHORT G_M61853_IG09
- ;; size=39 bbWeight=4 PerfScore 31.00
-G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=35 bbWeight=4 PerfScore 29.00
+G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
- test eax, eax
- jle SHORT G_M61853_IG13
xor ecx, ecx
cmp edx, 125
sete cl
- ;; size=12 bbWeight=0.50 PerfScore 1.38
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
G_M61853_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movzx rax, cl
;; size=3 bbWeight=0.50 PerfScore 0.12
@@ -155,7 +152,7 @@ G_M61853_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 219, prolog size 4, PerfScore 85.62, instruction count 74, allocated bytes for code 219 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
+; Total bytes of code 208, prolog size 4, PerfScore 83.00, instruction count 71, allocated bytes for code 208 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
-8 (-3.46%) : 19804.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
@@ -8,29 +8,33 @@
; 0 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 3, 3 ) ref -> rdi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder>
+; V00 this [V00,T06] ( 3, 3 ) ref -> rdi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder>
; V01 arg1 [V01,T02] ( 8, 8.50) int -> rbx
-; V02 loc0 [V02,T00] ( 13, 28.50) ref -> r15 class-hnd <<unknown class>>
+; V02 loc0 [V02,T00] ( 11, 27 ) ref -> r15 class-hnd <<unknown class>>
;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref multireg-ret ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T05] ( 4, 4 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.UnsupportedMetadataTypeSymbol>
+; V05 tmp1 [V05,T07] ( 4, 4 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.UnsupportedMetadataTypeSymbol>
;* V06 tmp2 [V06 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V08 tmp4 [V08,T06] ( 3, 1.50) ref -> rax "field V03.array (fldOffset=0x0)" P-INDEP
-; V09 tmp5 [V09,T03] ( 2, 8 ) ref -> rsi "argument with side effect"
-; V10 cse0 [V10,T01] ( 9, 16.50) long -> r14 multi-def "CSE - aggressive"
+; V08 tmp4 [V08,T08] ( 3, 1.50) ref -> rax "field V03.array (fldOffset=0x0)" P-INDEP
+; V09 tmp5 [V09,T05] ( 2, 8 ) ref -> rsi "argument with side effect"
+; V10 cse0 [V10,T03] ( 4, 9 ) long -> r13 "CSE - aggressive"
+; V11 cse1 [V11,T04] ( 4, 9 ) long -> [rbp-0x30] "CSE - aggressive"
+; V12 cse2 [V12,T01] ( 4, 14 ) long -> r14 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M4215_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
+ push r12
push rbx
- lea rbp, [rsp+0x20]
+ push rax
+ lea rbp, [rsp+0x30]
mov ebx, esi
- ;; size=15 bbWeight=1 PerfScore 5.75
+ ;; size=18 bbWeight=1 PerfScore 7.75
G_M4215_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
mov r15, gword ptr [rdi+0x28]
@@ -55,40 +59,35 @@ G_M4215_IG03: ; bbWeight=2, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byre
G_M4215_IG04: ; bbWeight=8, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
test r15, r15
- je SHORT G_M4215_IG06
+ je SHORT G_M4215_IG07
;; size=5 bbWeight=8 PerfScore 10.00
G_M4215_IG05: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
mov rdi, r15
; gcrRegs +[rdi]
mov r14, qword ptr [r15]
- mov rax, qword ptr [r14+0x130]
- call [rax+0x30]<unknown method>
+ mov r13, qword ptr [r14+0x130]
+ call [r13+0x30]<unknown method>
; gcrRegs -[rdi]
- mov r13d, eax
+ mov r12d, eax
mov rdi, r15
; gcrRegs +[rdi]
mov rax, qword ptr [r14+0x100]
+ mov qword ptr [rbp-0x30], rax
call [rax+0x20]<unknown method>
; gcrRegs -[rdi]
- sub r13d, eax
- cmp r13d, ebx
+ sub r12d, eax
+ cmp r12d, ebx
jg SHORT G_M4215_IG03
- ;; size=40 bbWeight=4 PerfScore 57.00
-G_M4215_IG06: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
- test r15, r15
- je SHORT G_M4215_IG08
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M4215_IG07: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=45 bbWeight=4 PerfScore 61.00
+G_M4215_IG06: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
mov rdi, r15
; gcrRegs +[rdi]
- mov r14, qword ptr [r15]
- mov rax, qword ptr [r14+0x130]
- call [rax+0x30]<unknown method>
+ call [r13+0x30]<unknown method>
; gcrRegs -[rdi]
cmp eax, ebx
- jg SHORT G_M4215_IG11
- ;; size=20 bbWeight=0.50 PerfScore 4.25
-G_M4215_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jg SHORT G_M4215_IG10
+ ;; size=11 bbWeight=0.50 PerfScore 2.25
+G_M4215_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r15]
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.UnsupportedMetadataTypeSymbol
call CORINFO_HELP_NEWSFAST
@@ -97,58 +96,60 @@ G_M4215_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
; gcrRegs +[rdi]
mov gword ptr [rax+0x20], rdi
;; size=21 bbWeight=0.50 PerfScore 1.25
-G_M4215_IG09: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+G_M4215_IG08: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
mov gword ptr [rax+0x40], rdi
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M4215_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M4215_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0.50 PerfScore 1.75
-G_M4215_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M4215_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[r15]
+ mov r14, qword ptr [rbp-0x30]
mov rdi, r15
; gcrRegs +[rdi]
- mov rax, qword ptr [r14+0x130]
- call [rax+0x30]<unknown method>
+ call [r13+0x30]<unknown method>
; gcrRegs -[rdi]
mov r13d, eax
mov rdi, r15
; gcrRegs +[rdi]
- mov rax, qword ptr [r14+0x100]
- call [rax+0x20]<unknown method>
+ call [r14+0x20]<unknown method>
; gcrRegs -[rdi]
sub r13d, eax
sub ebx, r13d
mov rdi, r15
; gcrRegs +[rdi]
- mov rax, qword ptr [r14+0x100]
- call [rax+0x28]<unknown method>
+ call [r14+0x28]<unknown method>
; gcrRegs -[rdi r15] +[rax]
cmp ebx, dword ptr [rax+0x08]
- jae SHORT G_M4215_IG13
+ jae SHORT G_M4215_IG12
mov ecx, ebx
mov rax, gword ptr [rax+8*rcx+0x10]
- ;; size=60 bbWeight=0.50 PerfScore 11.38
-G_M4215_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=46 bbWeight=0.50 PerfScore 8.88
+G_M4215_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0.50 PerfScore 1.75
-G_M4215_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M4215_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 231, prolog size 13, PerfScore 112.88, instruction count 72, allocated bytes for code 231 (MethodHash=5d77ef88) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
+; Total bytes of code 223, prolog size 16, PerfScore 113.88, instruction count 73, allocated bytes for code 223 (MethodHash=5d77ef88) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
; ============================================================
Unwind Info:
@@ -156,12 +157,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x0B
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+27 (+2.78%) : 30373.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
@@ -9,9 +9,9 @@
; Final local variable assignments
;
; V00 arg0 [V00,T07] ( 22, 23 ) ref -> rbx class-hnd single-def <System.Collections.Generic.List`1[System.String]>
-; V01 loc0 [V01,T02] ( 13, 47.50) ref -> r15 class-hnd exact single-def <System.String>
+; V01 loc0 [V01,T03] ( 13, 47.50) ref -> r15 class-hnd exact single-def <System.String>
; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 40,153.08) int -> r13
+; V03 loc2 [V03,T00] ( 42,187.08) int -> r13
; V04 loc3 [V04,T20] ( 4, 2 ) int -> rdi
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
; V06 loc5 [V06,T06] ( 9, 25.50) int -> r14
@@ -20,7 +20,7 @@
; V09 tmp2 [V09,T05] ( 5, 28 ) ref -> r13 class-hnd exact "impAppendStmt" <System.String>
; V10 tmp3 [V10,T23] ( 2, 2 ) long -> rax "Inlining Arg"
; V11 tmp4 [V11,T22] ( 2, 2 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.String>
-; V12 tmp5 [V12,T03] ( 6, 32 ) ref -> r12 class-hnd "Inlining Arg" <System.__Canon>
+; V12 tmp5 [V12,T04] ( 6, 32 ) ref -> r12 class-hnd "Inlining Arg" <System.__Canon>
; V13 tmp6 [V13,T14] ( 2, 4 ) ubyte -> rax "Inline return value spill temp"
; V14 tmp7 [V14,T16] ( 2, 8 ) byref -> rdi "impAppendStmt"
; V15 tmp8 [V15,T24] ( 3, 1.50) ref -> rdi class-hnd single-def "Inline stloc first use temp" <<unknown class>>
@@ -40,12 +40,12 @@
; V29 cse2 [V29,T11] ( 3, 12 ) int -> rdi "CSE - moderate"
; V30 cse3 [V30,T10] ( 3, 12 ) ref -> rax "CSE - moderate"
; V31 cse4 [V31,T25] ( 3, 1.50) long -> r12 "CSE - moderate"
-; V32 cse5 [V32,T04] ( 15, 30.54) int -> r14 "CSE - aggressive"
+; V32 cse5 [V32,T01] ( 17, 64.54) int -> r14 "CSE - aggressive"
; V33 cse6 [V33,T15] ( 4, 8 ) int -> [rbp-0x3C] spill-single-def "CSE - moderate"
; V34 cse7 [V34,T17] ( 2, 8 ) int -> rdx "CSE - moderate"
; V35 cse8 [V35,T12] ( 3, 11.88) int -> rdi "CSE - moderate"
; V36 cse9 [V36,T18] ( 7, 3.50) int -> [rbp-0x40] spill-single-def "CSE - moderate"
-; V37 cse10 [V37,T01] ( 3, 48 ) long -> rax "CSE - aggressive"
+; V37 cse10 [V37,T02] ( 3, 48 ) long -> rax "CSE - aggressive"
;
; Lcl frame size = 40
@@ -67,24 +67,24 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=42 bbWeight=1 PerfScore 9.50
G_M28069_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp dword ptr [rbx+0x10], 0
- je G_M28069_IG27
+ je G_M28069_IG26
;; size=10 bbWeight=1 PerfScore 4.00
G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rbx+0x08]
; gcrRegs +[rax]
cmp dword ptr [rax+0x08], 0
- jbe G_M28069_IG31
+ jbe G_M28069_IG30
mov r15, gword ptr [rax+0x10]
; gcrRegs +[r15]
mov r14d, dword ptr [r15+0x08]
cmp r14d, 100
- jg G_M28069_IG27
+ jg G_M28069_IG26
lea edi, [r14+0x02]
mov eax, edi
; gcrRegs -[rax]
mov ecx, 2
mul rdx:rax, rcx
- jb G_M28069_IG30
+ jb G_M28069_IG29
test rax, rax
je SHORT G_M28069_IG05
mov rcx, rax
@@ -105,96 +105,96 @@ G_M28069_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
;; size=22 bbWeight=0.50 PerfScore 2.62
G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
test edi, edi
- jl G_M28069_IG32
+ jl G_M28069_IG31
mov bword ptr [rbp-0x38], rax
mov dword ptr [rbp-0x30], edi
xor r13d, r13d
test r14d, r14d
- jle G_M28069_IG14
+ jle G_M28069_IG13
;; size=27 bbWeight=0.50 PerfScore 2.38
G_M28069_IG06: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov edi, r13d
movzx rdi, word ptr [r15+2*rdi+0x0C]
cmp edi, 39
- jne SHORT G_M28069_IG10
+ jne SHORT G_M28069_IG09
;; size=14 bbWeight=4 PerfScore 14.00
G_M28069_IG07: ; bbWeight=16, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
cmp r13d, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
mov eax, r13d
+ cmp r13d, r14d
+ jae G_M28069_IG30
movzx rcx, word ptr [r15+2*rax+0x0C]
mov word ptr [rdi+2*rax], cx
inc r13d
cmp r14d, r13d
- jle SHORT G_M28069_IG08
+ jle G_M28069_IG26
+ cmp r13d, r14d
+ jae G_M28069_IG30
mov edi, r13d
; byrRegs -[rdi]
cmp word ptr [r15+2*rdi+0x0C], 39
jne SHORT G_M28069_IG07
- ;; size=47 bbWeight=16 PerfScore 208.00
-G_M28069_IG08: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- cmp r14d, r13d
- jg SHORT G_M28069_IG11
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M28069_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx r15]
- jmp G_M28069_IG27
- ;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M28069_IG10: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx r15]
+ ;; size=69 bbWeight=16 PerfScore 248.00
+G_M28069_IG08: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M28069_IG10
+ ;; size=2 bbWeight=4 PerfScore 8.00
+G_M28069_IG09: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
cmp edi, 121
- je SHORT G_M28069_IG13
+ je SHORT G_M28069_IG12
;; size=5 bbWeight=2 PerfScore 2.50
-G_M28069_IG11: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG10: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
cmp r13d, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
mov eax, r13d
+ cmp r13d, r14d
+ jae G_M28069_IG30
mov ecx, r13d
movzx rcx, word ptr [r15+2*rcx+0x0C]
mov word ptr [rdi+2*rax], cx
inc r13d
cmp r14d, r13d
- jg SHORT G_M28069_IG06
- ;; size=38 bbWeight=4 PerfScore 36.00
-G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ jg G_M28069_IG06
+ ;; size=51 bbWeight=4 PerfScore 41.00
+G_M28069_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdi]
- jmp SHORT G_M28069_IG14
+ jmp SHORT G_M28069_IG13
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
cmp r13d, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
mov eax, r13d
mov word ptr [rdi+2*rax], 121
;; size=23 bbWeight=0.50 PerfScore 2.62
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; byrRegs -[rdi]
lea edi, [r14-0x01]
cmp edi, r13d
- jle G_M28069_IG27
+ jle G_M28069_IG26
lea edi, [r13+0x01]
cmp edi, r14d
- jae G_M28069_IG31
+ jae G_M28069_IG30
lea edi, [r13+0x01]
mov r12d, edi
cmp word ptr [r15+2*r12+0x0C], 121
- jne G_M28069_IG27
+ jne G_M28069_IG26
lea eax, [r13+0x02]
mov dword ptr [rbp-0x40], eax
cmp r14d, eax
- jle G_M28069_IG18
+ jle G_M28069_IG17
cmp eax, r14d
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov edi, eax
cmp word ptr [r15+2*rdi+0x0C], 121
- je G_M28069_IG27
+ je G_M28069_IG26
;; size=86 bbWeight=0.50 PerfScore 8.25
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
lea edi, [r13+0x03]
cmp edi, dword ptr [rbp-0x30]
setl dil
@@ -203,35 +203,35 @@ G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
; gcr arg pop 0
lea edi, [r13+0x01]
cmp edi, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
mov word ptr [rdi+2*r12], 121
mov r12d, dword ptr [rbp-0x40]
cmp r12d, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
mov eax, r12d
mov word ptr [rdi+2*rax], 121
lea edi, [r13+0x03]
; byrRegs -[rdi]
cmp edi, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
lea eax, [r13+0x03]
mov word ptr [rdi+2*rax], 121
mov r13d, r12d
cmp r14d, r13d
- jle SHORT G_M28069_IG20
+ jle SHORT G_M28069_IG19
test r13d, r13d
- jl SHORT G_M28069_IG19
+ jl SHORT G_M28069_IG18
;; size=112 bbWeight=0.50 PerfScore 13.62
-G_M28069_IG16: ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG15: ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdi]
lea edi, [r13+0x02]
cmp edi, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rax, bword ptr [rbp-0x38]
; byrRegs +[rax]
mov ecx, r13d
@@ -239,32 +239,32 @@ G_M28069_IG16: ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
mov word ptr [rax+2*rdi], cx
inc r13d
cmp r14d, r13d
- jg SHORT G_M28069_IG16
+ jg SHORT G_M28069_IG15
;; size=38 bbWeight=3.96 PerfScore 36.63
-G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
- jmp SHORT G_M28069_IG20
+ jmp SHORT G_M28069_IG19
...
+16 (+2.99%) : 17191.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:g_getOpenQuote|4281(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
@@ -36,10 +36,10 @@
; V25 tmp15 [V25,T14] ( 3, 2.50) int -> rsi single-def "field V05.<End>k__BackingField (fldOffset=0x4)" P-INDEP
;* V26 tmp16 [V26 ] ( 0, 0 ) int -> zero-ref "field V09._value (fldOffset=0x0)" P-INDEP
; V27 tmp17 [V27,T05] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
-; V28 cse0 [V28,T22] ( 3, 1.50) int -> [rbp-0x2C] spill-single-def "CSE - moderate"
-; V29 cse1 [V29,T23] ( 3, 1.50) long -> [rbp-0x38] spill-single-def "CSE - moderate"
+; V28 cse0 [V28,T22] ( 3, 1.50) int -> [rbp-0x2C] "CSE - moderate"
+; V29 cse1 [V29,T23] ( 3, 1.50) long -> [rbp-0x38] "CSE - moderate"
; V30 cse2 [V30,T08] ( 8, 4 ) int -> r12 multi-def "CSE - moderate"
-; V31 cse3 [V31,T17] ( 4, 2 ) int -> [rbp-0x3C] spill-single-def "CSE - moderate"
+; V31 cse3 [V31,T17] ( 4, 2 ) int -> [rbp-0x3C] "CSE - moderate"
; V32 rat0 [V32,T06] ( 3, 6 ) int -> rdx "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 24
@@ -159,7 +159,12 @@ G_M50243_IG10: ; bbWeight=0.50, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0
; byrRegs -[rsi rdi]
test eax, eax
je SHORT G_M50243_IG11
- cmp dword ptr [rbp-0x3C], r12d
+ mov eax, dword ptr [rbp-0x2C]
+ mov rcx, qword ptr [rbp-0x38]
+ mov edi, dword ptr [rbp-0x3C]
+ cmp edi, r12d
+ mov dword ptr [rbp-0x2C], eax
+ mov qword ptr [rbp-0x38], rcx
jne SHORT G_M50243_IG11
mov edi, 1
call [<unknown method>]
@@ -177,7 +182,7 @@ G_M50243_IG10: ; bbWeight=0.50, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0
; byrRegs -[rsi rdi]
test eax, eax
jne SHORT G_M50243_IG13
- ;; size=179 bbWeight=0.50 PerfScore 25.50
+ ;; size=195 bbWeight=0.50 PerfScore 27.12
G_M50243_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
@@ -273,7 +278,7 @@ RWD00 dd G_M50243_IG03 - G_M50243_IG02
dd G_M50243_IG06 - G_M50243_IG02
-; Total bytes of code 536, prolog size 19, PerfScore 94.75, instruction count 144, allocated bytes for code 536 (MethodHash=9c133bbc) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
+; Total bytes of code 552, prolog size 19, PerfScore 96.38, instruction count 149, allocated bytes for code 552 (MethodHash=9c133bbc) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
; ============================================================
Unwind Info:
+29 (+4.82%) : 17244.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:g_getCloseQuote|4285(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
@@ -23,26 +23,26 @@
; V12 tmp3 [V12,T00] ( 14, 15.50) ref -> r14 class-hnd exact single-def "non-inline candidate call" <System.String>
; V13 tmp4 [V13,T05] ( 6, 6 ) int -> rcx "Inline stloc first use temp"
; V14 tmp5 [V14,T10] ( 4, 3.50) int -> rdx "Inline stloc first use temp"
-; V15 tmp6 [V15,T18] ( 3, 2 ) ref -> r13 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V15 tmp6 [V15,T18] ( 3, 2 ) ref -> r12 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V16 tmp7 [V16,T03] ( 10, 11 ) ref -> rbx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
;* V18 tmp9 [V18,T26] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-; V19 tmp10 [V19,T22] ( 3, 1.50) ref -> r13 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V19 tmp10 [V19,T22] ( 3, 1.50) ref -> r12 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V20 tmp11 [V20,T11] ( 6, 3 ) ref -> r13 class-hnd exact single-def "Inline stloc first use temp" <System.String>
; V21 tmp12 [V21,T15] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
; V22 tmp13 [V22,T19] ( 2, 2 ) byref -> rdi single-def "impAppendStmt"
; V23 tmp14 [V23,T16] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
; V24 tmp15 [V24,T20] ( 2, 2 ) byref -> rdi single-def "impAppendStmt"
-; V25 tmp16 [V25,T01] ( 13, 13 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V25 tmp16 [V25,T01] ( 13, 13 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V26 tmp17 [V26,T21] ( 2, 2 ) int -> rdi "Inlining Arg"
-; V27 tmp18 [V27,T02] ( 12, 12 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia>
+; V27 tmp18 [V27,T02] ( 12, 12 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia>
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V29 tmp20 [V29,T12] ( 3, 3 ) int -> rdx single-def "field V04.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
; V30 tmp21 [V30,T14] ( 3, 2.50) int -> rsi single-def "field V04.<End>k__BackingField (fldOffset=0x4)" P-INDEP
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref "field V08._value (fldOffset=0x0)" P-INDEP
; V32 tmp23 [V32,T07] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
-; V33 cse0 [V33,T23] ( 3, 1.50) int -> [rbp-0x2C] spill-single-def "CSE - moderate"
-; V34 cse1 [V34,T24] ( 3, 1.50) long -> [rbp-0x38] spill-single-def "CSE - moderate"
+; V33 cse0 [V33,T23] ( 3, 1.50) int -> [rbp-0x2C] "CSE - moderate"
+; V34 cse1 [V34,T24] ( 3, 1.50) long -> [rbp-0x38] "CSE - moderate"
; V35 cse2 [V35,T25] ( 2, 1 ) int -> rdi "CSE - moderate"
; V36 cse3 [V36,T17] ( 4, 2 ) int -> r12 "CSE - moderate"
; V37 rat0 [V37,T08] ( 3, 6 ) int -> rdx "ReplaceWithLclVar is creating a new local variable"
@@ -64,7 +64,7 @@ G_M17349_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M17349_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov edx, dword ptr [rbx+0x20]
cmp edx, 3
- ja G_M17349_IG19
+ ja G_M17349_IG20
mov edi, 3
bt edi, edx
jae SHORT G_M17349_IG04
@@ -123,19 +123,19 @@ G_M17349_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
- mov r13, rax
- ; gcrRegs +[r13]
- mov word ptr [r13+0x0C], r15w
+ mov r12, rax
+ ; gcrRegs +[r12]
+ mov word ptr [r12+0x0C], r15w
xor eax, eax
; gcrRegs -[rax]
- mov dword ptr [r13+0x08], eax
- or byte ptr [r13+0x0E], 32
+ mov dword ptr [r12+0x08], eax
+ or byte ptr [r12+0x0E], 32
test rbx, rbx
- je G_M17349_IG16
- jmp G_M17349_IG15
- ;; size=48 bbWeight=0.50 PerfScore 5.00
+ je G_M17349_IG17
+ jmp G_M17349_IG16
+ ;; size=51 bbWeight=0.50 PerfScore 5.00
G_M17349_IG10: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r13] +[r14]
+ ; gcrRegs -[r12] +[r14]
mov edi, r15d
call [<unknown method>]
; gcrRegs +[rax]
@@ -144,17 +144,17 @@ G_M17349_IG10: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
mov edi, r15d
sub edi, 0x2001
cmp edi, 303
- ja G_M17349_IG11
+ ja G_M17349_IG12
cmp r14, r13
- je G_M17349_IG13
+ je G_M17349_IG14
test r14, r14
- je G_M17349_IG11
+ je G_M17349_IG12
test r13, r13
- je G_M17349_IG11
+ je G_M17349_IG12
mov edi, dword ptr [r14+0x08]
mov r12d, dword ptr [r13+0x08]
cmp edi, r12d
- jne G_M17349_IG11
+ jne G_M17349_IG12
mov edi, 1
call [<unknown method>]
; gcrRegs -[rax]
@@ -178,9 +178,13 @@ G_M17349_IG10: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
call [<unknown method>]
; byrRegs -[rsi rdi]
test eax, eax
- je SHORT G_M17349_IG11
+ je SHORT G_M17349_IG12
+ mov eax, dword ptr [rbp-0x2C]
+ mov rcx, qword ptr [rbp-0x38]
cmp dword ptr [r14+0x08], r12d
- jne SHORT G_M17349_IG11
+ mov dword ptr [rbp-0x2C], eax
+ mov qword ptr [rbp-0x38], rcx
+ jne SHORT G_M17349_IG12
mov edi, 1
call [<unknown method>]
mov edi, 1
@@ -196,26 +200,28 @@ G_M17349_IG10: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
; gcrRegs -[r13]
; byrRegs -[rsi rdi]
test eax, eax
- jne SHORT G_M17349_IG13
- ;; size=211 bbWeight=0.50 PerfScore 29.50
-G_M17349_IG11: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=223 bbWeight=0.50 PerfScore 31.00
+G_M17349_IG11: ; bbWeight=0.50, isz, extend
+ jne SHORT G_M17349_IG14
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M17349_IG12: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
- mov r13, rax
- ; gcrRegs +[r13]
+ mov r12, rax
+ ; gcrRegs +[r12]
mov edi, dword ptr [r14+0x08]
- mov word ptr [r13+0x0C], r15w
- mov dword ptr [r13+0x08], edi
- or byte ptr [r13+0x0E], 32
- lea rdi, bword ptr [r13+0x10]
+ mov word ptr [r12+0x0C], r15w
+ mov dword ptr [r12+0x08], edi
+ or byte ptr [r12+0x0E], 32
+ lea rdi, bword ptr [r12+0x10]
; byrRegs +[rdi]
mov rsi, r14
; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- lea rdi, bword ptr [r13+0x18]
+ lea rdi, bword ptr [r12+0x18]
; byrRegs +[rdi]
mov rsi, r14
; gcrRegs +[rsi]
@@ -223,25 +229,25 @@ G_M17349_IG11: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
; gcrRegs -[rsi r14]
; byrRegs -[rdi]
test rbx, rbx
- je SHORT G_M17349_IG12
+ je SHORT G_M17349_IG13
movzx rdi, byte ptr [rbx+0x0E]
and edi, 63
- or byte ptr [r13+0x0E], dil
+ or byte ptr [r12+0x0E], dil
mov edi, dword ptr [rbx+0x08]
- add dword ptr [r13+0x08], edi
- lea rdi, bword ptr [r13+0x28]
+ add dword ptr [r12+0x08], edi
+ lea rdi, bword ptr [r12+0x28]
; byrRegs +[rdi]
mov rsi, rbx
; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rbx rsi]
; byrRegs -[rdi]
- ;; size=96 bbWeight=0.50 PerfScore 12.62
-G_M17349_IG12: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M17349_IG14
+ ;; size=104 bbWeight=0.50 PerfScore 12.62
+G_M17349_IG13: ; bbWeight=0.50, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M17349_IG15
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M17349_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r13] +[rbx]
+G_M17349_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r12] +[rbx]
mov edi, r15d
mov rdx, rbx
; gcrRegs +[rdx]
@@ -249,36 +255,36 @@ G_M17349_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs +[rsi]
call [<unknown method>]
; gcrRegs -[rdx rbx rsi] +[rax]
- mov r13, rax
- ; gcrRegs +[r13]
+ mov r12, rax
+ ; gcrRegs +[r12]
;; size=17 bbWeight=0.50 PerfScore 2.00
-G_M17349_IG14: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
+G_M17349_IG15: ; bbWeight=0.50, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- jmp SHORT G_M17349_IG17
+ jmp SHORT G_M17349_IG18
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M17349_IG15: ; bbWeight=0.50, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
+G_M17349_IG16: ; bbWeight=0.50, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx]
movzx rdi, byte ptr [rbx+0x0E]
and edi, 63
- or byte ptr [r13+0x0E], dil
+ or byte ptr [r12+0x0E], dil
mov edi, dword ptr [rbx+0x08]
- mov dword ptr [r13+0x08], edi
- lea rdi, bword ptr [r13+0x18]
+ mov dword ptr [r12+0x08], edi
+ lea rdi, bword ptr [r12+0x18]
; byrRegs +[rdi]
mov rsi, rbx
; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rbx rsi]
; byrRegs -[rdi]
- ;; size=31 bbWeight=0.50 PerfScore 5.00
-G_M17349_IG16: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
- and byte ptr [r13+0x0E], 223
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M17349_IG17: ; bbWeight=1, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
- mov rax, r13
+ ;; size=34 bbWeight=0.50 PerfScore 5.00
+G_M17349_IG17: ; bbWeight=0.50, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref
+ and byte ptr [r12+0x0E], 223
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M17349_IG18: ; bbWeight=1, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref
+ mov rax, r12
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
-G_M17349_IG18: ; bbWeight=1, epilog, nogc, extend
+G_M17349_IG19: ; bbWeight=1, epilog, nogc, extend
add rsp, 24
pop rbx
pop r12
@@ -288,8 +294,8 @@ G_M17349_IG18: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M17349_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
- ; gcrRegs -[rax r13]
+G_M17349_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
+ ; gcrRegs -[rax r12]
; byrRegs +[rbx]
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
@@ -308,7 +314,7 @@ G_M17349_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=39 bbWeight=0 PerfScore 0.00
...
smoke_tests.nativeaot.linux.x64.checked.mch
-16 (-8.56%) : 5410.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
@@ -8,16 +8,17 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V01 arg1 [V01,T07] ( 4, 3.50) int -> rdx single-def
-; V02 arg2 [V02,T08] ( 3, 2.50) int -> rcx single-def
-; V03 arg3 [V03,T02] ( 6, 18 ) ushort -> r8 single-def
-; V04 loc0 [V04,T00] ( 24, 79 ) int -> r10
-; V05 loc1 [V05,T06] ( 8, 10.50) int -> r9
+; V01 arg1 [V01,T08] ( 4, 3.50) int -> rdx single-def
+; V02 arg2 [V02,T09] ( 3, 2.50) int -> rcx single-def
+; V03 arg3 [V03,T06] ( 4, 10 ) ushort -> r8 single-def
+; V04 loc0 [V04,T00] ( 22, 77.50) int -> r10
+; V05 loc1 [V05,T07] ( 8, 10.50) int -> r9
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T04] ( 2, 16 ) int -> r10 "dup spill"
; V08 tmp2 [V08,T05] ( 2, 16 ) int -> r10 "dup spill"
; V09 tmp3 [V09,T03] ( 5, 17 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp4 [V10,T01] ( 8, 25.50) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V10 tmp4 [V10,T01] ( 7, 25 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V11 cse0 [V11,T02] ( 6, 24 ) int -> r11 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -36,109 +37,101 @@ G_M48691_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byr
;; size=3 bbWeight=2 PerfScore 0.50
G_M48691_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
test r10d, r10d
- jl SHORT G_M48691_IG06
+ jl SHORT G_M48691_IG12
;; size=5 bbWeight=8 PerfScore 10.00
G_M48691_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
cmp r10d, esi
- jae G_M48691_IG22
+ jae G_M48691_IG21
mov eax, r10d
movzx rax, word ptr [rdi+2*rax]
movzx r11, r8w
cmp eax, r11d
jne SHORT G_M48691_IG03
;; size=25 bbWeight=4 PerfScore 20.00
-G_M48691_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- test r10d, r10d
- jl SHORT G_M48691_IG13
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M48691_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- jmp SHORT G_M48691_IG09
+G_M48691_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+ jmp SHORT G_M48691_IG08
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M48691_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+G_M48691_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
inc r9d
;; size=3 bbWeight=2 PerfScore 0.50
-G_M48691_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+G_M48691_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
dec r10d
- js SHORT G_M48691_IG10
+ js SHORT G_M48691_IG09
cmp r10d, esi
- jae SHORT G_M48691_IG22
+ jae SHORT G_M48691_IG21
mov eax, r10d
movzx rax, word ptr [rdi+2*rax]
- movzx r11, r8w
cmp eax, r11d
- je SHORT G_M48691_IG08
- ;; size=26 bbWeight=4 PerfScore 25.00
-G_M48691_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+ je SHORT G_M48691_IG07
+ ;; size=22 bbWeight=4 PerfScore 24.00
+G_M48691_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
cmp r9d, 1
- jg SHORT G_M48691_IG13
+ jg SHORT G_M48691_IG12
;; size=6 bbWeight=0.50 PerfScore 0.62
-G_M48691_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M48691_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rdi]
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M48691_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M48691_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M48691_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, gcvars, byref, isz
+G_M48691_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, gcvars, byref, isz
; byrRegs +[rdi]
lea r10d, [rdx+rcx]
- jmp SHORT G_M48691_IG15
+ jmp SHORT G_M48691_IG14
;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M48691_IG14: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+G_M48691_IG13: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
inc r10d
;; size=3 bbWeight=2 PerfScore 0.50
-G_M48691_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- cmp r10d, esi
- jge SHORT G_M48691_IG16
- cmp r10d, esi
- jae SHORT G_M48691_IG22
- mov r9d, r10d
- movzx rax, word ptr [rdi+2*r9]
- movzx rcx, r8w
- cmp eax, ecx
- jne SHORT G_M48691_IG14
- ;; size=26 bbWeight=4 PerfScore 25.00
-G_M48691_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- cmp r10d, esi
- jge SHORT G_M48691_IG20
- xor r9d, r9d
- jmp SHORT G_M48691_IG18
- ;; size=10 bbWeight=0.50 PerfScore 1.75
-G_M48691_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
- inc r9d
- ;; size=3 bbWeight=2 PerfScore 0.50
-G_M48691_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- inc r10d
+G_M48691_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
cmp r10d, esi
jge SHORT G_M48691_IG19
cmp r10d, esi
- jae SHORT G_M48691_IG22
+ jae SHORT G_M48691_IG21
+ mov r11d, r10d
+ movzx r9, word ptr [rdi+2*r11]
+ movzx r11, r8w
+ cmp r9d, r11d
+ jne SHORT G_M48691_IG13
+ ;; size=27 bbWeight=4 PerfScore 25.00
+G_M48691_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+ xor r9d, r9d
+ jmp SHORT G_M48691_IG17
+ ;; size=5 bbWeight=0.50 PerfScore 1.12
+G_M48691_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+ inc r9d
+ ;; size=3 bbWeight=2 PerfScore 0.50
+G_M48691_IG17: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+ inc r10d
+ cmp r10d, esi
+ jge SHORT G_M48691_IG18
+ cmp r10d, esi
+ jae SHORT G_M48691_IG21
mov eax, r10d
movzx rax, word ptr [rdi+2*rax]
- movzx rcx, r8w
- cmp eax, ecx
- je SHORT G_M48691_IG17
- ;; size=28 bbWeight=4 PerfScore 26.00
-G_M48691_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp eax, r11d
+ je SHORT G_M48691_IG16
+ ;; size=25 bbWeight=4 PerfScore 25.00
+G_M48691_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdi]
cmp r9d, 1
- jle SHORT G_M48691_IG11
+ jle SHORT G_M48691_IG10
;; size=6 bbWeight=0.50 PerfScore 0.62
-G_M48691_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M48691_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M48691_IG21: ; bbWeight=0.50, epilog, nogc, extend
+G_M48691_IG20: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M48691_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M48691_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 187, prolog size 4, PerfScore 120.25, instruction count 67, allocated bytes for code 187 (MethodHash=af0b41cc) for method System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
+; Total bytes of code 171, prolog size 4, PerfScore 116.38, instruction count 61, allocated bytes for code 171 (MethodHash=af0b41cc) for method System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
; ============================================================
Cfi Info:
-9 (-7.44%) : 13376.dasm - FinalizeTest:Run():int (FullOpts)
@@ -39,7 +39,7 @@ G_M43469_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
;; size=32 bbWeight=2 PerfScore 7.00
G_M43469_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [(reloc)], 0
- jne SHORT G_M43469_IG06
+ jne SHORT G_M43469_IG08
;; size=9 bbWeight=8 PerfScore 32.00
G_M43469_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lea edi, [rbx+0x01]
@@ -47,25 +47,7 @@ G_M43469_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
cmp ebx, 0xD1FFAB1E
jl SHORT G_M43469_IG03
;; size=14 bbWeight=4 PerfScore 8.00
-G_M43469_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp byte ptr [(reloc)], 0
- je SHORT G_M43469_IG09
- ;; size=9 bbWeight=1 PerfScore 4.00
-G_M43469_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rdi, gword ptr [(reloc)]
- ; gcrRegs +[rdi]
- call <unknown method>
- ; gcrRegs -[rdi]
- ; gcr arg pop 0
- mov eax, 100
- ;; size=17 bbWeight=0.50 PerfScore 0.88
-G_M43469_IG08: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx
- pop r15
- pop rbp
- ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M43469_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M43469_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rdi, gword ptr [(reloc)]
; gcrRegs +[rdi]
call <unknown method>
@@ -73,14 +55,28 @@ G_M43469_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcr arg pop 0
mov eax, -1
;; size=17 bbWeight=0.50 PerfScore 0.88
-G_M43469_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M43469_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
pop r15
pop rbp
ret
;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M43469_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ lea rdi, gword ptr [(reloc)]
+ ; gcrRegs +[rdi]
+ call <unknown method>
+ ; gcrRegs -[rdi]
+ ; gcr arg pop 0
+ mov eax, 100
+ ;; size=17 bbWeight=1 PerfScore 1.75
+G_M43469_IG09: ; bbWeight=1, epilog, nogc, extend
+ pop rbx
+ pop r15
+ pop rbp
+ ret
+ ;; size=5 bbWeight=1 PerfScore 2.50
-; Total bytes of code 121, prolog size 9, PerfScore 61.00, instruction count 35, allocated bytes for code 121 (MethodHash=e2fb5632) for method FinalizeTest:Run():int (FullOpts)
+; Total bytes of code 112, prolog size 9, PerfScore 59.12, instruction count 33, allocated bytes for code 112 (MethodHash=e2fb5632) for method FinalizeTest:Run():int (FullOpts)
; ============================================================
Cfi Info:
-16 (-7.21%) : 18486.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
@@ -11,7 +11,7 @@
; V01 arg1 [V01,T06] ( 7, 4.50) byref -> rdx single-def
; V02 loc0 [V02,T07] ( 5, 3 ) ushort -> rcx
; V03 loc1 [V03,T05] ( 5, 7 ) int -> rax
-; V04 loc2 [V04,T00] ( 7, 13.50) int -> r8
+; V04 loc2 [V04,T00] ( 5, 12.50) int -> r8
; V05 loc3 [V05,T09] ( 3, 1.50) int -> rax
; V06 loc4 [V06,T10] ( 3, 1.50) int -> rax
; V07 loc5 [V07,T11] ( 3, 1.50) int -> r8
@@ -19,9 +19,9 @@
; V09 tmp1 [V09,T04] ( 2, 8 ) int -> r8 "impSpillLclRefs"
;* V10 tmp2 [V10 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
; V11 tmp3 [V11,T08] ( 2, 2 ) int -> rcx "Single return block return value"
-; V12 tmp4 [V12,T03] ( 7, 7.50) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp5 [V13,T02] ( 8, 8.50) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V14 cse0 [V14,T01] ( 5, 11 ) int -> r9 multi-def "CSE - aggressive"
+; V12 tmp4 [V12,T03] ( 6, 7 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp5 [V13,T02] ( 7, 8 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V14 cse0 [V14,T01] ( 4, 10.50) int -> r9 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -45,8 +45,8 @@ G_M3969_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi
cmp esi, 1
jne SHORT G_M3969_IG04
mov dword ptr [rdx], -1
- jmp G_M3969_IG11
- ;; size=36 bbWeight=0.50 PerfScore 4.12
+ jmp SHORT G_M3969_IG11
+ ;; size=33 bbWeight=0.50 PerfScore 4.12
G_M3969_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
cmp esi, 2
jne SHORT G_M3969_IG05
@@ -88,23 +88,19 @@ G_M3969_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi},
;; size=18 bbWeight=2 PerfScore 6.00
G_M3969_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
cmp r8d, esi
- jae SHORT G_M3969_IG09
+ jae SHORT G_M3969_IG10
mov r9d, r8d
movzx r9, word ptr [rdi+2*r9]
lea r10d, [r9-0x30]
cmp r10d, 9
jbe SHORT G_M3969_IG07
;; size=23 bbWeight=4 PerfScore 21.00
-G_M3969_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- cmp r8d, esi
- jae SHORT G_M3969_IG10
- mov r9d, r8d
- movzx r9, word ptr [rdi+2*r9]
+G_M3969_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref, isz
+ ; byrRegs -[rdi]
test r9d, r9d
jne SHORT G_M3969_IG13
- ;; size=18 bbWeight=0.50 PerfScore 2.38
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
G_M3969_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref
- ; byrRegs -[rdi]
mov dword ptr [rdx], eax
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M3969_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -142,7 +138,7 @@ G_M3969_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 222, prolog size 4, PerfScore 52.38, instruction count 76, allocated bytes for code 222 (MethodHash=db41f07e) for method System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
+; Total bytes of code 206, prolog size 4, PerfScore 50.62, instruction count 72, allocated bytes for code 206 (MethodHash=db41f07e) for method System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
; ============================================================
Cfi Info:
+21 (+4.70%) : 26791.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
@@ -24,7 +24,7 @@
; V14 tmp1 [V14,T19] ( 2, 1 ) int -> r13
;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref
-; V17 tmp4 [V17,T15] ( 3, 1.50) int -> rax
+; V17 tmp4 [V17,T15] ( 3, 1.50) int -> r14
; V18 tmp5 [V18,T00] ( 3, 24 ) int -> rax "impSpillLclRefs"
; V19 tmp6 [V19,T03] ( 3, 12 ) ref -> rax class-hnd "impSpillLclRefs" <<unknown class>>
;* V20 tmp7 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
@@ -134,23 +134,27 @@ G_M62513_IG08: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {},
G_M62513_IG09: ; bbWeight=4, gcrefRegs=8080 {rdi r15}, byrefRegs=0000 {}, byref, isz
mov ebx, dword ptr [rdi+0x14]
test ebx, ebx
- jle SHORT G_M62513_IG10
+ jle G_M62513_IG17
mov eax, esi
lea esi, [rax-0x01]
mov dword ptr [rbp-0x30], esi
test eax, eax
jg SHORT G_M62513_IG13
- ;; size=19 bbWeight=4 PerfScore 25.00
-G_M62513_IG10: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=23 bbWeight=4 PerfScore 25.00
+G_M62513_IG10: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[r15]
- test ebx, ebx
- jg SHORT G_M62513_IG17
- xor eax, eax
- ;; size=6 bbWeight=0.50 PerfScore 0.75
+ mov r14d, r13d
+ sar r14d, 31
+ and r14d, 3
+ add r14d, r13d
+ sar r14d, 2
+ add r14d, dword ptr [rdi+0x18]
+ mov rdi, gword ptr [rbp-0x38]
+ ;; size=26 bbWeight=0.50 PerfScore 2.88
G_M62513_IG11: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov dword ptr [rdi+0x18], eax
+ mov dword ptr [rdi+0x18], r14d
jmp SHORT G_M62513_IG18
- ;; size=5 bbWeight=0.50 PerfScore 1.50
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
G_M62513_IG12: ; bbWeight=1, gcrefRegs=8080 {rdi r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r15]
mov esi, 2
@@ -186,8 +190,8 @@ G_M62513_IG14: ; bbWeight=2, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byr
mov gword ptr [rax+8*rcx+0x10], rdx
cmp byte ptr [r15], r15b
mov esi, dword ptr [rbp-0x30]
- jmp SHORT G_M62513_IG09
- ;; size=31 bbWeight=2 PerfScore 32.50
+ jmp G_M62513_IG09
+ ;; size=34 bbWeight=2 PerfScore 32.50
G_M62513_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rdx rdi r15]
call CORINFO_HELP_RNGCHKFAIL
@@ -203,14 +207,11 @@ G_M62513_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
;; size=14 bbWeight=0 PerfScore 0.00
G_M62513_IG17: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
- mov eax, r13d
- sar eax, 31
- and eax, 3
- add eax, r13d
- sar eax, 2
- add eax, dword ptr [rdi+0x18]
+ test ebx, ebx
+ jg G_M62513_IG10
+ xor r14d, r14d
jmp SHORT G_M62513_IG11
- ;; size=20 bbWeight=0.50 PerfScore 3.38
+ ;; size=13 bbWeight=0.50 PerfScore 1.75
G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; GC ptr vars -{V00 V01}
call <unknown method>
@@ -262,7 +263,7 @@ G_M62513_IG23: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 447, prolog size 31, PerfScore 134.00, instruction count 138, allocated bytes for code 447 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
+; Total bytes of code 468, prolog size 31, PerfScore 134.50, instruction count 139, allocated bytes for code 468 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
; ============================================================
Cfi Info:
+21 (+4.70%) : 7256.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
@@ -24,7 +24,7 @@
; V14 tmp1 [V14,T19] ( 2, 1 ) int -> r13
;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref
-; V17 tmp4 [V17,T15] ( 3, 1.50) int -> rax
+; V17 tmp4 [V17,T15] ( 3, 1.50) int -> r14
; V18 tmp5 [V18,T00] ( 3, 24 ) int -> rax "impSpillLclRefs"
; V19 tmp6 [V19,T03] ( 3, 12 ) ref -> rax class-hnd "impSpillLclRefs" <<unknown class>>
;* V20 tmp7 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
@@ -134,23 +134,27 @@ G_M62513_IG08: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {},
G_M62513_IG09: ; bbWeight=4, gcrefRegs=8080 {rdi r15}, byrefRegs=0000 {}, byref, isz
mov ebx, dword ptr [rdi+0x14]
test ebx, ebx
- jle SHORT G_M62513_IG10
+ jle G_M62513_IG17
mov eax, esi
lea esi, [rax-0x01]
mov dword ptr [rbp-0x30], esi
test eax, eax
jg SHORT G_M62513_IG13
- ;; size=19 bbWeight=4 PerfScore 25.00
-G_M62513_IG10: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=23 bbWeight=4 PerfScore 25.00
+G_M62513_IG10: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[r15]
- test ebx, ebx
- jg SHORT G_M62513_IG17
- xor eax, eax
- ;; size=6 bbWeight=0.50 PerfScore 0.75
+ mov r14d, r13d
+ sar r14d, 31
+ and r14d, 3
+ add r14d, r13d
+ sar r14d, 2
+ add r14d, dword ptr [rdi+0x18]
+ mov rdi, gword ptr [rbp-0x38]
+ ;; size=26 bbWeight=0.50 PerfScore 2.88
G_M62513_IG11: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov dword ptr [rdi+0x18], eax
+ mov dword ptr [rdi+0x18], r14d
jmp SHORT G_M62513_IG18
- ;; size=5 bbWeight=0.50 PerfScore 1.50
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
G_M62513_IG12: ; bbWeight=1, gcrefRegs=8080 {rdi r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r15]
mov esi, 2
@@ -186,8 +190,8 @@ G_M62513_IG14: ; bbWeight=2, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byr
mov gword ptr [rax+8*rcx+0x10], rdx
cmp byte ptr [r15], r15b
mov esi, dword ptr [rbp-0x30]
- jmp SHORT G_M62513_IG09
- ;; size=31 bbWeight=2 PerfScore 32.50
+ jmp G_M62513_IG09
+ ;; size=34 bbWeight=2 PerfScore 32.50
G_M62513_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rdx rdi r15]
call CORINFO_HELP_RNGCHKFAIL
@@ -203,14 +207,11 @@ G_M62513_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
;; size=14 bbWeight=0 PerfScore 0.00
G_M62513_IG17: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
- mov eax, r13d
- sar eax, 31
- and eax, 3
- add eax, r13d
- sar eax, 2
- add eax, dword ptr [rdi+0x18]
+ test ebx, ebx
+ jg G_M62513_IG10
+ xor r14d, r14d
jmp SHORT G_M62513_IG11
- ;; size=20 bbWeight=0.50 PerfScore 3.38
+ ;; size=13 bbWeight=0.50 PerfScore 1.75
G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; GC ptr vars -{V00 V01}
call <unknown method>
@@ -262,7 +263,7 @@ G_M62513_IG23: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 447, prolog size 31, PerfScore 134.00, instruction count 138, allocated bytes for code 447 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
+; Total bytes of code 468, prolog size 31, PerfScore 134.50, instruction count 139, allocated bytes for code 468 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
; ============================================================
Cfi Info:
+6 (+5.66%) : 15405.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
@@ -9,8 +9,8 @@
;
; V00 this [V00,T03] ( 4, 3.50) ref -> rdi this class-hnd exact single-def <System.Threading.PortableThreadPool>
; V01 arg1 [V01,T01] ( 4, 7 ) ref -> rsi class-hnd exact single-def <System.Threading.PortableThreadPool+WaitThread>
-; V02 loc0 [V02,T00] ( 9, 19.50) ref -> registers class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
-; V03 loc1 [V03,T02] ( 3, 8.50) ref -> rbx class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
+; V02 loc0 [V02,T00] ( 8, 19 ) ref -> registers class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
+; V03 loc1 [V03,T02] ( 3, 8.50) ref -> registers class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V06 tmp2 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -54,50 +54,57 @@ G_M1296_IG05: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0048 {r
mov rdi, gword ptr [rbx+0x10]
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M1296_IG06
+ je SHORT G_M1296_IG08
cmp gword ptr [rdi+0x08], rsi
jne SHORT G_M1296_IG07
;; size=15 bbWeight=4 PerfScore 29.00
G_M1296_IG06: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
- test rdi, rdi
- jne SHORT G_M1296_IG08
- lea rdi, gword ptr [(reloc)]
- lea rsi, gword ptr [(reloc)]
- ; gcrRegs +[rsi]
- call <unknown method>
- ; gcrRegs -[rbx rsi rdi]
- ; gcr arg pop 0
+ mov rax, rbx
+ ; gcrRegs +[rax]
+ mov rbx, rdi
+ mov rdi, rax
jmp SHORT G_M1296_IG09
- ;; size=26 bbWeight=0.50 PerfScore 2.62
+ ;; size=11 bbWeight=0.50 PerfScore 1.38
G_M1296_IG07: ; bbWeight=2, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rsi rdi]
+ ; gcrRegs -[rax rbx] +[rsi]
mov rbx, rdi
; gcrRegs +[rbx]
jmp SHORT G_M1296_IG05
;; size=5 bbWeight=2 PerfScore 4.50
-G_M1296_IG08: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi]
- mov rsi, gword ptr [rdi+0x10]
+G_M1296_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx rsi rdi]
+ lea rdi, gword ptr [(reloc)]
+ ; gcrRegs +[rdi]
+ lea rsi, gword ptr [(reloc)]
; gcrRegs +[rsi]
- lea rdi, bword ptr [rbx+0x10]
+ call <unknown method>
+ ; gcrRegs -[rsi rdi]
+ ; gcr arg pop 0
+ jmp SHORT G_M1296_IG10
+ ;; size=21 bbWeight=0.50 PerfScore 2.00
+G_M1296_IG09: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx rdi]
+ mov rsi, gword ptr [rbx+0x10]
+ ; gcrRegs +[rsi]
+ lea rdi, bword ptr [rdi+0x10]
; gcrRegs -[rdi]
; byrRegs +[rdi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rbx rsi]
; byrRegs -[rdi]
;; size=13 bbWeight=0.50 PerfScore 1.75
-G_M1296_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M1296_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
-G_M1296_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M1296_IG11: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 106, prolog size 8, PerfScore 51.62, instruction count 36, allocated bytes for code 106 (MethodHash=2a35faef) for method System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
+; Total bytes of code 112, prolog size 8, PerfScore 52.38, instruction count 38, allocated bytes for code 112 (MethodHash=2a35faef) for method System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
; ============================================================
Cfi Info:
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.linux.x64.checked.mch |
64 |
50 |
13 |
1 |
-600 |
+160 |
benchmarks.run_pgo.linux.x64.checked.mch |
406 |
182 |
219 |
5 |
-1,708 |
+2,514 |
benchmarks.run_tiered.linux.x64.checked.mch |
25 |
16 |
7 |
2 |
-206 |
+124 |
coreclr_tests.run.linux.x64.checked.mch |
373 |
218 |
56 |
99 |
-2,333 |
+787 |
libraries.crossgen2.linux.x64.checked.mch |
176 |
144 |
25 |
7 |
-1,564 |
+252 |
libraries.pmi.linux.x64.checked.mch |
321 |
222 |
71 |
28 |
-2,024 |
+605 |
libraries_tests.run.linux.x64.Release.mch |
2,199 |
1,470 |
415 |
314 |
-20,267 |
+6,727 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
893 |
549 |
288 |
56 |
-4,407 |
+3,177 |
realworld.run.linux.x64.checked.mch |
49 |
30 |
15 |
4 |
-353 |
+311 |
smoke_tests.nativeaot.linux.x64.checked.mch |
54 |
36 |
11 |
7 |
-302 |
+215 |
|
4,560 |
2,917 |
1,120 |
523 |
-33,764 |
+14,872 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.linux.x64.checked.mch |
36,217 |
3,549 |
32,668 |
0 (0.00%) |
0 (0.00%) |
benchmarks.run_pgo.linux.x64.checked.mch |
160,323 |
63,207 |
97,116 |
4 (0.00%) |
4 (0.00%) |
benchmarks.run_tiered.linux.x64.checked.mch |
65,385 |
50,236 |
15,149 |
1 (0.00%) |
1 (0.00%) |
coreclr_tests.run.linux.x64.checked.mch |
599,010 |
355,942 |
243,068 |
3 (0.00%) |
3 (0.00%) |
libraries.crossgen2.linux.x64.checked.mch |
234,329 |
15 |
234,314 |
0 (0.00%) |
0 (0.00%) |
libraries.pmi.linux.x64.checked.mch |
296,931 |
6 |
296,925 |
0 (0.00%) |
0 (0.00%) |
libraries_tests.run.linux.x64.Release.mch |
759,766 |
496,184 |
263,582 |
0 (0.00%) |
0 (0.00%) |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
305,443 |
21,912 |
283,531 |
0 (0.00%) |
0 (0.00%) |
realworld.run.linux.x64.checked.mch |
33,083 |
9 |
33,074 |
0 (0.00%) |
0 (0.00%) |
smoke_tests.nativeaot.linux.x64.checked.mch |
27,414 |
10 |
27,404 |
0 (0.00%) |
0 (0.00%) |
|
2,517,901 |
991,070 |
1,526,831 |
8 (0.00%) |
8 (0.00%) |
jit-analyze output
benchmarks.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 14336796 (overridden on cmd)
Total bytes of diff: 14336356 (overridden on cmd)
Total bytes of delta: -440 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
34 : 20556.dasm (1.20 % of base)
27 : 3132.dasm (2.32 % of base)
27 : 3851.dasm (3.00 % of base)
27 : 10556.dasm (0.71 % of base)
14 : 21808.dasm (0.24 % of base)
12 : 19659.dasm (0.73 % of base)
5 : 16897.dasm (0.05 % of base)
5 : 14023.dasm (1.64 % of base)
3 : 1706.dasm (0.85 % of base)
2 : 26921.dasm (0.66 % of base)
2 : 2698.dasm (0.37 % of base)
1 : 29539.dasm (0.10 % of base)
1 : 6261.dasm (0.38 % of base)
Top file improvements (bytes):
-45 : 969.dasm (-0.69 % of base)
-44 : 9191.dasm (-0.40 % of base)
-42 : 6915.dasm (-1.37 % of base)
-40 : 4866.dasm (-0.97 % of base)
-32 : 6536.dasm (-30.48 % of base)
-27 : 10179.dasm (-1.60 % of base)
-26 : 8942.dasm (-4.61 % of base)
-24 : 2064.dasm (-0.27 % of base)
-21 : 10196.dasm (-0.16 % of base)
-20 : 20098.dasm (-0.47 % of base)
-19 : 11777.dasm (-6.40 % of base)
-17 : 14553.dasm (-7.14 % of base)
-16 : 813.dasm (-7.17 % of base)
-15 : 21183.dasm (-0.54 % of base)
-14 : 5404.dasm (-2.25 % of base)
-13 : 11600.dasm (-0.51 % of base)
-13 : 26244.dasm (-5.94 % of base)
-12 : 17623.dasm (-4.80 % of base)
-11 : 3477.dasm (-5.02 % of base)
-9 : 14659.dasm (-0.67 % of base)
51 total files with Code Size differences (38 improved, 13 regressed), 1 unchanged.
Top method regressions (bytes):
34 (1.20 % of base) : 20556.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
27 (3.00 % of base) : 3851.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
27 (2.32 % of base) : 3132.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
27 (0.71 % of base) : 10556.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
14 (0.24 % of base) : 21808.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
12 (0.73 % of base) : 19659.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (FullOpts)
5 (1.64 % of base) : 14023.dasm - System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
5 (0.05 % of base) : 16897.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
3 (0.85 % of base) : 1706.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
2 (0.66 % of base) : 26921.dasm - MS.Internal.Xml.XPath.XPathParser:ParseMultiplicativeExpr(MS.Internal.Xml.XPath.AstNode):MS.Internal.Xml.XPath.AstNode:this (FullOpts)
2 (0.37 % of base) : 2698.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
1 (0.10 % of base) : 29539.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance(System.IServiceProvider,System.Type,System.Object[]):System.Object (FullOpts)
1 (0.38 % of base) : 6261.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
Top method improvements (bytes):
-45 (-0.69 % of base) : 969.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-44 (-0.40 % of base) : 9191.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (FullOpts)
-42 (-1.37 % of base) : 6915.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (FullOpts)
-40 (-0.97 % of base) : 4866.dasm - Utf8Json.Internal.Emit.MetaType:.ctor(System.Type,System.Func`2[System.String,System.String],ubyte):this (FullOpts)
-32 (-30.48 % of base) : 6536.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-27 (-1.60 % of base) : 10179.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
-26 (-4.61 % of base) : 8942.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (FullOpts)
-24 (-0.27 % of base) : 2064.dasm - System.Formats.Asn1.WellKnownOids:GetContents(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ubyte] (FullOpts)
-21 (-0.16 % of base) : 10196.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.XmlAttributes,System.String,System.Type,ubyte,ubyte,System.Xml.Serialization.RecursionLimiter):this (FullOpts)
-20 (-0.47 % of base) : 20098.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseMemberDeclarationOrStatementCore(ushort):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax:this (FullOpts)
-19 (-6.40 % of base) : 11777.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
-17 (-7.14 % of base) : 14553.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
-16 (-7.17 % of base) : 813.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-15 (-0.54 % of base) : 21183.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-14 (-2.25 % of base) : 5404.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (FullOpts)
-13 (-5.94 % of base) : 26244.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
-13 (-0.51 % of base) : 11600.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (FullOpts)
-12 (-4.80 % of base) : 17623.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
-11 (-5.02 % of base) : 3477.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-9 (-0.67 % of base) : 14659.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (FullOpts)
Top method regressions (percentages):
27 (3.00 % of base) : 3851.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
27 (2.32 % of base) : 3132.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
5 (1.64 % of base) : 14023.dasm - System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
34 (1.20 % of base) : 20556.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
3 (0.85 % of base) : 1706.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
12 (0.73 % of base) : 19659.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (FullOpts)
27 (0.71 % of base) : 10556.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
2 (0.66 % of base) : 26921.dasm - MS.Internal.Xml.XPath.XPathParser:ParseMultiplicativeExpr(MS.Internal.Xml.XPath.AstNode):MS.Internal.Xml.XPath.AstNode:this (FullOpts)
1 (0.38 % of base) : 6261.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
2 (0.37 % of base) : 2698.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
14 (0.24 % of base) : 21808.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
1 (0.10 % of base) : 29539.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance(System.IServiceProvider,System.Type,System.Object[]):System.Object (FullOpts)
5 (0.05 % of base) : 16897.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
Top method improvements (percentages):
-32 (-30.48 % of base) : 6536.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-5 (-7.94 % of base) : 4086.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
-16 (-7.17 % of base) : 813.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-17 (-7.14 % of base) : 14553.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
-19 (-6.40 % of base) : 11777.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
-6 (-6.25 % of base) : 2382.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (FullOpts)
-13 (-5.94 % of base) : 26244.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
-11 (-5.02 % of base) : 3477.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-12 (-4.80 % of base) : 17623.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
-26 (-4.61 % of base) : 8942.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (FullOpts)
-5 (-3.12 % of base) : 3836.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-14 (-2.25 % of base) : 5404.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (FullOpts)
-4 (-1.96 % of base) : 825.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-27 (-1.60 % of base) : 10179.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
-5 (-1.40 % of base) : 6941.dasm - Sigil.Impl.LinqStack`1[System.__Canon]:Peek(ubyte,int):Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack][]:this (FullOpts)
-42 (-1.37 % of base) : 6915.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (FullOpts)
-4 (-1.37 % of base) : 1307.dasm - System.Text.Json.Tests.Perf_Reader:ReadSpanEmptyLoop():this (FullOpts)
-4 (-1.35 % of base) : 7919.dasm - System.Text.Json.Tests.Perf_Reader:ReadMultiSpanSequenceEmptyLoop():this (FullOpts)
-4 (-1.35 % of base) : 13244.dasm - System.Text.Json.Tests.Perf_Reader:ReadSingleSpanSequenceEmptyLoop():this (FullOpts)
-4 (-1.35 % of base) : 6705.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (FullOpts)
benchmarks.run_pgo.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 71590604 (overridden on cmd)
Total bytes of diff: 71591410 (overridden on cmd)
Total bytes of delta: 806 (0.00 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
60 : 103889.dasm (1.24 % of base)
59 : 140742.dasm (3.22 % of base)
59 : 144220.dasm (3.22 % of base)
59 : 145145.dasm (3.23 % of base)
59 : 145181.dasm (3.23 % of base)
54 : 61183.dasm (15.65 % of base)
51 : 61393.dasm (4.46 % of base)
51 : 79298.dasm (4.44 % of base)
51 : 98497.dasm (4.44 % of base)
51 : 69776.dasm (4.44 % of base)
48 : 97423.dasm (0.50 % of base)
47 : 145196.dasm (13.17 % of base)
41 : 98206.dasm (1.69 % of base)
34 : 98211.dasm (5.99 % of base)
31 : 96806.dasm (9.84 % of base)
31 : 139184.dasm (4.41 % of base)
27 : 11693.dasm (2.90 % of base)
26 : 145003.dasm (0.28 % of base)
24 : 147580.dasm (0.27 % of base)
23 : 140745.dasm (3.38 % of base)
Top file improvements (bytes):
-107 : 76188.dasm (-4.19 % of base)
-49 : 137447.dasm (-2.33 % of base)
-46 : 102873.dasm (-5.46 % of base)
-45 : 3800.dasm (-0.68 % of base)
-33 : 153810.dasm (-3.15 % of base)
-29 : 137448.dasm (-29.00 % of base)
-26 : 39283.dasm (-1.04 % of base)
-19 : 104321.dasm (-0.73 % of base)
-19 : 109393.dasm (-0.70 % of base)
-19 : 126502.dasm (-0.70 % of base)
-19 : 132804.dasm (-0.70 % of base)
-19 : 14197.dasm (-0.70 % of base)
-19 : 33258.dasm (-0.70 % of base)
-19 : 45062.dasm (-5.76 % of base)
-19 : 49255.dasm (-0.70 % of base)
-19 : 74812.dasm (-0.73 % of base)
-18 : 45050.dasm (-5.54 % of base)
-18 : 45061.dasm (-5.54 % of base)
-17 : 52491.dasm (-7.02 % of base)
-17 : 52493.dasm (-7.14 % of base)
73 total files with Code Size differences (47 improved, 26 regressed), 5 unchanged.
Top method regressions (bytes):
60 (1.24 % of base) : 103889.dasm - Microsoft.CodeAnalysis.MetadataHelpers:GetInfoForImmediateNamespaceMembers(ubyte,int,System.Collections.Generic.IEnumerable`1[System.Linq.IGrouping`2[System.String,System.Reflection.Metadata.TypeDefinitionHandle]],System.StringComparer,byref,byref) (Tier1)
59 (3.22 % of base) : 140742.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
59 (3.22 % of base) : 144220.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
59 (3.23 % of base) : 145145.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
59 (3.23 % of base) : 145181.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
54 (15.65 % of base) : 61183.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
51 (4.46 % of base) : 61393.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
51 (4.44 % of base) : 79298.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
51 (4.44 % of base) : 98497.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
51 (4.44 % of base) : 69776.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
48 (0.50 % of base) : 97423.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (Tier1)
47 (13.17 % of base) : 145196.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
41 (1.69 % of base) : 98206.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (Tier1)
34 (5.99 % of base) : 98211.dasm - Microsoft.CodeAnalysis.Compilation:get_HasStrongName():ubyte:this (Tier1)
31 (9.84 % of base) : 96806.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
31 (4.41 % of base) : 139184.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
27 (2.90 % of base) : 11693.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
26 (0.28 % of base) : 145003.dasm - System.Text.RegularExpressions.RegexLWCGCompiler:FactoryInstanceFromCode(System.String,System.Text.RegularExpressions.RegexTree,int,ubyte):System.Text.RegularExpressions.RegexRunnerFactory:this (Tier1)
24 (0.27 % of base) : 147580.dasm - System.Text.RegularExpressions.RegexLWCGCompiler:FactoryInstanceFromCode(System.String,System.Text.RegularExpressions.RegexTree,int,ubyte):System.Text.RegularExpressions.RegexRunnerFactory:this (Tier1)
23 (3.38 % of base) : 140745.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex12_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (bytes):
-107 (-4.19 % of base) : 76188.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
-49 (-2.33 % of base) : 137447.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
-46 (-5.46 % of base) : 102873.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:WriteConsideredUse(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
-45 (-0.68 % of base) : 3800.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
-33 (-3.15 % of base) : 153810.dasm - System.Collections.Generic.Dictionary`2[System.ValueTuple`3[System.__Canon,ulong,uint],System.__Canon]:TryGetValue(System.ValueTuple`3[System.__Canon,ulong,uint],byref):ubyte:this (Tier1)
-29 (-29.00 % of base) : 137448.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-26 (-1.04 % of base) : 39283.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
-19 (-5.76 % of base) : 45062.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1)
-19 (-0.73 % of base) : 104321.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
-19 (-0.70 % of base) : 109393.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
-19 (-0.70 % of base) : 126502.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
-19 (-0.70 % of base) : 132804.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
-19 (-0.70 % of base) : 14197.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
-19 (-0.70 % of base) : 33258.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
-19 (-0.70 % of base) : 49255.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
-19 (-0.73 % of base) : 74812.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
-18 (-5.54 % of base) : 45050.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-18 (-5.54 % of base) : 45061.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-17 (-7.02 % of base) : 52491.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1)
-17 (-7.14 % of base) : 52493.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
Top method regressions (percentages):
54 (15.65 % of base) : 61183.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
47 (13.17 % of base) : 145196.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
19 (10.44 % of base) : 98035.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
31 (9.84 % of base) : 96806.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
34 (5.99 % of base) : 98211.dasm - Microsoft.CodeAnalysis.Compilation:get_HasStrongName():ubyte:this (Tier1)
15 (5.32 % of base) : 50179.dasm - System.Number:FormatDouble(double,System.String,System.Globalization.NumberFormatInfo):System.String (Tier1)
15 (5.32 % of base) : 35209.dasm - System.Number:FormatDouble(double,System.String,System.Globalization.NumberFormatInfo):System.String (Tier1)
51 (4.46 % of base) : 61393.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
51 (4.44 % of base) : 79298.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
51 (4.44 % of base) : 98497.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
51 (4.44 % of base) : 69776.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
31 (4.41 % of base) : 139184.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
8 (4.17 % of base) : 94052.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
22 (3.46 % of base) : 80074.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
16 (3.41 % of base) : 155076.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
23 (3.38 % of base) : 140745.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex12_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
59 (3.23 % of base) : 145145.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
59 (3.23 % of base) : 145181.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
59 (3.22 % of base) : 140742.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
59 (3.22 % of base) : 144220.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
Top method improvements (percentages):
-29 (-29.00 % of base) : 137448.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-17 (-7.14 % of base) : 52493.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-17 (-7.14 % of base) : 52479.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-17 (-7.02 % of base) : 52491.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1)
-11 (-6.96 % of base) : 61452.dasm - System.Net.Security.SslStream+SslBuffer:DecryptedReadOnlySpanSliced(int):System.ReadOnlySpan`1[ubyte]:this (Tier1)
-19 (-5.76 % of base) : 45062.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1)
-18 (-5.54 % of base) : 45050.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-18 (-5.54 % of base) : 45061.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-46 (-5.46 % of base) : 102873.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:WriteConsideredUse(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
-11 (-5.24 % of base) : 135344.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-11 (-5.24 % of base) : 140151.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-11 (-5.24 % of base) : 35687.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-11 (-5.24 % of base) : 45935.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-4 (-4.55 % of base) : 82127.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (Tier1-OSR)
-4 (-4.26 % of base) : 51622.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequence(int):this (Tier1-OSR)
-4 (-4.26 % of base) : 55720.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequence(int):this (Tier1-OSR)
-107 (-4.19 % of base) : 76188.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
-11 (-4.18 % of base) : 61335.dasm - System.Net.Security.SslStream:HaveFullTlsFrame(byref):ubyte:this (Tier1)
-6 (-3.41 % of base) : 61316.dasm - System.Net.Security.SslStream+SslBuffer:get_EncryptedReadOnlySpan():System.ReadOnlySpan`1[ubyte]:this (Tier1)
-33 (-3.15 % of base) : 153810.dasm - System.Collections.Generic.Dictionary`2[System.ValueTuple`3[System.__Canon,ulong,uint],System.__Canon]:TryGetValue(System.ValueTuple`3[System.__Canon,ulong,uint],byref):ubyte:this (Tier1)
benchmarks.run_tiered.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 21435743 (overridden on cmd)
Total bytes of diff: 21435661 (overridden on cmd)
Total bytes of delta: -82 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
49 : 38361.dasm (1.98 % of base)
27 : 5290.dasm (2.32 % of base)
27 : 7330.dasm (3.00 % of base)
14 : 52167.dasm (0.24 % of base)
3 : 13644.dasm (0.85 % of base)
2 : 22170.dasm (0.35 % of base)
2 : 3840.dasm (1.33 % of base)
Top file improvements (bytes):
-45 : 4787.dasm (-0.69 % of base)
-32 : 60259.dasm (-30.48 % of base)
-24 : 32919.dasm (-0.27 % of base)
-18 : 29685.dasm (-5.90 % of base)
-17 : 31264.dasm (-7.14 % of base)
-16 : 10084.dasm (-7.17 % of base)
-11 : 38535.dasm (-5.02 % of base)
-9 : 34615.dasm (-0.67 % of base)
-6 : 33272.dasm (-6.25 % of base)
-5 : 15565.dasm (-3.12 % of base)
-4 : 61586.dasm (-0.56 % of base)
-4 : 10103.dasm (-1.96 % of base)
-4 : 31308.dasm (-4.26 % of base)
-4 : 39704.dasm (-4.55 % of base)
-4 : 58518.dasm (-0.14 % of base)
-3 : 33441.dasm (-0.40 % of base)
23 total files with Code Size differences (16 improved, 7 regressed), 2 unchanged.
Top method regressions (bytes):
49 (1.98 % of base) : 38361.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
27 (3.00 % of base) : 7330.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
27 (2.32 % of base) : 5290.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier0-FullOpts)
14 (0.24 % of base) : 52167.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
3 (0.85 % of base) : 13644.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (Tier1)
2 (1.33 % of base) : 3840.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CanLockTheFile(int,int):ubyte:this (Tier1)
2 (0.35 % of base) : 22170.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
Top method improvements (bytes):
-45 (-0.69 % of base) : 4787.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
-32 (-30.48 % of base) : 60259.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-24 (-0.27 % of base) : 32919.dasm - System.Formats.Asn1.WellKnownOids:GetContents(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ubyte] (Tier1)
-18 (-5.90 % of base) : 29685.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-17 (-7.14 % of base) : 31264.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-16 (-7.17 % of base) : 10084.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
-11 (-5.02 % of base) : 38535.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-9 (-0.67 % of base) : 34615.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (Tier1)
-6 (-6.25 % of base) : 33272.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (Tier1)
-5 (-3.12 % of base) : 15565.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (Tier1)
-4 (-0.14 % of base) : 58518.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
-4 (-1.96 % of base) : 10103.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-4 (-4.26 % of base) : 31308.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequence(int):this (Tier1-OSR)
-4 (-4.55 % of base) : 39704.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (Tier1-OSR)
-4 (-0.56 % of base) : 61586.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequenceByN(int):this (Tier1-OSR)
-3 (-0.40 % of base) : 33441.dasm - System.Net.Sockets.SocketPal:TryCompleteSendTo(System.Net.Sockets.SafeSocketHandle,System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,byref,int,System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (Tier1)
Top method regressions (percentages):
27 (3.00 % of base) : 7330.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
27 (2.32 % of base) : 5290.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier0-FullOpts)
49 (1.98 % of base) : 38361.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
2 (1.33 % of base) : 3840.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CanLockTheFile(int,int):ubyte:this (Tier1)
3 (0.85 % of base) : 13644.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (Tier1)
2 (0.35 % of base) : 22170.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
14 (0.24 % of base) : 52167.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
Top method improvements (percentages):
-32 (-30.48 % of base) : 60259.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-16 (-7.17 % of base) : 10084.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
-17 (-7.14 % of base) : 31264.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-6 (-6.25 % of base) : 33272.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (Tier1)
-18 (-5.90 % of base) : 29685.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-11 (-5.02 % of base) : 38535.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-4 (-4.55 % of base) : 39704.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (Tier1-OSR)
-4 (-4.26 % of base) : 31308.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequence(int):this (Tier1-OSR)
-5 (-3.12 % of base) : 15565.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (Tier1)
-4 (-1.96 % of base) : 10103.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-45 (-0.69 % of base) : 4787.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
-9 (-0.67 % of base) : 34615.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (Tier1)
-4 (-0.56 % of base) : 61586.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequenceByN(int):this (Tier1-OSR)
-3 (-0.40 % of base) : 33441.dasm - System.Net.Sockets.SocketPal:TryCompleteSendTo(System.Net.Sockets.SafeSocketHandle,System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,byref,int,System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (Tier1)
-24 (-0.27 % of base) : 32919.dasm - System.Formats.Asn1.WellKnownOids:GetContents(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ubyte] (Tier1)
-4 (-0.14 % of base) : 58518.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
23 total methods with Code Size differences (16 improved, 7 regressed).
coreclr_tests.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 403711067 (overridden on cmd)
Total bytes of diff: 403709521 (overridden on cmd)
Total bytes of delta: -1546 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
45 : 535788.dasm (1.00 % of base)
45 : 285464.dasm (3.57 % of base)
40 : 217049.dasm (7.92 % of base)
34 : 503562.dasm (1.20 % of base)
30 : 520385.dasm (1.22 % of base)
27 : 500633.dasm (0.69 % of base)
27 : 23763.dasm (3.04 % of base)
25 : 597221.dasm (1.01 % of base)
20 : 202532.dasm (1.52 % of base)
20 : 217051.dasm (3.55 % of base)
17 : 247098.dasm (1.90 % of base)
17 : 283808.dasm (1.90 % of base)
16 : 197150.dasm (0.23 % of base)
16 : 421347.dasm (1.14 % of base)
16 : 137380.dasm (0.23 % of base)
16 : 174154.dasm (0.23 % of base)
16 : 202678.dasm (0.23 % of base)
16 : 285498.dasm (0.23 % of base)
15 : 597160.dasm (2.06 % of base)
14 : 398288.dasm (0.09 % of base)
Top file improvements (bytes):
-67 : 398030.dasm (-1.47 % of base)
-32 : 502069.dasm (-30.48 % of base)
-30 : 200849.dasm (-10.10 % of base)
-30 : 218778.dasm (-10.10 % of base)
-30 : 205793.dasm (-10.10 % of base)
-30 : 207733.dasm (-10.10 % of base)
-30 : 285877.dasm (-10.10 % of base)
-30 : 293381.dasm (-10.10 % of base)
-30 : 29910.dasm (-10.10 % of base)
-30 : 356041.dasm (-10.10 % of base)
-30 : 362370.dasm (-10.10 % of base)
-30 : 400225.dasm (-10.10 % of base)
-30 : 241530.dasm (-10.10 % of base)
-30 : 248950.dasm (-10.10 % of base)
-30 : 255098.dasm (-10.10 % of base)
-30 : 256578.dasm (-10.10 % of base)
-30 : 261990.dasm (-10.10 % of base)
-30 : 297077.dasm (-10.10 % of base)
-30 : 299749.dasm (-10.10 % of base)
-30 : 365393.dasm (-10.10 % of base)
71 total files with Code Size differences (39 improved, 32 regressed), 20 unchanged.
Top method regressions (bytes):
45 (1.00 % of base) : 535788.dasm - IlasmPortablePdbTests.IlasmPortablePdbTester:TestPortablePdbLocalScope(System.String):this (FullOpts)
45 (3.57 % of base) : 285464.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (Tier1)
40 (7.92 % of base) : 217049.dasm - System.Reflection.RuntimeAssembly:GetType(System.String,ubyte,ubyte):System.Type:this (Instrumented Tier1)
34 (1.20 % of base) : 503562.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
30 (1.22 % of base) : 520385.dasm - Test_DictionaryExpansion:DoTest(int) (FullOpts)
27 (3.04 % of base) : 23763.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
27 (0.69 % of base) : 500633.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
25 (1.01 % of base) : 597221.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.AttributePresenceFilterNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
20 (1.52 % of base) : 202532.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (Tier1)
20 (3.55 % of base) : 217051.dasm - System.Reflection.TypeNameParser:GetType(System.String,ubyte,ubyte,System.Reflection.Assembly):System.Type (Instrumented Tier1)
17 (1.90 % of base) : 247098.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
17 (1.90 % of base) : 283808.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
16 (0.23 % of base) : 197150.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
16 (0.23 % of base) : 137380.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
16 (0.23 % of base) : 174154.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
16 (0.23 % of base) : 202678.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
16 (0.23 % of base) : 285498.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
16 (1.14 % of base) : 421347.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
15 (2.06 % of base) : 597160.dasm - ILCompiler.ProcessLinkerXmlBase:ProcessAssemblies(System.Xml.XPath.XPathNavigator):this (FullOpts)
14 (0.09 % of base) : 398288.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.TypeValidationChecker+<ValidateTypeWorker>d__10:MoveNext():this (Tier1)
Top method improvements (bytes):
-67 (-1.47 % of base) : 398030.dasm - ILCompiler.ReadyToRunVisibilityRootProvider:RootMethods(Internal.TypeSystem.MetadataType,System.String,ILCompiler.IRootingServiceProvider,ubyte):this (Tier1-OSR)
-32 (-30.48 % of base) : 502069.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-30 (-10.10 % of base) : 200849.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 218778.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 205793.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 207733.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 285877.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 293381.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 29910.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 356041.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 362370.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 400225.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 241530.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 248950.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 255098.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 256578.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 261990.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 297077.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 299749.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 365393.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
Top method regressions (percentages):
40 (7.92 % of base) : 217049.dasm - System.Reflection.RuntimeAssembly:GetType(System.String,ubyte,ubyte):System.Type:this (Instrumented Tier1)
45 (3.57 % of base) : 285464.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (Tier1)
20 (3.55 % of base) : 217051.dasm - System.Reflection.TypeNameParser:GetType(System.String,ubyte,ubyte,System.Reflection.Assembly):System.Type (Instrumented Tier1)
27 (3.04 % of base) : 23763.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
14 (3.04 % of base) : 287495.dasm - System.Text.UTF8Encoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
14 (2.50 % of base) : 249246.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
15 (2.06 % of base) : 597160.dasm - ILCompiler.ProcessLinkerXmlBase:ProcessAssemblies(System.Xml.XPath.XPathNavigator):this (FullOpts)
17 (1.90 % of base) : 247098.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
17 (1.90 % of base) : 283808.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
14 (1.56 % of base) : 201123.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
14 (1.56 % of base) : 239816.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
14 (1.56 % of base) : 241818.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
14 (1.56 % of base) : 256741.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
14 (1.56 % of base) : 249008.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
14 (1.56 % of base) : 255363.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
14 (1.56 % of base) : 299842.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
14 (1.56 % of base) : 30218.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
14 (1.56 % of base) : 3055.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
14 (1.56 % of base) : 365574.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
20 (1.52 % of base) : 202532.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (Tier1)
Top method improvements (percentages):
-32 (-30.48 % of base) : 502069.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-30 (-10.10 % of base) : 200849.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 218778.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 205793.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 207733.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 285877.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 293381.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 29910.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 356041.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 362370.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 400225.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 241530.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 248950.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 255098.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 256578.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 261990.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 297077.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 299749.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 365393.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 381181.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
libraries.crossgen2.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 38727192 (overridden on cmd)
Total bytes of diff: 38725880 (overridden on cmd)
Total bytes of delta: -1312 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
43 : 11821.dasm (2.31 % of base)
32 : 98448.dasm (2.74 % of base)
30 : 73535.dasm (0.57 % of base)
27 : 27748.dasm (3.08 % of base)
19 : 32025.dasm (6.67 % of base)
15 : 25662.dasm (1.27 % of base)
14 : 32010.dasm (5.36 % of base)
11 : 216413.dasm (1.89 % of base)
9 : 133182.dasm (0.99 % of base)
8 : 96100.dasm (1.62 % of base)
6 : 27908.dasm (5.22 % of base)
6 : 26643.dasm (0.41 % of base)
5 : 217211.dasm (0.09 % of base)
5 : 217279.dasm (0.10 % of base)
5 : 22528.dasm (4.59 % of base)
3 : 224175.dasm (0.85 % of base)
2 : 221243.dasm (0.13 % of base)
2 : 26851.dasm (0.34 % of base)
2 : 128789.dasm (0.27 % of base)
2 : 221443.dasm (0.36 % of base)
Top file improvements (bytes):
-100 : 195267.dasm (-5.74 % of base)
-75 : 4162.dasm (-6.23 % of base)
-57 : 4946.dasm (-1.67 % of base)
-54 : 4904.dasm (-1.58 % of base)
-51 : 154637.dasm (-1.54 % of base)
-36 : 2107.dasm (-3.92 % of base)
-35 : 207764.dasm (-5.46 % of base)
-32 : 226656.dasm (-30.19 % of base)
-29 : 127211.dasm (-25.66 % of base)
-29 : 40590.dasm (-4.28 % of base)
-28 : 188713.dasm (-3.26 % of base)
-28 : 217809.dasm (-4.59 % of base)
-28 : 195149.dasm (-3.82 % of base)
-26 : 217962.dasm (-6.33 % of base)
-26 : 233413.dasm (-6.33 % of base)
-26 : 25793.dasm (-4.84 % of base)
-25 : 226981.dasm (-0.55 % of base)
-24 : 198748.dasm (-0.18 % of base)
-17 : 25325.dasm (-0.80 % of base)
-17 : 180945.dasm (-0.78 % of base)
63 total files with Code Size differences (40 improved, 23 regressed), 7 unchanged.
Top method regressions (bytes):
43 (2.31 % of base) : 11821.dasm - System.Text.StringBuilder:Replace(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,int):System.Text.StringBuilder:this (FullOpts)
32 (2.74 % of base) : 98448.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
30 (0.57 % of base) : 73535.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
27 (3.08 % of base) : 27748.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
19 (6.67 % of base) : 32025.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
15 (1.27 % of base) : 25662.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
14 (5.36 % of base) : 32010.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
11 (1.89 % of base) : 216413.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
9 (0.99 % of base) : 133182.dasm - System.Linq.Parallel.AsynchronousChannelMergeEnumerator`1[System.__Canon]:MoveNextSlowPath():ubyte:this (FullOpts)
8 (1.62 % of base) : 96100.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
6 (0.41 % of base) : 26643.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
6 (5.22 % of base) : 27908.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
5 (4.59 % of base) : 22528.dasm - System.Enum+<>c__63`1[ubyte]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
5 (0.09 % of base) : 217211.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.__Canon]:MoveNext():this (FullOpts)
5 (0.10 % of base) : 217279.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
3 (0.85 % of base) : 224175.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
2 (0.27 % of base) : 128789.dasm - Internal.TypeSystem.CastingHelper:<IsEquivalentToDefType>g__CompareStructuresForEquivalence|24_2(Internal.TypeSystem.MetadataType,Internal.TypeSystem.MetadataType,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (FullOpts)
2 (0.34 % of base) : 26851.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
2 (0.13 % of base) : 221243.dasm - System.Xml.Linq.ElementWriter+<WriteElementAsync>d__4:MoveNext():this (FullOpts)
2 (0.36 % of base) : 221443.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
Top method improvements (bytes):
-100 (-5.74 % of base) : 195267.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
-75 (-6.23 % of base) : 4162.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
-57 (-1.67 % of base) : 4946.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-54 (-1.58 % of base) : 4904.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-51 (-1.54 % of base) : 154637.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyData[System.__Canon,System.__Canon]],int):this (FullOpts)
-36 (-3.92 % of base) : 2107.dasm - System.Data.Common.DataAdapter:Fill(System.Data.DataTable[],System.Data.IDataReader,int,int):int:this (FullOpts)
-35 (-5.46 % of base) : 207764.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-32 (-30.19 % of base) : 226656.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-29 (-4.28 % of base) : 40590.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
-29 (-25.66 % of base) : 127211.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-28 (-4.59 % of base) : 217809.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
-28 (-3.26 % of base) : 188713.dasm - System.Text.RegularExpressions.RegexNode:ReduceAtomic():System.Text.RegularExpressions.RegexNode:this (FullOpts)
-28 (-3.82 % of base) : 195149.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-26 (-4.84 % of base) : 25793.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (FullOpts)
-26 (-6.33 % of base) : 217962.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-26 (-6.33 % of base) : 233413.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-25 (-0.55 % of base) : 226981.dasm - System.Globalization.FormatProvider+Number:NumberToStringFormat(byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-24 (-0.18 % of base) : 198748.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.XmlAttributes,System.String,System.Type,ubyte,ubyte,System.Xml.Serialization.RecursionLimiter):this (FullOpts)
-17 (-0.80 % of base) : 25325.dasm - System.Globalization.IdnMapping:PunycodeEncode(System.String):System.String (FullOpts)
-17 (-0.78 % of base) : 180945.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (FullOpts)
Top method regressions (percentages):
19 (6.67 % of base) : 32025.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
14 (5.36 % of base) : 32010.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
6 (5.22 % of base) : 27908.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
5 (4.59 % of base) : 22528.dasm - System.Enum+<>c__63`1[ubyte]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
27 (3.08 % of base) : 27748.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
32 (2.74 % of base) : 98448.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
43 (2.31 % of base) : 11821.dasm - System.Text.StringBuilder:Replace(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,int):System.Text.StringBuilder:this (FullOpts)
11 (1.89 % of base) : 216413.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
8 (1.62 % of base) : 96100.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
15 (1.27 % of base) : 25662.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
9 (0.99 % of base) : 133182.dasm - System.Linq.Parallel.AsynchronousChannelMergeEnumerator`1[System.__Canon]:MoveNextSlowPath():ubyte:this (FullOpts)
3 (0.85 % of base) : 224175.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
30 (0.57 % of base) : 73535.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
6 (0.41 % of base) : 26643.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
1 (0.39 % of base) : 208474.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
2 (0.36 % of base) : 221443.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
2 (0.34 % of base) : 26851.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
2 (0.31 % of base) : 221448.dasm - System.Xml.Linq.Extensions+<GetDescendants>d__23`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
1 (0.28 % of base) : 3439.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
2 (0.27 % of base) : 128789.dasm - Internal.TypeSystem.CastingHelper:<IsEquivalentToDefType>g__CompareStructuresForEquivalence|24_2(Internal.TypeSystem.MetadataType,Internal.TypeSystem.MetadataType,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (FullOpts)
Top method improvements (percentages):
-32 (-30.19 % of base) : 226656.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-29 (-25.66 % of base) : 127211.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-16 (-9.30 % of base) : 141961.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String):this (FullOpts)
-16 (-8.51 % of base) : 26654.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
-11 (-7.53 % of base) : 4690.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-16 (-7.17 % of base) : 25007.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-8 (-6.67 % of base) : 234263.dasm - System.Transactions.CheapUnfairReaderWriterLock:EnterWriteLock():this (FullOpts)
-5 (-6.58 % of base) : 221591.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (FullOpts)
-5 (-6.41 % of base) : 198038.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-26 (-6.33 % of base) : 217962.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-26 (-6.33 % of base) : 233413.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-6 (-6.25 % of base) : 177493.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (FullOpts)
-75 (-6.23 % of base) : 4162.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
-5 (-6.02 % of base) : 221373.dasm - System.Xml.Linq.XObject:get_BaseUri():System.String:this (FullOpts)
-15 (-5.93 % of base) : 225376.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:SymmetricExceptWithSameComparer(System.__Canon[],int):this (FullOpts)
-100 (-5.74 % of base) : 195267.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
-35 (-5.46 % of base) : 207764.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-26 (-4.84 % of base) : 25793.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (FullOpts)
-28 (-4.59 % of base) : 217809.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
-5 (-4.50 % of base) : 221589.dasm - System.Xml.Linq.XObject:NotifyChanged(System.Object,System.Xml.Linq.XObjectChangeEventArgs):ubyte:this (FullOpts)
libraries.pmi.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 60419372 (overridden on cmd)
Total bytes of diff: 60417953 (overridden on cmd)
Total bytes of delta: -1419 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
95 : 104465.dasm (5.59 % of base)
46 : 102188.dasm (5.60 % of base)
31 : 135546.dasm (1.78 % of base)
27 : 210285.dasm (0.70 % of base)
25 : 62008.dasm (1.01 % of base)
19 : 64048.dasm (0.95 % of base)
19 : 110244.dasm (1.57 % of base)
18 : 102712.dasm (6.43 % of base)
18 : 20756.dasm (5.22 % of base)
16 : 267647.dasm (1.14 % of base)
14 : 138480.dasm (16.09 % of base)
14 : 266847.dasm (0.63 % of base)
14 : 63818.dasm (0.23 % of base)
13 : 198183.dasm (0.86 % of base)
13 : 82977.dasm (1.10 % of base)
13 : 83046.dasm (2.49 % of base)
13 : 229366.dasm (0.86 % of base)
11 : 20668.dasm (2.24 % of base)
11 : 224419.dasm (1.04 % of base)
11 : 225389.dasm (2.52 % of base)
Top file improvements (bytes):
-57 : 23258.dasm (-1.67 % of base)
-54 : 23197.dasm (-1.58 % of base)
-36 : 25145.dasm (-3.85 % of base)
-36 : 64069.dasm (-1.93 % of base)
-35 : 261317.dasm (-3.16 % of base)
-34 : 289267.dasm (-0.42 % of base)
-32 : 291734.dasm (-30.48 % of base)
-32 : 62801.dasm (-4.31 % of base)
-31 : 62794.dasm (-3.69 % of base)
-30 : 149355.dasm (-1.59 % of base)
-29 : 157853.dasm (-25.89 % of base)
-26 : 250179.dasm (-5.94 % of base)
-26 : 277648.dasm (-5.94 % of base)
-24 : 196898.dasm (-2.88 % of base)
-23 : 158386.dasm (-2.53 % of base)
-23 : 203151.dasm (-1.92 % of base)
-23 : 176343.dasm (-2.53 % of base)
-23 : 203136.dasm (-1.78 % of base)
-23 : 203166.dasm (-2.14 % of base)
-22 : 291675.dasm (-0.40 % of base)
70 total files with Code Size differences (46 improved, 24 regressed), 20 unchanged.
Top method regressions (bytes):
95 (5.59 % of base) : 104465.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
46 (5.60 % of base) : 102188.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindNamespaceOrTypeOrExpressionSyntaxForSemanticModel(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
31 (1.78 % of base) : 135546.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
27 (0.70 % of base) : 210285.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
25 (1.01 % of base) : 62008.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.AttributePresenceFilterNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
19 (0.95 % of base) : 64048.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindBase(Microsoft.CodeAnalysis.CSharp.Syntax.BaseExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundBaseReference:this (FullOpts)
19 (1.57 % of base) : 110244.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxTreeSemanticModel:GetTypeOrNamespaceSymbolInfoNotInMember(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,int):Microsoft.CodeAnalysis.SymbolInfo:this (FullOpts)
18 (6.43 % of base) : 102712.dasm - Microsoft.CodeAnalysis.VisualBasic.BinderFactory:BuildAttributeBinder(Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Binder:this (FullOpts)
18 (5.22 % of base) : 20756.dasm - System.Xml.XPathNodePointer:GetNamespace(System.String):System.String:this (FullOpts)
16 (1.14 % of base) : 267647.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
14 (0.23 % of base) : 63818.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
14 (0.63 % of base) : 266847.dasm - System.DirectoryServices.Protocols.LdapSessionOptions:ProcessNotifyConnection(long,long,long,long,long,int,ulong,ulong,int):int:this (FullOpts)
14 (16.09 % of base) : 138480.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
13 (2.49 % of base) : 83046.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
13 (1.10 % of base) : 82977.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
13 (0.86 % of base) : 198183.dasm - System.Configuration.ConfigurationElement:ParseLockedAttributes(System.Configuration.ConfigurationValue,int):System.Configuration.ConfigurationLockCollection:this (FullOpts)
13 (0.86 % of base) : 229366.dasm - System.Configuration.ConfigurationElement:ParseLockedAttributes(System.Configuration.ConfigurationValue,int):System.Configuration.ConfigurationLockCollection:this (FullOpts)
11 (1.04 % of base) : 224419.dasm - System.Security.Cryptography.OpenSslAsnFormatter:FormatNative(System.Security.Cryptography.Oid,ubyte[],ubyte):System.String:this (FullOpts)
11 (2.52 % of base) : 225389.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509CertificateReader:GetNameInfo(int,ubyte):System.String:this (FullOpts)
11 (2.24 % of base) : 20668.dasm - System.Xml.XmlDataDocument:OnDataSetRelationsChanging(System.Object,System.ComponentModel.CollectionChangeEventArgs):this (FullOpts)
Top method improvements (bytes):
-57 (-1.67 % of base) : 23258.dasm - System.Data.RBTree`1[ubyte]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-54 (-1.58 % of base) : 23197.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-36 (-1.93 % of base) : 64069.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
-36 (-3.85 % of base) : 25145.dasm - System.Data.Common.DataAdapter:Fill(System.Data.DataTable[],System.Data.IDataReader,int,int):int:this (FullOpts)
-35 (-3.16 % of base) : 261317.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-34 (-0.42 % of base) : 289267.dasm - System.Formats.Asn1.WellKnownOids:GetContents(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ubyte] (FullOpts)
-32 (-4.31 % of base) : 62801.dasm - ILCompiler.LazyGenericsSupport+Graph`1[ubyte]:FindCyclesWorker(ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte],System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte]],byref,System.Diagnostics.Stopwatch) (FullOpts)
-32 (-30.48 % of base) : 291734.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-31 (-3.69 % of base) : 62794.dasm - ILCompiler.LazyGenericsSupport+Graph`1[System.__Canon]:FindCyclesWorker(ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon],System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]],byref,System.Diagnostics.Stopwatch) (FullOpts)
-30 (-1.59 % of base) : 149355.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (FullOpts)
-29 (-25.89 % of base) : 157853.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-26 (-5.94 % of base) : 250179.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-26 (-5.94 % of base) : 277648.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-24 (-2.88 % of base) : 196898.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
-23 (-2.53 % of base) : 158386.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
-23 (-2.53 % of base) : 176343.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
-23 (-1.92 % of base) : 203151.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(double):this (FullOpts)
-23 (-2.14 % of base) : 203166.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(float):this (FullOpts)
-23 (-1.78 % of base) : 203136.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(System.Decimal):this (FullOpts)
-22 (-0.40 % of base) : 291675.dasm - System.Globalization.FormatProvider+Number:NumberToStringFormat(byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
Top method regressions (percentages):
14 (16.09 % of base) : 138480.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
18 (6.43 % of base) : 102712.dasm - Microsoft.CodeAnalysis.VisualBasic.BinderFactory:BuildAttributeBinder(Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Binder:this (FullOpts)
46 (5.60 % of base) : 102188.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindNamespaceOrTypeOrExpressionSyntaxForSemanticModel(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
95 (5.59 % of base) : 104465.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
18 (5.22 % of base) : 20756.dasm - System.Xml.XPathNodePointer:GetNamespace(System.String):System.String:this (FullOpts)
11 (2.52 % of base) : 225389.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509CertificateReader:GetNameInfo(int,ubyte):System.String:this (FullOpts)
13 (2.49 % of base) : 83046.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
11 (2.24 % of base) : 20668.dasm - System.Xml.XmlDataDocument:OnDataSetRelationsChanging(System.Object,System.ComponentModel.CollectionChangeEventArgs):this (FullOpts)
31 (1.78 % of base) : 135546.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
19 (1.57 % of base) : 110244.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxTreeSemanticModel:GetTypeOrNamespaceSymbolInfoNotInMember(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,int):Microsoft.CodeAnalysis.SymbolInfo:this (FullOpts)
16 (1.14 % of base) : 267647.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
7 (1.13 % of base) : 101850.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowsOutWalker:Assign(Microsoft.CodeAnalysis.VisualBasic.BoundNode,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,ubyte):this (FullOpts)
7 (1.13 % of base) : 132430.dasm - System.Net.Security.SslStream:ProcessTlsFrame(int):System.Net.Security.ProtocolToken:this (FullOpts)
13 (1.10 % of base) : 82977.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
3 (1.06 % of base) : 20570.dasm - System.Xml.XmlBoundElement:CloneNode(ubyte):System.Xml.XmlNode:this (FullOpts)
11 (1.04 % of base) : 224419.dasm - System.Security.Cryptography.OpenSslAsnFormatter:FormatNative(System.Security.Cryptography.Oid,ubyte[],ubyte):System.String:this (FullOpts)
25 (1.01 % of base) : 62008.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.AttributePresenceFilterNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
4 (0.96 % of base) : 202182.dasm - System.Text.Json.JsonReaderHelper:UnescapeAndCompare(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
19 (0.95 % of base) : 64048.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindBase(Microsoft.CodeAnalysis.CSharp.Syntax.BaseExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundBaseReference:this (FullOpts)
13 (0.86 % of base) : 198183.dasm - System.Configuration.ConfigurationElement:ParseLockedAttributes(System.Configuration.ConfigurationValue,int):System.Configuration.ConfigurationLockCollection:this (FullOpts)
Top method improvements (percentages):
-32 (-30.48 % of base) : 291734.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-29 (-25.89 % of base) : 157853.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-13 (-12.26 % of base) : 146661.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-16 (-8.89 % of base) : 230752.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String):this (FullOpts)
-15 (-8.77 % of base) : 294389.dasm - R2RDump.Disassembler:TryParseAbsoluteAddress(System.String,byref,byref,byref):ubyte:this (FullOpts)
-5 (-7.94 % of base) : 261917.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
-5 (-7.81 % of base) : 261865.dasm - System.Buffers.ReadOnlySequence`1[System.__Canon]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[System.__Canon],System.Object,int,long,int):System.SequencePosition (FullOpts)
-11 (-7.80 % of base) : 23711.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-17 (-7.73 % of base) : 104455.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
-8 (-6.96 % of base) : 252747.dasm - System.Transactions.CheapUnfairReaderWriterLock:EnterWriteLock():this (FullOpts)
-19 (-6.76 % of base) : 260297.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:SymmetricExceptWithSameComparer(System.__Canon[],int):this (FullOpts)
-5 (-6.33 % of base) : 258900.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (FullOpts)
-6 (-6.25 % of base) : 225545.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (FullOpts)
-26 (-5.94 % of base) : 250179.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-26 (-5.94 % of base) : 277648.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-5 (-5.81 % of base) : 258876.dasm - System.Xml.Linq.XObject:get_BaseUri():System.String:this (FullOpts)
-18 (-5.54 % of base) : 294390.dasm - R2RDump.Disassembler:TryParseRipRelative(System.String,byref,byref,byref):ubyte:this (FullOpts)
-11 (-5.02 % of base) : 220515.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-12 (-4.80 % of base) : 138896.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
-5 (-4.46 % of base) : 258901.dasm - System.Xml.Linq.XObject:GetSaveOptionsFromAnnotations():int:this (FullOpts)
libraries_tests.run.linux.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 337107943 (overridden on cmd)
Total bytes of diff: 337094403 (overridden on cmd)
Total bytes of delta: -13540 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
341 : 314027.dasm (9.60 % of base)
183 : 684203.dasm (2.78 % of base)
135 : 676350.dasm (3.27 % of base)
133 : 131191.dasm (4.04 % of base)
122 : 676339.dasm (2.65 % of base)
121 : 676344.dasm (3.25 % of base)
115 : 676323.dasm (3.19 % of base)
83 : 696613.dasm (0.82 % of base)
80 : 202610.dasm (3.47 % of base)
74 : 131171.dasm (5.41 % of base)
66 : 490631.dasm (2.92 % of base)
64 : 63909.dasm (0.60 % of base)
61 : 307492.dasm (1.75 % of base)
60 : 331725.dasm (0.86 % of base)
58 : 712338.dasm (1.90 % of base)
54 : 192388.dasm (6.46 % of base)
51 : 307176.dasm (1.12 % of base)
45 : 334294.dasm (9.00 % of base)
43 : 331238.dasm (0.89 % of base)
40 : 553360.dasm (3.44 % of base)
Top file improvements (bytes):
-274 : 707040.dasm (-1.30 % of base)
-225 : 191700.dasm (-2.18 % of base)
-193 : 712676.dasm (-2.02 % of base)
-173 : 674465.dasm (-1.20 % of base)
-152 : 712181.dasm (-1.20 % of base)
-136 : 696327.dasm (-1.07 % of base)
-115 : 658653.dasm (-1.80 % of base)
-111 : 638486.dasm (-1.94 % of base)
-110 : 682850.dasm (-1.16 % of base)
-104 : 188689.dasm (-1.07 % of base)
-99 : 477408.dasm (-15.28 % of base)
-88 : 694250.dasm (-1.32 % of base)
-83 : 675106.dasm (-0.68 % of base)
-83 : 54502.dasm (-2.98 % of base)
-81 : 661030.dasm (-0.80 % of base)
-81 : 697004.dasm (-1.99 % of base)
-78 : 88985.dasm (-2.91 % of base)
-77 : 680250.dasm (-1.50 % of base)
-77 : 712357.dasm (-3.61 % of base)
-76 : 57738.dasm (-0.69 % of base)
87 total files with Code Size differences (49 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
341 (9.60 % of base) : 314027.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExprMethodInfo:get_ConstructorInfo():System.Reflection.ConstructorInfo:this (Tier1)
183 (2.78 % of base) : 684203.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.Text.Json.Serialization.Tests.StructDictionary`2[System.__Canon,int],System.__Canon,int]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
135 (3.27 % of base) : 676350.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.DateTime]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
133 (4.04 % of base) : 131191.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryFindMatchingConstructor(System.Type,System.Type[],byref,byref):ubyte (Tier1)
122 (2.65 % of base) : 676339.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,float]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
121 (3.25 % of base) : 676344.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,double]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
115 (3.19 % of base) : 676323.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,ubyte]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
83 (0.82 % of base) : 696613.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodTableRows(int[]):this (Tier1-OSR)
80 (3.47 % of base) : 202610.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (Tier1)
74 (5.41 % of base) : 131171.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (Tier1)
66 (2.92 % of base) : 490631.dasm - System.Xml.RwFactoryWriterTests.CReaderFactory:SetupReadOverload():this (Tier1)
64 (0.60 % of base) : 63909.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInvocationExpression(Microsoft.CodeAnalysis.CSharp.Syntax.InvocationExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
61 (1.75 % of base) : 307492.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExprPropertyInfo:get_PropertyInfo():System.Reflection.PropertyInfo:this (Tier1)
60 (0.86 % of base) : 331725.dasm - System.IO.Compression.Tests.zip_UpdateTests:Update_Comment_EntryName_Encoding_Internal(System.String,System.String,System.String,System.Text.Encoding,System.String,System.String) (Tier1)
58 (1.90 % of base) : 712338.dasm - Microsoft.Cci.MetadataWriter:PopulateAssemblyTableRows():this (Tier1)
54 (6.46 % of base) : 192388.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversion(Microsoft.CodeAnalysis.CSharp.BoundConversion):this (Tier1)
51 (1.12 % of base) : 307176.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExprMethodInfo:get_MethodInfo():System.Reflection.MethodInfo:this (Tier1)
45 (9.00 % of base) : 334294.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)
43 (0.89 % of base) : 331238.dasm - System.IO.Compression.Tests.zip_CreateTests:Create_Comment_EntryName_Encoding_Internal(System.String,System.String,System.String,System.Text.Encoding) (Tier1)
40 (3.44 % of base) : 553360.dasm - System.RuntimeType:FilterApplyBase(System.Reflection.MemberInfo,int,ubyte,ubyte,ubyte,System.String,ubyte):ubyte (Tier1)
Top method improvements (bytes):
-274 (-1.30 % of base) : 707040.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitBinaryLogicalOperatorChildren(Microsoft.CodeAnalysis.CSharp.BoundExpression):this (Tier1)
-225 (-2.18 % of base) : 191700.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInvocationExpression(Microsoft.CodeAnalysis.CSharp.Syntax.InvocationExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
-193 (-2.02 % of base) : 712676.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodTableRows(int[]):this (Tier1)
-173 (-1.20 % of base) : 674465.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestingNumbers_TryGetMethods() (Tier1-OSR)
-152 (-1.20 % of base) : 712181.dasm - Microsoft.Cci.MetadataWriter:SerializeMethodBodies(System.Reflection.Metadata.BlobBuilder,Microsoft.Cci.PdbWriter,byref):int[]:this (Tier1)
-136 (-1.07 % of base) : 696327.dasm - Microsoft.Cci.MetadataWriter:SerializeMethodBodies(System.Reflection.Metadata.BlobBuilder,Microsoft.Cci.PdbWriter,byref):int[]:this (Tier1-OSR)
-115 (-1.80 % of base) : 658653.dasm - System.Text.Json.Serialization.JsonCollectionConverter`2[System.__Canon,int]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
-111 (-1.94 % of base) : 638486.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:ReadConstructorArguments(byref,byref,System.Text.Json.JsonSerializerOptions):this (Tier1)
-110 (-1.16 % of base) : 682850.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Text.Json.Serialization.Tests.Struct_With_Ctor_With_65_Params]:ReadConstructorArgumentsWithContinuation(byref,byref,System.Text.Json.JsonSerializerOptions):ubyte:this (Tier1)
-104 (-1.07 % of base) : 188689.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (Tier1)
-99 (-15.28 % of base) : 477408.dasm - System.Text.EncodingTable:InternalGetCodePageFromName(System.String):int (Tier1)
-88 (-1.32 % of base) : 694250.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArgumentsEvaluate(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]:this (Tier1)
-83 (-2.98 % of base) : 54502.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttributes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Binder],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData[],Microsoft.CodeAnalysis.CSharp.BoundAttribute[],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (Tier1)
-83 (-0.68 % of base) : 675106.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestPartialJsonReader(ubyte,int,System.String) (Tier1-OSR)
-81 (-1.99 % of base) : 697004.dasm - Microsoft.Cci.MetadataWriter:AddCustomAttributesToTable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.Reflection.Metadata.EntityHandle]):this (Tier1-OSR)
-81 (-0.80 % of base) : 661030.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:ReadConstructorArgumentsWithContinuation(byref,byref,System.Text.Json.JsonSerializerOptions):ubyte:this (Tier1)
-78 (-2.91 % of base) : 88985.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttributes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Binder],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData[],Microsoft.CodeAnalysis.CSharp.BoundAttribute[],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (Tier1)
-77 (-3.61 % of base) : 712357.dasm - Microsoft.Cci.MetadataWriter:PopulateClassLayoutTableRows():this (Tier1)
-77 (-1.50 % of base) : 680250.dasm - System.Text.Json.Serialization.JsonCollectionConverter`2[System.Text.Json.Serialization.Tests.GenericStructISetWrapper`1[int],int]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
-76 (-0.69 % of base) : 57738.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
Top method regressions (percentages):
341 (9.60 % of base) : 314027.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExprMethodInfo:get_ConstructorInfo():System.Reflection.ConstructorInfo:this (Tier1)
28 (9.09 % of base) : 57612.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
45 (9.00 % of base) : 334294.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)
25 (8.42 % of base) : 89853.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
21 (6.98 % of base) : 188373.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
21 (6.98 % of base) : 696201.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
54 (6.46 % of base) : 192388.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversion(Microsoft.CodeAnalysis.CSharp.BoundConversion):this (Tier1)
28 (5.57 % of base) : 215344.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)
74 (5.41 % of base) : 131171.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (Tier1)
28 (5.12 % of base) : 573817.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
22 (5.07 % of base) : 192389.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitImplicitReferenceConversion(Microsoft.CodeAnalysis.CSharp.BoundConversion):this (Tier1)
32 (5.02 % of base) : 712447.dasm - Microsoft.Cci.MetadataWriter:PopulateFileTableRows():this (Tier1)
34 (4.74 % of base) : 318924.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
34 (4.74 % of base) : 454195.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
37 (4.70 % of base) : 744239.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)
31 (4.40 % of base) : 345193.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
31 (4.40 % of base) : 98924.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
30 (4.20 % of base) : 133623.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
30 (4.20 % of base) : 348152.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
30 (4.20 % of base) : 504741.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
Top method improvements (percentages):
-30 (-29.41 % of base) : 589312.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-30 (-29.41 % of base) : 572310.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-30 (-29.41 % of base) : 578398.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-30 (-29.13 % of base) : 567454.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-30 (-29.13 % of base) : 546923.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-28 (-27.18 % of base) : 519147.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-29 (-25.89 % of base) : 473459.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
-25 (-20.16 % of base) : 519044.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1-OSR)
-17 (-15.89 % of base) : 88551.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedIf():ubyte:this (Tier1)
-33 (-15.64 % of base) : 546913.dasm - System.Numerics.BigInteger:CompareTo(System.Numerics.BigInteger):int:this (Tier1)
-99 (-15.28 % of base) : 477408.dasm - System.Text.EncodingTable:InternalGetCodePageFromName(System.String):int (Tier1)
-16 (-15.09 % of base) : 56929.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedIf():ubyte:this (Tier1)
-16 (-15.09 % of base) : 56930.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedRegion():ubyte:this (Tier1)
-16 (-14.81 % of base) : 187574.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedIf():ubyte:this (Tier1)
-16 (-14.81 % of base) : 187575.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedRegion():ubyte:this (Tier1)
-16 (-14.81 % of base) : 88552.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedRegion():ubyte:this (Tier1)
-30 (-10.10 % of base) : 283830.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 292698.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 4475.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
-30 (-10.10 % of base) : 96462.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
librariestestsnotieredcompilation.run.linux.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 132558366 (overridden on cmd)
Total bytes of diff: 132557136 (overridden on cmd)
Total bytes of delta: -1230 (-0.00 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
107 : 182113.dasm (2.74 % of base)
65 : 75001.dasm (1.19 % of base)
63 : 182146.dasm (1.71 % of base)
62 : 182134.dasm (1.39 % of base)
60 : 181914.dasm (1.90 % of base)
59 : 181869.dasm (1.81 % of base)
52 : 182223.dasm (1.65 % of base)
48 : 290494.dasm (1.35 % of base)
47 : 167106.dasm (1.63 % of base)
47 : 264562.dasm (0.98 % of base)
47 : 251362.dasm (0.98 % of base)
47 : 12427.dasm (0.75 % of base)
45 : 144682.dasm (2.20 % of base)
43 : 267901.dasm (0.84 % of base)
42 : 20618.dasm (10.85 % of base)
42 : 182280.dasm (1.10 % of base)
40 : 305365.dasm (1.18 % of base)
40 : 165762.dasm (1.18 % of base)
39 : 181434.dasm (1.34 % of base)
37 : 291816.dasm (1.16 % of base)
Top file improvements (bytes):
-77 : 6722.dasm (-4.15 % of base)
-64 : 122757.dasm (-2.92 % of base)
-57 : 93173.dasm (-1.67 % of base)
-54 : 94069.dasm (-1.58 % of base)
-42 : 51166.dasm (-3.24 % of base)
-37 : 183122.dasm (-0.56 % of base)
-36 : 7117.dasm (-1.99 % of base)
-36 : 96477.dasm (-4.12 % of base)
-35 : 99095.dasm (-3.66 % of base)
-35 : 294035.dasm (-2.57 % of base)
-34 : 115363.dasm (-0.42 % of base)
-33 : 261194.dasm (-1.08 % of base)
-32 : 31533.dasm (-30.48 % of base)
-31 : 44772.dasm (-2.27 % of base)
-30 : 59677.dasm (-1.59 % of base)
-30 : 256819.dasm (-2.48 % of base)
-30 : 256835.dasm (-2.65 % of base)
-29 : 97293.dasm (-25.89 % of base)
-28 : 287284.dasm (-3.27 % of base)
-28 : 288701.dasm (-3.20 % of base)
82 total files with Code Size differences (44 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
107 (2.74 % of base) : 182113.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeDefTableMod():this (FullOpts)
65 (1.19 % of base) : 75001.dasm - System.Collections.Specialized.Tests.NameValueCollectionAddStringStringTests:Add():this (FullOpts)
63 (1.71 % of base) : 182146.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeDefTable():this (FullOpts)
62 (1.39 % of base) : 182134.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateFieldDef(System.Reflection.Metadata.MetadataReader,uint,uint,ubyte):this (FullOpts)
60 (1.90 % of base) : 181914.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeRefTable():this (FullOpts)
59 (1.81 % of base) : 181869.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateAssemblyRefTable():this (FullOpts)
52 (1.65 % of base) : 182223.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeRefTableMod():this (FullOpts)
48 (1.35 % of base) : 290494.dasm - System.Text.RegularExpressions.Tests.GetGroupNamesTests:GroupNamesAndNumbers(System.String,System.String,System.String[],int[],System.String[],int):this (FullOpts)
47 (0.75 % of base) : 12427.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
47 (0.98 % of base) : 264562.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<<FloatingPointConstants_Pass>g__PerformFloatingPointSerialization|38_0>d:MoveNext():this (FullOpts)
47 (0.98 % of base) : 251362.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<<FloatingPointConstants_Pass>g__PerformFloatingPointSerialization|38_0>d:MoveNext():this (FullOpts)
47 (1.63 % of base) : 167106.dasm - XPathTests.Common.Utils:XPathNodesetTest(int,System.String,System.String,XPathTests.Common.XPathResult,System.Xml.XmlNamespaceManager,System.String) (FullOpts)
45 (2.20 % of base) : 144682.dasm - System.SpanTests.IndexOfAnyInRangeTests_RefType:NullBound_Throws():this (FullOpts)
43 (0.84 % of base) : 267901.dasm - System.Text.RegularExpressions.Tests.RegexUnicodeCharTests+<RegexUnicodeChar>d__1:MoveNext():this (FullOpts)
42 (10.85 % of base) : 20618.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
42 (1.10 % of base) : 182280.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateGenericParamTable():this (FullOpts)
40 (1.18 % of base) : 305365.dasm - XmlSerializerTests:XmlMembersMapping_MultipleMembers_XmlAnyElement() (FullOpts)
40 (1.18 % of base) : 165762.dasm - XmlSerializerTests:XmlMembersMapping_MultipleMembers_XmlAnyElement() (FullOpts)
39 (1.34 % of base) : 181434.dasm - System.Reflection.Metadata.Tests.AssemblyReferenceTests:ValidateAssemblyNameForMultipleAssemblyReferences():this (FullOpts)
37 (1.16 % of base) : 291816.dasm - System.Text.RegularExpressions.Tests.RegexGroupTests:Groups(System.Text.RegularExpressions.Regex,System.Globalization.CultureInfo,System.String,System.String[]):this (FullOpts)
Top method improvements (bytes):
-77 (-4.15 % of base) : 6722.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttributes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Binder],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData[],Microsoft.CodeAnalysis.CSharp.BoundAttribute[],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
-64 (-2.92 % of base) : 122757.dasm - System.IO.Compression.Tests.zip_UpdateTests:Update_Comment_EntryName_Encoding_Internal(System.String,System.String,System.String,System.Text.Encoding,System.String,System.String) (FullOpts)
-57 (-1.67 % of base) : 93173.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-54 (-1.58 % of base) : 94069.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-42 (-3.24 % of base) : 51166.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
-37 (-0.56 % of base) : 183122.dasm - System.Reflection.Metadata.Decoding.Tests.SignatureDecoderTests:SimpleSignatureProviderCoverage():this (FullOpts)
-36 (-1.99 % of base) : 7117.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
-36 (-4.12 % of base) : 96477.dasm - System.Data.Common.DataAdapter:Fill(System.Data.DataTable[],System.Data.IDataReader,int,int):int:this (FullOpts)
-35 (-3.66 % of base) : 99095.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-35 (-2.57 % of base) : 294035.dasm - System.Text.RegularExpressions.RegexNode:ReduceAtomic():System.Text.RegularExpressions.RegexNode:this (FullOpts)
-34 (-0.42 % of base) : 115363.dasm - System.Formats.Asn1.WellKnownOids:GetContents(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ubyte] (FullOpts)
-33 (-1.08 % of base) : 261194.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestSkipPartial(System.String,ubyte) (FullOpts)
-32 (-30.48 % of base) : 31533.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-31 (-2.27 % of base) : 44772.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
-30 (-1.59 % of base) : 59677.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (FullOpts)
-30 (-2.65 % of base) : 256835.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(double):this (FullOpts)
-30 (-2.48 % of base) : 256819.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(System.Decimal):this (FullOpts)
-29 (-25.89 % of base) : 97293.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-28 (-3.20 % of base) : 288701.dasm - System.Text.RegularExpressions.Tests.RegexEnumerateMatchesTests:EnumerateMatches_Lookahead(int):this (FullOpts)
-28 (-3.27 % of base) : 287284.dasm - System.Text.RegularExpressions.Tests.RegexEnumerateMatchesTests:EnumerateMatches_Lookbehind(int):this (FullOpts)
Top method regressions (percentages):
14 (16.09 % of base) : 167450.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
42 (10.85 % of base) : 20618.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
29 (5.50 % of base) : 188075.dasm - System.Tests.ConvertToStringTests:FromUInt32Array() (FullOpts)
26 (5.44 % of base) : 50373.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel:CanGetSemanticInfo(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,ubyte,ubyte):ubyte (FullOpts)
21 (4.02 % of base) : 188118.dasm - System.Tests.ConvertToStringTests:FromByte() (FullOpts)
21 (3.99 % of base) : 188071.dasm - System.Tests.ConvertToStringTests:FromUInt16Array() (FullOpts)
24 (3.20 % of base) : 157640.dasm - System.Net.Tests.WebHeaderCollectionTest:Getter_Success():this (FullOpts)
19 (3.12 % of base) : 74509.dasm - System.Collections.Specialized.Tests.NameValueCollectionCopyToTests:CopyTo(int,int):this (FullOpts)
23 (3.02 % of base) : 207460.dasm - System.Tests.StringTests:SubstringUsingIndexTest() (FullOpts)
107 (2.74 % of base) : 182113.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeDefTableMod():this (FullOpts)
18 (2.73 % of base) : 34775.dasm - LamarCodeGeneration.Util.ImHashMap:UpdateEntry[System.__Canon,System.__Canon](LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon],LamarCodeGeneration.Util.ImHashMapEntry`2[System.__Canon,System.__Canon]):LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon] (FullOpts)
11 (2.52 % of base) : 155354.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509CertificateReader:GetNameInfo(int,ubyte):System.String:this (FullOpts)
21 (2.50 % of base) : 163877.dasm - System.Collections.ObjectModel.Tests.PublicMethodsTest:CopyToTest() (FullOpts)
10 (2.26 % of base) : 22511.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|427_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
27 (2.24 % of base) : 225656.dasm - System.Security.Cryptography.Tests.IncrementalHashTests:VerifyGetCurrentHash(System.Security.Cryptography.IncrementalHash,System.Security.Cryptography.IncrementalHash) (FullOpts)
45 (2.20 % of base) : 144682.dasm - System.SpanTests.IndexOfAnyInRangeTests_RefType:NullBound_Throws():this (FullOpts)
35 (2.11 % of base) : 149504.dasm - System.Net.Tests.HttpListenerRequestTests+<Cookies_GetProperty_ReturnsExpected>d__36:MoveNext():this (FullOpts)
12 (1.95 % of base) : 188066.dasm - System.Tests.ConvertToStringTests:FromSByte() (FullOpts)
12 (1.94 % of base) : 188087.dasm - System.Tests.ConvertToStringTests:FromInt16Array() (FullOpts)
12 (1.93 % of base) : 188082.dasm - System.Tests.ConvertToStringTests:FromInt32Array() (FullOpts)
Top method improvements (percentages):
-32 (-30.48 % of base) : 31533.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-29 (-25.89 % of base) : 97293.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-5 (-7.94 % of base) : 16566.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
-11 (-7.80 % of base) : 95684.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-19 (-6.76 % of base) : 71254.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:SymmetricExceptWithSameComparer(System.__Canon[],int):this (FullOpts)
-5 (-6.33 % of base) : 773.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (FullOpts)
-6 (-6.25 % of base) : 153159.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (FullOpts)
-26 (-5.94 % of base) : 149512.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-26 (-5.94 % of base) : 152584.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-26 (-5.94 % of base) : 152196.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-5 (-5.81 % of base) : 63018.dasm - System.Xml.Linq.XObject:get_BaseUri():System.String:this (FullOpts)
-16 (-5.63 % of base) : 293950.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-11 (-5.02 % of base) : 217.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-11 (-5.02 % of base) : 267231.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-12 (-4.80 % of base) : 33912.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
-17 (-4.72 % of base) : 35873.dasm - Stashbox.Registration.DecoratorRepository:GetRegistrationsForType(System.Type):System.Collections.Generic.IEnumerable`1[Stashbox.Registration.ServiceRegistrations.ServiceRegistration]:this (FullOpts)
-5 (-4.50 % of base) : 1908.dasm - System.Xml.Linq.XObject:GetSaveOptionsFromAnnotations():int:this (FullOpts)
-5 (-4.39 % of base) : 87308.dasm - System.Xml.Linq.XObject:NotifyChanged(System.Object,System.Xml.Linq.XObjectChangeEventArgs):ubyte:this (FullOpts)
-5 (-4.39 % of base) : 3448.dasm - System.Xml.Linq.XObject:NotifyChanging(System.Object,System.Xml.Linq.XObjectChangeEventArgs):ubyte:this (FullOpts)
-77 (-4.15 % of base) : 6722.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttributes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Binder],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData[],Microsoft.CodeAnalysis.CSharp.BoundAttribute[],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
realworld.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 13175050 (overridden on cmd)
Total bytes of diff: 13175008 (overridden on cmd)
Total bytes of delta: -42 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
89 : 14058.dasm (2.61 % of base)
47 : 22292.dasm (0.75 % of base)
34 : 18204.dasm (1.20 % of base)
29 : 17244.dasm (4.82 % of base)
27 : 30373.dasm (2.78 % of base)
21 : 17220.dasm (1.83 % of base)
16 : 17191.dasm (2.99 % of base)
14 : 19046.dasm (0.24 % of base)
9 : 17230.dasm (0.93 % of base)
8 : 17234.dasm (1.61 % of base)
7 : 23391.dasm (0.17 % of base)
3 : 9124.dasm (0.30 % of base)
3 : 14916.dasm (0.85 % of base)
2 : 4834.dasm (0.37 % of base)
2 : 2058.dasm (0.66 % of base)
Top file improvements (bytes):
-93 : 13406.dasm (-2.94 % of base)
-45 : 972.dasm (-0.69 % of base)
-28 : 19048.dasm (-1.59 % of base)
-16 : 15826.dasm (-1.79 % of base)
-16 : 812.dasm (-7.17 % of base)
-15 : 19994.dasm (-0.54 % of base)
-14 : 31865.dasm (-0.46 % of base)
-13 : 12095.dasm (-1.51 % of base)
-13 : 17455.dasm (-1.50 % of base)
-11 : 18490.dasm (-5.02 % of base)
-10 : 20925.dasm (-0.40 % of base)
-8 : 19804.dasm (-3.46 % of base)
-7 : 32658.dasm (-0.52 % of base)
-6 : 16485.dasm (-0.62 % of base)
-5 : 19577.dasm (-0.53 % of base)
-5 : 25134.dasm (-1.34 % of base)
-5 : 25754.dasm (-0.95 % of base)
-5 : 7704.dasm (-1.20 % of base)
-5 : 15336.dasm (-3.12 % of base)
-5 : 18261.dasm (-0.22 % of base)
44 total files with Code Size differences (29 improved, 15 regressed), 4 unchanged.
Top method regressions (bytes):
89 (2.61 % of base) : 14058.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyInto[float,float,float](byref,byref,byref,System.Func`4[int,float,float,float]) (FullOpts)
47 (0.75 % of base) : 22292.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
34 (1.20 % of base) : 18204.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
29 (4.82 % of base) : 17244.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getCloseQuote|428_5(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
27 (2.78 % of base) : 30373.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
21 (1.83 % of base) : 17220.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
16 (2.99 % of base) : 17191.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
14 (0.24 % of base) : 19046.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
9 (0.93 % of base) : 17230.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
8 (1.61 % of base) : 17234.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getInterpolationCloseToken|434_2(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
7 (0.17 % of base) : 23391.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindExtensionMethod(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.MethodGroupResolution:this (FullOpts)
3 (0.30 % of base) : 9124.dasm - FSharp.Compiler.MethodCalls:BuildILMethInfoCall(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,FSharp.Compiler.Text.Range,ubyte,FSharp.Compiler.Infos+ILMethInfo,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+TType] (FullOpts)
3 (0.85 % of base) : 14916.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
2 (0.66 % of base) : 2058.dasm - MS.Internal.Xml.XPath.XPathParser:ParseMultiplicativeExpr(MS.Internal.Xml.XPath.AstNode):MS.Internal.Xml.XPath.AstNode:this (FullOpts)
2 (0.37 % of base) : 4834.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
Top method improvements (bytes):
-93 (-2.94 % of base) : 13406.dasm - Microsoft.ML.Data.SchemaDefinition:Create(System.Type,int):Microsoft.ML.Data.SchemaDefinition (FullOpts)
-45 (-0.69 % of base) : 972.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-28 (-1.59 % of base) : 19048.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
-16 (-1.79 % of base) : 15826.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
-16 (-7.17 % of base) : 812.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-15 (-0.54 % of base) : 19994.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-14 (-0.46 % of base) : 31865.dasm - System.Management.Automation.Adapter:FindBestMethodImpl(System.Management.Automation.MethodInformation[],System.Management.Automation.PSMethodInvocationConstraints,ubyte,System.Object[],byref,byref,byref):System.Management.Automation.MethodInformation (FullOpts)
-13 (-1.50 % of base) : 17455.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-13 (-1.51 % of base) : 12095.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree:BuildLength(System.ReadOnlySpan`1[int]):this (FullOpts)
-11 (-5.02 % of base) : 18490.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-10 (-0.40 % of base) : 20925.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-8 (-3.46 % of base) : 19804.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-7 (-0.52 % of base) : 32658.dasm - System.Management.Automation.PowerShell:CoreInvoke[System.__Canon,System.__Canon](System.Management.Automation.PSDataCollection`1[System.__Canon],System.Management.Automation.PSDataCollection`1[System.__Canon],System.Management.Automation.PSInvocationSettings):this (FullOpts)
-6 (-0.62 % of base) : 16485.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
-5 (-0.22 % of base) : 18261.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics:FromOptions(Microsoft.CodeAnalysis.CSharp.CSharpCompilation):Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics (FullOpts)
-5 (-0.96 % of base) : 23797.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:FindLocalFunction(Microsoft.CodeAnalysis.CSharp.Syntax.LocalFunctionStatementSyntax,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Symbols.LocalFunctionSymbol (FullOpts)
-5 (-0.54 % of base) : 18265.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-5 (-0.53 % of base) : 19577.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceModuleSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-5 (-0.95 % of base) : 25754.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+NumericValueSet`2[int,Microsoft.CodeAnalysis.CSharp.ValueSetFactory+IntTC]:Union(Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]):Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]:this (FullOpts)
-5 (-1.34 % of base) : 25134.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ResetStack():this (FullOpts)
Top method regressions (percentages):
29 (4.82 % of base) : 17244.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getCloseQuote|428_5(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
16 (2.99 % of base) : 17191.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
27 (2.78 % of base) : 30373.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
89 (2.61 % of base) : 14058.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyInto[float,float,float](byref,byref,byref,System.Func`4[int,float,float,float]) (FullOpts)
21 (1.83 % of base) : 17220.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
8 (1.61 % of base) : 17234.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getInterpolationCloseToken|434_2(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
34 (1.20 % of base) : 18204.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
9 (0.93 % of base) : 17230.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
3 (0.85 % of base) : 14916.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
47 (0.75 % of base) : 22292.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
2 (0.66 % of base) : 2058.dasm - MS.Internal.Xml.XPath.XPathParser:ParseMultiplicativeExpr(MS.Internal.Xml.XPath.AstNode):MS.Internal.Xml.XPath.AstNode:this (FullOpts)
2 (0.37 % of base) : 4834.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
3 (0.30 % of base) : 9124.dasm - FSharp.Compiler.MethodCalls:BuildILMethInfoCall(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,FSharp.Compiler.Text.Range,ubyte,FSharp.Compiler.Infos+ILMethInfo,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+TType] (FullOpts)
14 (0.24 % of base) : 19046.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
7 (0.17 % of base) : 23391.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindExtensionMethod(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.MethodGroupResolution:this (FullOpts)
Top method improvements (percentages):
-16 (-7.17 % of base) : 812.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-11 (-5.02 % of base) : 18490.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-8 (-3.46 % of base) : 19804.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-5 (-3.12 % of base) : 15336.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-93 (-2.94 % of base) : 13406.dasm - Microsoft.ML.Data.SchemaDefinition:Create(System.Type,int):Microsoft.ML.Data.SchemaDefinition (FullOpts)
-4 (-1.96 % of base) : 824.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-16 (-1.79 % of base) : 15826.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
-28 (-1.59 % of base) : 19048.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
-13 (-1.51 % of base) : 12095.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree:BuildLength(System.ReadOnlySpan`1[int]):this (FullOpts)
-13 (-1.50 % of base) : 17455.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-5 (-1.34 % of base) : 25134.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ResetStack():this (FullOpts)
-2 (-1.28 % of base) : 3178.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (FullOpts)
-5 (-1.20 % of base) : 7704.dasm - System.Xml.Linq.XContainer+<GetDescendants>d__38:MoveNext():ubyte:this (FullOpts)
-5 (-0.96 % of base) : 23797.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:FindLocalFunction(Microsoft.CodeAnalysis.CSharp.Syntax.LocalFunctionStatementSyntax,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Symbols.LocalFunctionSymbol (FullOpts)
-5 (-0.95 % of base) : 25754.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+NumericValueSet`2[int,Microsoft.CodeAnalysis.CSharp.ValueSetFactory+IntTC]:Union(Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]):Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]:this (FullOpts)
-45 (-0.69 % of base) : 972.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-6 (-0.62 % of base) : 16485.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
-1 (-0.57 % of base) : 24591.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsFixedStatementExpression(Microsoft.CodeAnalysis.SyntaxNode):ubyte (FullOpts)
-15 (-0.54 % of base) : 19994.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-5 (-0.54 % of base) : 18265.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
smoke_tests.nativeaot.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 4234485 (overridden on cmd)
Total bytes of diff: 4234398 (overridden on cmd)
Total bytes of delta: -87 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
27 : 19678.dasm (3.12 % of base)
27 : 27122.dasm (3.12 % of base)
27 : 24418.dasm (3.12 % of base)
27 : 6607.dasm (3.12 % of base)
21 : 24086.dasm (4.70 % of base)
21 : 26791.dasm (4.70 % of base)
21 : 19354.dasm (4.70 % of base)
21 : 7256.dasm (4.70 % of base)
15 : 12577.dasm (1.30 % of base)
6 : 15405.dasm (5.66 % of base)
2 : 16395.dasm (0.13 % of base)
Top file improvements (bytes):
-32 : 1464.dasm (-3.38 % of base)
-20 : 16567.dasm (-1.23 % of base)
-17 : 16711.dasm (-0.83 % of base)
-16 : 25923.dasm (-7.21 % of base)
-16 : 18486.dasm (-7.21 % of base)
-16 : 23248.dasm (-7.21 % of base)
-16 : 9135.dasm (-7.21 % of base)
-16 : 5410.dasm (-8.56 % of base)
-16 : 9595.dasm (-2.35 % of base)
-12 : 14436.dasm (-1.06 % of base)
-10 : 4057.dasm (-0.58 % of base)
-10 : 16709.dasm (-0.44 % of base)
-10 : 10660.dasm (-1.05 % of base)
-9 : 13376.dasm (-7.44 % of base)
-7 : 16506.dasm (-0.61 % of base)
-5 : 19217.dasm (-1.24 % of base)
-5 : 8624.dasm (-3.25 % of base)
-5 : 7695.dasm (-1.24 % of base)
-5 : 19224.dasm (-3.25 % of base)
-5 : 23947.dasm (-1.24 % of base)
40 total files with Code Size differences (29 improved, 11 regressed), 7 unchanged.
Top method regressions (bytes):
27 (3.12 % of base) : 19678.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
27 (3.12 % of base) : 27122.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
27 (3.12 % of base) : 24418.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
27 (3.12 % of base) : 6607.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
21 (4.70 % of base) : 24086.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
21 (4.70 % of base) : 26791.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
21 (4.70 % of base) : 19354.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
21 (4.70 % of base) : 7256.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
15 (1.30 % of base) : 12577.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
6 (5.66 % of base) : 15405.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
2 (0.13 % of base) : 16395.dasm - System.Net.Sockets.Socket:.ctor(System.Net.Sockets.SafeSocketHandle,ubyte):this (FullOpts)
Top method improvements (bytes):
-32 (-3.38 % of base) : 1464.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:GetPropertyImpl(System.String,int,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-20 (-1.23 % of base) : 16567.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (FullOpts)
-17 (-0.83 % of base) : 16711.dasm - System.Globalization.IdnMapping:PunycodeEncode(System.String):System.String (FullOpts)
-16 (-8.56 % of base) : 5410.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
-16 (-7.21 % of base) : 25923.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-16 (-7.21 % of base) : 18486.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-16 (-7.21 % of base) : 23248.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-16 (-7.21 % of base) : 9135.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-16 (-2.35 % of base) : 9595.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (FullOpts)
-12 (-1.06 % of base) : 14436.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileStringSwitchExpression(System.Linq.Expressions.SwitchExpression):this (FullOpts)
-10 (-0.58 % of base) : 4057.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:FindMatchingInterfaceSlot(Internal.Runtime.TypeLoader.NativeFormatModuleInfo,Internal.NativeFormat.NativeReader,byref,byref,Internal.TypeSystem.InstantiatedMethod,Internal.TypeSystem.DefType,ubyte,ubyte):Internal.TypeSystem.InstantiatedMethod (FullOpts)
-10 (-0.44 % of base) : 16709.dasm - System.Globalization.IdnMapping:PunycodeDecode(System.String):System.String (FullOpts)
-10 (-1.05 % of base) : 10660.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:GetMethodImpl(System.String,int,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (FullOpts)
-9 (-7.44 % of base) : 13376.dasm - FinalizeTest:Run():int (FullOpts)
-7 (-0.61 % of base) : 16506.dasm - System.Net.Sockets.SocketPal:TryCompleteSendTo(System.Net.Sockets.SafeSocketHandle,System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,byref,int,System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (FullOpts)
-5 (-3.25 % of base) : 8624.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-5 (-3.25 % of base) : 19224.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-5 (-3.25 % of base) : 23955.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-5 (-3.25 % of base) : 26663.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-5 (-1.24 % of base) : 19217.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
Top method regressions (percentages):
6 (5.66 % of base) : 15405.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
21 (4.70 % of base) : 24086.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
21 (4.70 % of base) : 26791.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
21 (4.70 % of base) : 19354.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
21 (4.70 % of base) : 7256.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
27 (3.12 % of base) : 19678.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
27 (3.12 % of base) : 27122.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
27 (3.12 % of base) : 24418.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
27 (3.12 % of base) : 6607.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
15 (1.30 % of base) : 12577.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
2 (0.13 % of base) : 16395.dasm - System.Net.Sockets.Socket:.ctor(System.Net.Sockets.SafeSocketHandle,ubyte):this (FullOpts)
Top method improvements (percentages):
-16 (-8.56 % of base) : 5410.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
-9 (-7.44 % of base) : 13376.dasm - FinalizeTest:Run():int (FullOpts)
-16 (-7.21 % of base) : 25923.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-16 (-7.21 % of base) : 18486.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-16 (-7.21 % of base) : 23248.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-16 (-7.21 % of base) : 9135.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-32 (-3.38 % of base) : 1464.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:GetPropertyImpl(System.String,int,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-5 (-3.25 % of base) : 8624.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-5 (-3.25 % of base) : 19224.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-5 (-3.25 % of base) : 23955.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-5 (-3.25 % of base) : 26663.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-16 (-2.35 % of base) : 9595.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (FullOpts)
-5 (-1.98 % of base) : 6471.dasm - System.Globalization.DateTimeFormatInfo:get_DateTimeOffsetPattern():System.String:this (FullOpts)
-2 (-1.29 % of base) : 18199.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (FullOpts)
-2 (-1.29 % of base) : 25647.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (FullOpts)
-2 (-1.29 % of base) : 22935.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (FullOpts)
-2 (-1.29 % of base) : 9280.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (FullOpts)
-5 (-1.24 % of base) : 19217.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
-5 (-1.24 % of base) : 7695.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
-5 (-1.24 % of base) : 23947.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
osx arm64
Diffs are based on 2,270,837 contexts (932,669 MinOpts, 1,338,168 FullOpts).
MISSED contexts: base: 9 (0.00%), diff: 33 (0.00%)
Overall (-13,952 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.osx.arm64.checked.mch |
11,183,964 |
-460 |
benchmarks.run_pgo.osx.arm64.checked.mch |
34,388,460 |
+396 |
benchmarks.run_tiered.osx.arm64.checked.mch |
15,513,632 |
-384 |
coreclr_tests.run.osx.arm64.checked.mch |
486,420,196 |
-1,700 |
libraries.crossgen2.osx.arm64.checked.mch |
55,725,580 |
-1,276 |
libraries.pmi.osx.arm64.checked.mch |
80,213,376 |
-1,636 |
libraries_tests.run.osx.arm64.Release.mch |
324,574,672 |
-6,144 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
162,569,128 |
-2,576 |
realworld.run.osx.arm64.checked.mch |
15,061,040 |
-172 |
FullOpts (-13,952 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.osx.arm64.checked.mch |
11,183,428 |
-460 |
benchmarks.run_pgo.osx.arm64.checked.mch |
18,087,160 |
+396 |
benchmarks.run_tiered.osx.arm64.checked.mch |
4,009,148 |
-384 |
coreclr_tests.run.osx.arm64.checked.mch |
153,807,272 |
-1,700 |
libraries.crossgen2.osx.arm64.checked.mch |
55,723,952 |
-1,276 |
libraries.pmi.osx.arm64.checked.mch |
80,092,248 |
-1,636 |
libraries_tests.run.osx.arm64.Release.mch |
120,858,824 |
-6,144 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
149,415,400 |
-2,576 |
realworld.run.osx.arm64.checked.mch |
14,497,084 |
-172 |
Example diffs
benchmarks.run.osx.arm64.checked.mch
-36 (-21.95%) : 17156.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -11,12 +11,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
; V02 loc0 [V02,T00] ( 7, 24.50) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> x5 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x4 "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> x6 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> x5 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -33,51 +35,39 @@ G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x2]
cmp w1, w3
blt G_M264_IG11
- b G_M264_IG09
+ b G_M264_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
; byrRegs +[x0 x2]
sxtw w4, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1
- sxtw w4, w5
- tbnz w4, #31, G_M264_IG06
+ sub w4, w4, #1
+ tbnz w4, #31, G_M264_IG09
cmp w4, w1
bhs G_M264_IG13
- ubfiz x6, x4, #2, #32
- ldr w7, [x0, x6]
+ ubfiz x5, x4, #2, #32
+ ldr w6, [x0, x5]
cmp w4, w3
bhs G_M264_IG13
- ldr w6, [x2, x6]
- cmp w7, w6
+ ldr w5, [x2, x5]
+ cmp w6, w5
beq G_M264_IG05
- ;; size=48 bbWeight=4 PerfScore 54.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- tbz w5, #31, G_M264_IG08
- mov w0, wzr
- ; byrRegs -[x0]
+ ;; size=44 bbWeight=4 PerfScore 52.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0 x2]
+ cmp w5, w6
+ bhi G_M264_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref, isz
- ; byrRegs +[x0]
- cmp w5, w1
- bhs G_M264_IG13
- ubfiz x6, x5, #2, #32
- ldr w0, [x0, x6]
- ; byrRegs -[x0]
- cmp w5, w3
- bhs G_M264_IG13
- ldr w1, [x2, x6]
- cmp w0, w1
- blo G_M264_IG11
- ;; size=36 bbWeight=0.50 PerfScore 5.75
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
- mov w0, #1
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
@@ -96,7 +86,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 8, PerfScore 68.50, instruction count 41, allocated bytes for code 164 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 128, prolog size 8, PerfScore 61.00, instruction count 32, allocated bytes for code 128 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -107,7 +97,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-48 (-7.64%) : 16896.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan1[ushort],System.Span
1[ubyte],byref,byref):this (FullOpts)
@@ -9,12 +9,12 @@
; Final local variable assignments
;
; V00 this [V00,T10] ( 6, 6 ) ref -> x0 this class-hnd single-def <System.Xml.Base64Decoder>
-; V01 arg1 [V01 ] ( 20, 43 ) struct (16) [fp+0x10] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V01 arg1 [V01 ] ( 19, 42.50) struct (16) [fp+0x10] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
; V03 arg3 [V03,T13] ( 3, 3 ) byref -> x5 single-def
; V04 arg4 [V04,T14] ( 3, 3 ) byref -> x6 single-def
; V05 loc0 [V05,T06] ( 6, 12 ) int -> registers
-; V06 loc1 [V06,T00] ( 19, 56 ) int -> registers
+; V06 loc1 [V06,T00] ( 18, 55.50) int -> registers
; V07 loc2 [V07,T11] ( 5, 8 ) int -> x7
; V08 loc3 [V08,T04] ( 8, 12.50) int -> x8
;* V09 loc4 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
@@ -36,7 +36,7 @@
;* V25 tmp13 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V26 tmp14 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
; V27 tmp15 [V27 ] ( 9, 15.50) byref -> [fp+0x10] do-not-enreg[X] addr-exposed single-def "field V01._reference (fldOffset=0x0)" P-DEP
-; V28 tmp16 [V28 ] ( 15, 29.50) int -> [fp+0x18] do-not-enreg[X] addr-exposed single-def "field V01._length (fldOffset=0x8)" P-DEP
+; V28 tmp16 [V28 ] ( 14, 29 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed single-def "field V01._length (fldOffset=0x8)" P-DEP
; V29 tmp17 [V29,T15] ( 2, 3 ) byref -> x3 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
; V30 tmp18 [V30,T09] ( 3, 7 ) int -> x4 single-def "field V02._length (fldOffset=0x8)" P-INDEP
; V31 tmp19 [V31,T16] ( 2, 3 ) byref -> x9 single-def "field V09._reference (fldOffset=0x0)" P-INDEP
@@ -84,7 +84,7 @@ G_M19254_IG03: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0268 {x3 x5 x
bhs G_M19254_IG06
ldr w10, [fp, #0x18] // [V28 tmp16]
cmp w2, w10
- bhs G_M19254_IG17
+ bhs G_M19254_IG12
ldr x10, [fp, #0x10] // [V27 tmp15]
; byrRegs +[x10]
ldrh w10, [x10, w2, UXTW #2]
@@ -100,10 +100,10 @@ G_M19254_IG03: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0268 {x3 x5 x
;; size=60 bbWeight=4 PerfScore 70.00
G_M19254_IG04: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0268 {x3 x5 x6 x9}, byref, isz
cmp w10, #123
- bge G_M19254_IG18
+ bge G_M19254_IG13
ldrb w10, [x9, w10, UXTW #2]
cmp w10, #255
- beq G_M19254_IG18
+ beq G_M19254_IG13
orr w7, w10, w7, LSL #6
add w8, w8, #6
cmp w8, #8
@@ -114,7 +114,7 @@ G_M19254_IG04: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0268 {x3 x5 x
strb w11, [x3, w1, UXTW #2]
cmp w10, w4
mov w1, w10
- beq G_M19254_IG16
+ beq G_M19254_IG10
;; size=64 bbWeight=2 PerfScore 27.00
G_M19254_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0268 {x3 x5 x6 x9}, byref, isz
ldr w10, [fp, #0x18] // [V28 tmp16]
@@ -125,26 +125,26 @@ G_M19254_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x
; byrRegs -[x3 x9]
ldr w3, [fp, #0x18] // [V28 tmp16]
cmp w2, w3
- bhs G_M19254_IG15
+ bhs G_M19254_IG10
ldr w3, [fp, #0x18] // [V28 tmp16]
cmp w2, w3
- bhs G_M19254_IG17
+ bhs G_M19254_IG12
ldr x3, [fp, #0x10] // [V27 tmp15]
; byrRegs +[x3]
ldrh w3, [x3, w2, UXTW #2]
; byrRegs -[x3]
cmp w3, #61
- bne G_M19254_IG14
+ bne G_M19254_IG10
mov w8, wzr
;; size=44 bbWeight=0.50 PerfScore 7.00
G_M19254_IG07: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref, isz
add w2, w2, #1
ldr w3, [fp, #0x18] // [V28 tmp16]
cmp w2, w3
- bhs G_M19254_IG08
+ bhs G_M19254_IG10
ldr w3, [fp, #0x18] // [V28 tmp16]
cmp w2, w3
- bhs G_M19254_IG17
+ bhs G_M19254_IG12
ldr x3, [fp, #0x10] // [V27 tmp15]
; byrRegs +[x3]
ldrh w3, [x3, w2, UXTW #2]
@@ -152,66 +152,44 @@ G_M19254_IG07: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6},
cmp w3, #61
beq G_M19254_IG07
;; size=44 bbWeight=4 PerfScore 56.00
-G_M19254_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref, isz
- ldr w3, [fp, #0x18] // [V28 tmp16]
- cmp w2, w3
- bhs G_M19254_IG13
+G_M19254_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref
movz x11, #0xD1FFAB1E
movk x11, #0xD1FFAB1E LSL #16
movk x11, #1 LSL #32
- ;; size=24 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 0.75
G_M19254_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref, isz
add w3, w2, #1
ldr w4, [fp, #0x18] // [V28 tmp16]
cmp w2, w4
- bhs G_M19254_IG17
+ bhs G_M19254_IG12
ldr x4, [fp, #0x10] // [V27 tmp15]
; byrRegs +[x4]
ldrh w2, [x4, w2, UXTW #2]
ldrb w2, [x11, w2, UXTW #2]
- tbz w2, #0, G_M19254_IG19
+ tbz w2, #0, G_M19254_IG14
ldr w2, [fp, #0x18] // [V28 tmp16]
cmp w3, w2
- blo G_M19254_IG12
- ;; size=44 bbWeight=4 PerfScore 66.00
+ mov w2, w3
+ blo G_M19254_IG09
+ ;; size=48 bbWeight=4 PerfScore 68.00
G_M19254_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref
; byrRegs -[x4]
stp w7, w8, [x0, #0x1C]
str w1, [x6]
- str w3, [x5]
+ str w2, [x5]
;; size=12 bbWeight=1 PerfScore 3.00
G_M19254_IG11: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M19254_IG12: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, gcvars, byref
- mov w2, w3
- b G_M19254_IG09
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M19254_IG13: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref
- mov w3, w2
- b G_M19254_IG10
- ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M19254_IG14: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref
- mov w3, w2
- b G_M19254_IG10
- ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M19254_IG15: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref
- mov w3, w2
- b G_M19254_IG10
- ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M19254_IG16: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref
- mov w3, w2
- b G_M19254_IG10
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19254_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19254_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
; byrRegs -[x5-x6]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M19254_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19254_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for <unknown method>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -257,7 +235,7 @@ G_M19254_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x20]
; gcr arg pop 0
;; size=108 bbWeight=0 PerfScore 0.00
-G_M19254_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19254_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for <unknown method>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -305,7 +283,7 @@ G_M19254_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=112 bbWeight=0 PerfScore 0.00
-; Total bytes of code 628, prolog size 16, PerfScore 266.12, instruction count 157, allocated bytes for code 628 (MethodHash=6376b4c9) for method System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
+; Total bytes of code 580, prolog size 16, PerfScore 260.75, instruction count 145, allocated bytes for code 580 (MethodHash=6376b4c9) for method System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
; ============================================================
Unwind Info:
@@ -316,7 +294,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 157 (0x0009d) Actual length = 628 (0x000274)
+ Function Length : 145 (0x00091) Actual length = 580 (0x000244)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-7.04%) : 21387.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
@@ -7,20 +7,21 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T05] ( 6, 22 ) int -> x0
-; V01 arg1 [V01,T06] ( 6, 19 ) int -> x19 single-def
-; V02 arg2 [V02,T08] ( 5, 11 ) ref -> x20 class-hnd single-def <int[]>
-; V03 loc0 [V03,T00] ( 17,112 ) int -> x23
-; V04 loc1 [V04,T01] ( 13,100 ) int -> x1
+; V00 arg0 [V00,T06] ( 6, 22 ) int -> x0
+; V01 arg1 [V01,T07] ( 6, 19 ) int -> x19 single-def
+; V02 arg2 [V02,T09] ( 5, 11 ) ref -> x20 class-hnd single-def <int[]>
+; V03 loc0 [V03,T00] ( 16,110 ) int -> x23
+; V04 loc1 [V04,T01] ( 10, 94 ) int -> x1
; V05 loc2 [V05,T04] ( 4, 38 ) int -> x3
-; V06 loc3 [V06,T09] ( 4, 8 ) int -> x4
+; V06 loc3 [V06,T10] ( 4, 8 ) int -> x5
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T10] ( 2, 8 ) int -> x5 "Strict ordering of exceptions for Array store"
-; V09 tmp2 [V09,T07] ( 2, 16 ) int -> x0 "arg temp"
-; V10 cse0 [V10,T11] ( 3, 7 ) long -> x22 hoist "CSE - aggressive"
-; V11 cse1 [V11,T12] ( 3, 6 ) long -> x1 "CSE - aggressive"
-; V12 cse2 [V12,T02] ( 11, 51 ) byref -> x21 hoist "CSE - aggressive"
-; V13 cse3 [V13,T03] ( 7, 46 ) int -> x2 "CSE - aggressive"
+; V08 tmp1 [V08,T11] ( 2, 8 ) int -> x4 "Strict ordering of exceptions for Array store"
+; V09 tmp2 [V09,T08] ( 2, 16 ) int -> x0 "arg temp"
+; V10 cse0 [V10,T05] ( 3, 34 ) int -> x4 "CSE - aggressive"
+; V11 cse1 [V11,T12] ( 3, 7 ) long -> x22 hoist "CSE - aggressive"
+; V12 cse2 [V12,T13] ( 3, 6 ) long -> x1 "CSE - aggressive"
+; V13 cse3 [V13,T02] ( 10, 49 ) byref -> x21 hoist "CSE - aggressive"
+; V14 cse4 [V14,T03] ( 6, 44 ) int -> x2 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -72,7 +73,7 @@ G_M36260_IG08: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=200000 {x2
;; size=4 bbWeight=8 PerfScore 4.00
G_M36260_IG09: ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
cmp w1, w23
- ble G_M36260_IG10
+ ble G_M36260_IG11
cmp w1, w2
bhs G_M36260_IG15
ldr w4, [x21, w1, UXTW #2]
@@ -80,17 +81,12 @@ G_M36260_IG09: ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=200000 {x
bge G_M36260_IG08
;; size=28 bbWeight=16 PerfScore 120.00
G_M36260_IG10: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
- cmp w23, w1
- bge G_M36260_IG11
cmp w23, w2
bhs G_M36260_IG15
- ldr w4, [x21, w23, UXTW #2]
- cmp w1, w2
- bhs G_M36260_IG15
- ldr w5, [x21, w1, UXTW #2]
- str w5, [x21, w23, UXTW #2]
- str w4, [x21, w1, UXTW #2]
- ;; size=40 bbWeight=2 PerfScore 25.00
+ ldr w5, [x21, w23, UXTW #2]
+ str w4, [x21, w23, UXTW #2]
+ str w5, [x21, w1, UXTW #2]
+ ;; size=20 bbWeight=2 PerfScore 13.00
G_M36260_IG11: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
cmp w23, w1
blt G_M36260_IG06
@@ -101,9 +97,9 @@ G_M36260_IG12: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=200000 {x2
cmp w23, w2
bhs G_M36260_IG15
ubfiz x1, x23, #2, #32
- ldr w4, [x21, x1]
+ ldr w5, [x21, x1]
str w3, [x21, x1]
- str w4, [x21, x22]
+ str w5, [x21, x22]
;; size=24 bbWeight=2 PerfScore 15.00
G_M36260_IG13: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref
sub w1, w23, #1
@@ -134,7 +130,7 @@ G_M36260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 284, prolog size 28, PerfScore 399.00, instruction count 71, allocated bytes for code 284 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
+; Total bytes of code 264, prolog size 28, PerfScore 387.00, instruction count 66, allocated bytes for code 264 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
; ============================================================
Unwind Info:
@@ -145,7 +141,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
+ Function Length : 66 (0x00042) Actual length = 264 (0x000108)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+1.11%) : 15526.dasm - System.Enum+<>c__631[uint]:<FormatNumberAsHex>b__63_0(System.Span
1[ushort],long):this (FullOpts)
@@ -10,32 +10,32 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Enum+<>c__63`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ushort]>
-; V02 arg2 [V02,T02] ( 3, 2.50) long -> x3 single-def
+; V02 arg2 [V02,T01] ( 3, 2.50) long -> x3 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) ubyte -> zero-ref
;* V04 loc1 [V04,T17] ( 0, 0 ) int -> zero-ref ld-addr-op
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
; V08 tmp3 [V08,T08] ( 5, 2.50) int -> x0 "Inline stloc first use temp"
-; V09 tmp4 [V09,T04] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V09 tmp4 [V09,T03] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V10 tmp5 [V10,T09] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
; V11 tmp6 [V11,T10] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V13 tmp8 [V13,T05] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V13 tmp8 [V13,T04] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V14 tmp9 [V14,T11] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
; V15 tmp10 [V15,T12] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V17 tmp12 [V17,T06] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V17 tmp12 [V17,T05] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V18 tmp13 [V18,T13] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
; V19 tmp14 [V19,T14] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
;* V20 tmp15 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V21 tmp16 [V21,T07] ( 3, 3 ) ubyte -> x0 "Inlining Arg"
+; V21 tmp16 [V21,T06] ( 3, 3 ) ubyte -> x0 "Inlining Arg"
; V22 tmp17 [V22,T15] ( 3, 1.50) int -> x0 "Inline stloc first use temp"
; V23 tmp18 [V23,T16] ( 3, 1.50) int -> x0 "Inline stloc first use temp"
;* V24 tmp19 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V25 tmp20 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V26 tmp21 [V26,T00] ( 9, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp22 [V27,T03] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V27 tmp22 [V27,T02] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp24 [V29 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
@@ -46,14 +46,15 @@
;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
;* V36 tmp31 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
-; V38 cse0 [V38,T01] ( 6, 6 ) ref -> x1 multi-def "CSE - aggressive"
+; V38 cse0 [V38,T07] ( 5, 2.50) ref -> x19 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M18375_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M18375_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
cmp w2, #8
@@ -127,48 +128,50 @@ G_M18375_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, b
strh w0, [x1, #0x0C]
b G_M18375_IG05
;; size=264 bbWeight=0.50 PerfScore 23.75
-G_M18375_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M18375_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x1]
- movz x1, #8
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- mov x0, x1
+ movz x19, #8
+ movk x19, #0xD1FFAB1E LSL #16
+ movk x19, #1 LSL #32
+ mov x0, x19
; gcrRegs +[x0]
+ mov x1, x19
+ ; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
blr x2
- ; gcrRegs -[x0]
- movz x1, #8
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- mov x0, x1
+ ; gcrRegs -[x0-x1] +[x19]
+ mov x0, x19
; gcrRegs +[x0]
+ mov x1, x19
+ ; gcrRegs +[x1]
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=72 bbWeight=1 PerfScore 15.00
+ ; gcrRegs -[x0-x1 x19]
+ ;; size=68 bbWeight=0.50 PerfScore 7.25
G_M18375_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 360, prolog size 8, PerfScore 43.75, instruction count 90, allocated bytes for code 360 (MethodHash=1579b838) for method System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
+; Total bytes of code 364, prolog size 12, PerfScore 39.00, instruction count 91, allocated bytes for code 364 (MethodHash=1579b838) for method System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 90 (0x0005a) Actual length = 360 (0x000168)
+ Function Length : 91 (0x0005b) Actual length = 364 (0x00016c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -176,7 +179,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
+4 (+1.22%) : 5646.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
@@ -8,34 +8,37 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T10] ( 5, 15 ) ref -> x20 class-hnd single-def <System.Reflection.ParameterInfo[]>
-; V01 arg1 [V01,T11] ( 5, 11 ) ref -> x21 class-hnd single-def <System.Type[]>
-; V02 arg2 [V02,T06] ( 5, 23 ) byref -> x19 single-def
+; V00 arg0 [V00,T10] ( 4, 11 ) ref -> x20 class-hnd single-def <System.Reflection.ParameterInfo[]>
+; V01 arg1 [V01,T14] ( 4, 4 ) ref -> x21 class-hnd single-def <System.Type[]>
+; V02 arg2 [V02,T05] ( 5, 23 ) byref -> x19 single-def
; V03 loc0 [V03,T09] ( 6, 21 ) int -> x23
-;* V04 loc1 [V04,T13] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc2 [V05,T12] ( 2, 12 ) ref -> x24 class-hnd <System.Type>
-; V06 loc3 [V06,T01] ( 7, 88 ) int -> x25
+;* V04 loc1 [V04,T12] ( 0, 0 ) ubyte -> zero-ref
+; V05 loc2 [V05,T11] ( 2, 12 ) ref -> x25 class-hnd <System.Type>
+; V06 loc3 [V06,T01] ( 7, 88 ) int -> x26
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-; V09 tmp2 [V09,T07] ( 3, 24 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
+; V09 tmp2 [V09,T06] ( 3, 24 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
;* V10 tmp3 [V10 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V11 tmp4 [V11,T15] ( 0, 0 ) ubyte -> zero-ref "field V08.hasValue (fldOffset=0x0)" P-INDEP
-; V12 tmp5 [V12,T14] ( 2, 8 ) int -> x1 "field V08.value (fldOffset=0x4)" P-INDEP
+;* V11 tmp4 [V11,T17] ( 0, 0 ) ubyte -> zero-ref "field V08.hasValue (fldOffset=0x0)" P-INDEP
+; V12 tmp5 [V12,T13] ( 2, 8 ) int -> x1 "field V08.value (fldOffset=0x4)" P-INDEP
; V13 tmp6 [V13,T00] ( 3, 96 ) ref -> x0 "arr expr"
; V14 tmp7 [V14,T02] ( 3, 48 ) ref -> x0 "argument with side effect"
; V15 tmp8 [V15,T03] ( 3, 48 ) ref -> x0 "argument with side effect"
-; V16 tmp9 [V16,T08] ( 3, 24 ) byref -> x0 "BlockOp address local"
-; V17 cse0 [V17,T04] ( 4, 44 ) long -> x26 "CSE - aggressive"
-; V18 cse1 [V18,T05] ( 5, 26 ) int -> x22 multi-def "CSE - aggressive"
+; V16 tmp9 [V16,T07] ( 3, 24 ) byref -> x0 "BlockOp address local"
+; V17 cse0 [V17,T04] ( 4, 44 ) long -> x27 "CSE - aggressive"
+; V18 cse1 [V18,T08] ( 4, 22 ) int -> x22 "CSE - aggressive"
+; V19 cse2 [V19,T16] ( 2, 5 ) byref -> x21 hoist "CSE - aggressive"
+; V20 cse3 [V20,T15] ( 3, 6 ) int -> x24 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M59545_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x10]
- stp x21, x22, [sp, #0x20]
- stp x23, x24, [sp, #0x30]
- stp x25, x26, [sp, #0x40]
+ 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
mov x20, x0
; gcrRegs +[x20]
@@ -43,7 +46,7 @@ G_M59545_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x21]
mov x19, x2
; byrRegs +[x19]
- ;; size=36 bbWeight=1 PerfScore 7.00
+ ;; size=40 bbWeight=1 PerfScore 8.00
G_M59545_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref, isz
ldr w22, [x20, #0x08]
mov w1, w22
@@ -61,37 +64,36 @@ G_M59545_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=80000
; gcrRegs -[x0 x15]
; byrRegs -[x14]
mov w23, wzr
- ldr w0, [x21, #0x08]
- cmp w0, #0
+ ldr w24, [x21, #0x08]
+ cmp w24, #0
ble G_M59545_IG09
- ;; size=52 bbWeight=1 PerfScore 13.00
-G_M59545_IG03: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref, isz
- add x0, x21, #16
- ; byrRegs +[x0]
- ldr x24, [x0, w23, UXTW #3]
- ; gcrRegs +[x24]
- mov w25, wzr
- ldr w22, [x20, #0x08]
+ add x21, x21, #16
+ ; gcrRegs -[x21]
+ ; byrRegs +[x21]
+ ;; size=56 bbWeight=1 PerfScore 13.50
+G_M59545_IG03: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=280000 {x19 x21}, byref, isz
+ ldr x25, [x21, w23, UXTW #3]
+ ; gcrRegs +[x25]
+ mov w26, wzr
cmp w22, #0
ble G_M59545_IG11
- ;; size=24 bbWeight=4 PerfScore 34.00
-G_M59545_IG04: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=80000 {x19}, byref, isz
- ; byrRegs -[x0]
+ ;; size=16 bbWeight=4 PerfScore 20.00
+G_M59545_IG04: ; bbWeight=16, gcrefRegs=2100000 {x20 x25}, byrefRegs=280000 {x19 x21}, byref, isz
ldr x0, [x19]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
- cmp w25, w1
+ cmp w26, w1
bhs G_M59545_IG13
- ubfiz x26, x25, #3, #32
- add x1, x26, #16
+ ubfiz x27, x26, #3, #32
+ add x1, x27, #16
ldrb w0, [x0, x1]
; gcrRegs -[x0]
cbnz w0, G_M59545_IG06
;; size=32 bbWeight=16 PerfScore 208.00
-G_M59545_IG05: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=80000 {x19}, byref, isz
+G_M59545_IG05: ; bbWeight=8, gcrefRegs=2100000 {x20 x25}, byrefRegs=280000 {x19 x21}, byref, isz
add x0, x20, #16
; byrRegs +[x0]
- ldr x0, [x0, x26]
+ ldr x0, [x0, x27]
; gcrRegs +[x0]
; byrRegs -[x0]
ldr x1, [x0]
@@ -99,7 +101,7 @@ G_M59545_IG05: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
ldr x1, [x1, #0x38]
blr x1
; gcr arg pop 0
- mov x1, x24
+ mov x1, x25
; gcrRegs +[x1]
ldr x2, [x0]
ldr x2, [x2, #0xB8]
@@ -109,26 +111,26 @@ G_M59545_IG05: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
; gcr arg pop 0
cbnz w0, G_M59545_IG08
;; size=48 bbWeight=8 PerfScore 200.00
-G_M59545_IG06: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=80000 {x19}, byref, isz
- add w25, w25, #1
- cmp w22, w25
+G_M59545_IG06: ; bbWeight=16, gcrefRegs=2100000 {x20 x25}, byrefRegs=280000 {x19 x21}, byref, isz
+ add w26, w26, #1
+ cmp w22, w26
bgt G_M59545_IG04
;; size=12 bbWeight=16 PerfScore 32.00
G_M59545_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20-x21 x24]
- ; byrRegs -[x19]
+ ; gcrRegs -[x20 x25]
+ ; byrRegs -[x19 x21]
b G_M59545_IG11
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M59545_IG08: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref, isz
- ; gcrRegs +[x20-x21]
- ; byrRegs +[x19]
+G_M59545_IG08: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=280000 {x19 x21}, byref, isz
+ ; gcrRegs +[x20]
+ ; byrRegs +[x19 x21]
ldr x0, [x19]
; gcrRegs +[x0]
sxtw w1, w23
ldr w2, [x0, #0x08]
- cmp w25, w2
+ cmp w26, w2
bhs G_M59545_IG13
- add x2, x26, #16
+ add x2, x27, #16
add x0, x0, x2
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -136,53 +138,53 @@ G_M59545_IG08: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=80000
strb w2, [x0]
str w1, [x0, #0x04]
add w23, w23, #1
- ldr w0, [x21, #0x08]
- ; byrRegs -[x0]
- cmp w0, w23
+ cmp w24, w23
bgt G_M59545_IG03
- ;; size=56 bbWeight=4 PerfScore 66.00
+ ;; size=52 bbWeight=4 PerfScore 54.00
G_M59545_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20-x21]
- ; byrRegs -[x19]
+ ; gcrRegs -[x20]
+ ; byrRegs -[x0 x19 x21]
mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M59545_IG10: ; bbWeight=0.50, epilog, nogc, extend
- 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
+ ldr x27, [sp, #0x58]
+ ldp x25, x26, [sp, #0x48]
+ ldp x23, x24, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=24 bbWeight=0.50 PerfScore 3.00
+ ;; size=28 bbWeight=0.50 PerfScore 4.00
G_M59545_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M59545_IG12: ; bbWeight=0.50, epilog, nogc, extend
- 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
+ ldr x27, [sp, #0x58]
+ ldp x25, x26, [sp, #0x48]
+ ldp x23, x24, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=24 bbWeight=0.50 PerfScore 3.00
+ ;; size=28 bbWeight=0.50 PerfScore 4.00
G_M59545_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 328, prolog size 36, PerfScore 567.00, instruction count 82, allocated bytes for code 328 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
+; Total bytes of code 332, prolog size 40, PerfScore 544.50, instruction count 83, allocated bytes for code 332 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 3
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 82 (0x00052) Actual length = 328 (0x000148)
+ Function Length : 83 (0x00053) Actual length = 332 (0x00014c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -193,10 +195,13 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+ D2 0B save_reg X#8 Z#11 (0x0B); str x27, [sp, #88]
E6 save_next
E6 save_next
E6 save_next
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
...
+16 (+1.39%) : 5284.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
@@ -11,10 +11,10 @@
; V00 arg0 [V00,T07] ( 22, 23 ) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[System.String]>
; V01 loc0 [V01,T19] ( 7, 3.50) ref -> x20 class-hnd exact single-def <System.String>
; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [fp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 39,149.08) int -> x22
+; V03 loc2 [V03,T00] ( 41,183.08) int -> x22
; V04 loc3 [V04,T22] ( 4, 2 ) int -> x0
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
-; V06 loc5 [V06,T06] ( 9, 25.50) int -> x21
+; V06 loc5 [V06,T06] ( 9, 25.50) int -> x23
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V09 tmp2 [V09,T04] ( 5, 28 ) ref -> x0 class-hnd exact "impAppendStmt" <System.String>
@@ -44,12 +44,12 @@
; V33 cse0 [V33,T14] ( 3, 10 ) int -> x0 "CSE - aggressive"
; V34 cse1 [V34,T28] ( 3, 1.50) long -> x24 "CSE - moderate"
; V35 cse2 [V35,T31] ( 2, 1 ) int -> x12 "CSE - moderate"
-; V36 cse3 [V36,T01] ( 3, 48 ) long -> x1 "CSE - aggressive"
+; V36 cse3 [V36,T02] ( 3, 48 ) long -> x1 "CSE - aggressive"
; V37 cse4 [V37,T11] ( 3, 12 ) long -> x1 "CSE - aggressive"
; V38 cse5 [V38,T12] ( 3, 12 ) int -> x2 "CSE - aggressive"
; V39 cse6 [V39,T10] ( 3, 12 ) ref -> x1 "CSE - aggressive"
-; V40 cse7 [V40,T03] ( 15, 30.54) int -> x21 "CSE - aggressive"
-; V41 cse8 [V41,T02] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
+; V40 cse7 [V40,T01] ( 17, 64.54) int -> x21 "CSE - aggressive"
+; V41 cse8 [V41,T03] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
; V42 cse9 [V42,T27] ( 3, 1.50) ref -> x1 "CSE - aggressive"
; V43 cse10 [V43,T17] ( 2, 8 ) int -> x3 "CSE - aggressive"
; V44 cse11 [V44,T13] ( 3, 11.88) int -> x0 "CSE - aggressive"
@@ -77,19 +77,19 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=56 bbWeight=1 PerfScore 10.50
G_M28069_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x10]
- cbz w0, G_M28069_IG28
+ cbz w0, G_M28069_IG27
;; size=8 bbWeight=1 PerfScore 4.00
G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w1, #0
- bls G_M28069_IG30
+ bls G_M28069_IG29
ldr x20, [x0, #0x10]
; gcrRegs +[x20]
ldr w21, [x20, #0x08]
cmp w21, #100
- bgt G_M28069_IG28
+ bgt G_M28069_IG27
add w0, w21, #2
; gcrRegs -[x0]
mov w1, #2
@@ -116,109 +116,107 @@ G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
mov x1, sp
;; size=8 bbWeight=0.50 PerfScore 0.50
G_M28069_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w0, #31, G_M28069_IG31
+ tbnz w0, #31, G_M28069_IG30
str x1, [fp, #-0x48] // [V23 tmp16]
str w0, [fp, #-0x40] // [V24 tmp17]
mov w22, wzr
cmp w21, #0
- ble G_M28069_IG15
+ ble G_M28069_IG14
add x23, x20, #12
; byrRegs +[x23]
;; size=28 bbWeight=0.50 PerfScore 2.75
G_M28069_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldrh w0, [x23, w22, UXTW #2]
cmp w0, #39
- bne G_M28069_IG11
+ bne G_M28069_IG10
;; size=12 bbWeight=4 PerfScore 18.00
G_M28069_IG08: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V24 tmp17]
cmp w22, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
ubfiz x1, x22, #1, #32
add x0, x0, x1
+ cmp w22, w21
+ bhs G_M28069_IG29
ldrh w1, [x23, x1]
strh w1, [x0]
add w22, w22, #1
cmp w21, w22
- ble G_M28069_IG09
+ ble G_M28069_IG27
+ cmp w22, w21
+ bhs G_M28069_IG29
ldrh w0, [x23, w22, UXTW #2]
; byrRegs -[x0]
cmp w0, #39
bne G_M28069_IG08
- ;; size=56 bbWeight=16 PerfScore 280.00
-G_M28069_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
- cmp w21, w22
- bgt G_M28069_IG12
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19-x20]
- ; byrRegs -[x23]
- b G_M28069_IG28
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
- ; gcrRegs +[x19-x20]
- ; byrRegs +[x23]
+ ;; size=72 bbWeight=16 PerfScore 328.00
+G_M28069_IG09: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref
+ b G_M28069_IG11
+ ;; size=4 bbWeight=4 PerfScore 4.00
+G_M28069_IG10: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
cmp w0, #121
- beq G_M28069_IG14
+ beq G_M28069_IG13
;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V24 tmp17]
cmp w22, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
ubfiz x1, x22, #1, #32
add x0, x0, x1
+ cmp w22, w21
+ bhs G_M28069_IG29
ldrh w1, [x23, x1]
strh w1, [x0]
add w22, w22, #1
cmp w21, w22
bgt G_M28069_IG07
- ;; size=44 bbWeight=4 PerfScore 52.00
-G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=52 bbWeight=4 PerfScore 58.00
+G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x23]
- b G_M28069_IG15
+ b G_M28069_IG14
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #-0x40] // [V24 tmp17]
cmp w22, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
mov w1, #121
strh w1, [x0, w22, UXTW #2]
;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
sub w0, w21, #1
cmp w0, w22
- ble G_M28069_IG28
+ ble G_M28069_IG27
add w0, w22, #1
cmp w0, w21
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
add x23, x20, #12
; byrRegs +[x23]
add w0, w22, #1
ubfiz x24, x0, #1, #32
ldrh w0, [x23, x24]
cmp w0, #121
- bne G_M28069_IG28
+ bne G_M28069_IG27
add w25, w22, #2
cmp w21, w25
- ble G_M28069_IG16
+ ble G_M28069_IG15
cmp w25, w21
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldrh w0, [x23, w25, UXTW #2]
cmp w0, #121
- beq G_M28069_IG28
+ beq G_M28069_IG27
;; size=80 bbWeight=0.50 PerfScore 9.25
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w0, w22, #3
ldr w1, [fp, #-0x40] // [V24 tmp17]
cmp w0, w1
- blt G_M28069_IG17
+ blt G_M28069_IG16
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -232,11 +230,11 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
; gcrRegs -[x0]
; gcr arg pop 0
;; size=52 bbWeight=0.50 PerfScore 5.75
-G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w0, w22, #1
ldr w1, [fp, #-0x40] // [V24 tmp17]
cmp w0, w1
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
mov w1, #121
@@ -244,7 +242,7 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
ldr w0, [fp, #-0x40] // [V24 tmp17]
; byrRegs -[x0]
cmp w25, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
strh w1, [x0, w25, UXTW #2]
@@ -252,7 +250,7 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
; byrRegs -[x0]
ldr w1, [fp, #-0x40] // [V24 tmp17]
cmp w0, w1
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
add w1, w22, #3
@@ -260,15 +258,15 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
strh w2, [x0, w1, UXTW #2]
sxtw w22, w25
cmp w21, w22
- ble G_M28069_IG21
- tbnz w22, #31, G_M28069_IG20
+ ble G_M28069_IG20
+ tbnz w22, #31, G_M28069_IG19
;; size=96 bbWeight=0.50 PerfScore 12.50
-G_M28069_IG18: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0]
add w0, w22, #2
ldr w1, [fp, #-0x40] // [V24 tmp17]
cmp w0, w1
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x1, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x1]
ubfiz x0, x0, #1, #32
@@ -279,32 +277,32 @@ G_M28069_IG18: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800
strh w1, [x0]
add w22, w22, #1
...
benchmarks.run_pgo.osx.arm64.checked.mch
-32 (-20.51%) : 77495.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (Tier1)
@@ -5,19 +5,21 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 6311
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 6311
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T02] ( 7, 6.94) int -> x4
+; V02 loc0 [V02,T00] ( 7, 6.94) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 6, 11.72) int -> x5 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 2.96) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T03] ( 5, 4.00) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 2.96) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T01] ( 6, 4.96) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T04] ( 6, 5.89) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T05] ( 2, 3.98) int -> x4 "dup spill"
+; V05 tmp2 [V05,T03] ( 2, 2.00) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T02] ( 4, 3.03) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T04] ( 2, 2.00) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T01] ( 5, 4.00) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T07] ( 3, 2.96) int -> x6 "CSE - aggressive"
+; V10 cse1 [V10,T08] ( 3, 2.96) int -> x5 "CSE - aggressive"
+; V11 cse2 [V11,T06] ( 3, 2.99) long -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -28,70 +30,61 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
; byrRegs +[x0 x2]
cmp w1, w3
- bne G_M264_IG08
+ bne G_M264_IG10
;; size=8 bbWeight=1 PerfScore 1.50
G_M264_IG03: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
sxtw w4, w3
;; size=4 bbWeight=0.97 PerfScore 0.48
G_M264_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1
- sxtw w4, w5
- tbnz w4, #31, G_M264_IG05
+ sub w4, w4, #1
+ tbnz w4, #31, G_M264_IG08
cmp w4, w1
- bhs G_M264_IG11
- ubfiz x6, x4, #2, #32
- ldr w7, [x0, x6]
+ bhs G_M264_IG13
+ ubfiz x5, x4, #2, #32
+ ldr w6, [x0, x5]
cmp w4, w3
- bhs G_M264_IG11
- ldr w6, [x2, x6]
- cmp w7, w6
+ bhs G_M264_IG13
+ ldr w5, [x2, x5]
+ cmp w6, w5
beq G_M264_IG04
- ;; size=48 bbWeight=1.00 PerfScore 13.45
-G_M264_IG05: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- tbnz w5, #31, G_M264_IG12
- cmp w5, w1
- bhs G_M264_IG11
- ubfiz x6, x5, #2, #32
- ldr w0, [x0, x6]
- ; byrRegs -[x0]
- cmp w5, w3
- bhs G_M264_IG11
- ldr w1, [x2, x6]
- cmp w0, w1
- blo G_M264_IG09
- ;; size=40 bbWeight=0.97 PerfScore 12.08
+ ;; size=44 bbWeight=1.00 PerfScore 12.95
+G_M264_IG05: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0 x2]
+ cmp w5, w6
+ bhi G_M264_IG11
+ ;; size=8 bbWeight=0.97 PerfScore 1.45
G_M264_IG06: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
mov w0, #1
;; size=4 bbWeight=0.74 PerfScore 0.37
G_M264_IG07: ; bbWeight=0.74, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.74 PerfScore 1.47
-G_M264_IG08: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M264_IG08: ; bbWeight=0.97, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.97 PerfScore 0.48
+G_M264_IG09: ; bbWeight=0.97, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.97 PerfScore 1.93
+G_M264_IG10: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp w1, w3
bge G_M264_IG06
;; size=8 bbWeight=0.03 PerfScore 0.05
-G_M264_IG09: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M264_IG11: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movn w0, #0
;; size=4 bbWeight=0.26 PerfScore 0.13
-G_M264_IG10: ; bbWeight=0.26, epilog, nogc, extend
+G_M264_IG12: ; bbWeight=0.26, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.26 PerfScore 0.53
-G_M264_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG13: ; 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_M264_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov w0, wzr
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M264_IG13: ; bbWeight=0, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
+ brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 156, prolog size 8, PerfScore 31.56, instruction count 39, allocated bytes for code 156 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 124, prolog size 8, PerfScore 22.85, instruction count 31, allocated bytes for code 124 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================
Unwind Info:
@@ -102,7 +95,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-6.94%) : 34329.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
@@ -9,18 +9,19 @@
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 298.47
; Final local variable assignments
;
-; V00 arg0 [V00,T09] ( 6, 24.26) ref -> x20 class-hnd single-def <int[]>
-; V01 arg1 [V01,T10] ( 3, 12.13) int -> x1 single-def
-; V02 arg2 [V02,T07] ( 6, 72.22) int -> x19 single-def
-; V03 loc0 [V03,T00] ( 14,725.05) int -> x21
-; V04 loc1 [V04,T01] ( 10,702.59) int -> x2
-; V05 loc2 [V05,T04] ( 3,213.72) int -> x0
-; V06 loc3 [V06,T08] ( 4, 63.91) int -> x6
+; V00 arg0 [V00,T10] ( 6, 24.26) ref -> x20 class-hnd single-def <int[]>
+; V01 arg1 [V01,T11] ( 3, 12.13) int -> x1 single-def
+; V02 arg2 [V02,T08] ( 6, 72.22) int -> x19 single-def
+; V03 loc0 [V03,T00] ( 13,690.84) int -> x21
+; V04 loc1 [V04,T01] ( 7,620.21) int -> x2
+; V05 loc2 [V05,T05] ( 3,213.72) int -> x0
+; V06 loc3 [V06,T09] ( 4, 63.91) int -> x7
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T05] ( 2, 96.33) int -> x7 "Strict ordering of exceptions for Array store"
-; V09 cse0 [V09,T06] ( 6, 95.86) long -> x5 multi-def "CSE - aggressive"
-; V10 cse1 [V10,T03] ( 7,270.75) int -> x3 hoist "CSE - aggressive"
-; V11 cse2 [V11,T02] ( 10,326.79) byref -> x4 hoist "CSE - aggressive"
+; V08 tmp1 [V08,T06] ( 2, 96.33) int -> x5 "Strict ordering of exceptions for Array store"
+; V09 cse0 [V09,T04] ( 3,235.78) int -> x5 "CSE - aggressive"
+; V10 cse1 [V10,T07] ( 6, 95.86) long -> x6 multi-def "CSE - aggressive"
+; V11 cse2 [V11,T03] ( 6,246.67) int -> x3 hoist "CSE - aggressive"
+; V12 cse3 [V12,T02] ( 9,302.71) byref -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 8
@@ -50,7 +51,7 @@ G_M63260_IG04: ; bbWeight=104.93, gcrefRegs=100000 {x20}, byrefRegs=0010
;; size=8 bbWeight=104.93 PerfScore 157.39
G_M63260_IG05: ; bbWeight=100.00, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16
+ bhs G_M63260_IG15
ldr w5, [x4, w21, UXTW #2]
cmp w5, w0
ble G_M63260_IG03
@@ -63,46 +64,39 @@ G_M63260_IG07: ; bbWeight=81.76, gcrefRegs=100000 {x20}, byrefRegs=0010 {
;; size=4 bbWeight=81.76 PerfScore 40.88
G_M63260_IG08: ; bbWeight=115.98, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w2, w21
- ble G_M63260_IG10
+ ble G_M63260_IG11
;; size=8 bbWeight=115.98 PerfScore 173.97
G_M63260_IG09: ; bbWeight=105.85, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w2, w3
- bhs G_M63260_IG16
+ bhs G_M63260_IG15
ldr w5, [x4, w2, UXTW #2]
cmp w5, w0
bge G_M63260_IG07
;; size=20 bbWeight=105.85 PerfScore 635.08
-G_M63260_IG10: ; bbWeight=34.21, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
- cmp w21, w2
- bge G_M63260_IG12
- ;; size=8 bbWeight=34.21 PerfScore 51.32
-G_M63260_IG11: ; bbWeight=24.08, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+G_M63260_IG10: ; bbWeight=24.08, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16
- ubfiz x5, x21, #2, #32
- ldr w6, [x4, x5]
- cmp w2, w3
- bhs G_M63260_IG16
- ldr w7, [x4, w2, UXTW #2]
- str w7, [x4, x5]
- str w6, [x4, w2, UXTW #2]
+ bhs G_M63260_IG15
+ ubfiz x6, x21, #2, #32
+ ldr w7, [x4, x6]
+ str w5, [x4, x6]
+ str w7, [x4, w2, UXTW #2]
b G_M63260_IG04
- ;; size=40 bbWeight=24.08 PerfScore 313.08
-G_M63260_IG12: ; bbWeight=44.35, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+ ;; size=28 bbWeight=24.08 PerfScore 204.70
+G_M63260_IG11: ; bbWeight=44.35, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w19
- beq G_M63260_IG14
+ beq G_M63260_IG13
;; size=8 bbWeight=44.35 PerfScore 66.52
-G_M63260_IG13: ; bbWeight=7.87, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+G_M63260_IG12: ; bbWeight=7.87, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16
- ubfiz x5, x21, #2, #32
- ldr w6, [x4, x5]
- str w0, [x4, x5]
+ bhs G_M63260_IG15
+ ubfiz x6, x21, #2, #32
+ ldr w7, [x4, x6]
+ str w0, [x4, x6]
cmp w19, w3
- bhs G_M63260_IG16
- str w6, [x4, w19, UXTW #2]
+ bhs G_M63260_IG15
+ str w7, [x4, w19, UXTW #2]
;; size=32 bbWeight=7.87 PerfScore 70.83
-G_M63260_IG14: ; bbWeight=10.13, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M63260_IG13: ; bbWeight=10.13, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; byrRegs -[x4]
sub w2, w21, #1
mov x0, x20
@@ -126,20 +120,20 @@ G_M63260_IG14: ; bbWeight=10.13, gcrefRegs=100000 {x20}, byrefRegs=0000 {
; gcrRegs -[x0 x20]
; gcr arg pop 0
;; size=60 bbWeight=10.13 PerfScore 136.78
-G_M63260_IG15: ; bbWeight=10.13, epilog, nogc, extend
+G_M63260_IG14: ; bbWeight=10.13, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
add sp, sp, #64
ret lr
;; size=20 bbWeight=10.13 PerfScore 55.72
-G_M63260_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M63260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 288, prolog size 32, PerfScore 2382.21, instruction count 72, allocated bytes for code 288 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
+; Total bytes of code 268, prolog size 32, PerfScore 2222.52, instruction count 67, allocated bytes for code 268 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -150,7 +144,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 72 (0x00048) Actual length = 288 (0x000120)
+ Function Length : 67 (0x00043) Actual length = 268 (0x00010c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-6.94%) : 34334.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
@@ -9,18 +9,19 @@
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 94115.85
; Final local variable assignments
;
-; V00 arg0 [V00,T09] ( 6, 24.66) ref -> x20 class-hnd single-def <int[]>
-; V01 arg1 [V01,T10] ( 3, 12.33) int -> x1 single-def
-; V02 arg2 [V02,T07] ( 6, 73.07) int -> x19 single-def
-; V03 loc0 [V03,T00] ( 14,725.22) int -> x21
-; V04 loc1 [V04,T01] ( 10,703.90) int -> x2
-; V05 loc2 [V05,T04] ( 3,214.50) int -> x0
-; V06 loc3 [V06,T08] ( 4, 63.91) int -> x6
+; V00 arg0 [V00,T10] ( 6, 24.66) ref -> x20 class-hnd single-def <int[]>
+; V01 arg1 [V01,T11] ( 3, 12.33) int -> x1 single-def
+; V02 arg2 [V02,T08] ( 6, 73.07) int -> x19 single-def
+; V03 loc0 [V03,T00] ( 13,690.82) int -> x21
+; V04 loc1 [V04,T01] ( 7,621.60) int -> x2
+; V05 loc2 [V05,T05] ( 3,214.50) int -> x0
+; V06 loc3 [V06,T09] ( 4, 63.91) int -> x7
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T06] ( 2, 95.79) int -> x7 "Strict ordering of exceptions for Array store"
-; V09 cse0 [V09,T05] ( 6, 95.87) long -> x5 multi-def "CSE - aggressive"
-; V10 cse1 [V10,T03] ( 7,271.40) int -> x3 hoist "CSE - aggressive"
-; V11 cse2 [V11,T02] ( 10,327.31) byref -> x4 hoist "CSE - aggressive"
+; V08 tmp1 [V08,T07] ( 2, 95.79) int -> x5 "Strict ordering of exceptions for Array store"
+; V09 cse0 [V09,T04] ( 3,236.93) int -> x5 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 6, 95.87) long -> x6 multi-def "CSE - aggressive"
+; V11 cse2 [V11,T03] ( 6,247.46) int -> x3 hoist "CSE - aggressive"
+; V12 cse3 [V12,T02] ( 9,303.36) byref -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 8
@@ -50,7 +51,7 @@ G_M63260_IG04: ; bbWeight=104.69, gcrefRegs=100000 {x20}, byrefRegs=0010
;; size=8 bbWeight=104.69 PerfScore 157.03
G_M63260_IG05: ; bbWeight=100, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16
+ bhs G_M63260_IG15
ldr w5, [x4, w21, UXTW #2]
cmp w5, w0
ble G_M63260_IG03
@@ -63,46 +64,39 @@ G_M63260_IG07: ; bbWeight=81.86, gcrefRegs=100000 {x20}, byrefRegs=0010 {
;; size=4 bbWeight=81.86 PerfScore 40.93
G_M63260_IG08: ; bbWeight=116.26, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w2, w21
- ble G_M63260_IG10
+ ble G_M63260_IG11
;; size=8 bbWeight=116.26 PerfScore 174.39
G_M63260_IG09: ; bbWeight=106.49, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w2, w3
- bhs G_M63260_IG16
+ bhs G_M63260_IG15
ldr w5, [x4, w2, UXTW #2]
cmp w5, w0
bge G_M63260_IG07
;; size=20 bbWeight=106.49 PerfScore 638.94
-G_M63260_IG10: ; bbWeight=34.40, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
- cmp w21, w2
- bge G_M63260_IG12
- ;; size=8 bbWeight=34.40 PerfScore 51.60
-G_M63260_IG11: ; bbWeight=23.95, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+G_M63260_IG10: ; bbWeight=23.95, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16
- ubfiz x5, x21, #2, #32
- ldr w6, [x4, x5]
- cmp w2, w3
- bhs G_M63260_IG16
- ldr w7, [x4, w2, UXTW #2]
- str w7, [x4, x5]
- str w6, [x4, w2, UXTW #2]
+ bhs G_M63260_IG15
+ ubfiz x6, x21, #2, #32
+ ldr w7, [x4, x6]
+ str w5, [x4, x6]
+ str w7, [x4, w2, UXTW #2]
b G_M63260_IG04
- ;; size=40 bbWeight=23.95 PerfScore 311.32
-G_M63260_IG12: ; bbWeight=44.73, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+ ;; size=28 bbWeight=23.95 PerfScore 203.55
+G_M63260_IG11: ; bbWeight=44.73, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w19
- beq G_M63260_IG14
+ beq G_M63260_IG13
;; size=8 bbWeight=44.73 PerfScore 67.09
-G_M63260_IG13: ; bbWeight=8.01, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+G_M63260_IG12: ; bbWeight=8.01, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16
- ubfiz x5, x21, #2, #32
- ldr w6, [x4, x5]
- str w0, [x4, x5]
+ bhs G_M63260_IG15
+ ubfiz x6, x21, #2, #32
+ ldr w7, [x4, x6]
+ str w0, [x4, x6]
cmp w19, w3
- bhs G_M63260_IG16
- str w6, [x4, w19, UXTW #2]
+ bhs G_M63260_IG15
+ str w7, [x4, w19, UXTW #2]
;; size=32 bbWeight=8.01 PerfScore 72.08
-G_M63260_IG14: ; bbWeight=10.33, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M63260_IG13: ; bbWeight=10.33, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; byrRegs -[x4]
sub w2, w21, #1
mov x0, x20
@@ -126,20 +120,20 @@ G_M63260_IG14: ; bbWeight=10.33, gcrefRegs=100000 {x20}, byrefRegs=0000 {
; gcrRegs -[x0 x20]
; gcr arg pop 0
;; size=60 bbWeight=10.33 PerfScore 139.43
-G_M63260_IG15: ; bbWeight=10.33, epilog, nogc, extend
+G_M63260_IG14: ; bbWeight=10.33, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
add sp, sp, #64
ret lr
;; size=20 bbWeight=10.33 PerfScore 56.80
-G_M63260_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M63260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 288, prolog size 32, PerfScore 2390.48, instruction count 72, allocated bytes for code 288 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
+; Total bytes of code 268, prolog size 32, PerfScore 2231.11, instruction count 67, allocated bytes for code 268 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -150,7 +144,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 72 (0x00048) Actual length = 288 (0x000120)
+ Function Length : 67 (0x00043) Actual length = 268 (0x00010c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+6.56%) : 57387.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
@@ -9,19 +9,19 @@
; 3 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 9, 5 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V00 this [V00,T00] ( 9, 5 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
;* V01 loc0 [V01,T09] ( 0, 0 ) ubyte -> zero-ref single-def
-; V02 loc1 [V02,T03] ( 5, 5 ) ubyte -> x20
+; V02 loc1 [V02,T06] ( 5, 3 ) ubyte -> x20
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V06 tmp2 [V06,T06] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
-; V07 tmp3 [V07,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V06 tmp2 [V06,T05] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
+; V07 tmp3 [V07,T03] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
; V08 tmp4 [V08,T07] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V09 tmp5 [V09,T00] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V10 tmp6 [V10,T05] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
-; V11 tmp7 [V11,T08] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V12 tmp8 [V12,T01] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V09 tmp5 [V09,T01] ( 5, 5.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V10 tmp6 [V10,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V11 tmp7 [V11,T08] ( 3, 2.50) long -> x2 "fgMakeTemp is creating a new local variable"
+; V12 tmp8 [V12,T02] ( 5, 5.50) ref -> x3 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;
; Lcl frame size = 8
@@ -38,16 +38,16 @@ G_M43843_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
mov w20, wzr
ldr x21, [x19, #0x80]
; gcrRegs +[x21]
- cbz x21, G_M43843_IG14
+ cbz x21, G_M43843_IG12
ldrb w0, [x21, #0x18]
- tbz w0, #1, G_M43843_IG14
+ tbz w0, #1, G_M43843_IG12
;; size=20 bbWeight=1 PerfScore 8.50
G_M43843_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr x1, [x21, #0x08]
; gcrRegs +[x1]
mov x2, x1
; gcrRegs +[x2]
- cbz x2, G_M43843_IG07
+ cbz x2, G_M43843_IG06
;; size=12 bbWeight=1 PerfScore 4.50
G_M43843_IG04: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x21]
@@ -56,7 +56,7 @@ G_M43843_IG04: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=00
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
cmp x0, x3
- beq G_M43843_IG06
+ beq G_M43843_IG13
;; size=24 bbWeight=0.50 PerfScore 3.00
G_M43843_IG05: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
@@ -65,60 +65,54 @@ G_M43843_IG05: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
; gcrRegs -[x1] +[x0]
mov x2, x0
; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M43843_IG06: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldrb w20, [x2, #0x84]
- ;; size=4 bbWeight=1 PerfScore 3.00
-G_M43843_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
- cbnz w20, G_M43843_IG12
+ b G_M43843_IG13
+ ;; size=16 bbWeight=0.25 PerfScore 0.75
+G_M43843_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0 x2]
+ cbnz w20, G_M43843_IG10
ldr x0, [x19, #0x88]
; gcrRegs +[x0]
- cbz x0, G_M43843_IG15
+ cbz x0, G_M43843_IG14
;; size=12 bbWeight=1 PerfScore 5.00
-G_M43843_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M43843_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x0, [x19, #0x88]
; gcrRegs +[x0]
ldr x1, [x0, #0x08]
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M43843_IG12
+ mov x3, x1
+ ; gcrRegs +[x3]
+ cbz x3, G_M43843_IG10
;; size=16 bbWeight=1 PerfScore 7.50
-G_M43843_IG09: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M43843_IG08: ; bbWeight=0.50, gcrefRegs=000A {x1 x3}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x19]
- ldr x0, [x2]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- cmp x0, x3
- beq G_M43843_IG11
+ ldr x0, [x3]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ cmp x0, x2
+ beq G_M43843_IG15
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M43843_IG10: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
- mov x0, x3
+G_M43843_IG09: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x3]
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M43843_IG11: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldrb w20, [x2, #0x84]
- ;; size=4 bbWeight=1 PerfScore 3.00
-G_M43843_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
+ mov x3, x0
+ ; gcrRegs +[x3]
+ b G_M43843_IG15
+ ;; size=16 bbWeight=0.25 PerfScore 0.75
+G_M43843_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x3]
mov w0, w20
;; size=4 bbWeight=1 PerfScore 0.50
-G_M43843_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M43843_IG11: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-G_M43843_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M43843_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
mov x0, x19
; gcrRegs +[x0]
@@ -132,8 +126,13 @@ G_M43843_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
; gcrRegs +[x21]
b G_M43843_IG03
;; size=32 bbWeight=0 PerfScore 0.00
-G_M43843_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x21]
+G_M43843_IG13: ; bbWeight=0, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x21] +[x2]
+ ldrb w20, [x2, #0x84]
+ b G_M43843_IG06
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M43843_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x2]
add x1, x19, #136
; byrRegs +[x1]
mov x0, x19
@@ -145,10 +144,15 @@ G_M43843_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x2
; gcrRegs -[x0]
; byrRegs -[x1]
- b G_M43843_IG08
+ b G_M43843_IG07
;; size=32 bbWeight=0 PerfScore 0.00
+G_M43843_IG15: ; bbWeight=0, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19] +[x3]
+ ldrb w20, [x3, #0x84]
+ b G_M43843_IG10
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 16, PerfScore 48.00, instruction count 61, allocated bytes for code 244 (MethodHash=f14d54bc) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
+; Total bytes of code 260, prolog size 16, PerfScore 42.50, instruction count 65, allocated bytes for code 260 (MethodHash=f14d54bc) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -159,7 +163,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
+ Function Length : 65 (0x00041) Actual length = 260 (0x000104)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+36 (+8.11%) : 75445.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
@@ -5,22 +5,22 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 47960
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 47960
; 8 inlinees with PGO data; 19 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) ref -> x20 this class-hnd single-def <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]>
-; V01 arg1 [V01,T03] ( 3, 3 ) byref -> x21 single-def
-; V02 arg2 [V02,T00] ( 5, 4 ) int -> x19 single-def
-; V03 arg3 [V03,T04] ( 3, 3 ) byref -> x22 single-def
+; V00 this [V00,T02] ( 4, 3 ) ref -> x20 this class-hnd single-def <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]>
+; V01 arg1 [V01,T03] ( 4, 3 ) byref -> x21 single-def
+; V02 arg2 [V02,T00] ( 6, 4 ) int -> x19 single-def
+; V03 arg3 [V03,T04] ( 4, 3 ) byref -> x22 single-def
; V04 arg4 [V04,T06] ( 3, 3 ) int -> x4 single-def
; V05 arg5 [V05,T05] ( 3, 3 ) byref -> x23 single-def
-; V06 loc0 [V06,T08] ( 3, 3 ) int -> x24
-; V07 loc1 [V07,T10] ( 2, 2 ) byref -> x22
+; V06 loc0 [V06,T09] ( 4, 3 ) int -> x24
+; V07 loc1 [V07,T10] ( 4, 2 ) byref -> x25
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp2 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 tmp3 [V11,T07] ( 3, 4 ) int -> x25 "Inlining Arg"
+; V11 tmp3 [V11,T07] ( 4, 4 ) int -> x26 "Inlining Arg"
;* V12 tmp4 [V12 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V13 tmp5 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -29,7 +29,7 @@
;* V17 tmp9 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp10 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V19 tmp11 [V19 ] ( 0, 0 ) byref -> zero-ref "Spilling op1 side effects for Unsafe.ByteOffset"
-; V20 tmp12 [V20,T01] ( 8, 5 ) long -> x26 "Inline stloc first use temp"
+; V20 tmp12 [V20,T01] ( 10, 5 ) long -> x28 "Inline stloc first use temp"
;* V21 tmp13 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V22 tmp14 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V23 tmp15 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -61,16 +61,17 @@
;* V49 tmp41 [V49 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
;* V50 tmp42 [V50 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP
;* V51 tmp43 [V51 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
-; V52 cse0 [V52,T09] ( 3, 3 ) long -> x22 "CSE - aggressive"
+; V52 cse0 [V52,T08] ( 5, 3 ) long -> x27 "CSE - aggressive"
;
; Lcl frame size = 0
G_M44984_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
stp x19, x20, [sp, #0x10]
stp x21, x22, [sp, #0x20]
stp x23, x24, [sp, #0x30]
stp x25, x26, [sp, #0x40]
+ stp x27, x28, [sp, #0x50]
mov fp, sp
mov x20, x0
; gcrRegs +[x20]
@@ -81,73 +82,52 @@ G_M44984_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; byrRegs +[x22]
mov x23, x5
; byrRegs +[x23]
- ;; size=44 bbWeight=1 PerfScore 8.00
+ ;; size=48 bbWeight=1 PerfScore 9.00
G_M44984_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=E00000 {x21 x22 x23}, byref, isz
rbit w0, w4
clz w24, w0
tbnz w24, #0, G_M44984_IG08
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M44984_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=E00000 {x21 x22 x23}, byref, isz
sxtw x0, w24
- add x22, x22, x0
+ add x25, x22, x0
+ ; byrRegs +[x25]
ldr x0, [x20, #0x10]
; gcrRegs +[x0]
- ldr w25, [x0, #0x08]
- tbz w19, #31, G_M44984_IG04
- movz x0, #8
- ; gcrRegs -[x0]
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- movz x1, #8
- 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
- ; gcrRegs -[x20]
- movz x0, #8
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- movz x1, #8
- 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=108 bbWeight=1 PerfScore 25.00
-G_M44984_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=E00000 {x21 x22 x23}, byref, isz
- sub x22, x22, x21
+ ldr w26, [x0, #0x08]
+ tbnz w19, #31, G_M44984_IG09
+ ;; size=32 bbWeight=1 PerfScore 10.50
+G_M44984_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=2A00000 {x21 x23 x25}, byref, isz
+ ; gcrRegs -[x0 x20]
; byrRegs -[x22]
- mov x26, x22
- tbnz x26, #63, G_M44984_IG09
- tbnz w26, #0, G_M44984_IG10
- ;; size=16 bbWeight=1 PerfScore 3.00
+ sub x27, x25, x21
+ mov x28, x27
+ tbnz x28, #63, G_M44984_IG10
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M44984_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
+ ; byrRegs -[x21 x25]
+ tbnz w28, #0, G_M44984_IG11
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M44984_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
- ; byrRegs -[x21]
- add x0, x26, x26, LSR #63
+ add x0, x28, x28, LSR #63
asr x0, x0, #1
sub w0, w19, w0
- cmp w0, w25
- blt G_M44984_IG11
+ cmp w0, w26
+ blt G_M44984_IG12
;; size=20 bbWeight=1 PerfScore 4.00
G_M44984_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
- lsr x0, x22, #1
+ lsr x0, x27, #1
str w0, [x23]
mov w0, #1
;; size=12 bbWeight=1 PerfScore 2.50
G_M44984_IG07: ; bbWeight=1, epilog, nogc, extend
+ ldp x27, x28, [sp, #0x50]
ldp x25, x26, [sp, #0x40]
ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=24 bbWeight=1 PerfScore 6.00
-G_M44984_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=E00000 {x21 x22 x23}, gcvars, byref
+ ;; size=28 bbWeight=1 PerfScore 7.00
+G_M44984_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=E00000 {x21 x22 x23}, gcvars, byref, isz
; gcrRegs +[x20]
; byrRegs +[x21-x22]
movz x0, #8
@@ -161,11 +141,17 @@ G_M44984_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000
movk x2, #1 LSL #32
ldr x2, [x2]
blr x2
- b G_M44984_IG03
- ;; size=48 bbWeight=0 PerfScore 0.00
-G_M44984_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
- ; gcrRegs -[x20]
- ; byrRegs -[x21-x22]
+ sxtw x0, w24
+ add x25, x22, x0
+ ; byrRegs +[x25]
+ ldr x0, [x20, #0x10]
+ ; gcrRegs +[x0]
+ ldr w26, [x0, #0x08]
+ tbz w19, #31, G_M44984_IG03
+ ;; size=64 bbWeight=0 PerfScore 0.00
+G_M44984_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=2A00000 {x21 x23 x25}, byref, isz
+ ; gcrRegs -[x0 x20]
+ ; byrRegs -[x22]
movz x0, #8
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -177,9 +163,23 @@ G_M44984_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b
movk x2, #1 LSL #32
ldr x2, [x2]
blr x2
- tbz w26, #0, G_M44984_IG05
- ;; size=48 bbWeight=0 PerfScore 0.00
+ movz x0, #8
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ movz x1, #8
+ 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
+ sub x27, x25, x21
+ mov x28, x27
+ tbz x28, #63, G_M44984_IG04
+ ;; size=100 bbWeight=0 PerfScore 0.00
G_M44984_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
+ ; byrRegs -[x21 x25]
movz x0, #8
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -191,13 +191,27 @@ G_M44984_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b
movk x2, #1 LSL #32
ldr x2, [x2]
blr x2
- add x0, x26, x26, LSR #63
+ tbz w28, #0, G_M44984_IG05
+ ;; size=48 bbWeight=0 PerfScore 0.00
+G_M44984_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
+ movz x0, #8
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ movz x1, #8
+ 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
+ add x0, x28, x28, LSR #63
asr x0, x0, #1
sub w0, w19, w0
- cmp w0, w25
+ cmp w0, w26
bge G_M44984_IG06
;; size=64 bbWeight=0 PerfScore 0.00
-G_M44984_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
+G_M44984_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
movz x0, #8
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -212,18 +226,18 @@ G_M44984_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b
b G_M44984_IG06
;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 444, prolog size 24, PerfScore 51.00, instruction count 111, allocated bytes for code 444 (MethodHash=d0aa5047) for method System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
+; Total bytes of code 480, prolog size 28, PerfScore 36.00, instruction count 120, allocated bytes for code 480 (MethodHash=d0aa5047) for method System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
...
+20 (+8.20%) : 58195.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
@@ -9,18 +9,18 @@
; 3 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 9, 5 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
-; V01 loc0 [V01,T03] ( 5, 5 ) int -> x20
+; V00 this [V00,T00] ( 10, 5 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V01 loc0 [V01,T08] ( 5, 2 ) int -> x20
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V05 tmp2 [V05,T06] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
-; V06 tmp3 [V06,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
-; V07 tmp4 [V07,T07] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V08 tmp5 [V08,T00] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V09 tmp6 [V09,T05] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
-; V10 tmp7 [V10,T08] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V11 tmp8 [V11,T01] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V05 tmp2 [V05,T05] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
+; V06 tmp3 [V06,T03] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V07 tmp4 [V07,T06] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
+; V08 tmp5 [V08,T01] ( 5, 5.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V09 tmp6 [V09,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V10 tmp7 [V10,T07] ( 3, 2.50) long -> x2 "fgMakeTemp is creating a new local variable"
+; V11 tmp8 [V11,T02] ( 5, 5.50) ref -> x3 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;
; Lcl frame size = 8
@@ -37,16 +37,16 @@ G_M4380_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
mov w20, wzr
ldr x21, [x19, #0x80]
; gcrRegs +[x21]
- cbz x21, G_M4380_IG14
+ cbz x21, G_M4380_IG12
ldrb w0, [x21, #0x18]
- tbz w0, #1, G_M4380_IG14
+ tbz w0, #1, G_M4380_IG12
;; size=20 bbWeight=1 PerfScore 8.50
G_M4380_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr x1, [x21, #0x08]
; gcrRegs +[x1]
mov x2, x1
; gcrRegs +[x2]
- cbz x2, G_M4380_IG07
+ cbz x2, G_M4380_IG06
;; size=12 bbWeight=1 PerfScore 4.50
G_M4380_IG04: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x21]
@@ -55,7 +55,7 @@ G_M4380_IG04: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=000
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
cmp x0, x3
- beq G_M4380_IG06
+ beq G_M4380_IG13
;; size=24 bbWeight=0.50 PerfScore 3.00
G_M4380_IG05: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
@@ -64,60 +64,53 @@ G_M4380_IG05: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {
; gcrRegs -[x1] +[x0]
mov x2, x0
; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M4380_IG06: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr w20, [x2, #0x80]
- ;; size=4 bbWeight=1 PerfScore 3.00
-G_M4380_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
+ b G_M4380_IG13
+ ;; size=16 bbWeight=0.25 PerfScore 0.75
+G_M4380_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0 x2]
ldr x0, [x19, #0x88]
; gcrRegs +[x0]
- cbz x0, G_M4380_IG15
+ cbz x0, G_M4380_IG14
;; size=8 bbWeight=1 PerfScore 4.00
-G_M4380_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x0, [x19, #0x88]
; gcrRegs +[x0]
ldr x1, [x0, #0x08]
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M4380_IG12
+ mov x3, x1
+ ; gcrRegs +[x3]
+ cbz x3, G_M4380_IG10
;; size=16 bbWeight=1 PerfScore 7.50
-G_M4380_IG09: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG08: ; bbWeight=0.50, gcrefRegs=000A {x1 x3}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x19]
- ldr x0, [x2]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- cmp x0, x3
- beq G_M4380_IG11
+ ldr x0, [x3]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ cmp x0, x2
+ beq G_M4380_IG15
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M4380_IG10: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
- mov x0, x3
+G_M4380_IG09: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x3]
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M4380_IG11: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr w0, [x2, #0x80]
- orr w20, w20, w0
- ;; size=8 bbWeight=1 PerfScore 3.50
-G_M4380_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
+ mov x3, x0
+ ; gcrRegs +[x3]
+ b G_M4380_IG15
+ ;; size=16 bbWeight=0.25 PerfScore 0.75
+G_M4380_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x3]
mov w0, w20
;; size=4 bbWeight=1 PerfScore 0.50
-G_M4380_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M4380_IG11: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-G_M4380_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M4380_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
mov x0, x19
; gcrRegs +[x0]
@@ -131,8 +124,15 @@ G_M4380_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {
; gcrRegs +[x21]
b G_M4380_IG03
;; size=32 bbWeight=0 PerfScore 0.00
-G_M4380_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x21]
+G_M4380_IG13: ; bbWeight=0, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x21] +[x2]
+ ldr w20, [x2, #0x80]
+ ldr x1, [x19, #0x88]
+ ; gcrRegs +[x1]
+ cbnz x1, G_M4380_IG07
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M4380_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1-x2]
add x1, x19, #136
; byrRegs +[x1]
mov x0, x19
@@ -144,10 +144,16 @@ G_M4380_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
blr x2
; gcrRegs -[x0]
; byrRegs -[x1]
- b G_M4380_IG08
+ b G_M4380_IG07
;; size=32 bbWeight=0 PerfScore 0.00
+G_M4380_IG15: ; bbWeight=0, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19] +[x3]
+ ldr w0, [x3, #0x80]
+ orr w20, w20, w0
+ b G_M4380_IG10
+ ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 16, PerfScore 47.50, instruction count 61, allocated bytes for code 244 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
+; Total bytes of code 264, prolog size 16, PerfScore 41.50, instruction count 66, allocated bytes for code 264 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
; ============================================================
Unwind Info:
@@ -158,7 +164,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
+ Function Length : 66 (0x00042) Actual length = 264 (0x000108)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run_tiered.osx.arm64.checked.mch
-36 (-21.95%) : 46278.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (Tier1)
@@ -11,12 +11,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
; V02 loc0 [V02,T00] ( 7, 24.50) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> x5 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x4 "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> x6 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> x5 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -33,51 +35,39 @@ G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x2]
cmp w1, w3
blt G_M264_IG11
- b G_M264_IG09
+ b G_M264_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
; byrRegs +[x0 x2]
sxtw w4, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1
- sxtw w4, w5
- tbnz w4, #31, G_M264_IG06
+ sub w4, w4, #1
+ tbnz w4, #31, G_M264_IG09
cmp w4, w1
bhs G_M264_IG13
- ubfiz x6, x4, #2, #32
- ldr w7, [x0, x6]
+ ubfiz x5, x4, #2, #32
+ ldr w6, [x0, x5]
cmp w4, w3
bhs G_M264_IG13
- ldr w6, [x2, x6]
- cmp w7, w6
+ ldr w5, [x2, x5]
+ cmp w6, w5
beq G_M264_IG05
- ;; size=48 bbWeight=4 PerfScore 54.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- tbz w5, #31, G_M264_IG08
- mov w0, wzr
- ; byrRegs -[x0]
+ ;; size=44 bbWeight=4 PerfScore 52.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0 x2]
+ cmp w5, w6
+ bhi G_M264_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref, isz
- ; byrRegs +[x0]
- cmp w5, w1
- bhs G_M264_IG13
- ubfiz x6, x5, #2, #32
- ldr w0, [x0, x6]
- ; byrRegs -[x0]
- cmp w5, w3
- bhs G_M264_IG13
- ldr w1, [x2, x6]
- cmp w0, w1
- blo G_M264_IG11
- ;; size=36 bbWeight=0.50 PerfScore 5.75
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
- mov w0, #1
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
@@ -96,7 +86,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 8, PerfScore 68.50, instruction count 41, allocated bytes for code 164 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 128, prolog size 8, PerfScore 61.00, instruction count 32, allocated bytes for code 128 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================
Unwind Info:
@@ -107,7 +97,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-6.94%) : 28604.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
@@ -8,18 +8,19 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T08] ( 6, 4.02) ref -> x20 class-hnd single-def <int[]>
-; V01 arg1 [V01,T10] ( 3, 3 ) int -> x1 single-def
-; V02 arg2 [V02,T05] ( 6, 12 ) int -> x19 single-def
-; V03 loc0 [V03,T00] ( 14,227 ) int -> x21
-; V04 loc1 [V04,T01] ( 10,134 ) int -> x2
+; V00 arg0 [V00,T09] ( 6, 4.02) ref -> x20 class-hnd single-def <int[]>
+; V01 arg1 [V01,T11] ( 3, 3 ) int -> x1 single-def
+; V02 arg2 [V02,T06] ( 6, 12 ) int -> x19 single-def
+; V03 loc0 [V03,T00] ( 13,219 ) int -> x21
+; V04 loc1 [V04,T01] ( 7,122 ) int -> x2
; V05 loc2 [V05,T04] ( 3, 80.50) int -> x0
-; V06 loc3 [V06,T09] ( 4, 5 ) int -> x6
+; V06 loc3 [V06,T10] ( 4, 5 ) int -> x7
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T06] ( 2, 8 ) int -> x7 "Strict ordering of exceptions for Array store"
-; V09 cse0 [V09,T07] ( 6, 7.50) long -> x5 multi-def "CSE - aggressive"
-; V10 cse1 [V10,T03] ( 7, 85.01) int -> x3 hoist "CSE - aggressive"
-; V11 cse2 [V11,T02] ( 10, 89.51) byref -> x4 hoist "CSE - aggressive"
+; V08 tmp1 [V08,T07] ( 2, 8 ) int -> x5 "Strict ordering of exceptions for Array store"
+; V09 cse0 [V09,T05] ( 3, 34 ) int -> x5 "CSE - aggressive"
+; V10 cse1 [V10,T08] ( 6, 7.50) long -> x6 multi-def "CSE - aggressive"
+; V11 cse2 [V11,T03] ( 6, 83.01) int -> x3 hoist "CSE - aggressive"
+; V12 cse3 [V12,T02] ( 9, 87.51) byref -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 8
@@ -49,7 +50,7 @@ G_M63260_IG04: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4},
;; size=8 bbWeight=8 PerfScore 12.00
G_M63260_IG05: ; bbWeight=64, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16
+ bhs G_M63260_IG15
ldr w5, [x4, w21, UXTW #2]
cmp w5, w0
ble G_M63260_IG03
@@ -62,46 +63,39 @@ G_M63260_IG07: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4},
;; size=4 bbWeight=8 PerfScore 4.00
G_M63260_IG08: ; bbWeight=64, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w2, w21
- ble G_M63260_IG10
+ ble G_M63260_IG11
;; size=8 bbWeight=64 PerfScore 96.00
G_M63260_IG09: ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w2, w3
- bhs G_M63260_IG16
+ bhs G_M63260_IG15
ldr w5, [x4, w2, UXTW #2]
cmp w5, w0
bge G_M63260_IG07
;; size=20 bbWeight=16 PerfScore 96.00
-G_M63260_IG10: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
- cmp w21, w2
- bge G_M63260_IG12
- ;; size=8 bbWeight=8 PerfScore 12.00
-G_M63260_IG11: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+G_M63260_IG10: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16
- ubfiz x5, x21, #2, #32
- ldr w6, [x4, x5]
- cmp w2, w3
- bhs G_M63260_IG16
- ldr w7, [x4, w2, UXTW #2]
- str w7, [x4, x5]
- str w6, [x4, w2, UXTW #2]
+ bhs G_M63260_IG15
+ ubfiz x6, x21, #2, #32
+ ldr w7, [x4, x6]
+ str w5, [x4, x6]
+ str w7, [x4, w2, UXTW #2]
b G_M63260_IG04
- ;; size=40 bbWeight=2 PerfScore 26.00
-G_M63260_IG12: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+ ;; size=28 bbWeight=2 PerfScore 17.00
+G_M63260_IG11: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w19
- beq G_M63260_IG14
+ beq G_M63260_IG13
;; size=8 bbWeight=8 PerfScore 12.00
-G_M63260_IG13: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+G_M63260_IG12: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16
- ubfiz x5, x21, #2, #32
- ldr w6, [x4, x5]
- str w0, [x4, x5]
+ bhs G_M63260_IG15
+ ubfiz x6, x21, #2, #32
+ ldr w7, [x4, x6]
+ str w0, [x4, x6]
cmp w19, w3
- bhs G_M63260_IG16
- str w6, [x4, w19, UXTW #2]
+ bhs G_M63260_IG15
+ str w7, [x4, w19, UXTW #2]
;; size=32 bbWeight=0.50 PerfScore 4.50
-G_M63260_IG14: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M63260_IG13: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; byrRegs -[x4]
sub w2, w21, #1
mov x0, x20
@@ -125,20 +119,20 @@ G_M63260_IG14: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcrRegs -[x0 x20]
; gcr arg pop 0
;; size=60 bbWeight=1 PerfScore 13.50
-G_M63260_IG15: ; bbWeight=1, epilog, nogc, extend
+G_M63260_IG14: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
add sp, sp, #64
ret lr
;; size=20 bbWeight=1 PerfScore 5.50
-G_M63260_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M63260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 288, prolog size 32, PerfScore 668.66, instruction count 72, allocated bytes for code 288 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
+; Total bytes of code 268, prolog size 32, PerfScore 647.66, instruction count 67, allocated bytes for code 268 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -149,7 +143,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 72 (0x00048) Actual length = 288 (0x000120)
+ Function Length : 67 (0x00043) Actual length = 268 (0x00010c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-6.36%) : 48102.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1)
@@ -10,11 +10,11 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[int]>
;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref single-def
-; V02 loc1 [V02,T10] ( 3, 1.50) int -> x0 single-def
-; V03 loc2 [V03,T00] ( 19, 26.50) int -> x21
-; V04 loc3 [V04,T01] ( 13, 23.50) int -> x1
+; V02 loc1 [V02,T11] ( 3, 1.50) int -> x0 single-def
+; V03 loc2 [V03,T00] ( 18, 26 ) int -> x21
+; V04 loc3 [V04,T01] ( 10, 22 ) int -> x1
; V05 loc4 [V05,T04] ( 4, 9 ) int -> x3 single-def
-; V06 loc5 [V06,T08] ( 4, 2 ) int -> x4
+; V06 loc5 [V06,T09] ( 4, 2 ) int -> x5
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
@@ -22,25 +22,26 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V12 tmp5 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp6 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp7 [V14,T05] ( 4, 4 ) int -> x0 "Inlining Arg"
+; V14 tmp7 [V14,T06] ( 4, 4 ) int -> x0 "Inlining Arg"
;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
-; V16 tmp9 [V16,T07] ( 3, 3 ) int -> x20 "Inlining Arg"
-; V17 tmp10 [V17,T09] ( 2, 2 ) byref -> x19 single-def "Inlining Arg"
+; V16 tmp9 [V16,T08] ( 3, 3 ) int -> x20 "Inlining Arg"
+; V17 tmp10 [V17,T10] ( 2, 2 ) byref -> x19 single-def "Inlining Arg"
;* V18 tmp11 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V20 tmp13 [V20,T02] ( 13, 14 ) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V21 tmp14 [V21,T03] ( 11, 13.50) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V20 tmp13 [V20,T02] ( 12, 13.50) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V21 tmp14 [V21,T03] ( 10, 13 ) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V22 tmp15 [V22 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp16 [V23 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
;* V24 tmp17 [V24 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V25 tmp18 [V25 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-;* V26 tmp19 [V26,T16] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T14] ( 2, 1 ) int -> x1 single-def "field V10._length (fldOffset=0x8)" P-INDEP
-; V28 tmp21 [V28,T13] ( 2, 1 ) byref -> x0 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
-; V29 tmp22 [V29,T15] ( 2, 1 ) int -> x1 single-def "field V15._length (fldOffset=0x8)" P-INDEP
-; V30 cse0 [V30,T11] ( 3, 1.50) long -> x0 "CSE - moderate"
-; V31 cse1 [V31,T12] ( 3, 1.50) long -> x2 "CSE - moderate"
-; V32 cse2 [V32,T06] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
+;* V26 tmp19 [V26,T17] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
+; V27 tmp20 [V27,T15] ( 2, 1 ) int -> x1 single-def "field V10._length (fldOffset=0x8)" P-INDEP
+; V28 tmp21 [V28,T14] ( 2, 1 ) byref -> x0 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+; V29 tmp22 [V29,T16] ( 2, 1 ) int -> x1 single-def "field V15._length (fldOffset=0x8)" P-INDEP
+; V30 cse0 [V30,T05] ( 3, 8.50) int -> x4 "CSE - aggressive"
+; V31 cse1 [V31,T12] ( 3, 1.50) long -> x0 "CSE - moderate"
+; V32 cse2 [V32,T13] ( 3, 1.50) long -> x2 "CSE - moderate"
+; V33 cse3 [V33,T07] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
;
; Lcl frame size = 8
@@ -93,7 +94,7 @@ G_M24415_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M24415_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w1, w21
- ble G_M24415_IG10
+ ble G_M24415_IG11
cmp w1, w20
bhs G_M24415_IG16
ldr w4, [x19, w1, UXTW #2]
@@ -101,22 +102,13 @@ G_M24415_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
bge G_M24415_IG08
;; size=28 bbWeight=4 PerfScore 30.00
G_M24415_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- cmp w21, w1
- bge G_M24415_IG11
cmp w21, w20
bhs G_M24415_IG16
- ldr w4, [x19, w21, UXTW #2]
- ubfiz x5, x21, #2, #32
- add x5, x19, x5
- ; byrRegs +[x5]
- cmp w1, w20
- bhs G_M24415_IG16
- ldr w6, [x19, w1, UXTW #2]
- str w6, [x5]
- str w4, [x19, w1, UXTW #2]
- ;; size=48 bbWeight=0.50 PerfScore 7.00
+ ldr w5, [x19, w21, UXTW #2]
+ str w4, [x19, w21, UXTW #2]
+ str w5, [x19, w1, UXTW #2]
+ ;; size=20 bbWeight=0.50 PerfScore 3.25
G_M24415_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- ; byrRegs -[x5]
cmp w21, w1
blt G_M24415_IG06
cmp w21, w0
@@ -124,9 +116,9 @@ G_M24415_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
cmp w21, w20
bhs G_M24415_IG16
ubfiz x0, x21, #2, #32
- ldr w4, [x19, x0]
+ ldr w5, [x19, x0]
str w3, [x19, x0]
- str w4, [x19, x2]
+ str w5, [x19, x2]
;; size=40 bbWeight=0.50 PerfScore 5.25
G_M24415_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w21, w20
@@ -208,7 +200,7 @@ G_M24415_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 440, prolog size 24, PerfScore 107.25, instruction count 110, allocated bytes for code 440 (MethodHash=e254a0a0) for method Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1)
+; Total bytes of code 412, prolog size 24, PerfScore 103.50, instruction count 103, allocated bytes for code 412 (MethodHash=e254a0a0) for method Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1)
; ============================================================
Unwind Info:
@@ -219,7 +211,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 110 (0x0006e) Actual length = 440 (0x0001b8)
+ Function Length : 103 (0x00067) Actual length = 412 (0x00019c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 43028.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
@@ -8,13 +8,13 @@
; 0 inlinees with PGO data; 128 single block inlinees; 90 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T41] ( 5, 4 ) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T44] ( 3, 3 ) int -> x4 single-def
-; V02 arg2 [V02,T42] ( 3, 3 ) byref -> x19 single-def
-; V03 arg3 [V03,T43] ( 3, 3 ) byref -> x5 single-def
+; V00 arg0 [V00,T40] ( 5, 4 ) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T43] ( 3, 3 ) int -> x4 single-def
+; V02 arg2 [V02,T41] ( 3, 3 ) byref -> x19 single-def
+; V03 arg3 [V03,T42] ( 3, 3 ) byref -> x5 single-def
;* V04 loc0 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.Span`1[ushort]>
-; V05 loc1 [V05,T16] ( 4, 13 ) int -> x19
-; V06 loc2 [V06,T26] ( 3, 9 ) int -> x21
+; V05 loc1 [V05,T25] ( 3, 9 ) int -> x19
+; V06 loc2 [V06,T44] ( 3, 5 ) int -> x21
; V07 loc3 [V07,T45] ( 2, 5 ) ubyte -> x22
;* V08 loc4 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]>
; V09 loc5 [V09,T00] ( 45, 39 ) int -> registers ptr
@@ -22,7 +22,7 @@
;* V11 loc7 [V11 ] ( 0, 0 ) ubyte -> zero-ref
;* V12 loc8 [V12 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
;* V13 loc9 [V13 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
-; V14 loc10 [V14,T05] ( 11, 35 ) int -> x25
+; V14 loc10 [V14,T09] ( 10, 29 ) int -> x25
; V15 loc11 [V15,T46] ( 8, 4 ) int -> registers ld-addr-op ptr
;* V16 loc12 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
;# V17 OutArgs [V17 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -34,7 +34,7 @@
; V23 tmp6 [V23 ] ( 3, 6 ) struct ( 8) [fp-0x78] do-not-enreg[SB] "dup spill" <System.ValueTuple`2[int,int]>
;* V24 tmp7 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V25 tmp8 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V26 tmp9 [V26,T28] ( 2, 8 ) byref -> x26 "impAppendStmt"
+; V26 tmp9 [V26,T27] ( 2, 8 ) byref -> x26 "impAppendStmt"
;* V27 tmp10 [V27 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Span`1[ushort]>
;* V28 tmp11 [V28 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
; V29 tmp12 [V29,T12] ( 4, 16 ) int -> x0 "impSpillLclRefs"
@@ -48,7 +48,7 @@
;* V37 tmp20 [V37 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.Span`1[ushort]>
; V38 tmp21 [V38,T55] ( 4, 4 ) int -> x0 "impSpillLclRefs"
;* V39 tmp22 [V39 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.Span`1[ushort]>
-; V40 tmp23 [V40,T27] ( 4, 8 ) int -> x0 "impSpillLclRefs"
+; V40 tmp23 [V40,T26] ( 4, 8 ) int -> x0 "impSpillLclRefs"
;* V41 tmp24 [V41 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V42 tmp25 [V42 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V43 tmp26 [V43 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
@@ -82,7 +82,7 @@
;* V71 tmp54 [V71 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V72 tmp55 [V72 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V73 tmp56 [V73 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V74 tmp57 [V74,T37] ( 6, 6 ) int -> x19 "Inlining Arg"
+; V74 tmp57 [V74,T36] ( 6, 6 ) int -> x19 "Inlining Arg"
;* V75 tmp58 [V75 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
; V76 tmp59 [V76,T130] ( 2, 1 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
;* V77 tmp60 [V77 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
@@ -130,19 +130,19 @@
;* V119 tmp102 [V119 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
;* V120 tmp103 [V120 ] ( 0, 0 ) int -> zero-ref
; V121 tmp104 [V121,T01] ( 11, 39 ) int -> x19 "Inlining Arg"
-; V122 tmp105 [V122,T06] ( 11, 32 ) long -> x22 "Inlining Arg"
+; V122 tmp105 [V122,T05] ( 11, 32 ) long -> x22 "Inlining Arg"
; V123 tmp106 [V123,T87] ( 2, 2 ) long -> x22 "dup spill"
;* V124 tmp107 [V124 ] ( 0, 0 ) struct ( 8) zero-ref "dup spill" <System.ValueTuple`2[uint,uint]>
-; V125 tmp108 [V125,T17] ( 3, 12 ) int -> x26 "Inline stloc first use temp"
+; V125 tmp108 [V125,T16] ( 3, 12 ) int -> x26 "Inline stloc first use temp"
;* V126 tmp109 [V126 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V127 tmp110 [V127 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V128 tmp111 [V128,T18] ( 3, 12 ) int -> x0 "Inline stloc first use temp"
+; V128 tmp111 [V128,T17] ( 3, 12 ) int -> x0 "Inline stloc first use temp"
;* V129 tmp112 [V129 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[uint,uint]>
;* V130 tmp113 [V130 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V131 tmp114 [V131 ] ( 0, 0 ) int -> zero-ref
;* V132 tmp115 [V132 ] ( 0, 0 ) long -> zero-ref
;* V133 tmp116 [V133 ] ( 0, 0 ) long -> zero-ref ptr
-; V134 tmp117 [V134,T29] ( 2, 8 ) ref -> x0
+; V134 tmp117 [V134,T28] ( 2, 8 ) ref -> x0
;* V135 tmp118 [V135 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V136 tmp119 [V136 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V137 tmp120 [V137 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -168,7 +168,7 @@
;* V157 tmp140 [V157 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V158 tmp141 [V158 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V159 tmp142 [V159 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V160 tmp143 [V160,T38] ( 6, 6 ) int -> x19 "Inlining Arg"
+; V160 tmp143 [V160,T37] ( 6, 6 ) int -> x19 "Inlining Arg"
;* V161 tmp144 [V161 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
; V162 tmp145 [V162,T132] ( 2, 1 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
;* V163 tmp146 [V163 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
@@ -216,19 +216,19 @@
;* V205 tmp188 [V205 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
;* V206 tmp189 [V206 ] ( 0, 0 ) int -> zero-ref
; V207 tmp190 [V207,T02] ( 11, 39 ) int -> x19 "Inlining Arg"
-; V208 tmp191 [V208,T07] ( 11, 32 ) long -> x22 "Inlining Arg"
+; V208 tmp191 [V208,T06] ( 11, 32 ) long -> x22 "Inlining Arg"
; V209 tmp192 [V209,T89] ( 2, 2 ) long -> x22 "dup spill"
;* V210 tmp193 [V210 ] ( 0, 0 ) struct ( 8) zero-ref "dup spill" <System.ValueTuple`2[uint,uint]>
-; V211 tmp194 [V211,T19] ( 3, 12 ) int -> x26 "Inline stloc first use temp"
+; V211 tmp194 [V211,T18] ( 3, 12 ) int -> x26 "Inline stloc first use temp"
;* V212 tmp195 [V212 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V213 tmp196 [V213 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V214 tmp197 [V214,T20] ( 3, 12 ) int -> x0 "Inline stloc first use temp"
+; V214 tmp197 [V214,T19] ( 3, 12 ) int -> x0 "Inline stloc first use temp"
;* V215 tmp198 [V215 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[uint,uint]>
;* V216 tmp199 [V216 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V217 tmp200 [V217 ] ( 0, 0 ) int -> zero-ref
;* V218 tmp201 [V218 ] ( 0, 0 ) long -> zero-ref
;* V219 tmp202 [V219 ] ( 0, 0 ) long -> zero-ref ptr
-; V220 tmp203 [V220,T30] ( 2, 8 ) ref -> x0
+; V220 tmp203 [V220,T29] ( 2, 8 ) ref -> x0
;* V221 tmp204 [V221 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V222 tmp205 [V222 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V223 tmp206 [V223 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -254,7 +254,7 @@
;* V243 tmp226 [V243 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V244 tmp227 [V244 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V245 tmp228 [V245 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V246 tmp229 [V246,T39] ( 6, 6 ) int -> x21 "Inlining Arg"
+; V246 tmp229 [V246,T38] ( 6, 6 ) int -> x21 "Inlining Arg"
;* V247 tmp230 [V247 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
; V248 tmp231 [V248,T134] ( 2, 1 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
;* V249 tmp232 [V249 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
@@ -298,17 +298,17 @@
;* V287 tmp270 [V287 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
;* V288 tmp271 [V288 ] ( 0, 0 ) int -> zero-ref
; V289 tmp272 [V289,T03] ( 11, 39 ) int -> x21 "Inlining Arg"
-; V290 tmp273 [V290,T08] ( 11, 32 ) long -> x25 "Inlining Arg"
+; V290 tmp273 [V290,T07] ( 11, 32 ) long -> x25 "Inlining Arg"
; V291 tmp274 [V291,T91] ( 2, 2 ) long -> x25 "dup spill"
;* V292 tmp275 [V292 ] ( 0, 0 ) struct ( 8) zero-ref "dup spill" <System.ValueTuple`2[uint,uint]>
;* V293 tmp276 [V293 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp"
-; V294 tmp277 [V294,T21] ( 3, 12 ) int -> x0 "Inline stloc first use temp"
+; V294 tmp277 [V294,T20] ( 3, 12 ) int -> x0 "Inline stloc first use temp"
;* V295 tmp278 [V295 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[uint,uint]>
;* V296 tmp279 [V296 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V297 tmp280 [V297 ] ( 0, 0 ) int -> zero-ref
;* V298 tmp281 [V298 ] ( 0, 0 ) long -> zero-ref
;* V299 tmp282 [V299 ] ( 0, 0 ) long -> zero-ref ptr
-; V300 tmp283 [V300,T31] ( 2, 8 ) ref -> x0
+; V300 tmp283 [V300,T30] ( 2, 8 ) ref -> x0
;* V301 tmp284 [V301 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V302 tmp285 [V302 ] ( 0, 0 ) int -> zero-ref
;* V303 tmp286 [V303 ] ( 0, 0 ) long -> zero-ref
@@ -322,7 +322,7 @@
;* V311 tmp294 [V311 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V312 tmp295 [V312 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V313 tmp296 [V313 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V314 tmp297 [V314,T40] ( 6, 6 ) int -> x21 "Inlining Arg"
+; V314 tmp297 [V314,T39] ( 6, 6 ) int -> x21 "Inlining Arg"
;* V315 tmp298 [V315 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
; V316 tmp299 [V316,T100] ( 3, 1.50) ref -> x19 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
;* V317 tmp300 [V317 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
@@ -362,17 +362,17 @@
;* V351 tmp334 [V351 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
;* V352 tmp335 [V352 ] ( 0, 0 ) int -> zero-ref
; V353 tmp336 [V353,T04] ( 11, 39 ) int -> x21 "Inlining Arg"
-; V354 tmp337 [V354,T09] ( 11, 32 ) long -> x20 "Inlining Arg"
+; V354 tmp337 [V354,T08] ( 11, 32 ) long -> x20 "Inlining Arg"
; V355 tmp338 [V355,T93] ( 2, 2 ) long -> x20 "dup spill"
;* V356 tmp339 [V356 ] ( 0, 0 ) struct ( 8) zero-ref "dup spill" <System.ValueTuple`2[uint,uint]>
;* V357 tmp340 [V357 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp"
-; V358 tmp341 [V358,T22] ( 3, 12 ) int -> x0 "Inline stloc first use temp"
+; V358 tmp341 [V358,T21] ( 3, 12 ) int -> x0 "Inline stloc first use temp"
;* V359 tmp342 [V359 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[uint,uint]>
;* V360 tmp343 [V360 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V361 tmp344 [V361 ] ( 0, 0 ) int -> zero-ref
;* V362 tmp345 [V362 ] ( 0, 0 ) long -> zero-ref
;* V363 tmp346 [V363 ] ( 0, 0 ) long -> zero-ref ptr
-; V364 tmp347 [V364,T32] ( 2, 8 ) ref -> x0
+; V364 tmp347 [V364,T31] ( 2, 8 ) ref -> x0
;* V365 tmp348 [V365 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V366 tmp349 [V366 ] ( 0, 0 ) int -> zero-ref
;* V367 tmp350 [V367 ] ( 0, 0 ) long -> zero-ref
@@ -381,15 +381,15 @@
;* V370 tmp353 [V370 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V371 tmp354 [V371 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V372 tmp355 [V372 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V373 tmp356 [V373,T23] ( 3, 12 ) int -> x28 "Inlining Arg"
-; V374 tmp357 [V374,T33] ( 2, 8 ) byref -> x27 "Inlining Arg"
+; V373 tmp356 [V373,T22] ( 3, 12 ) int -> x28 "Inlining Arg"
+; V374 tmp357 [V374,T32] ( 2, 8 ) byref -> x27 "Inlining Arg"
;* V375 tmp358 [V375 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V376 tmp359 [V376 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V377 tmp360 [V377 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V378 tmp361 [V378 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V379 tmp362 [V379 ] ( 0, 0 ) int -> zero-ref
;* V380 tmp363 [V380 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V381 tmp364 [V381,T34] ( 2, 8 ) int -> x26 "Inlining Arg"
+; V381 tmp364 [V381,T33] ( 2, 8 ) int -> x26 "Inlining Arg"
;* V382 tmp365 [V382 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V383 tmp366 [V383 ] ( 0, 0 ) int -> zero-ref
;* V384 tmp367 [V384 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp"
@@ -528,7 +528,7 @@
;* V517 tmp500 [V517 ] ( 0, 0 ) int -> zero-ref ptr "field V124.Item1 (fldOffset=0x0)" P-INDEP
;* V518 tmp501 [V518 ] ( 0, 0 ) int -> zero-ref ptr "field V124.Item2 (fldOffset=0x4)" P-INDEP
;* V519 tmp502 [V519 ] ( 0, 0 ) int -> zero-ref ptr "field V129.Item1 (fldOffset=0x0)" P-INDEP
-; V520 tmp503 [V520,T35] ( 2, 8 ) int -> x26 "field V129.Item2 (fldOffset=0x4)" P-INDEP
+; V520 tmp503 [V520,T34] ( 2, 8 ) int -> x26 "field V129.Item2 (fldOffset=0x4)" P-INDEP
; V521 tmp504 [V521,T104] ( 3, 1.50) byref -> x21 "field V152._reference (fldOffset=0x0)" P-INDEP
; V522 tmp505 [V522,T123] ( 3, 1.50) int -> x22 "field V152._length (fldOffset=0x8)" P-INDEP
;* V523 tmp506 [V523 ] ( 0, 0 ) byref -> zero-ref "field V157._reference (fldOffset=0x0)" P-INDEP
@@ -566,7 +566,7 @@
;* V555 tmp538 [V555 ] ( 0, 0 ) int -> zero-ref ptr "field V210.Item1 (fldOffset=0x0)" P-INDEP
;* V556 tmp539 [V556 ] ( 0, 0 ) int -> zero-ref ptr "field V210.Item2 (fldOffset=0x4)" P-INDEP
;* V557 tmp540 [V557 ] ( 0, 0 ) int -> zero-ref ptr "field V215.Item1 (fldOffset=0x0)" P-INDEP
-; V558 tmp541 [V558,T36] ( 2, 8 ) int -> x26 "field V215.Item2 (fldOffset=0x4)" P-INDEP
+; V558 tmp541 [V558,T35] ( 2, 8 ) int -> x26 "field V215.Item2 (fldOffset=0x4)" P-INDEP
; V559 tmp542 [V559,T107] ( 3, 1.50) byref -> x22 "field V238._reference (fldOffset=0x0)" P-INDEP
; V560 tmp543 [V560,T125] ( 3, 1.50) int -> x25 "field V238._length (fldOffset=0x8)" P-INDEP
;* V561 tmp544 [V561 ] ( 0, 0 ) byref -> zero-ref "field V243._reference (fldOffset=0x0)" P-INDEP
@@ -604,7 +604,7 @@
;* V593 tmp576 [V593 ] ( 0, 0 ) int -> zero-ref ptr "field V292.Item1 (fldOffset=0x0)" P-INDEP
;* V594 tmp577 [V594 ] ( 0, 0 ) int -> zero-ref ptr "field V292.Item2 (fldOffset=0x4)" P-INDEP
;* V595 tmp578 [V595 ] ( 0, 0 ) int -> zero-ref ptr "field V295.Item1 (fldOffset=0x0)" P-INDEP
-; V596 tmp579 [V596,T24] ( 3, 12 ) int -> x27 "field V295.Item2 (fldOffset=0x4)" P-INDEP
+; V596 tmp579 [V596,T23] ( 3, 12 ) int -> x27 "field V295.Item2 (fldOffset=0x4)" P-INDEP
; V597 tmp580 [V597,T110] ( 3, 1.50) byref -> x19 "field V308._reference (fldOffset=0x0)" P-INDEP
; V598 tmp581 [V598,T127] ( 3, 1.50) int -> x26 "field V308._length (fldOffset=0x8)" P-INDEP
;* V599 tmp582 [V599 ] ( 0, 0 ) byref -> zero-ref "field V311._reference (fldOffset=0x0)" P-INDEP
@@ -642,7 +642,7 @@
;* V631 tmp614 [V631 ] ( 0, 0 ) int -> zero-ref ptr "field V356.Item1 (fldOffset=0x0)" P-INDEP
;* V632 tmp615 [V632 ] ( 0, 0 ) int -> zero-ref ptr "field V356.Item2 (fldOffset=0x4)" P-INDEP
;* V633 tmp616 [V633 ] ( 0, 0 ) int -> zero-ref ptr "field V359.Item1 (fldOffset=0x0)" P-INDEP
-; V634 tmp617 [V634,T25] ( 3, 12 ) int -> x22 "field V359.Item2 (fldOffset=0x4)" P-INDEP
+; V634 tmp617 [V634,T24] ( 3, 12 ) int -> x22 "field V359.Item2 (fldOffset=0x4)" P-INDEP
; V635 tmp618 [V635,T56] ( 2, 4 ) byref -> x27 "field V372._reference (fldOffset=0x0)" P-INDEP
; V636 tmp619 [V636,T59] ( 2, 4 ) int -> x28 "field V372._length (fldOffset=0x8)" P-INDEP
;* V637 tmp620 [V637 ] ( 0, 0 ) byref -> zero-ref "field V375._reference (fldOffset=0x0)" P-INDEP
@@ -816,7 +816,7 @@ G_M44478_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=900000 {x20 x23
;; size=4 bbWeight=4 PerfScore 4.00
G_M44478_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=900000 {x20 x23}, byref, isz
cmp w25, #6
- beq G_M44478_IG15
+ beq G_M44478_IG16
;; size=8 bbWeight=2 PerfScore 3.00
G_M44478_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=900000 {x20 x23}, byref, isz
cmp w19, w25
@@ -826,34 +826,36 @@ G_M44478_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=900000 {x20 x23
add w0, w24, #1
sxtw w26, w0
cmp w24, #48
- bhs G_M44478_IG72
+ bhs G_M44478_IG73
mov w0, #58
strh w0, [x23, w24, UXTW #2]
mov w24, w26
;; size=28 bbWeight=2 PerfScore 9.00
G_M44478_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=900000 {x20 x23}, byref, isz
cmp w19, w25
- ccmp w21, #8, 0, le
...
+4 (+0.60%) : 21747.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
@@ -106,11 +106,11 @@ G_M62513_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
ldr w1, [x0, #0x14]
- cbz w1, G_M62513_IG18
+ cbz w1, G_M62513_IG19
ldr w1, [x0, #0x18]
cbnz w1, G_M62513_IG10
str w21, [x0, #0x18]
- b G_M62513_IG18
+ b G_M62513_IG19
;; size=28 bbWeight=0.50 PerfScore 6.00
G_M62513_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
@@ -134,7 +134,7 @@ G_M62513_IG10: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
; gcrRegs +[x0]
sub w1, w21, w1
cmp w1, w23
- ble G_M62513_IG18
+ ble G_M62513_IG19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #2 LSL #32
@@ -236,30 +236,33 @@ G_M62513_IG14: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
; gcrRegs +[x0]
ldr w20, [x0, #0x14]
cmp w20, #0
- ble G_M62513_IG15
+ ble G_M62513_IG16
sub w1, w24, #1
sxtw w22, w1
cmp w24, #0
bgt G_M62513_IG12
;; size=32 bbWeight=4 PerfScore 36.00
-G_M62513_IG15: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M62513_IG15: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs -[x21]
- cmp w20, #0
- bgt G_M62513_IG16
- mov w1, wzr
b G_M62513_IG17
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M62513_IG16: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ cmp w20, #0
+ bgt G_M62513_IG17
+ mov w1, wzr
+ b G_M62513_IG18
;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M62513_IG16: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M62513_IG17: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
asr w1, w23, #31
and w1, w1, #3
add w1, w1, w23
ldr w2, [x0, #0x18]
add w1, w2, w1, ASR #2
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M62513_IG17: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
str w1, [x0, #0x18]
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M62513_IG19: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldrb w1, [fp, #0x20] // [V08 loc3]
cbz w1, G_M62513_IG03
; GC ptr vars -{V00 V01}
@@ -268,7 +271,7 @@ G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
; gcr arg pop 0
b G_M62513_IG03
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M62513_IG19: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M62513_IG20: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01}
stp fp, lr, [sp, #-0x50]!
stp x19, x20, [sp, #0x20]
@@ -277,9 +280,9 @@ G_M62513_IG19: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=000
add x3, fp, #96
str x3, [sp, #0x18]
;; size=24 bbWeight=0 PerfScore 0.00
-G_M62513_IG20: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M62513_IG21: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w0, [fp, #0x20] // [V08 loc3]
- cbz w0, G_M62513_IG21
+ cbz w0, G_M62513_IG22
ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
; GC ptr vars -{V00 V01}
@@ -287,7 +290,7 @@ G_M62513_IG20: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=000
; gcrRegs -[x0]
; gcr arg pop 0
;; size=16 bbWeight=0 PerfScore 0.00
-G_M62513_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M62513_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
@@ -295,7 +298,7 @@ G_M62513_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 668, prolog size 48, PerfScore 215.00, instruction count 167, allocated bytes for code 668 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
+; Total bytes of code 672, prolog size 48, PerfScore 215.50, instruction count 168, allocated bytes for code 672 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
; ============================================================
Unwind Info:
@@ -306,7 +309,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 152 (0x00098) Actual length = 608 (0x000260)
+ Function Length : 153 (0x00099) Actual length = 612 (0x000264)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -343,4 +346,4 @@ Unwind Info:
*************** EH table for System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M62513_IG05..G_M62513_IG18) handled by [G_M62513_IG19..END) (fault)
+EH#0: try [G_M62513_IG05..G_M62513_IG19) handled by [G_M62513_IG20..END) (fault)
+16 (+1.39%) : 11062.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
@@ -11,10 +11,10 @@
; V00 arg0 [V00,T07] ( 22, 23 ) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[System.String]>
; V01 loc0 [V01,T19] ( 7, 3.50) ref -> x20 class-hnd exact single-def <System.String>
; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [fp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 39,149.08) int -> x22
+; V03 loc2 [V03,T00] ( 41,183.08) int -> x22
; V04 loc3 [V04,T22] ( 4, 2 ) int -> x0
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
-; V06 loc5 [V06,T06] ( 9, 25.50) int -> x21
+; V06 loc5 [V06,T06] ( 9, 25.50) int -> x23
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V09 tmp2 [V09,T04] ( 5, 28 ) ref -> x0 class-hnd exact "impAppendStmt" <System.String>
@@ -44,12 +44,12 @@
; V33 cse0 [V33,T14] ( 3, 10 ) int -> x0 "CSE - aggressive"
; V34 cse1 [V34,T28] ( 3, 1.50) long -> x24 "CSE - moderate"
; V35 cse2 [V35,T31] ( 2, 1 ) int -> x12 "CSE - moderate"
-; V36 cse3 [V36,T01] ( 3, 48 ) long -> x1 "CSE - aggressive"
+; V36 cse3 [V36,T02] ( 3, 48 ) long -> x1 "CSE - aggressive"
; V37 cse4 [V37,T11] ( 3, 12 ) long -> x1 "CSE - aggressive"
; V38 cse5 [V38,T12] ( 3, 12 ) int -> x2 "CSE - aggressive"
; V39 cse6 [V39,T10] ( 3, 12 ) ref -> x1 "CSE - aggressive"
-; V40 cse7 [V40,T03] ( 15, 30.54) int -> x21 "CSE - aggressive"
-; V41 cse8 [V41,T02] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
+; V40 cse7 [V40,T01] ( 17, 64.54) int -> x21 "CSE - aggressive"
+; V41 cse8 [V41,T03] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
; V42 cse9 [V42,T27] ( 3, 1.50) ref -> x1 "CSE - aggressive"
; V43 cse10 [V43,T17] ( 2, 8 ) int -> x3 "CSE - aggressive"
; V44 cse11 [V44,T13] ( 3, 11.88) int -> x0 "CSE - aggressive"
@@ -77,19 +77,19 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=56 bbWeight=1 PerfScore 10.50
G_M28069_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x10]
- cbz w0, G_M28069_IG28
+ cbz w0, G_M28069_IG27
;; size=8 bbWeight=1 PerfScore 4.00
G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w1, #0
- bls G_M28069_IG30
+ bls G_M28069_IG29
ldr x20, [x0, #0x10]
; gcrRegs +[x20]
ldr w21, [x20, #0x08]
cmp w21, #100
- bgt G_M28069_IG28
+ bgt G_M28069_IG27
add w0, w21, #2
; gcrRegs -[x0]
mov w1, #2
@@ -116,109 +116,107 @@ G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
mov x1, sp
;; size=8 bbWeight=0.50 PerfScore 0.50
G_M28069_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w0, #31, G_M28069_IG31
+ tbnz w0, #31, G_M28069_IG30
str x1, [fp, #-0x48] // [V23 tmp16]
str w0, [fp, #-0x40] // [V24 tmp17]
mov w22, wzr
cmp w21, #0
- ble G_M28069_IG15
+ ble G_M28069_IG14
add x23, x20, #12
; byrRegs +[x23]
;; size=28 bbWeight=0.50 PerfScore 2.75
G_M28069_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldrh w0, [x23, w22, UXTW #2]
cmp w0, #39
- bne G_M28069_IG11
+ bne G_M28069_IG10
;; size=12 bbWeight=4 PerfScore 18.00
G_M28069_IG08: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V24 tmp17]
cmp w22, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
ubfiz x1, x22, #1, #32
add x0, x0, x1
+ cmp w22, w21
+ bhs G_M28069_IG29
ldrh w1, [x23, x1]
strh w1, [x0]
add w22, w22, #1
cmp w21, w22
- ble G_M28069_IG09
+ ble G_M28069_IG27
+ cmp w22, w21
+ bhs G_M28069_IG29
ldrh w0, [x23, w22, UXTW #2]
; byrRegs -[x0]
cmp w0, #39
bne G_M28069_IG08
- ;; size=56 bbWeight=16 PerfScore 280.00
-G_M28069_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
- cmp w21, w22
- bgt G_M28069_IG12
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19-x20]
- ; byrRegs -[x23]
- b G_M28069_IG28
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
- ; gcrRegs +[x19-x20]
- ; byrRegs +[x23]
+ ;; size=72 bbWeight=16 PerfScore 328.00
+G_M28069_IG09: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref
+ b G_M28069_IG11
+ ;; size=4 bbWeight=4 PerfScore 4.00
+G_M28069_IG10: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
cmp w0, #121
- beq G_M28069_IG14
+ beq G_M28069_IG13
;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V24 tmp17]
cmp w22, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
ubfiz x1, x22, #1, #32
add x0, x0, x1
+ cmp w22, w21
+ bhs G_M28069_IG29
ldrh w1, [x23, x1]
strh w1, [x0]
add w22, w22, #1
cmp w21, w22
bgt G_M28069_IG07
- ;; size=44 bbWeight=4 PerfScore 52.00
-G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=52 bbWeight=4 PerfScore 58.00
+G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x23]
- b G_M28069_IG15
+ b G_M28069_IG14
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #-0x40] // [V24 tmp17]
cmp w22, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
mov w1, #121
strh w1, [x0, w22, UXTW #2]
;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
sub w0, w21, #1
cmp w0, w22
- ble G_M28069_IG28
+ ble G_M28069_IG27
add w0, w22, #1
cmp w0, w21
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
add x23, x20, #12
; byrRegs +[x23]
add w0, w22, #1
ubfiz x24, x0, #1, #32
ldrh w0, [x23, x24]
cmp w0, #121
- bne G_M28069_IG28
+ bne G_M28069_IG27
add w25, w22, #2
cmp w21, w25
- ble G_M28069_IG16
+ ble G_M28069_IG15
cmp w25, w21
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldrh w0, [x23, w25, UXTW #2]
cmp w0, #121
- beq G_M28069_IG28
+ beq G_M28069_IG27
;; size=80 bbWeight=0.50 PerfScore 9.25
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w0, w22, #3
ldr w1, [fp, #-0x40] // [V24 tmp17]
cmp w0, w1
- blt G_M28069_IG17
+ blt G_M28069_IG16
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -232,11 +230,11 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
; gcrRegs -[x0]
; gcr arg pop 0
;; size=52 bbWeight=0.50 PerfScore 5.75
-G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w0, w22, #1
ldr w1, [fp, #-0x40] // [V24 tmp17]
cmp w0, w1
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
mov w1, #121
@@ -244,7 +242,7 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
ldr w0, [fp, #-0x40] // [V24 tmp17]
; byrRegs -[x0]
cmp w25, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
strh w1, [x0, w25, UXTW #2]
@@ -252,7 +250,7 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
; byrRegs -[x0]
ldr w1, [fp, #-0x40] // [V24 tmp17]
cmp w0, w1
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
add w1, w22, #3
@@ -260,15 +258,15 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
strh w2, [x0, w1, UXTW #2]
sxtw w22, w25
cmp w21, w22
- ble G_M28069_IG21
- tbnz w22, #31, G_M28069_IG20
+ ble G_M28069_IG20
+ tbnz w22, #31, G_M28069_IG19
;; size=96 bbWeight=0.50 PerfScore 12.50
-G_M28069_IG18: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0]
add w0, w22, #2
ldr w1, [fp, #-0x40] // [V24 tmp17]
cmp w0, w1
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x1, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x1]
ubfiz x0, x0, #1, #32
@@ -279,32 +277,32 @@ G_M28069_IG18: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800
strh w1, [x0]
add w22, w22, #1
...
coreclr_tests.run.osx.arm64.checked.mch
-36 (-21.95%) : 492806.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -11,12 +11,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
; V02 loc0 [V02,T00] ( 7, 24.50) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> x5 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x4 "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> x6 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> x5 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -33,51 +35,39 @@ G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x2]
cmp w1, w3
blt G_M264_IG11
- b G_M264_IG09
+ b G_M264_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
; byrRegs +[x0 x2]
sxtw w4, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1
- sxtw w4, w5
- tbnz w4, #31, G_M264_IG06
+ sub w4, w4, #1
+ tbnz w4, #31, G_M264_IG09
cmp w4, w1
bhs G_M264_IG13
- ubfiz x6, x4, #2, #32
- ldr w7, [x0, x6]
+ ubfiz x5, x4, #2, #32
+ ldr w6, [x0, x5]
cmp w4, w3
bhs G_M264_IG13
- ldr w6, [x2, x6]
- cmp w7, w6
+ ldr w5, [x2, x5]
+ cmp w6, w5
beq G_M264_IG05
- ;; size=48 bbWeight=4 PerfScore 54.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- tbz w5, #31, G_M264_IG08
- mov w0, wzr
- ; byrRegs -[x0]
+ ;; size=44 bbWeight=4 PerfScore 52.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0 x2]
+ cmp w5, w6
+ bhi G_M264_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref, isz
- ; byrRegs +[x0]
- cmp w5, w1
- bhs G_M264_IG13
- ubfiz x6, x5, #2, #32
- ldr w0, [x0, x6]
- ; byrRegs -[x0]
- cmp w5, w3
- bhs G_M264_IG13
- ldr w1, [x2, x6]
- cmp w0, w1
- blo G_M264_IG11
- ;; size=36 bbWeight=0.50 PerfScore 5.75
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
- mov w0, #1
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
@@ -96,7 +86,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 8, PerfScore 68.50, instruction count 41, allocated bytes for code 164 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 128, prolog size 8, PerfScore 61.00, instruction count 32, allocated bytes for code 128 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -107,7 +97,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-7.04%) : 492824.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
@@ -7,20 +7,21 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T05] ( 6, 22 ) int -> x0
-; V01 arg1 [V01,T06] ( 6, 19 ) int -> x19 single-def
-; V02 arg2 [V02,T08] ( 5, 11 ) ref -> x20 class-hnd single-def <int[]>
-; V03 loc0 [V03,T00] ( 17,112 ) int -> x23
-; V04 loc1 [V04,T01] ( 13,100 ) int -> x1
+; V00 arg0 [V00,T06] ( 6, 22 ) int -> x0
+; V01 arg1 [V01,T07] ( 6, 19 ) int -> x19 single-def
+; V02 arg2 [V02,T09] ( 5, 11 ) ref -> x20 class-hnd single-def <int[]>
+; V03 loc0 [V03,T00] ( 16,110 ) int -> x23
+; V04 loc1 [V04,T01] ( 10, 94 ) int -> x1
; V05 loc2 [V05,T04] ( 4, 38 ) int -> x3
-; V06 loc3 [V06,T09] ( 4, 8 ) int -> x4
+; V06 loc3 [V06,T10] ( 4, 8 ) int -> x5
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T10] ( 2, 8 ) int -> x5 "Strict ordering of exceptions for Array store"
-; V09 tmp2 [V09,T07] ( 2, 16 ) int -> x0 "arg temp"
-; V10 cse0 [V10,T11] ( 3, 7 ) long -> x22 hoist "CSE - aggressive"
-; V11 cse1 [V11,T12] ( 3, 6 ) long -> x1 "CSE - aggressive"
-; V12 cse2 [V12,T02] ( 11, 51 ) byref -> x21 hoist "CSE - aggressive"
-; V13 cse3 [V13,T03] ( 7, 46 ) int -> x2 "CSE - aggressive"
+; V08 tmp1 [V08,T11] ( 2, 8 ) int -> x4 "Strict ordering of exceptions for Array store"
+; V09 tmp2 [V09,T08] ( 2, 16 ) int -> x0 "arg temp"
+; V10 cse0 [V10,T05] ( 3, 34 ) int -> x4 "CSE - aggressive"
+; V11 cse1 [V11,T12] ( 3, 7 ) long -> x22 hoist "CSE - aggressive"
+; V12 cse2 [V12,T13] ( 3, 6 ) long -> x1 "CSE - aggressive"
+; V13 cse3 [V13,T02] ( 10, 49 ) byref -> x21 hoist "CSE - aggressive"
+; V14 cse4 [V14,T03] ( 6, 44 ) int -> x2 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -72,7 +73,7 @@ G_M36260_IG08: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=200000 {x2
;; size=4 bbWeight=8 PerfScore 4.00
G_M36260_IG09: ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
cmp w1, w23
- ble G_M36260_IG10
+ ble G_M36260_IG11
cmp w1, w2
bhs G_M36260_IG15
ldr w4, [x21, w1, UXTW #2]
@@ -80,17 +81,12 @@ G_M36260_IG09: ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=200000 {x
bge G_M36260_IG08
;; size=28 bbWeight=16 PerfScore 120.00
G_M36260_IG10: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
- cmp w23, w1
- bge G_M36260_IG11
cmp w23, w2
bhs G_M36260_IG15
- ldr w4, [x21, w23, UXTW #2]
- cmp w1, w2
- bhs G_M36260_IG15
- ldr w5, [x21, w1, UXTW #2]
- str w5, [x21, w23, UXTW #2]
- str w4, [x21, w1, UXTW #2]
- ;; size=40 bbWeight=2 PerfScore 25.00
+ ldr w5, [x21, w23, UXTW #2]
+ str w4, [x21, w23, UXTW #2]
+ str w5, [x21, w1, UXTW #2]
+ ;; size=20 bbWeight=2 PerfScore 13.00
G_M36260_IG11: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
cmp w23, w1
blt G_M36260_IG06
@@ -101,9 +97,9 @@ G_M36260_IG12: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=200000 {x2
cmp w23, w2
bhs G_M36260_IG15
ubfiz x1, x23, #2, #32
- ldr w4, [x21, x1]
+ ldr w5, [x21, x1]
str w3, [x21, x1]
- str w4, [x21, x22]
+ str w5, [x21, x22]
;; size=24 bbWeight=2 PerfScore 15.00
G_M36260_IG13: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref
sub w1, w23, #1
@@ -134,7 +130,7 @@ G_M36260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 284, prolog size 28, PerfScore 399.00, instruction count 71, allocated bytes for code 284 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
+; Total bytes of code 264, prolog size 28, PerfScore 387.00, instruction count 66, allocated bytes for code 264 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
; ============================================================
Unwind Info:
@@ -145,7 +141,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
+ Function Length : 66 (0x00042) Actual length = 264 (0x000108)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-6.36%) : 493341.dasm - Span.SpanBench:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
@@ -10,11 +10,11 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[int]>
;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref single-def
-; V02 loc1 [V02,T10] ( 3, 1.50) int -> x0 single-def
-; V03 loc2 [V03,T00] ( 19, 26.50) int -> x21
-; V04 loc3 [V04,T01] ( 13, 23.50) int -> x1
+; V02 loc1 [V02,T11] ( 3, 1.50) int -> x0 single-def
+; V03 loc2 [V03,T00] ( 18, 26 ) int -> x21
+; V04 loc3 [V04,T01] ( 10, 22 ) int -> x1
; V05 loc4 [V05,T04] ( 4, 9 ) int -> x3 single-def
-; V06 loc5 [V06,T08] ( 4, 2 ) int -> x4
+; V06 loc5 [V06,T09] ( 4, 2 ) int -> x5
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
@@ -22,25 +22,26 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V12 tmp5 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp6 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp7 [V14,T05] ( 4, 4 ) int -> x0 "Inlining Arg"
+; V14 tmp7 [V14,T06] ( 4, 4 ) int -> x0 "Inlining Arg"
;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
-; V16 tmp9 [V16,T07] ( 3, 3 ) int -> x20 "Inlining Arg"
-; V17 tmp10 [V17,T09] ( 2, 2 ) byref -> x19 single-def "Inlining Arg"
+; V16 tmp9 [V16,T08] ( 3, 3 ) int -> x20 "Inlining Arg"
+; V17 tmp10 [V17,T10] ( 2, 2 ) byref -> x19 single-def "Inlining Arg"
;* V18 tmp11 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V20 tmp13 [V20,T02] ( 13, 14 ) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V21 tmp14 [V21,T03] ( 11, 13.50) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V20 tmp13 [V20,T02] ( 12, 13.50) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V21 tmp14 [V21,T03] ( 10, 13 ) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V22 tmp15 [V22 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp16 [V23 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
;* V24 tmp17 [V24 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V25 tmp18 [V25 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-;* V26 tmp19 [V26,T16] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T14] ( 2, 1 ) int -> x1 single-def "field V10._length (fldOffset=0x8)" P-INDEP
-; V28 tmp21 [V28,T13] ( 2, 1 ) byref -> x0 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
-; V29 tmp22 [V29,T15] ( 2, 1 ) int -> x1 single-def "field V15._length (fldOffset=0x8)" P-INDEP
-; V30 cse0 [V30,T11] ( 3, 1.50) long -> x0 "CSE - moderate"
-; V31 cse1 [V31,T12] ( 3, 1.50) long -> x2 "CSE - moderate"
-; V32 cse2 [V32,T06] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
+;* V26 tmp19 [V26,T17] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
+; V27 tmp20 [V27,T15] ( 2, 1 ) int -> x1 single-def "field V10._length (fldOffset=0x8)" P-INDEP
+; V28 tmp21 [V28,T14] ( 2, 1 ) byref -> x0 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+; V29 tmp22 [V29,T16] ( 2, 1 ) int -> x1 single-def "field V15._length (fldOffset=0x8)" P-INDEP
+; V30 cse0 [V30,T05] ( 3, 8.50) int -> x4 "CSE - aggressive"
+; V31 cse1 [V31,T12] ( 3, 1.50) long -> x0 "CSE - moderate"
+; V32 cse2 [V32,T13] ( 3, 1.50) long -> x2 "CSE - moderate"
+; V33 cse3 [V33,T07] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
;
; Lcl frame size = 8
@@ -93,7 +94,7 @@ G_M11915_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M11915_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w1, w21
- ble G_M11915_IG10
+ ble G_M11915_IG11
cmp w1, w20
bhs G_M11915_IG16
ldr w4, [x19, w1, UXTW #2]
@@ -101,22 +102,13 @@ G_M11915_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
bge G_M11915_IG08
;; size=28 bbWeight=4 PerfScore 30.00
G_M11915_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- cmp w21, w1
- bge G_M11915_IG11
cmp w21, w20
bhs G_M11915_IG16
- ldr w4, [x19, w21, UXTW #2]
- ubfiz x5, x21, #2, #32
- add x5, x19, x5
- ; byrRegs +[x5]
- cmp w1, w20
- bhs G_M11915_IG16
- ldr w6, [x19, w1, UXTW #2]
- str w6, [x5]
- str w4, [x19, w1, UXTW #2]
- ;; size=48 bbWeight=0.50 PerfScore 7.00
+ ldr w5, [x19, w21, UXTW #2]
+ str w4, [x19, w21, UXTW #2]
+ str w5, [x19, w1, UXTW #2]
+ ;; size=20 bbWeight=0.50 PerfScore 3.25
G_M11915_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- ; byrRegs -[x5]
cmp w21, w1
blt G_M11915_IG06
cmp w21, w0
@@ -124,9 +116,9 @@ G_M11915_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
cmp w21, w20
bhs G_M11915_IG16
ubfiz x0, x21, #2, #32
- ldr w4, [x19, x0]
+ ldr w5, [x19, x0]
str w3, [x19, x0]
- str w4, [x19, x2]
+ str w5, [x19, x2]
;; size=40 bbWeight=0.50 PerfScore 5.25
G_M11915_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w21, w20
@@ -208,7 +200,7 @@ G_M11915_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 440, prolog size 24, PerfScore 107.25, instruction count 110, allocated bytes for code 440 (MethodHash=8081d174) for method Span.SpanBench:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
+; Total bytes of code 412, prolog size 24, PerfScore 103.50, instruction count 103, allocated bytes for code 412 (MethodHash=8081d174) for method Span.SpanBench:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
; ============================================================
Unwind Info:
@@ -219,7 +211,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 110 (0x0006e) Actual length = 440 (0x0001b8)
+ Function Length : 103 (0x00067) Actual length = 412 (0x00019c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+0.72%) : 291657.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 2
; 8 inlinees with PGO data; 12 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
@@ -61,7 +61,7 @@
; V49 tmp41 [V49,T14] ( 3, 3.77) int -> x26 "Inlining Arg"
; V50 tmp42 [V50,T21] ( 2, 2.75) long -> x0 "Inlining Arg"
;* V51 tmp43 [V51 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V52 tmp44 [V52,T20] ( 3, 2.75) long -> x1 "Inlining Arg"
+; V52 tmp44 [V52,T20] ( 3, 2.75) long -> x3 "Inlining Arg"
; V53 tmp45 [V53,T18] ( 3, 3.44) long -> x2 "spilling arg"
; V54 tmp46 [V54,T26] ( 3, 2.04) ref -> x1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
;* V55 tmp47 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling ret_expr" <System.Buffers.SharedArrayPool`1[ushort]>
@@ -124,13 +124,13 @@ G_M30652_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov w21, w4
;; size=92 bbWeight=1 PerfScore 16.50
G_M30652_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
- cbz x20, G_M30652_IG37
+ cbz x20, G_M30652_IG38
ldr w24, [x20, #0x08]
;; size=8 bbWeight=1 PerfScore 4.00
G_M30652_IG03: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w1, w24, w22, LSL #3
cmp w1, #0xD1FFAB1E
- bgt G_M30652_IG38
+ bgt G_M30652_IG39
ldp x3, xzr, [sp], #0xD1FFAB1E
mov x3, sp
str xzr, [fp, #-0x88] // [V06 loc2]
@@ -164,7 +164,7 @@ G_M30652_IG05: ; bbWeight=1, isz, extend
ldr w24, [fp, #-0x60] // [V05 loc1+0x08]
ldr w0, [fp, #-0x50] // [V05 loc1+0x18]
cmp w24, w0
- bhi G_M30652_IG39
+ bhi G_M30652_IG40
ldr x20, [fp, #-0x58] // [V05 loc1+0x10]
; byrRegs +[x20]
tbz w24, #31, G_M30652_IG06
@@ -204,14 +204,14 @@ G_M30652_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20
; gcrRegs -[x2]
mov w3, #0xD1FFAB1E
tst w2, w3
- beq G_M30652_IG40
+ beq G_M30652_IG41
cmp w1, #4
- ble G_M30652_IG23
+ ble G_M30652_IG21
;; size=36 bbWeight=1 PerfScore 10.50
G_M30652_IG07: ; bbWeight=0.68, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
; byrRegs -[x0]
ldrb w0, [x19, #0x5B]
- cbnz w0, G_M30652_IG41
+ cbnz w0, G_M30652_IG42
;; size=8 bbWeight=0.68 PerfScore 2.72
G_M30652_IG08: ; bbWeight=0.68, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
ldr x23, [x19, #0x40]
@@ -219,7 +219,7 @@ G_M30652_IG08: ; bbWeight=0.68, gcrefRegs=80000 {x19}, byrefRegs=100000 {
str x20, [fp, #-0x90] // [V27 tmp19]
ldr w0, [x23, #0x08]
cmp w0, #0
- bls G_M30652_IG36
+ bls G_M30652_IG37
add x0, x23, #16
; byrRegs +[x0]
str x0, [fp, #-0x98] // [V29 tmp21]
@@ -233,7 +233,7 @@ G_M30652_IG09: ; bbWeight=0.69, gcrefRegs=880000 {x19 x23}, byrefRegs=000
; byrRegs -[x0 x20 x22]
ldr w0, [x23, #0x08]
cmp w0, w25
- beq G_M30652_IG29
+ beq G_M30652_IG20
;; size=12 bbWeight=0.69 PerfScore 3.10
G_M30652_IG10: ; bbWeight=0.69, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
ldr w0, [x23, #0x08]
@@ -247,27 +247,23 @@ G_M30652_IG11: ; bbWeight=0.51, gcrefRegs=880000 {x19 x23}, byrefRegs=000
G_M30652_IG12: ; bbWeight=0.69, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
lsl w0, w27, #1
sbfiz x1, x25, #1, #32
- add x1, x22, x1
+ add x3, x22, x1
sxtw x0, w0
cmp x0, #0
- blt G_M30652_IG35
+ blt G_M30652_IG36
mov x2, x0
cmp x2, #18
bne G_M30652_IG15
;; size=36 bbWeight=0.69 PerfScore 4.47
G_M30652_IG13: ; bbWeight=0.34, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
- ldr q16, [x20]
- ldr q17, [x20, #0x02]
- str q16, [x1]
- str q17, [x1, #0x02]
- b G_M30652_IG16
- ;; size=20 bbWeight=0.34 PerfScore 3.10
+ b G_M30652_IG31
+ ;; size=4 bbWeight=0.34 PerfScore 0.34
G_M30652_IG14: ; bbWeight=0.18, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
sxtw w27, w24
b G_M30652_IG12
;; size=8 bbWeight=0.18 PerfScore 0.27
G_M30652_IG15: ; bbWeight=0.34, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
- mov x0, x1
+ mov x0, x3
mov x1, x20
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
@@ -294,105 +290,13 @@ G_M30652_IG17: ; bbWeight=0.68, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
;; size=8 bbWeight=0.68 PerfScore 1.36
G_M30652_IG18: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
tst w21, #255
- bne G_M30652_IG31
+ beq G_M30652_IG27
;; size=8 bbWeight=1 PerfScore 1.50
-G_M30652_IG19: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldrb w0, [x19, #0x58]
- cbnz w0, G_M30652_IG30
- ;; size=8 bbWeight=1 PerfScore 4.00
-G_M30652_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19]
- str xzr, [fp, #-0x90] // [V27 tmp19]
- str xzr, [fp, #-0x98] // [V29 tmp21]
- ldr x1, [fp, #-0x68] // [V05 loc1]
- ; gcrRegs +[x1]
- stp xzr, xzr, [fp, #-0x68]
- stp xzr, xzr, [fp, #-0x58]
- cbnz x1, G_M30652_IG28
- ;; size=24 bbWeight=1 PerfScore 7.00
-G_M30652_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x1]
- movz xip0, #0xD1FFAB1E
- movk xip0, #0xD1FFAB1E LSL #16
- movk xip0, #0xD1FFAB1E LSL #32
- movk xip0, #0xD1FFAB1E LSL #48
- ldr xip1, [fp, #-0xA0] // [V78 GsCookie]
- cmp xip0, xip1
- beq G_M30652_IG22
- bl CORINFO_HELP_FAIL_FAST
- ; gcr arg pop 0
- ;; size=32 bbWeight=1 PerfScore 6.50
-G_M30652_IG22: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- sub sp, fp, #160
- ldp fp, lr, [sp, #0xA0]
- ldr x27, [sp, #0x98]
- ldp x25, x26, [sp, #0x88]
- ldp x23, x24, [sp, #0x78]
- ldp x21, x22, [sp, #0x68]
- ldp x19, x20, [sp, #0x58]
- add sp, sp, #176
- ret lr
- ;; size=36 bbWeight=1 PerfScore 9.00
-G_M30652_IG23: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100001 {x0 x20}, gcvars, byref, isz
- ; gcrRegs +[x19]
- ; byrRegs +[x0 x20]
- ldp w3, w2, [x19, #0x50]
- sub w2, w2, w3
- cmp w2, w1
- blt G_M30652_IG07
- ;; size=16 bbWeight=0.32 PerfScore 1.61
-G_M30652_IG24: ; bbWeight=0.32, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
- ; byrRegs -[x20]
- mov w2, wzr
- cmp w1, #0
- ble G_M30652_IG18
- ;; size=12 bbWeight=0.32 PerfScore 0.64
-G_M30652_IG25: ; bbWeight=0.24, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref
- ldr x23, [x19, #0x40]
+G_M30652_IG19: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M30652_IG34
+ ;; size=4 bbWeight=0.00 PerfScore 0.00
+G_M30652_IG20: ; bbWeight=0.01, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; gcrRegs +[x23]
- ;; size=4 bbWeight=0.24 PerfScore 0.71
-G_M30652_IG26: ; bbWeight=0.89, gcrefRegs=880000 {x19 x23}, byrefRegs=0001 {x0}, byref, isz
- mov x3, x23
- ; gcrRegs +[x3]
- ldr w4, [x19, #0x50]
- add w5, w4, #1
- str w5, [x19, #0x50]
- ldrh w5, [x0, w2, UXTW #2]
- ldr w6, [x3, #0x08]
- cmp w4, w6
- bhs G_M30652_IG36
- add x3, x3, #16
- ; gcrRegs -[x3]
- ; byrRegs +[x3]
- strh w5, [x3, w4, UXTW #2]
- add w2, w2, #1
- cmp w2, w1
- blt G_M30652_IG26
- ;; size=52 bbWeight=0.89 PerfScore 14.31
-G_M30652_IG27: ; bbWeight=0.24, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x23]
- ; byrRegs -[x0 x3]
- b G_M30652_IG18
- ;; size=4 bbWeight=0.24 PerfScore 0.24
-G_M30652_IG28: ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19] +[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #2 LSL #32
- ldr x0, [x0]
- ; gcrRegs +[x0]
- mov w2, wzr
- movz x3, #104 // code for <unknown method>
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x0-x1]
- ; gcr arg pop 0
- b G_M30652_IG21
- ;; size=44 bbWeight=0.04 PerfScore 0.51
-G_M30652_IG29: ; bbWeight=0.01, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x19 x23]
mov x0, x19
; gcrRegs +[x0]
mov w1, wzr
@@ -407,8 +311,136 @@ G_M30652_IG29: ; bbWeight=0.01, gcrefRegs=880000 {x19 x23}, byrefRegs=000
mov w25, wzr
b G_M30652_IG10
;; size=40 bbWeight=0.01 PerfScore 0.12
-G_M30652_IG30: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M30652_IG21: ; bbWeight=0.32, gcrefRegs=80000 {x19}, byrefRegs=100001 {x0 x20}, byref, isz
; gcrRegs -[x23]
+ ; byrRegs +[x0 x20]
+ ldp w3, w2, [x19, #0x50]
+ sub w2, w2, w3
+ cmp w2, w1
+ blt G_M30652_IG07
+ ;; size=16 bbWeight=0.32 PerfScore 1.61
+G_M30652_IG22: ; bbWeight=0.32, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
+ ; byrRegs -[x20]
+ mov w2, wzr
+ cmp w1, #0
+ ble G_M30652_IG18
+ ;; size=12 bbWeight=0.32 PerfScore 0.64
+G_M30652_IG23: ; bbWeight=0.24, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref
+ ldr x23, [x19, #0x40]
+ ; gcrRegs +[x23]
+ ;; size=4 bbWeight=0.24 PerfScore 0.71
+G_M30652_IG24: ; bbWeight=0.89, gcrefRegs=880000 {x19 x23}, byrefRegs=0001 {x0}, byref, isz
+ mov x3, x23
+ ; gcrRegs +[x3]
+ ldr w4, [x19, #0x50]
...
+8 (+0.75%) : 400371.dasm - System.Net.Sockets.SocketPal:TryCompleteSendTo(System.Net.Sockets.SafeSocketHandle,System.ReadOnlySpan1[ubyte],System.Collections.Generic.IList
1[System.ArraySegment1[ubyte]],byref,byref,byref,int,System.ReadOnlySpan
1[ubyte],byref,byref):ubyte (FullOpts)
@@ -10,7 +10,7 @@
;
; V00 arg0 [V00,T00] ( 13, 53 ) ref -> x19 class-hnd single-def <System.Net.Sockets.SafeSocketHandle>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
-; V02 arg2 [V02,T06] ( 7, 22 ) ref -> x22 class-hnd single-def <System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]]>
+; V02 arg2 [V02,T07] ( 6, 18 ) ref -> x23 class-hnd single-def <System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]]>
; V03 arg3 [V03,T19] ( 4, 10 ) byref -> x27 single-def
; V04 arg4 [V04,T01] ( 10, 34 ) byref -> x20 single-def
; V05 arg5 [V05,T02] ( 10, 34 ) byref -> x21 single-def
@@ -27,7 +27,7 @@
; V16 OutArgs [V16 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V17 tmp1 [V17,T35] ( 3, 3 ) long -> registers
; V18 tmp2 [V18,T12] ( 4, 16 ) int -> x0
-; V19 tmp3 [V19,T09] ( 4, 20 ) int -> x0
+; V19 tmp3 [V19,T09] ( 4, 20 ) int -> registers
; V20 tmp4 [V20,T05] ( 2, 32 ) long -> x0 "impAppendStmt"
; V21 tmp5 [V21,T15] ( 2, 16 ) int -> [fp+0x44] spill-single-def "non-inline candidate call"
; V22 tmp6 [V22,T33] ( 3, 3 ) byref -> x2
@@ -57,7 +57,7 @@
; V46 tmp30 [V46,T30] ( 2, 4 ) int -> x0 "Inlining Arg"
; V47 tmp31 [V47,T04] ( 2, 32 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Net.Sockets.SocketAsyncContext>
;* V48 tmp32 [V48,T39] ( 0, 0 ) int -> zero-ref "Single return block return value"
-; V49 tmp33 [V49,T07] ( 6, 21 ) byref -> x23 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V49 tmp33 [V49,T06] ( 6, 21 ) byref -> x22 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V50 tmp34 [V50,T27] ( 2, 5 ) int -> [fp+0x1C] single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V51 tmp35 [V51,T18] ( 3, 12.00) byref -> x26 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
; V52 tmp36 [V52,T21] ( 3, 12 ) int -> x28 single-def "field V07._length (fldOffset=0x8)" P-INDEP
@@ -103,10 +103,10 @@ G_M57276_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
str w2, [fp, #0x1C] // [V50 tmp34]
mov x19, x0
; gcrRegs +[x19]
- mov x23, x1
- ; byrRegs +[x23]
- mov x22, x3
- ; gcrRegs +[x22]
+ mov x22, x1
+ ; byrRegs +[x22]
+ mov x23, x3
+ ; gcrRegs +[x23]
mov x27, x4
; byrRegs +[x27]
mov x20, x5
@@ -120,7 +120,7 @@ G_M57276_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; byrRegs +[x26]
ldr w28, [fp, #0xC0] // [V52 tmp36]
;; size=92 bbWeight=1 PerfScore 21.00
-G_M57276_IG02: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=EB00000 {x20 x21 x23 x25 x26 x27}, byref, isz
+G_M57276_IG02: ; bbWeight=1, gcrefRegs=880000 {x19 x23}, byrefRegs=E700000 {x20 x21 x22 x25 x26 x27}, byref, isz
str wzr, [fp, #0x5C] // [V10 loc0]
ldrsb wzr, [x19]
mov x0, x19
@@ -138,25 +138,25 @@ G_M57276_IG02: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=EB0000
cmp w0, #0
bgt G_M57276_IG04
;; size=52 bbWeight=1 PerfScore 18.50
-G_M57276_IG03: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=EB00000 {x20 x21 x23 x25 x26 x27}, byref
+G_M57276_IG03: ; bbWeight=1, gcrefRegs=880000 {x19 x23}, byrefRegs=E700000 {x20 x21 x22 x25 x26 x27}, byref
mov x0, xzr
b G_M57276_IG05
;; size=8 bbWeight=1 PerfScore 1.50
-G_M57276_IG04: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=EB00000 {x20 x21 x23 x25 x26 x27}, byref
+G_M57276_IG04: ; bbWeight=1, gcrefRegs=880000 {x19 x23}, byrefRegs=E700000 {x20 x21 x22 x25 x26 x27}, byref
bl <unknown method>
; gcr arg pop 0
mov x3, x0
;; size=8 bbWeight=1 PerfScore 1.50
-G_M57276_IG05: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=EB00000 {x20 x21 x23 x25 x26 x27}, byref
+G_M57276_IG05: ; bbWeight=1, gcrefRegs=880000 {x19 x23}, byrefRegs=E700000 {x20 x21 x22 x25 x26 x27}, byref
str x0, [fp, #0x50] // [V11 loc1]
;; size=4 bbWeight=1 PerfScore 1.00
-G_M57276_IG06: ; bbWeight=8, gcrefRegs=480000 {x19 x22}, byrefRegs=EB00000 {x20 x21 x23 x25 x26 x27}, byref, isz
+G_M57276_IG06: ; bbWeight=8, gcrefRegs=880000 {x19 x23}, byrefRegs=E700000 {x20 x21 x22 x25 x26 x27}, byref, isz
ldrb w1, [x19, #0x3C]
cbnz w1, G_M57276_IG10
;; size=8 bbWeight=8 PerfScore 32.00
-G_M57276_IG07: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=EB00000 {x20 x21 x23 x25 x26 x27}, byref, isz
- str x23, [fp, #0x38] // [V29 tmp13]
- mov x1, x23
+G_M57276_IG07: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=E700000 {x20 x21 x22 x25 x26 x27}, byref, isz
+ str x22, [fp, #0x38] // [V29 tmp13]
+ mov x1, x22
ldr w2, [x20]
add x1, x1, w2, SXTW
ldr w2, [x21]
@@ -181,7 +181,7 @@ G_M57276_IG07: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=EB0000
str w0, [fp, #0x48] // [V13 loc3]
b G_M57276_IG09
;; size=84 bbWeight=4 PerfScore 98.00
-G_M57276_IG08: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=EB00000 {x20 x21 x23 x25 x26 x27}, byref
+G_M57276_IG08: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=E700000 {x20 x21 x22 x25 x26 x27}, byref
str wzr, [fp, #0x48] // [V13 loc3]
ldr w6, [x20]
ldr w0, [fp, #0x34] // [V31 tmp15]
@@ -191,38 +191,38 @@ G_M57276_IG08: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=EB0000
sub w6, w6, w0
str w6, [x21]
;; size=32 bbWeight=4 PerfScore 48.00
-G_M57276_IG09: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=EB00000 {x20 x21 x23 x25 x26 x27}, byref
+G_M57276_IG09: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=E700000 {x20 x21 x22 x25 x26 x27}, byref
str xzr, [fp, #0x38] // [V29 tmp13]
ldr w0, [fp, #0x34] // [V31 tmp15]
b G_M57276_IG21
;; size=12 bbWeight=4 PerfScore 16.00
-G_M57276_IG10: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=EB00000 {x20 x21 x23 x25 x26 x27}, byref, isz
- cbnz x22, G_M57276_IG20
+G_M57276_IG10: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=E700000 {x20 x21 x22 x25 x26 x27}, byref, isz
+ cbnz x23, G_M57276_IG20
;; size=4 bbWeight=4 PerfScore 4.00
-G_M57276_IG11: ; bbWeight=4.00, gcrefRegs=480000 {x19 x22}, byrefRegs=EB00000 {x20 x21 x23 x25 x26 x27}, byref, isz
+G_M57276_IG11: ; bbWeight=4.00, gcrefRegs=880000 {x19 x23}, byrefRegs=E700000 {x20 x21 x22 x25 x26 x27}, byref, isz
mov x6, xzr
; byrRegs +[x6]
cbnz w28, G_M57276_IG14
;; size=8 bbWeight=4.00 PerfScore 6.00
-G_M57276_IG12: ; bbWeight=4.00, gcrefRegs=480000 {x19 x22}, byrefRegs=EB00040 {x6 x20 x21 x23 x25 x26 x27}, byref, isz
+G_M57276_IG12: ; bbWeight=4.00, gcrefRegs=880000 {x19 x23}, byrefRegs=E700040 {x6 x20 x21 x22 x25 x26 x27}, byref, isz
cmp x26, x6
bne G_M57276_IG14
;; size=8 bbWeight=4.00 PerfScore 6.00
-G_M57276_IG13: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=EB00000 {x20 x21 x23 x25 x26 x27}, byref, isz
+G_M57276_IG13: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=E700000 {x20 x21 x22 x25 x26 x27}, byref, isz
; byrRegs -[x6]
- mov x1, x23
+ mov x1, x22
; byrRegs +[x1]
cbz x1, G_M57276_IG16
b G_M57276_IG15
;; size=12 bbWeight=4 PerfScore 10.00
-G_M57276_IG14: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=EB00000 {x20 x21 x23 x25 x26 x27}, byref
+G_M57276_IG14: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=E700000 {x20 x21 x22 x25 x26 x27}, byref
; byrRegs -[x1]
add x6, fp, #72 // [V13 loc3]
str x6, [sp] // [V16 OutArgs]
mov x6, x26
; byrRegs +[x6]
mov w7, w28
- mov x2, x23
+ mov x2, x22
; byrRegs +[x2]
ldr w3, [fp, #0x1C] // [V50 tmp34]
mov x0, x19
@@ -242,18 +242,18 @@ G_M57276_IG14: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=EB0000
; gcr arg pop 0
b G_M57276_IG21
;; size=64 bbWeight=4 PerfScore 54.00
-G_M57276_IG15: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=EB00000 {x20 x21 x23 x25 x26 x27}, byref
- mov x1, x23
+G_M57276_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=E700000 {x20 x21 x22 x25 x26 x27}, byref
+ mov x1, x22
; byrRegs +[x1]
b G_M57276_IG17
;; size=8 bbWeight=4 PerfScore 6.00
-G_M57276_IG16: ; bbWeight=4.00, gcrefRegs=480000 {x19 x22}, byrefRegs=EB00000 {x20 x21 x23 x25 x26 x27}, byref
+G_M57276_IG16: ; bbWeight=4.00, gcrefRegs=880000 {x19 x23}, byrefRegs=E700000 {x20 x21 x22 x25 x26 x27}, byref
; byrRegs -[x1]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
;; size=12 bbWeight=4.00 PerfScore 6.00
-G_M57276_IG17: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=EB00002 {x1 x20 x21 x23 x25 x26 x27}, byref, isz
+G_M57276_IG17: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=E700002 {x1 x20 x21 x22 x25 x26 x27}, byref, isz
; byrRegs +[x1]
str x1, [fp, #0x28] // [V39 tmp23]
ldr w2, [x20]
@@ -278,7 +278,7 @@ G_M57276_IG17: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=EB0000
movn w0, #0
b G_M57276_IG19
;; size=72 bbWeight=4 PerfScore 86.00
-G_M57276_IG18: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=EB00000 {x20 x21 x23 x25 x26 x27}, byref
+G_M57276_IG18: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=E700000 {x20 x21 x22 x25 x26 x27}, byref
ldr w0, [x20]
ldr w5, [fp, #0x20] // [V41 tmp25]
add w5, w0, w5
@@ -289,11 +289,11 @@ G_M57276_IG18: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=EB0000
str w5, [x21]
ldr w0, [fp, #0x20] // [V41 tmp25]
;; size=36 bbWeight=4 PerfScore 60.00
-G_M57276_IG19: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=EB00000 {x20 x21 x23 x25 x26 x27}, byref
+G_M57276_IG19: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=E700000 {x20 x21 x22 x25 x26 x27}, byref
str xzr, [fp, #0x28] // [V39 tmp23]
b G_M57276_IG21
;; size=8 bbWeight=4 PerfScore 8.00
-G_M57276_IG20: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=EB00000 {x20 x21 x23 x25 x26 x27}, byref
+G_M57276_IG20: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=E700000 {x20 x21 x22 x25 x26 x27}, byref
mov x5, x26
; byrRegs +[x5]
mov w6, w28
@@ -301,7 +301,7 @@ G_M57276_IG20: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=EB0000
mov x0, x19
; gcrRegs +[x0]
mov w1, w24
- mov x2, x22
+ mov x2, x23
; gcrRegs +[x2]
mov x3, x27
; byrRegs +[x3]
@@ -316,7 +316,7 @@ G_M57276_IG20: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=EB0000
; byrRegs -[x3-x5]
; gcr arg pop 0
;; size=52 bbWeight=4 PerfScore 38.00
-G_M57276_IG21: ; bbWeight=8, gcrefRegs=480000 {x19 x22}, byrefRegs=EB00000 {x20 x21 x23 x25 x26 x27}, byref, isz
+G_M57276_IG21: ; bbWeight=8, gcrefRegs=880000 {x19 x23}, byrefRegs=E700000 {x20 x21 x22 x25 x26 x27}, byref, isz
cmn w0, #1
beq G_M57276_IG28
mov w3, #1
@@ -326,16 +326,16 @@ G_M57276_IG21: ; bbWeight=8, gcrefRegs=480000 {x19 x22}, byrefRegs=EB0000
str w11, [x25]
cbz w0, G_M57276_IG25
;; size=32 bbWeight=8 PerfScore 68.00
-G_M57276_IG22: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=EB00000 {x20 x21 x23 x25 x26 x27}, byref, isz
- cbnz x22, G_M57276_IG23
+G_M57276_IG22: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=E700000 {x20 x21 x22 x25 x26 x27}, byref, isz
+ cbnz x23, G_M57276_IG23
ldr w0, [x21]
cbz w0, G_M57276_IG25
- ;; size=12 bbWeight=4 PerfScore 20.00
-G_M57276_IG23: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=EB00000 {x20 x21 x23 x25 x26 x27}, byref, isz
- cbz x22, G_M57276_IG24
+ b G_M57276_IG24
+ ;; size=16 bbWeight=4 PerfScore 24.00
+G_M57276_IG23: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=E700000 {x20 x21 x22 x25 x26 x27}, byref
ldr w2, [x27]
str w2, [fp, #0x44] // [V21 tmp5]
- mov x0, x22
+ mov x0, x23
; gcrRegs +[x0]
movz x11, #0xD1FFAB1E // code for <unknown method>
movk x11, #0xD1FFAB1E LSL #16
@@ -346,26 +346,28 @@ G_M57276_IG23: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=EB0000
; gcr arg pop 0
ldr w2, [fp, #0x44] // [V21 tmp5]
cmp w0, w2
- cset x0, eq
+ cset x1, eq
b G_M57276_IG26
- ;; size=52 bbWeight=4 PerfScore 60.00
-G_M57276_IG24: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=EB00000 {x20 x21 x23 x25 x26 x27}, byref
+ ;; size=48 bbWeight=4 PerfScore 56.00
+G_M57276_IG24: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=E700000 {x20 x21 x22 x25 x26 x27}, byref
mov w0, wzr
+ mov w1, w0
b G_M57276_IG26
- ;; size=8 bbWeight=4 PerfScore 6.00
-G_M57276_IG25: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=EB00000 {x20 x21 x23 x25 x26 x27}, byref
+ ;; size=12 bbWeight=4 PerfScore 8.00
+G_M57276_IG25: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=E700000 {x20 x21 x22 x25 x26 x27}, byref
mov w0, #1
- ;; size=4 bbWeight=4 PerfScore 2.00
-G_M57276_IG26: ; bbWeight=8, gcrefRegs=480000 {x19 x22}, byrefRegs=EB00000 {x20 x21 x23 x25 x26 x27}, byref, isz
- uxtb w0, w0
...
+4 (+0.89%) : 490330.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+d__118:MoveNext():ubyte:this (FullOpts)
@@ -8,29 +8,30 @@
; 0 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 17, 9.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118>
-; V01 loc0 [V01,T04] ( 4, 2.50) ubyte -> registers
+; V00 this [V00,T00] ( 16, 9 ) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118>
+; V01 loc0 [V01,T04] ( 4, 2.50) ubyte -> x2
; V02 loc1 [V02,T05] ( 3, 2.50) int -> x1 single-def
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
-; V04 loc3 [V04,T08] ( 3, 1.50) ref -> x19 class-hnd exact single-def <Microsoft.CodeAnalysis.SecurityWellKnownAttributeData>
+; V04 loc3 [V04,T08] ( 3, 1.50) ref -> x20 class-hnd exact single-def <Microsoft.CodeAnalysis.SecurityWellKnownAttributeData>
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <Microsoft.Cci.SecurityAttribute>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T06] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V08 tmp2 [V08,T09] ( 3, 1.25) long -> x4 "fgMakeTemp is creating a new local variable"
+; V08 tmp2 [V08,T10] ( 3, 1.25) long -> x4 "fgMakeTemp is creating a new local variable"
; V09 tmp3 [V09,T02] ( 5, 3.75) ref -> x2 class-hnd "spilling QMark2" <<unknown class>>
;* V10 tmp4 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <Microsoft.Cci.SecurityAttribute>
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V13 tmp7 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
; V14 tmp8 [V14,T01] ( 6, 6 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V15 tmp9 [V15,T10] ( 2, 1 ) ref -> x15 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP
-; V16 tmp10 [V16,T12] ( 2, 1 ) short -> x1 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP
-; V17 tmp11 [V17,T11] ( 2, 1 ) ref -> x20 single-def "field V10.array (fldOffset=0x0)" P-INDEP
+; V15 tmp9 [V15,T11] ( 2, 1 ) ref -> x15 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP
+; V16 tmp10 [V16,T13] ( 2, 1 ) short -> x1 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP
+; V17 tmp11 [V17,T12] ( 2, 1 ) ref -> x19 single-def "field V10.array (fldOffset=0x0)" P-INDEP
;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref "field V11.<Attribute>k__BackingField (fldOffset=0x0)" P-DEP
;* V19 tmp13 [V19 ] ( 0, 0 ) short -> zero-ref "field V11.<Action>k__BackingField (fldOffset=0x8)" P-DEP
-; V20 PSPSym [V20,T13] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
-; V21 cse0 [V21,T03] ( 5, 2.50) ref -> x0 multi-def "CSE - aggressive"
-; V22 cse1 [V22,T07] ( 4, 2 ) long -> x19 "CSE - aggressive"
+; V20 PSPSym [V20,T14] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
+; V21 cse0 [V21,T09] ( 3, 1.50) ref -> x19 "CSE - moderate"
+; V22 cse1 [V22,T03] ( 5, 2.50) ref -> x1 multi-def "CSE - aggressive"
+; V23 cse2 [V23,T07] ( 4, 2 ) long -> x19 "CSE - aggressive"
;
; Lcl frame size = 24
@@ -57,14 +58,15 @@ G_M21908_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
G_M21908_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
movn w1, #0
str w1, [x0, #0x20]
- ldr x1, [x0, #0x08]
+ ldr x19, [x0, #0x08]
+ ; gcrRegs +[x19]
+ ldr x1, [x19, #0x08]
; gcrRegs +[x1]
- ldr x1, [x1, #0x08]
mov x2, x1
; gcrRegs +[x2]
cbz x2, G_M21908_IG11
;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x3, [x2]
movz x4, #0xD1FFAB1E
@@ -73,7 +75,7 @@ G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}
cmp x3, x4
beq G_M21908_IG07
;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
mov x0, x4
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
@@ -82,23 +84,17 @@ G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, b
mov x2, x0
; gcrRegs +[x2]
;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x19, [x2, #0x70]
- ; gcrRegs +[x19]
- cbz x19, G_M21908_IG11
- ldr x0, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x0]
- ldr x1, [x0, #0x08]
- ; gcrRegs +[x1]
- ldr x20, [x1, #0x20]
+ ldr x20, [x2, #0x70]
; gcrRegs +[x20]
+ cbz x20, G_M21908_IG11
+ ldr x19, [x19, #0x20]
movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
bl CORINFO_HELP_NEWSFAST
- ; gcrRegs -[x1-x2] +[x0]
+ ; gcrRegs -[x2] +[x0]
; gcr arg pop 0
mov x21, x0
; gcrRegs +[x21]
@@ -110,18 +106,18 @@ G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b
str w0, [x21, #0x14]
add x14, x21, #8
; byrRegs +[x14]
- mov x15, x19
- ; gcrRegs +[x15]
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x19]
- ; byrRegs -[x14]
- add x14, x21, #56
- ; byrRegs +[x14]
mov x15, x20
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x20]
; byrRegs -[x14]
+ add x14, x21, #56
+ ; byrRegs +[x14]
+ mov x15, x19
+ ; gcrRegs +[x15]
+ bl CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[x15 x19]
+ ; byrRegs -[x14]
mov x0, x21
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -131,20 +127,20 @@ G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b
blr x1
; gcrRegs -[x21]
; gcr arg pop 0
- ldr x19, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x19]
- add x14, x19, #24
+ ldr x1, [fp, #0x18] // [V00 this]
+ ; gcrRegs +[x1]
+ add x14, x1, #24
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- mov x0, x19
+ mov x0, x1
; gcrRegs +[x0]
- ;; size=124 bbWeight=0.50 PerfScore 16.50
+ ;; size=116 bbWeight=0.50 PerfScore 14.00
G_M21908_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19]
+ ; gcrRegs -[x1]
movn w11, #2
str w11, [x0, #0x20]
ldr x0, [x0, #0x18]
@@ -157,50 +153,56 @@ G_M21908_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
; gcrRegs -[x0]
; gcr arg pop 0
cbz w0, G_M21908_IG09
- ldr x20, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x20]
- ldr x0, [x20, #0x18]
+ ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
+ ldr x1, [x0, #0x18]
+ ; gcrRegs +[x1]
+ mov x0, x1
add x11, x19, #8
ldr x1, [x11]
+ ; gcrRegs -[x1]
blr x1
; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
- add x14, x20, #40
+ ldr x0, [fp, #0x18] // [V00 this]
+ add x14, x0, #40
; byrRegs +[x14]
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15]
+ ; gcrRegs -[x15]
; byrRegs -[x14]
- strh w1, [x20, #0x30]
- mov w0, #1
- str w0, [x20, #0x20]
- mov w2, w0
+ strh w1, [x0, #0x30]
+ mov w11, #1
+ str w11, [x0, #0x20]
+ sxtw w2, w11
b G_M21908_IG12
- ;; size=92 bbWeight=0.50 PerfScore 13.50
+ ;; size=100 bbWeight=0.50 PerfScore 14.75
G_M21908_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x20]
- movn w0, #0
- ldr x20, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x20]
- str w0, [x20, #0x20]
- ldr x0, [x20, #0x18]
+ ; gcrRegs -[x0]
+ movn w11, #0
+ ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
- cbz x0, G_M21908_IG10
+ str w11, [x0, #0x20]
+ ldr x1, [x0, #0x18]
+ ; gcrRegs +[x1]
+ cbz x1, G_M21908_IG10
+ mov x0, x1
add x11, x19, #16
ldr x1, [x11]
+ ; gcrRegs -[x1]
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=32 bbWeight=0.50 PerfScore 6.00
-G_M21908_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- str xzr, [x20, #0x18]
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=36 bbWeight=0.50 PerfScore 6.25
+G_M21908_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x0, [fp, #0x18] // [V00 this]
+ ; gcrRegs +[x0]
+ str xzr, [x0, #0x18]
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M21908_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
- mov w1, wzr
- mov w2, w1
- ;; size=8 bbWeight=0.50 PerfScore 0.50
+ ; gcrRegs -[x0]
+ mov w2, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M21908_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V00}
mov w0, w2
@@ -238,7 +240,7 @@ G_M21908_IG16: ; bbWeight=0, funclet epilog, nogc, extend
ret lr
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 448, prolog size 24, PerfScore 59.25, instruction count 112, allocated bytes for code 448 (MethodHash=1a3daa6b) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 452, prolog size 24, PerfScore 59.00, instruction count 113, allocated bytes for code 452 (MethodHash=1a3daa6b) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -249,7 +251,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 98 (0x00062) Actual length = 392 (0x000188)
---- Epilog scopes ----
---- Scope 0
...
libraries.crossgen2.osx.arm64.checked.mch
-48 (-26.09%) : 186598.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
@@ -8,15 +8,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 6, 11 ) ref -> x1 class-hnd single-def <System.String>
-; V02 arg2 [V02,T05] ( 4, 6.50) int -> x2 single-def
-; V03 arg3 [V03,T07] ( 5, 4.50) int -> x3 single-def
-; V04 loc0 [V04,T03] ( 6, 13 ) int -> x5
-; V05 loc1 [V05,T00] ( 11, 27.50) int -> x6
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> x1 class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 3, 6 ) int -> x2 single-def
+; V03 arg3 [V03,T08] ( 5, 4.50) int -> x3 single-def
+; V04 loc0 [V04,T01] ( 5, 12 ) int -> x5
+; V05 loc1 [V05,T00] ( 7, 25 ) int -> x6
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> x4 "CSE - aggressive"
-; V08 cse1 [V08,T01] ( 6, 13.50) int -> x8 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> x8 "CSE - aggressive"
+; V08 cse1 [V08,T06] ( 3, 8.50) int -> x7 "CSE - aggressive"
+; V09 cse2 [V09,T09] ( 4, 6.50) int -> x4 "CSE - aggressive"
+; V10 cse3 [V10,T03] ( 3, 12 ) int -> x8 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -38,11 +40,11 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M6389_IG04: ; bbWeight=8, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
cmp w6, w5
- bge G_M6389_IG06
+ bge G_M6389_IG08
;; size=8 bbWeight=8 PerfScore 12.00
G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
cmp w6, w4
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x7, x0, #12
; byrRegs +[x7]
ldrh w7, [x7, w6, UXTW #2]
@@ -50,49 +52,30 @@ G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by
add w8, w2, w6
ldr w9, [x1, #0x08]
cmp w8, w9
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x9, x1, #12
; byrRegs +[x9]
ldrh w8, [x9, w8, UXTW #2]
cmp w7, w8
beq G_M6389_IG03
;; size=48 bbWeight=4 PerfScore 60.00
-G_M6389_IG06: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0-x1]
; byrRegs -[x9]
- cmp w6, w5
- bge G_M6389_IG09
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- cmp w6, w4
- bhs G_M6389_IG11
- add x0, x0, #12
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ldrh w0, [x0, w6, UXTW #2]
- ; byrRegs -[x0]
- add w8, w2, w6
- ldr w3, [x1, #0x08]
- cmp w8, w3
- bhs G_M6389_IG11
- add x4, x1, #12
- ; byrRegs +[x4]
- ldrh w1, [x4, w8, UXTW #2]
- ; gcrRegs -[x1]
- sub w0, w0, w1
- ;; size=44 bbWeight=0.50 PerfScore 7.00
-G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ sub w0, w7, w8
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[x4]
+G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub w0, w4, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
@@ -101,7 +84,7 @@ G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
brk_unix #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 184, prolog size 8, PerfScore 91.25, instruction count 46, allocated bytes for code 184 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 136, prolog size 8, PerfScore 83.00, instruction count 34, allocated bytes for code 136 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -112,7 +95,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
+ Function Length : 34 (0x00022) Actual length = 136 (0x000088)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-36 (-20.45%) : 218292.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -12,12 +12,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
; V02 loc0 [V02,T00] ( 7, 24.50) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> x5 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x4 "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> x6 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> x5 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -34,51 +36,39 @@ G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x2]
cmp w1, w3
blt G_M264_IG11
- b G_M264_IG09
+ b G_M264_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
; byrRegs +[x0 x2]
sxtw w4, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1
- sxtw w4, w5
- tbnz w4, #31, G_M264_IG06
+ sub w4, w4, #1
+ tbnz w4, #31, G_M264_IG09
cmp w4, w1
bhs G_M264_IG13
- ubfiz x6, x4, #2, #32
- ldr w7, [x0, x6]
+ ubfiz x5, x4, #2, #32
+ ldr w6, [x0, x5]
cmp w4, w3
bhs G_M264_IG13
- ldr w6, [x2, x6]
- cmp w7, w6
+ ldr w5, [x2, x5]
+ cmp w6, w5
beq G_M264_IG05
- ;; size=48 bbWeight=4 PerfScore 54.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- tbz w5, #31, G_M264_IG08
- mov w0, wzr
- ; byrRegs -[x0]
+ ;; size=44 bbWeight=4 PerfScore 52.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0 x2]
+ cmp w5, w6
+ bhi G_M264_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref, isz
- ; byrRegs +[x0]
- cmp w5, w1
- bhs G_M264_IG13
- ubfiz x6, x5, #2, #32
- ldr w0, [x0, x6]
- ; byrRegs -[x0]
- cmp w5, w3
- bhs G_M264_IG13
- ldr w1, [x2, x6]
- cmp w0, w1
- blo G_M264_IG11
- ;; size=36 bbWeight=0.50 PerfScore 5.75
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
- mov w0, #1
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
@@ -100,7 +90,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
brk_unix #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 8, PerfScore 68.50, instruction count 44, allocated bytes for code 176 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 140, prolog size 8, PerfScore 61.00, instruction count 35, allocated bytes for code 140 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -111,7 +101,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-9.86%) : 150592.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
@@ -9,14 +9,15 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 11, 21 ) ref -> x0 this class-hnd single-def <System.Data.ExpressionParser>
-; V01 loc0 [V01,T04] ( 6, 14 ) ref -> x3 class-hnd single-def <<unknown class>>
+; V01 loc0 [V01,T04] ( 5, 13 ) ref -> x3 class-hnd single-def <<unknown class>>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 24 ) int -> x1 "index expr"
-; V04 tmp2 [V04,T05] ( 3, 6 ) int -> x1 "index expr"
-; V05 tmp3 [V05,T06] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V06 tmp4 [V06,T07] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V07 cse0 [V07,T00] ( 9, 31 ) int -> x19 "CSE - aggressive"
-; V08 cse1 [V08,T03] ( 5, 22 ) int -> x2 "CSE - aggressive"
+;* V04 tmp2 [V04,T06] ( 0, 0 ) int -> zero-ref "index expr"
+; V05 tmp3 [V05,T07] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V06 tmp4 [V06,T08] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V07 cse0 [V07,T05] ( 3, 9 ) int -> x2 "CSE - aggressive"
+; V08 cse1 [V08,T00] ( 7, 29 ) int -> x19 "CSE - aggressive"
+; V09 cse2 [V09,T03] ( 3, 20 ) int -> x2 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -36,22 +37,9 @@ G_M44374_IG03: ; bbWeight=8, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, b
str w19, [x0, #0x30]
ldr w2, [x3, #0x08]
cmp w2, w19
- ble G_M44374_IG05
+ ble G_M44374_IG08
;; size=24 bbWeight=8 PerfScore 72.00
G_M44374_IG04: ; bbWeight=4, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref, isz
- sxtw w1, w19
- cmp w1, w2
- bhs G_M44374_IG07
- add x11, x3, #16
- ; byrRegs +[x11]
- ldrh w1, [x11, w1, UXTW #2]
- cmp w1, #35
- bne G_M44374_IG03
- ;; size=28 bbWeight=4 PerfScore 28.00
-G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x11]
- cmp w2, w19
- ble G_M44374_IG08
sxtw w1, w19
cmp w1, w2
bhs G_M44374_IG07
@@ -59,13 +47,17 @@ G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, b
; byrRegs +[x2]
ldrh w2, [x2, w1, UXTW #2]
; byrRegs -[x2]
+ cmp w2, #35
+ bne G_M44374_IG03
+ ;; size=28 bbWeight=4 PerfScore 28.00
+G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref, isz
cmp w2, #35
bne G_M44374_IG09
mov w2, #7
str w2, [x0, #0x38]
add w2, w19, #1
str w2, [x0, #0x30]
- ;; size=52 bbWeight=1 PerfScore 11.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M44374_IG06: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
@@ -130,7 +122,7 @@ G_M44374_IG09: ; bbWeight=0, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, b
brk_unix #0
;; size=68 bbWeight=0 PerfScore 0.00
-; Total bytes of code 284, prolog size 12, PerfScore 121.00, instruction count 71, allocated bytes for code 284 (MethodHash=962252a9) for method System.Data.ExpressionParser:ScanDate():this (FullOpts)
+; Total bytes of code 256, prolog size 12, PerfScore 114.00, instruction count 64, allocated bytes for code 256 (MethodHash=962252a9) for method System.Data.ExpressionParser:ScanDate():this (FullOpts)
; ============================================================
Unwind Info:
@@ -141,7 +133,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
+ 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)
+8 (+2.15%) : 76076.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
@@ -8,45 +8,47 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 7, 4.50) ref -> x19 this class-hnd single-def <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 8, 4.38) ref -> x20 class-hnd single-def <System.Object>
+; V00 this [V00,T01] ( 6, 4 ) ref -> x20 this class-hnd single-def <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
+; V01 arg1 [V01,T00] ( 8, 4.38) ref -> x19 class-hnd single-def <System.Object>
; V02 arg2 [V02,T03] ( 3, 2.50) ref -> x21 class-hnd single-def <System.Collections.IComparer>
;* V03 loc0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
-; V04 loc1 [V04,T10] ( 2, 1 ) ref -> x20 class-hnd single-def <System.__Canon>
-; V05 loc2 [V05,T11] ( 2, 1 ) ref -> x22 class-hnd single-def <System.__Canon>
+; V04 loc1 [V04,T11] ( 2, 1 ) ref -> x19 class-hnd single-def <System.__Canon>
+; V05 loc2 [V05,T12] ( 2, 1 ) ref -> x22 class-hnd single-def <System.__Canon>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T07] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
+; V07 tmp1 [V07,T08] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
; V08 tmp2 [V08,T02] ( 5, 5.75) ref -> x22 class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
-; V09 tmp3 [V09,T08] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
+; V09 tmp3 [V09,T09] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
; V10 tmp4 [V10,T04] ( 3, 2.50) ref -> x0 class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
-; V11 tmp5 [V11,T09] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
+; V11 tmp5 [V11,T10] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
; V12 tmp6 [V12,T05] ( 3, 2.50) ref -> x0 class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
; V13 tmp7 [V13,T06] ( 2, 2 ) long -> x0 "argument with side effect"
+; V14 cse0 [V14,T07] ( 5, 1.50) long -> x24 multi-def "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M49351_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x50]!
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
+ stp x23, x24, [sp, #0x40]
mov fp, sp
- str x0, [fp, #0x10]
- mov x19, x0
- ; gcrRegs +[x19]
- mov x20, x1
+ str x0, [fp, #0x18]
+ mov x20, x0
; gcrRegs +[x20]
+ mov x19, x1
+ ; gcrRegs +[x19]
mov x21, x2
; gcrRegs +[x21]
;; size=36 bbWeight=1 PerfScore 7.00
G_M49351_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- mov x22, x20
+ mov x22, x19
; gcrRegs +[x22]
cbz x22, G_M49351_IG05
;; size=8 bbWeight=1 PerfScore 1.50
G_M49351_IG03: ; bbWeight=0.25, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr x23, [x22]
- ldr x0, [x19]
+ ldr x24, [x20]
+ mov x0, x24
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
@@ -54,10 +56,10 @@ G_M49351_IG03: ; bbWeight=0.25, gcrefRegs=780000 {x19 x20 x21 x22}, byref
; gcr arg pop 0
cmp x23, x0
beq G_M49351_IG05
- ;; size=32 bbWeight=0.25 PerfScore 3.12
+ ;; size=36 bbWeight=0.25 PerfScore 3.25
G_M49351_IG04: ; bbWeight=0.12, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
- mov x1, x20
+ mov x1, x19
; gcrRegs +[x1]
adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address
add x2, x2, [LOW RELOC #0xD1FFAB1E]
@@ -70,16 +72,17 @@ G_M49351_IG04: ; bbWeight=0.12, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
;; size=24 bbWeight=0.12 PerfScore 0.75
G_M49351_IG05: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz x19, G_M49351_IG13
+ cbz x20, G_M49351_IG13
;; size=4 bbWeight=1 PerfScore 1.00
G_M49351_IG06: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
cbz x0, G_M49351_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M49351_IG07: ; bbWeight=0.25, gcrefRegs=780001 {x0 x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr x23, [x0]
- ldr x0, [x19]
+ ldr x24, [x20]
+ mov x0, x24
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -88,23 +91,23 @@ G_M49351_IG07: ; bbWeight=0.25, gcrefRegs=780001 {x0 x19 x20 x21 x22}, by
; gcr arg pop 0
cmp x23, x0
beq G_M49351_IG09
- ;; size=32 bbWeight=0.25 PerfScore 3.12
+ ;; size=36 bbWeight=0.25 PerfScore 3.25
G_M49351_IG08: ; bbWeight=0.12, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- mov x1, x20
+ mov x1, x19
; gcrRegs +[x1]
adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address
add x2, x2, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x2]
blr x2
- ; gcrRegs -[x1 x20] +[x0]
+ ; gcrRegs -[x1 x19] +[x0]
; gcr arg pop 0
;; size=20 bbWeight=0.12 PerfScore 0.69
-G_M49351_IG09: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref
+G_M49351_IG09: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- ldr x20, [x19, #0x08]
- ; gcrRegs +[x20]
+ ldr x19, [x20, #0x08]
+ ; gcrRegs +[x19]
ldr x22, [x22, #0x08]
- ldr x0, [x19]
+ mov x0, x24
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
@@ -114,34 +117,34 @@ G_M49351_IG09: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs
; gcrRegs +[x3]
mov x1, x21
; gcrRegs +[x1]
- mov x2, x20
+ mov x2, x19
; gcrRegs +[x2]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x4, [x11]
- ;; size=52 bbWeight=0.50 PerfScore 9.75
+ ;; size=52 bbWeight=0.50 PerfScore 8.50
G_M49351_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x40
+ ldp x23, x24, [sp, #0x40]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x50
br x4
; gcr arg pop 0
- ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M49351_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x1-x3 x20-x22]
+ ;; size=20 bbWeight=0.50 PerfScore 2.50
+G_M49351_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x1-x3 x19 x21-x22]
mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M49351_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x40
+ ldp x23, x24, [sp, #0x40]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x50
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=20 bbWeight=0.50 PerfScore 2.50
G_M49351_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x20]
- mov x0, x20
+ ; gcrRegs +[x19]
+ mov x0, x19
; gcrRegs +[x0]
cbz x0, G_M49351_IG18
;; size=8 bbWeight=0.50 PerfScore 0.75
@@ -159,38 +162,38 @@ G_M49351_IG14: ; bbWeight=0.25, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=
beq G_M49351_IG16
;; size=36 bbWeight=0.25 PerfScore 3.25
G_M49351_IG15: ; bbWeight=0.12, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x1, x20
+ mov x1, x19
; gcrRegs +[x1]
adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address
add x2, x2, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x2]
blr x2
- ; gcrRegs -[x1 x20] +[x0]
+ ; gcrRegs -[x1 x19] +[x0]
; gcr arg pop 0
;; size=20 bbWeight=0.12 PerfScore 0.69
-G_M49351_IG16: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M49351_IG16: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movn w0, #0
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M49351_IG17: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x40
+ ldp x23, x24, [sp, #0x40]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x50
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M49351_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=0.50 PerfScore 2.50
+G_M49351_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M49351_IG19: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x40
+ ldp x23, x24, [sp, #0x40]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x50
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=20 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 372, prolog size 36, PerfScore 45.12, instruction count 93, allocated bytes for code 372 (MethodHash=56213f38) for method Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
+; Total bytes of code 380, prolog size 36, PerfScore 42.12, instruction count 95, allocated bytes for code 380 (MethodHash=56213f38) for method Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -201,7 +204,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 93 (0x0005d) Actual length = 372 (0x000174)
+ Function Length : 95 (0x0005f) Actual length = 380 (0x00017c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -218,9 +221,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
...
+8 (+4.35%) : 22977.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
@@ -11,8 +11,8 @@
;
; V00 this [V00,T03] ( 4, 3.50) ref -> x0 this class-hnd single-def <System.Threading.PortableThreadPool>
; V01 arg1 [V01,T01] ( 4, 7 ) ref -> x1 class-hnd single-def <System.Threading.PortableThreadPool+WaitThread>
-; V02 loc0 [V02,T00] ( 9, 19.50) ref -> registers class-hnd <System.Threading.PortableThreadPool+WaitThreadNode>
-; V03 loc1 [V03,T02] ( 3, 8.50) ref -> x19 class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
+; V02 loc0 [V02,T00] ( 8, 19 ) ref -> registers class-hnd <System.Threading.PortableThreadPool+WaitThreadNode>
+; V03 loc1 [V03,T02] ( 3, 8.50) ref -> registers class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V06 tmp2 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -56,22 +56,33 @@ G_M1296_IG05: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=80002 {
; gcrRegs +[x1 x19]
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
- cbz x0, G_M1296_IG06
+ cbz x0, G_M1296_IG08
ldr x11, [x0, #0x08]
; gcrRegs +[x11]
cmp x11, x1
bne G_M1296_IG07
;; size=20 bbWeight=4 PerfScore 34.00
-G_M1296_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M1296_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x1 x11]
- cbnz x0, G_M1296_IG08
+ mov x14, x19
+ ; gcrRegs +[x14]
+ mov x19, x0
+ b G_M1296_IG09
+ ;; size=12 bbWeight=0.50 PerfScore 1.00
+G_M1296_IG07: ; bbWeight=2, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x14 x19] +[x1]
+ mov x19, x0
+ ; gcrRegs +[x19]
+ b G_M1296_IG05
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M1296_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0-x1 x19]
adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x1, x1, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x1]
ldr x1, [x1]
; gcrRegs +[x1]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
- ; gcrRegs -[x0]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
ldr x0, [x0]
@@ -80,36 +91,31 @@ G_M1296_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
blr x2
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1]
; gcr arg pop 0
- b G_M1296_IG09
- ;; size=56 bbWeight=0.50 PerfScore 10.50
-G_M1296_IG07: ; bbWeight=2, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0-x1]
- mov x19, x0
- ; gcrRegs +[x19]
- b G_M1296_IG05
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M1296_IG08: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1]
- ldr x15, [x0, #0x10]
+ b G_M1296_IG10
+ ;; size=52 bbWeight=0.50 PerfScore 10.00
+G_M1296_IG09: ; bbWeight=0.50, gcrefRegs=84000 {x14 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x14 x19]
+ ldr x15, [x19, #0x10]
; gcrRegs +[x15]
- add x14, x19, #16
+ add x14, x14, #16
+ ; gcrRegs -[x14]
; byrRegs +[x14]
adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_ASSIGN_REF
add x12, x12, [LOW RELOC #0xD1FFAB1E]
ldr x12, [x12]
blr x12
- ; gcrRegs -[x0 x15 x19]
+ ; gcrRegs -[x15 x19]
; byrRegs -[x14]
;; size=24 bbWeight=0.50 PerfScore 4.25
-G_M1296_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M1296_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 184, prolog size 12, PerfScore 70.00, instruction count 46, allocated bytes for code 184 (MethodHash=2a35faef) for method System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
+; Total bytes of code 192, prolog size 12, PerfScore 70.50, instruction count 48, allocated bytes for code 192 (MethodHash=2a35faef) for method System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
; ============================================================
Unwind Info:
@@ -120,7 +126,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+32 (+8.25%) : 76091.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
@@ -8,7 +8,7 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 7, 4.50) ref -> x20 this class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
+; V00 this [V00,T01] ( 6, 4 ) ref -> x20 this class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
; V01 arg1 [V01,T00] ( 7, 4.75) ref -> x19 class-hnd single-def <System.Object>
; V02 arg2 [V02,T03] ( 3, 2.50) ref -> x21 class-hnd single-def <System.Collections.IComparer>
; V03 loc0 [V03,T04] ( 5, 2.38) ref -> x22 class-hnd exact single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
@@ -16,35 +16,37 @@
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
;* V06 loc3 [V06 ] ( 0, 0 ) int -> zero-ref single-def
;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
-; V08 loc5 [V08,T13] ( 2, 1 ) ref -> x19 class-hnd single-def <System.__Canon>
-; V09 loc6 [V09,T14] ( 2, 1 ) ref -> x22 class-hnd single-def <System.__Canon>
+; V08 loc5 [V08,T14] ( 2, 1 ) ref -> x19 class-hnd single-def <System.__Canon>
+; V09 loc6 [V09,T15] ( 2, 1 ) ref -> x22 class-hnd single-def <System.__Canon>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T09] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
+; V11 tmp1 [V11,T10] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
; V12 tmp2 [V12,T02] ( 3, 4.50) ref -> x0 class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
-; V13 tmp3 [V13,T10] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
+; V13 tmp3 [V13,T11] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
; V14 tmp4 [V14,T05] ( 3, 2.50) ref -> x0 class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
-; V15 tmp5 [V15,T11] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
-;* V16 tmp6 [V16,T12] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
-;* V17 tmp7 [V17,T15] ( 0, 0 ) int -> zero-ref single-def
-; V18 tmp8 [V18,T08] ( 3, 1.50) int -> x19
+; V15 tmp5 [V15,T12] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V16 tmp6 [V16,T13] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
+;* V17 tmp7 [V17,T16] ( 0, 0 ) int -> zero-ref single-def
+; V18 tmp8 [V18,T09] ( 3, 1.50) int -> x19
; V19 tmp9 [V19,T06] ( 2, 2 ) int -> x0 "Single return block return value"
; V20 tmp10 [V20,T07] ( 2, 2 ) long -> x0 "argument with side effect"
+; V21 cse0 [V21,T08] ( 5, 1.50) long -> x23 multi-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M56277_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
+ stp x19, x20, [sp, #0x18]
+ stp x21, x22, [sp, #0x28]
+ str x23, [sp, #0x38]
mov fp, sp
- str x0, [fp, #0x18]
+ str x0, [fp, #0x10]
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
; gcrRegs +[x19]
mov x21, x2
; gcrRegs +[x21]
- ;; size=32 bbWeight=1 PerfScore 6.00
+ ;; size=36 bbWeight=1 PerfScore 7.00
G_M56277_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
@@ -52,7 +54,8 @@ G_M56277_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
;; size=8 bbWeight=1 PerfScore 1.50
G_M56277_IG03: ; bbWeight=0.25, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
ldr x22, [x0]
- ldr x0, [x20]
+ ldr x23, [x20]
+ mov x0, x23
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -61,7 +64,7 @@ G_M56277_IG03: ; bbWeight=0.25, gcrefRegs=380001 {x0 x19 x20 x21}, byrefR
; gcr arg pop 0
cmp x22, x0
beq G_M56277_IG05
- ;; size=32 bbWeight=0.25 PerfScore 3.12
+ ;; size=36 bbWeight=0.25 PerfScore 3.25
G_M56277_IG04: ; bbWeight=0.12, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
@@ -84,7 +87,8 @@ G_M56277_IG06: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M56277_IG07: ; bbWeight=0.25, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr x19, [x22]
- ldr x0, [x20]
+ ldr x23, [x20]
+ mov x0, x23
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
@@ -92,7 +96,7 @@ G_M56277_IG07: ; bbWeight=0.25, gcrefRegs=700000 {x20 x21 x22}, byrefRegs
; gcr arg pop 0
cmp x19, x0
beq G_M56277_IG09
- ;; size=32 bbWeight=0.25 PerfScore 3.12
+ ;; size=36 bbWeight=0.25 PerfScore 3.25
G_M56277_IG08: ; bbWeight=0.12, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
mov x1, x22
; gcrRegs +[x1]
@@ -111,7 +115,7 @@ G_M56277_IG09: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs
ldr x19, [x20, #0x08]
; gcrRegs +[x19]
ldr x22, [x22, #0x08]
- ldr x0, [x20]
+ mov x0, x23
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
@@ -126,14 +130,15 @@ G_M56277_IG09: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x4, [x11]
- ;; size=64 bbWeight=0.50 PerfScore 10.75
+ ;; size=64 bbWeight=0.50 PerfScore 9.50
G_M56277_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
br x4
; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M56277_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x1-x3 x19 x21-x22]
mov w0, #1
@@ -144,11 +149,12 @@ G_M56277_IG12: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M56277_IG13: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M56277_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19]
mov x0, x19
@@ -183,28 +189,31 @@ G_M56277_IG17: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
movn w0, #0
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M56277_IG18: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M56277_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M56277_IG20: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M56277_IG21: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, epilog, nogc
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
-; Total bytes of code 388, prolog size 32, PerfScore 44.31, instruction count 97, allocated bytes for code 388 (MethodHash=ba80242a) for method Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
+; Total bytes of code 420, prolog size 36, PerfScore 49.31, instruction count 105, allocated bytes for code 420 (MethodHash=ba80242a) for method Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -215,7 +224,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 105 (0x00069) Actual length = 420 (0x0001a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -235,10 +244,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end
- E4 end
- E4 end
libraries.pmi.osx.arm64.checked.mch
-48 (-27.91%) : 222084.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
@@ -7,15 +7,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 6, 11 ) ref -> x1 class-hnd single-def <System.String>
-; V02 arg2 [V02,T05] ( 4, 6.50) int -> x2 single-def
-; V03 arg3 [V03,T07] ( 5, 4.50) int -> x3 single-def
-; V04 loc0 [V04,T03] ( 6, 13 ) int -> x5
-; V05 loc1 [V05,T00] ( 11, 27.50) int -> x6
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> x1 class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 3, 6 ) int -> x2 single-def
+; V03 arg3 [V03,T08] ( 5, 4.50) int -> x3 single-def
+; V04 loc0 [V04,T01] ( 5, 12 ) int -> x5
+; V05 loc1 [V05,T00] ( 7, 25 ) int -> x6
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> x4 "CSE - aggressive"
-; V08 cse1 [V08,T01] ( 6, 13.50) int -> x8 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> x8 "CSE - aggressive"
+; V08 cse1 [V08,T06] ( 3, 8.50) int -> x7 "CSE - aggressive"
+; V09 cse2 [V09,T09] ( 4, 6.50) int -> x4 "CSE - aggressive"
+; V10 cse3 [V10,T03] ( 3, 12 ) int -> x8 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -37,11 +39,11 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M6389_IG04: ; bbWeight=8, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
cmp w6, w5
- bge G_M6389_IG06
+ bge G_M6389_IG08
;; size=8 bbWeight=8 PerfScore 12.00
G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
cmp w6, w4
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x7, x0, #12
; byrRegs +[x7]
ldrh w7, [x7, w6, UXTW #2]
@@ -49,55 +51,36 @@ G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by
add w8, w2, w6
ldr w9, [x1, #0x08]
cmp w8, w9
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x9, x1, #12
; byrRegs +[x9]
ldrh w8, [x9, w8, UXTW #2]
cmp w7, w8
beq G_M6389_IG03
;; size=48 bbWeight=4 PerfScore 60.00
-G_M6389_IG06: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0-x1]
; byrRegs -[x9]
- cmp w6, w5
- bge G_M6389_IG09
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- cmp w6, w4
- bhs G_M6389_IG11
- add x0, x0, #12
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ldrh w0, [x0, w6, UXTW #2]
- ; byrRegs -[x0]
- add w8, w2, w6
- ldr w3, [x1, #0x08]
- cmp w8, w3
- bhs G_M6389_IG11
- add x4, x1, #12
- ; byrRegs +[x4]
- ldrh w1, [x4, w8, UXTW #2]
- ; gcrRegs -[x1]
- sub w0, w0, w1
- ;; size=44 bbWeight=0.50 PerfScore 7.00
-G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ sub w0, w7, w8
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[x4]
+G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub w0, w4, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 172, prolog size 8, PerfScore 91.25, instruction count 43, allocated bytes for code 172 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 124, prolog size 8, PerfScore 83.00, instruction count 31, allocated bytes for code 124 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -108,7 +91,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-36 (-21.95%) : 279333.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -11,12 +11,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
; V02 loc0 [V02,T00] ( 7, 24.50) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> x5 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x4 "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> x6 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> x5 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -33,51 +35,39 @@ G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x2]
cmp w1, w3
blt G_M264_IG11
- b G_M264_IG09
+ b G_M264_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
; byrRegs +[x0 x2]
sxtw w4, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1
- sxtw w4, w5
- tbnz w4, #31, G_M264_IG06
+ sub w4, w4, #1
+ tbnz w4, #31, G_M264_IG09
cmp w4, w1
bhs G_M264_IG13
- ubfiz x6, x4, #2, #32
- ldr w7, [x0, x6]
+ ubfiz x5, x4, #2, #32
+ ldr w6, [x0, x5]
cmp w4, w3
bhs G_M264_IG13
- ldr w6, [x2, x6]
- cmp w7, w6
+ ldr w5, [x2, x5]
+ cmp w6, w5
beq G_M264_IG05
- ;; size=48 bbWeight=4 PerfScore 54.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- tbz w5, #31, G_M264_IG08
- mov w0, wzr
- ; byrRegs -[x0]
+ ;; size=44 bbWeight=4 PerfScore 52.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0 x2]
+ cmp w5, w6
+ bhi G_M264_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref, isz
- ; byrRegs +[x0]
- cmp w5, w1
- bhs G_M264_IG13
- ubfiz x6, x5, #2, #32
- ldr w0, [x0, x6]
- ; byrRegs -[x0]
- cmp w5, w3
- bhs G_M264_IG13
- ldr w1, [x2, x6]
- cmp w0, w1
- blo G_M264_IG11
- ;; size=36 bbWeight=0.50 PerfScore 5.75
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
- mov w0, #1
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
@@ -96,7 +86,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 8, PerfScore 68.50, instruction count 41, allocated bytes for code 164 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 128, prolog size 8, PerfScore 61.00, instruction count 32, allocated bytes for code 128 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -107,7 +97,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-17.14%) : 208012.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
@@ -8,10 +8,10 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 10, 20 ) ref -> x19 class-hnd <System.Xml.Schema.XmlSchemaObject>
+; V00 arg0 [V00,T00] ( 9, 19.50) ref -> x19 class-hnd <System.Xml.Schema.XmlSchemaObject>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-; V03 tmp2 [V03,T02] ( 3, 2 ) ref -> x0 class-hnd "spilling QMark2" <System.Xml.Schema.XmlSchema>
+; V02 tmp1 [V02,T02] ( 2, 2 ) long -> x1 "fgMakeTemp is creating a new local variable"
+; V03 tmp2 [V03,T01] ( 2, 2 ) ref -> x0 class-hnd "spilling QMark2" <System.Xml.Schema.XmlSchema>
;
; Lcl frame size = 8
@@ -29,7 +29,7 @@ G_M32300_IG03: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x19, [x19, #0x18]
;; size=4 bbWeight=2 PerfScore 6.00
G_M32300_IG04: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M32300_IG06
+ cbz x19, G_M32300_IG08
;; size=4 bbWeight=8 PerfScore 8.00
G_M32300_IG05: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x19
@@ -42,54 +42,35 @@ G_M32300_IG05: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcr arg pop 0
cbz x0, G_M32300_IG03
;; size=24 bbWeight=4 PerfScore 16.00
-G_M32300_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M32300_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- cbz x19, G_M32300_IG12
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M32300_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x0, x1
- beq G_M32300_IG09
- ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M32300_IG08: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x0, x1
- mov x1, x19
- ; gcrRegs +[x1]
- bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
- ; gcrRegs -[x1 x19] +[x0]
- ; gcr arg pop 0
- b G_M32300_IG10
- ;; size=16 bbWeight=0.25 PerfScore 0.75
-G_M32300_IG09: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0] +[x19]
- mov x0, x19
+ csel x0, x19, x19, eq
; gcrRegs +[x0]
- ;; size=4 bbWeight=0.25 PerfScore 0.12
-G_M32300_IG10: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
ldr x0, [x0, #0x30]
- ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M32300_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=28 bbWeight=0.50 PerfScore 4.25
+G_M32300_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M32300_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
+G_M32300_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x19]
movz x0, #8
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M32300_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M32300_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 140, prolog size 16, PerfScore 45.12, instruction count 35, allocated bytes for code 140 (MethodHash=8b5f81d3) for method System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
+; Total bytes of code 116, prolog size 16, PerfScore 43.00, instruction count 29, allocated bytes for code 116 (MethodHash=8b5f81d3) for method System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -100,7 +81,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+3.61%) : 200248.dasm - System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
@@ -13,16 +13,18 @@
; V02 loc1 [V02,T04] ( 3, 1.50) int -> x0
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T02] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T05] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V06 tmp3 [V06,T01] ( 6, 4.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
+; V05 tmp2 [V05,T05] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
+; V06 tmp3 [V06,T01] ( 5, 3.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
; V07 tmp4 [V07,T03] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V08 cse0 [V08,T06] ( 3, 1 ) long -> x19 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M33783_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M33783_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldrb w1, [x0, #0xD1FFAB1E]
@@ -39,22 +41,21 @@ G_M33783_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
cbz x0, G_M33783_IG12
;; size=28 bbWeight=0.50 PerfScore 6.00
G_M33783_IG04: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- cmp x2, x3
+ ldr x19, [x0]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ cmp x19, x2
beq G_M33783_IG06
;; size=24 bbWeight=0.25 PerfScore 1.50
G_M33783_IG05: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x3
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
;; size=8 bbWeight=0.12 PerfScore 0.19
G_M33783_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0]
- ldr x1, [x1, #0x78]
+ ldr x1, [x19, #0x78]
ldr x1, [x1]
blr x1
movz x11, #0xD1FFAB1E // code for <unknown method>
@@ -72,7 +73,7 @@ G_M33783_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
movk x0, #1 LSL #32
ldr w0, [x0]
tbz w0, #0, G_M33783_IG15
- ;; size=72 bbWeight=0.50 PerfScore 12.00
+ ;; size=68 bbWeight=0.50 PerfScore 10.50
G_M33783_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x0, #0xD1FFAB1E LSL #16
@@ -81,9 +82,10 @@ G_M33783_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[x0]
;; size=16 bbWeight=0.50 PerfScore 2.25
G_M33783_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M33783_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E
@@ -100,9 +102,10 @@ G_M33783_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[x0]
;; size=16 bbWeight=0.50 PerfScore 2.25
G_M33783_IG11: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M33783_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E
@@ -119,9 +122,10 @@ G_M33783_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[x0]
;; size=16 bbWeight=0.50 PerfScore 2.25
G_M33783_IG14: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M33783_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E
@@ -148,18 +152,18 @@ G_M33783_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
b G_M33783_IG13
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 332, prolog size 8, PerfScore 40.44, instruction count 83, allocated bytes for code 332 (MethodHash=26627c08) for method System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
+; Total bytes of code 344, prolog size 12, PerfScore 42.94, instruction count 86, allocated bytes for code 344 (MethodHash=26627c08) for method System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 3
E bit : 0
X bit : 0
Vers : 0
- Function Length : 83 (0x00053) Actual length = 332 (0x00014c)
+ Function Length : 86 (0x00056) Actual length = 344 (0x000158)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -173,7 +177,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
+8 (+4.65%) : 217126.dasm - System.ComponentModel.TypeConverter+SimplePropertyDescriptor:ResetValue(System.Object):this (FullOpts)
@@ -7,27 +7,29 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 6 ) ref -> x19 this class-hnd single-def <System.ComponentModel.TypeConverter+SimplePropertyDescriptor>
-; V01 arg1 [V01,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 6, 5 ) ref -> x19 this class-hnd single-def <System.ComponentModel.TypeConverter+SimplePropertyDescriptor>
+; V01 arg1 [V01,T03] ( 3, 2.50) ref -> x20 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T04] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T06] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V06 tmp3 [V06,T00] ( 6, 8.75) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
-; V07 tmp4 [V07,T02] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
-; V08 tmp5 [V08,T05] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
+; V05 tmp2 [V05,T06] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
+; V06 tmp3 [V06,T02] ( 5, 5.75) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
+; V07 tmp4 [V07,T01] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
+; V08 tmp5 [V08,T05] ( 2, 2 ) ref -> x2 single-def "argument with side effect"
+; V09 cse0 [V09,T07] ( 3, 1 ) long -> x21 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M9521_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
; gcrRegs +[x20]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M9521_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
@@ -47,22 +49,21 @@ G_M9521_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
cbz x0, G_M9521_IG07
;; size=56 bbWeight=1 PerfScore 23.50
G_M9521_IG03: ; bbWeight=0.25, gcrefRegs=180003 {x0 x1 x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- cmp x2, x3
+ ldr x21, [x0]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ cmp x21, x2
beq G_M9521_IG05
;; size=24 bbWeight=0.25 PerfScore 1.50
G_M9521_IG04: ; bbWeight=0.12, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x3
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M9521_IG05: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
- ldr x1, [x0]
- ldr x1, [x1, #0x48]
+G_M9521_IG05: ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
+ ldr x1, [x21, #0x48]
ldr x1, [x1, #0x38]
blr x1
mov x2, x0
@@ -73,20 +74,22 @@ G_M9521_IG05: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
ldr x3, [x19]
ldr x3, [x3, #0x60]
ldr x3, [x3, #0x30]
- ;; size=40 bbWeight=1 PerfScore 20.50
-G_M9521_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ;; size=36 bbWeight=0.50 PerfScore 8.75
+G_M9521_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
br x3
- ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
G_M9521_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x0-x2 x19-x20]
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 172, prolog size 12, PerfScore 53.69, instruction count 43, allocated bytes for code 172 (MethodHash=ff5fdace) for method System.ComponentModel.TypeConverter+SimplePropertyDescriptor:ResetValue(System.Object):this (FullOpts)
+; Total bytes of code 180, prolog size 16, PerfScore 43.44, instruction count 45, allocated bytes for code 180 (MethodHash=ff5fdace) for method System.ComponentModel.TypeConverter+SimplePropertyDescriptor:ResetValue(System.Object):this (FullOpts)
; ============================================================
Unwind Info:
@@ -97,7 +100,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -108,10 +111,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
+8 (+7.14%) : 199917.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
@@ -13,16 +13,18 @@
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlDocument>
; V04 tmp2 [V04,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp3 [V05,T04] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V06 tmp4 [V06,T00] ( 6, 8.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
-; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
+; V05 tmp3 [V05,T04] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
+; V06 tmp4 [V06,T01] ( 5, 5.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
+; V07 tmp5 [V07,T00] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
+; V08 cse0 [V08,T05] ( 3, 1 ) long -> x19 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M56653_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M56653_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldr x0, [x0, #0x08]
@@ -36,28 +38,28 @@ G_M56653_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
cbz x0, G_M56653_IG07
;; size=32 bbWeight=1 PerfScore 15.00
G_M56653_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- cmp x2, x3
+ ldr x19, [x0]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ cmp x19, x2
beq G_M56653_IG05
;; size=24 bbWeight=0.25 PerfScore 1.50
G_M56653_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x3
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M56653_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ldr x1, [x0]
- ldr x1, [x1, #0x70]
+G_M56653_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ldr x1, [x19, #0x70]
ldr x1, [x1, #0x18]
- ;; size=12 bbWeight=1 PerfScore 9.00
-G_M56653_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ;; size=8 bbWeight=0.50 PerfScore 3.00
+G_M56653_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
br x1
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M56653_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
movz x0, #8
@@ -65,22 +67,23 @@ G_M56653_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
movk x0, #1 LSL #32
;; size=12 bbWeight=0.50 PerfScore 0.75
G_M56653_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 112, prolog size 8, PerfScore 30.94, instruction count 28, allocated bytes for code 112 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
+; Total bytes of code 120, prolog size 12, PerfScore 26.94, instruction count 30, allocated bytes for code 120 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -91,7 +94,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
libraries_tests.run.osx.arm64.Release.mch
-48 (-27.91%) : 392226.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
@@ -8,15 +8,17 @@
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 37
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 5, 6.14) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T01] ( 6, 8.27) ref -> x1 class-hnd single-def <System.String>
-; V02 arg2 [V02,T05] ( 4, 5.14) int -> x2 single-def
+; V00 arg0 [V00,T02] ( 4, 5.19) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T01] ( 4, 6.38) ref -> x1 class-hnd single-def <System.String>
+; V02 arg2 [V02,T05] ( 3, 4.19) int -> x2 single-def
; V03 arg3 [V03,T06] ( 5, 4.05) int -> x3 single-def
-; V04 loc0 [V04,T04] ( 6, 7.24) int -> x5
-; V05 loc1 [V05,T00] ( 11, 16.14) int -> x6
+; V04 loc0 [V04,T04] ( 5, 6.24) int -> x5
+; V05 loc1 [V05,T00] ( 7, 12.30) int -> x6
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T07] ( 5, 5.19) int -> x4 "CSE - aggressive"
-; V08 cse1 [V08,T02] ( 6, 9.41) int -> x8 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T07] ( 3, 5.32) int -> x8 "CSE - aggressive"
+; V08 cse1 [V08,T08] ( 3, 5.32) int -> x7 "CSE - aggressive"
+; V09 cse2 [V09,T03] ( 3, 6.57) int -> x8 "CSE - aggressive"
+; V10 cse3 [V10,T09] ( 4, 4.24) int -> x4 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -38,11 +40,11 @@ G_M6389_IG03: ; bbWeight=1.24, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {},
;; size=4 bbWeight=1.24 PerfScore 0.62
G_M6389_IG04: ; bbWeight=2.24, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
cmp w6, w5
- bge G_M6389_IG06
+ bge G_M6389_IG08
;; size=8 bbWeight=2.24 PerfScore 3.36
G_M6389_IG05: ; bbWeight=2.19, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
cmp w6, w4
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x7, x0, #12
; byrRegs +[x7]
ldrh w7, [x7, w6, UXTW #2]
@@ -50,55 +52,36 @@ G_M6389_IG05: ; bbWeight=2.19, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {},
add w8, w2, w6
ldr w9, [x1, #0x08]
cmp w8, w9
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x9, x1, #12
; byrRegs +[x9]
ldrh w8, [x9, w8, UXTW #2]
cmp w7, w8
beq G_M6389_IG03
;; size=48 bbWeight=2.19 PerfScore 32.84
-G_M6389_IG06: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M6389_IG06: ; bbWeight=0.95, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0-x1]
; byrRegs -[x9]
- cmp w6, w5
- bge G_M6389_IG09
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M6389_IG07: ; bbWeight=0.95, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- cmp w6, w4
- bhs G_M6389_IG11
- add x0, x0, #12
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ldrh w0, [x0, w6, UXTW #2]
- ; byrRegs -[x0]
- add w8, w2, w6
- ldr w3, [x1, #0x08]
- cmp w8, w3
- bhs G_M6389_IG11
- add x4, x1, #12
- ; byrRegs +[x4]
- ldrh w1, [x4, w8, UXTW #2]
- ; gcrRegs -[x1]
- sub w0, w0, w1
- ;; size=44 bbWeight=0.95 PerfScore 13.24
-G_M6389_IG08: ; bbWeight=0.95, epilog, nogc, extend
+ sub w0, w7, w8
+ ;; size=4 bbWeight=0.95 PerfScore 0.47
+G_M6389_IG07: ; bbWeight=0.95, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.95 PerfScore 1.89
-G_M6389_IG09: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[x4]
+G_M6389_IG08: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub w0, w4, w3
;; size=4 bbWeight=0.05 PerfScore 0.03
-G_M6389_IG10: ; bbWeight=0.05, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.05, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.05 PerfScore 0.11
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 172, prolog size 8, PerfScore 61.09, instruction count 43, allocated bytes for code 172 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
+; Total bytes of code 124, prolog size 8, PerfScore 46.82, instruction count 31, allocated bytes for code 124 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
; ============================================================
Unwind Info:
@@ -109,7 +92,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-36 (-22.50%) : 470561.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (Tier1)
@@ -5,19 +5,21 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 8516
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 8516
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T02] ( 7, 6.99) int -> x4
+; V02 loc0 [V02,T00] ( 7, 6.99) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 6, 12 ) int -> x5 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 3.00) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T03] ( 5, 4.00) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 3.00) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T01] ( 6, 5.00) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T04] ( 6, 5.99) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T03] ( 2, 4 ) int -> x4 "dup spill"
+; V05 tmp2 [V05,T04] ( 2, 2.00) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T02] ( 4, 3.00) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T05] ( 2, 2.00) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T01] ( 5, 4.00) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T06] ( 3, 3.00) int -> x6 "CSE - aggressive"
+; V10 cse1 [V10,T07] ( 3, 3.00) int -> x5 "CSE - aggressive"
+; V11 cse2 [V11,T08] ( 3, 2.99) long -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -28,71 +30,61 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
; byrRegs +[x0 x2]
cmp w1, w3
- bne G_M264_IG11
+ bne G_M264_IG13
sxtw w4, w3
;; size=12 bbWeight=1 PerfScore 2.00
G_M264_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1
- sxtw w4, w5
- tbnz w4, #31, G_M264_IG05
- ;; size=12 bbWeight=1 PerfScore 2.00
+ sub w4, w4, #1
+ tbnz w4, #31, G_M264_IG08
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M264_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
cmp w4, w1
- bhs G_M264_IG10
- ubfiz x6, x4, #2, #32
- ldr w7, [x0, x6]
+ bhs G_M264_IG12
+ ubfiz x5, x4, #2, #32
+ ldr w6, [x0, x5]
cmp w4, w3
- bhs G_M264_IG10
- ldr w6, [x2, x6]
- cmp w7, w6
+ bhs G_M264_IG12
+ ldr w5, [x2, x5]
+ cmp w6, w5
beq G_M264_IG03
;; size=36 bbWeight=1.00 PerfScore 11.48
-G_M264_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- tbnz w5, #31, G_M264_IG12
- cmp w5, w1
- bhs G_M264_IG10
- ubfiz x6, x5, #2, #32
- ldr w0, [x0, x6]
- ; byrRegs -[x0]
- cmp w5, w3
- bhs G_M264_IG10
- ldr w1, [x2, x6]
- cmp w0, w1
- bhs G_M264_IG08
- ;; size=40 bbWeight=1 PerfScore 12.50
+G_M264_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0 x2]
+ cmp w5, w6
+ bls G_M264_IG10
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M264_IG06: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
movn w0, #0
;; size=4 bbWeight=0.97 PerfScore 0.48
G_M264_IG07: ; bbWeight=0.97, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.97 PerfScore 1.93
-G_M264_IG08: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M264_IG09: ; bbWeight=1, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M264_IG10: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
;; size=4 bbWeight=0.03 PerfScore 0.02
-G_M264_IG09: ; bbWeight=0.03, epilog, nogc, extend
+G_M264_IG11: ; bbWeight=0.03, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.03 PerfScore 0.07
-G_M264_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG12: ; 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_M264_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M264_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp w1, w3
blt G_M264_IG06
- b G_M264_IG08
+ b G_M264_IG10
;; size=12 bbWeight=0 PerfScore 0.00
-G_M264_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov w0, wzr
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M264_IG13: ; bbWeight=0, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 160, prolog size 8, PerfScore 31.98, instruction count 40, allocated bytes for code 160 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 124, prolog size 8, PerfScore 22.98, instruction count 31, allocated bytes for code 124 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================
Unwind Info:
@@ -103,7 +95,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-36 (-22.50%) : 493486.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (Tier1)
@@ -5,19 +5,21 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 14062
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 14062
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T02] ( 7, 7.00) int -> x4
+; V02 loc0 [V02,T00] ( 7, 7.00) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 6, 12 ) int -> x5 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 3.00) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T03] ( 5, 4.00) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 3.00) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T01] ( 6, 5.00) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T04] ( 6, 6.00) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T03] ( 2, 4 ) int -> x4 "dup spill"
+; V05 tmp2 [V05,T04] ( 2, 2.00) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T02] ( 4, 3.00) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T05] ( 2, 2.00) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T01] ( 5, 4.00) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T06] ( 3, 3.00) int -> x6 "CSE - aggressive"
+; V10 cse1 [V10,T07] ( 3, 3.00) int -> x5 "CSE - aggressive"
+; V11 cse2 [V11,T08] ( 3, 3.00) long -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -28,71 +30,61 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
; byrRegs +[x0 x2]
cmp w1, w3
- bne G_M264_IG11
+ bne G_M264_IG13
sxtw w4, w3
;; size=12 bbWeight=1 PerfScore 2.00
G_M264_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1
- sxtw w4, w5
- tbnz w4, #31, G_M264_IG05
- ;; size=12 bbWeight=1 PerfScore 2.00
+ sub w4, w4, #1
+ tbnz w4, #31, G_M264_IG08
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M264_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
cmp w4, w1
- bhs G_M264_IG10
- ubfiz x6, x4, #2, #32
- ldr w7, [x0, x6]
+ bhs G_M264_IG12
+ ubfiz x5, x4, #2, #32
+ ldr w6, [x0, x5]
cmp w4, w3
- bhs G_M264_IG10
- ldr w6, [x2, x6]
- cmp w7, w6
+ bhs G_M264_IG12
+ ldr w5, [x2, x5]
+ cmp w6, w5
beq G_M264_IG03
;; size=36 bbWeight=1.00 PerfScore 11.50
-G_M264_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- tbnz w5, #31, G_M264_IG12
- cmp w5, w1
- bhs G_M264_IG10
- ubfiz x6, x5, #2, #32
- ldr w0, [x0, x6]
- ; byrRegs -[x0]
- cmp w5, w3
- bhs G_M264_IG10
- ldr w1, [x2, x6]
- cmp w0, w1
- bhs G_M264_IG08
- ;; size=40 bbWeight=1 PerfScore 12.50
+G_M264_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0 x2]
+ cmp w5, w6
+ bls G_M264_IG10
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M264_IG06: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
movn w0, #0
;; size=4 bbWeight=0.97 PerfScore 0.48
G_M264_IG07: ; bbWeight=0.97, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.97 PerfScore 1.94
-G_M264_IG08: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M264_IG09: ; bbWeight=1, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M264_IG10: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
;; size=4 bbWeight=0.03 PerfScore 0.02
-G_M264_IG09: ; bbWeight=0.03, epilog, nogc, extend
+G_M264_IG11: ; bbWeight=0.03, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.03 PerfScore 0.06
-G_M264_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG12: ; 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_M264_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M264_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp w1, w3
blt G_M264_IG06
- b G_M264_IG08
+ b G_M264_IG10
;; size=12 bbWeight=0 PerfScore 0.00
-G_M264_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov w0, wzr
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M264_IG13: ; bbWeight=0, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 160, prolog size 8, PerfScore 32.00, instruction count 40, allocated bytes for code 160 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 124, prolog size 8, PerfScore 23.00, instruction count 31, allocated bytes for code 124 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================
Unwind Info:
@@ -103,7 +95,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+6.56%) : 58772.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
@@ -9,20 +9,20 @@
; 4 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 9, 5.37) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V00 this [V00,T00] ( 9, 5.37) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Version>
-; V02 loc1 [V02,T03] ( 5, 5 ) ref -> x20 class-hnd <System.Version>
+; V02 loc1 [V02,T06] ( 5, 3 ) ref -> x20 class-hnd <System.Version>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V06 tmp2 [V06,T06] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
-; V07 tmp3 [V07,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V06 tmp2 [V06,T05] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
+; V07 tmp3 [V07,T03] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
; V08 tmp4 [V08,T07] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V09 tmp5 [V09,T00] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V09 tmp5 [V09,T01] ( 5, 5.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
-; V11 tmp7 [V11,T05] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V11 tmp7 [V11,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
; V12 tmp8 [V12,T08] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V13 tmp9 [V13,T01] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V13 tmp9 [V13,T02] ( 5, 5.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;
; Lcl frame size = 8
@@ -40,18 +40,18 @@ G_M53393_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcrRegs +[x20]
ldr x21, [x19, #0x88]
; gcrRegs +[x21]
- cbz x21, G_M53393_IG16
+ cbz x21, G_M53393_IG14
;; size=12 bbWeight=1 PerfScore 4.50
G_M53393_IG03: ; bbWeight=1.00, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x21, #0x18]
- tbz w0, #1, G_M53393_IG16
+ tbz w0, #1, G_M53393_IG14
;; size=8 bbWeight=1.00 PerfScore 4.00
G_M53393_IG04: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
ldr x1, [x21, #0x08]
; gcrRegs +[x1]
mov x2, x1
; gcrRegs +[x2]
- cbz x2, G_M53393_IG08
+ cbz x2, G_M53393_IG07
;; size=12 bbWeight=1 PerfScore 4.50
G_M53393_IG05: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20-x21]
@@ -60,7 +60,7 @@ G_M53393_IG05: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=00
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
cmp x0, x3
- beq G_M53393_IG07
+ beq G_M53393_IG15
;; size=24 bbWeight=0.50 PerfScore 3.00
G_M53393_IG06: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
@@ -69,20 +69,16 @@ G_M53393_IG06: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
; gcrRegs -[x1] +[x0]
mov x2, x0
; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M53393_IG07: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x20, [x2, #0x20]
- ; gcrRegs +[x20]
- ;; size=4 bbWeight=1 PerfScore 3.00
-G_M53393_IG08: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
- cbnz x20, G_M53393_IG13
+ b G_M53393_IG15
+ ;; size=16 bbWeight=0.25 PerfScore 0.75
+G_M53393_IG07: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0 x2] +[x20]
+ cbnz x20, G_M53393_IG11
ldr x1, [x19, #0x90]
; gcrRegs +[x1]
- cbz x1, G_M53393_IG15
+ cbz x1, G_M53393_IG13
;; size=12 bbWeight=1 PerfScore 5.00
-G_M53393_IG09: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M53393_IG08: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
ldr x0, [x19, #0x90]
; gcrRegs +[x0]
@@ -90,42 +86,38 @@ G_M53393_IG09: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs +[x1]
mov x2, x1
; gcrRegs +[x2]
- cbz x2, G_M53393_IG13
+ cbz x2, G_M53393_IG11
;; size=16 bbWeight=1 PerfScore 7.50
-G_M53393_IG10: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M53393_IG09: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x19-x20]
ldr x0, [x2]
movz x3, #0xD1FFAB1E
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
cmp x0, x3
- beq G_M53393_IG12
+ beq G_M53393_IG16
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M53393_IG11: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M53393_IG10: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
mov x0, x3
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
mov x2, x0
; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M53393_IG12: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x20, [x2, #0x20]
- ; gcrRegs +[x20]
- ;; size=4 bbWeight=1 PerfScore 3.00
-G_M53393_IG13: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
+ b G_M53393_IG16
+ ;; size=16 bbWeight=0.25 PerfScore 0.75
+G_M53393_IG11: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x2] +[x20]
mov x0, x20
; gcrRegs +[x0]
;; size=4 bbWeight=1 PerfScore 0.50
-G_M53393_IG14: ; bbWeight=1, epilog, nogc, extend
+G_M53393_IG12: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-G_M53393_IG15: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M53393_IG13: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x19]
add x1, x19, #144
; byrRegs +[x1]
@@ -138,9 +130,9 @@ G_M53393_IG15: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=180
blr x2
; gcrRegs -[x0]
; byrRegs -[x1]
- b G_M53393_IG09
+ b G_M53393_IG08
;; size=32 bbWeight=0.19 PerfScore 1.39
-G_M53393_IG16: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M53393_IG14: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:EnsureAttributesAreBound():this
@@ -153,8 +145,20 @@ G_M53393_IG16: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs +[x21]
b G_M53393_IG04
;; size=32 bbWeight=0.00 PerfScore 0.01
+G_M53393_IG15: ; bbWeight=0, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20-x21] +[x2]
+ ldr x20, [x2, #0x20]
+ ; gcrRegs +[x20]
+ b G_M53393_IG07
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M53393_IG16: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19-x20]
+ ldr x20, [x2, #0x20]
+ ; gcrRegs +[x20]
+ b G_M53393_IG11
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 16, PerfScore 49.40, instruction count 61, allocated bytes for code 244 (MethodHash=53202f6e) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
+; Total bytes of code 260, prolog size 16, PerfScore 43.90, instruction count 65, allocated bytes for code 260 (MethodHash=53202f6e) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
; ============================================================
Unwind Info:
@@ -165,7 +169,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
+ Function Length : 65 (0x00041) Actual length = 260 (0x000104)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+6.56%) : 88624.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
@@ -9,19 +9,19 @@
; 3 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 9, 5.25) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V00 this [V00,T00] ( 9, 5.25) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
;* V01 loc0 [V01,T09] ( 0, 0 ) ubyte -> zero-ref single-def
-; V02 loc1 [V02,T03] ( 5, 5 ) ubyte -> x20
+; V02 loc1 [V02,T06] ( 5, 3 ) ubyte -> x20
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V06 tmp2 [V06,T06] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
-; V07 tmp3 [V07,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V06 tmp2 [V06,T05] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
+; V07 tmp3 [V07,T03] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
; V08 tmp4 [V08,T07] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V09 tmp5 [V09,T00] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V10 tmp6 [V10,T05] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V09 tmp5 [V09,T01] ( 5, 5.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V10 tmp6 [V10,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
; V11 tmp7 [V11,T08] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V12 tmp8 [V12,T01] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V12 tmp8 [V12,T02] ( 5, 5.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;
; Lcl frame size = 8
@@ -38,18 +38,18 @@ G_M43843_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
mov w20, wzr
ldr x21, [x19, #0x88]
; gcrRegs +[x21]
- cbz x21, G_M43843_IG16
+ cbz x21, G_M43843_IG14
;; size=12 bbWeight=1 PerfScore 4.50
G_M43843_IG03: ; bbWeight=1.00, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x21, #0x18]
- tbz w0, #1, G_M43843_IG16
+ tbz w0, #1, G_M43843_IG14
;; size=8 bbWeight=1.00 PerfScore 3.99
G_M43843_IG04: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr x1, [x21, #0x08]
; gcrRegs +[x1]
mov x2, x1
; gcrRegs +[x2]
- cbz x2, G_M43843_IG08
+ cbz x2, G_M43843_IG07
;; size=12 bbWeight=1 PerfScore 4.50
G_M43843_IG05: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x21]
@@ -58,7 +58,7 @@ G_M43843_IG05: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=00
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
cmp x0, x3
- beq G_M43843_IG07
+ beq G_M43843_IG15
;; size=24 bbWeight=0.50 PerfScore 3.00
G_M43843_IG06: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
@@ -67,19 +67,16 @@ G_M43843_IG06: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
; gcrRegs -[x1] +[x0]
mov x2, x0
; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M43843_IG07: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldrb w20, [x2, #0x94]
- ;; size=4 bbWeight=1 PerfScore 3.00
-G_M43843_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
- cbnz w20, G_M43843_IG13
+ b G_M43843_IG15
+ ;; size=16 bbWeight=0.25 PerfScore 0.75
+G_M43843_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0 x2]
+ cbnz w20, G_M43843_IG11
ldr x1, [x19, #0x90]
; gcrRegs +[x1]
- cbz x1, G_M43843_IG15
+ cbz x1, G_M43843_IG13
;; size=12 bbWeight=1 PerfScore 5.00
-G_M43843_IG09: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M43843_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
ldr x0, [x19, #0x90]
; gcrRegs +[x0]
@@ -87,40 +84,37 @@ G_M43843_IG09: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcrRegs +[x1]
mov x2, x1
; gcrRegs +[x2]
- cbz x2, G_M43843_IG13
+ cbz x2, G_M43843_IG11
;; size=16 bbWeight=1 PerfScore 7.50
-G_M43843_IG10: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M43843_IG09: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x19]
ldr x0, [x2]
movz x3, #0xD1FFAB1E
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
cmp x0, x3
- beq G_M43843_IG12
+ beq G_M43843_IG16
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M43843_IG11: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M43843_IG10: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
mov x0, x3
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
mov x2, x0
; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M43843_IG12: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldrb w20, [x2, #0x94]
- ;; size=4 bbWeight=1 PerfScore 3.00
-G_M43843_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
+ b G_M43843_IG16
+ ;; size=16 bbWeight=0.25 PerfScore 0.75
+G_M43843_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x2]
mov w0, w20
;; size=4 bbWeight=1 PerfScore 0.50
-G_M43843_IG14: ; bbWeight=1, epilog, nogc, extend
+G_M43843_IG12: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-G_M43843_IG15: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M43843_IG13: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
add x1, x19, #144
; byrRegs +[x1]
@@ -133,9 +127,9 @@ G_M43843_IG15: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=800
blr x2
; gcrRegs -[x0]
; byrRegs -[x1]
- b G_M43843_IG09
+ b G_M43843_IG08
;; size=32 bbWeight=0.12 PerfScore 0.93
-G_M43843_IG16: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M43843_IG14: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:EnsureAttributesAreBound():this
@@ -148,8 +142,18 @@ G_M43843_IG16: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs +[x21]
b G_M43843_IG04
;; size=32 bbWeight=0.00 PerfScore 0.03
+G_M43843_IG15: ; bbWeight=0, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x21] +[x2]
+ ldrb w20, [x2, #0x94]
+ b G_M43843_IG07
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M43843_IG16: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19]
+ ldrb w20, [x2, #0x94]
+ b G_M43843_IG11
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 16, PerfScore 48.94, instruction count 61, allocated bytes for code 244 (MethodHash=f14d54bc) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
+; Total bytes of code 260, prolog size 16, PerfScore 43.44, instruction count 65, allocated bytes for code 260 (MethodHash=f14d54bc) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -160,7 +164,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
+ Function Length : 65 (0x00041) Actual length = 260 (0x000104)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+6.56%) : 613768.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
@@ -9,18 +9,18 @@
; 3 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 9, 5.22) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
-; V01 loc0 [V01,T03] ( 5, 5 ) int -> x20
+; V00 this [V00,T00] ( 9, 5.22) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V01 loc0 [V01,T08] ( 5, 2 ) int -> x20
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V05 tmp2 [V05,T06] ( 5, 4.00) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
-; V06 tmp3 [V06,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
-; V07 tmp4 [V07,T07] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V08 tmp5 [V08,T00] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V09 tmp6 [V09,T05] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
-; V10 tmp7 [V10,T08] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V11 tmp8 [V11,T01] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V05 tmp2 [V05,T05] ( 5, 4.00) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
+; V06 tmp3 [V06,T03] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V07 tmp4 [V07,T06] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
+; V08 tmp5 [V08,T01] ( 5, 5.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V09 tmp6 [V09,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V10 tmp7 [V10,T07] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
+; V11 tmp8 [V11,T02] ( 5, 5.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;
; Lcl frame size = 8
@@ -37,18 +37,18 @@ G_M4380_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
mov w20, wzr
ldr x21, [x19, #0x88]
; gcrRegs +[x21]
- cbz x21, G_M4380_IG16
+ cbz x21, G_M4380_IG14
;; size=12 bbWeight=1 PerfScore 4.50
G_M4380_IG03: ; bbWeight=0.99, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x21, #0x18]
- tbz w0, #1, G_M4380_IG16
+ tbz w0, #1, G_M4380_IG14
;; size=8 bbWeight=0.99 PerfScore 3.96
G_M4380_IG04: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr x1, [x21, #0x08]
; gcrRegs +[x1]
mov x2, x1
; gcrRegs +[x2]
- cbz x2, G_M4380_IG08
+ cbz x2, G_M4380_IG07
;; size=12 bbWeight=1 PerfScore 4.50
G_M4380_IG05: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x21]
@@ -57,7 +57,7 @@ G_M4380_IG05: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=000
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
cmp x0, x3
- beq G_M4380_IG07
+ beq G_M4380_IG15
;; size=24 bbWeight=0.50 PerfScore 3.00
G_M4380_IG06: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
@@ -66,18 +66,15 @@ G_M4380_IG06: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {
; gcrRegs -[x1] +[x0]
mov x2, x0
; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M4380_IG07: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr w20, [x2, #0x90]
- ;; size=4 bbWeight=1 PerfScore 3.00
-G_M4380_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
+ b G_M4380_IG15
+ ;; size=16 bbWeight=0.25 PerfScore 0.75
+G_M4380_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0 x2]
ldr x1, [x19, #0x90]
; gcrRegs +[x1]
- cbz x1, G_M4380_IG15
+ cbz x1, G_M4380_IG13
;; size=8 bbWeight=1 PerfScore 4.00
-G_M4380_IG09: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
ldr x0, [x19, #0x90]
; gcrRegs +[x0]
@@ -85,41 +82,37 @@ G_M4380_IG09: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
; gcrRegs +[x1]
mov x2, x1
; gcrRegs +[x2]
- cbz x2, G_M4380_IG13
+ cbz x2, G_M4380_IG11
;; size=16 bbWeight=1 PerfScore 7.50
-G_M4380_IG10: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG09: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x19]
ldr x0, [x2]
movz x3, #0xD1FFAB1E
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
cmp x0, x3
- beq G_M4380_IG12
+ beq G_M4380_IG16
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M4380_IG11: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M4380_IG10: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
mov x0, x3
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
mov x2, x0
; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M4380_IG12: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr w0, [x2, #0x90]
- orr w20, w20, w0
- ;; size=8 bbWeight=1 PerfScore 3.50
-G_M4380_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
+ b G_M4380_IG16
+ ;; size=16 bbWeight=0.25 PerfScore 0.75
+G_M4380_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x2]
mov w0, w20
;; size=4 bbWeight=1 PerfScore 0.50
-G_M4380_IG14: ; bbWeight=1, epilog, nogc, extend
+G_M4380_IG12: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-G_M4380_IG15: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M4380_IG13: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
add x1, x19, #144
; byrRegs +[x1]
@@ -132,9 +125,9 @@ G_M4380_IG15: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=8000
blr x2
; gcrRegs -[x0]
; byrRegs -[x1]
- b G_M4380_IG09
+ b G_M4380_IG08
;; size=32 bbWeight=0.10 PerfScore 0.76
-G_M4380_IG16: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M4380_IG14: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:EnsureAttributesAreBound():this
@@ -147,8 +140,19 @@ G_M4380_IG16: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs +[x21]
b G_M4380_IG04
;; size=32 bbWeight=0.01 PerfScore 0.11
+G_M4380_IG15: ; bbWeight=0, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x21] +[x2]
+ ldr w20, [x2, #0x90]
+ b G_M4380_IG07
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M4380_IG16: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19]
+ ldr w0, [x2, #0x90]
+ orr w20, w20, w0
+ b G_M4380_IG11
+ ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 16, PerfScore 48.33, instruction count 61, allocated bytes for code 244 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
+; Total bytes of code 260, prolog size 16, PerfScore 42.33, instruction count 65, allocated bytes for code 260 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
; ============================================================
Unwind Info:
@@ -159,7 +163,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
+ Function Length : 65 (0x00041) Actual length = 260 (0x000104)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
-48 (-27.91%) : 128185.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
@@ -7,15 +7,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 6, 11 ) ref -> x1 class-hnd single-def <System.String>
-; V02 arg2 [V02,T05] ( 4, 6.50) int -> x2 single-def
-; V03 arg3 [V03,T07] ( 5, 4.50) int -> x3 single-def
-; V04 loc0 [V04,T03] ( 6, 13 ) int -> x5
-; V05 loc1 [V05,T00] ( 11, 27.50) int -> x6
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> x1 class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 3, 6 ) int -> x2 single-def
+; V03 arg3 [V03,T08] ( 5, 4.50) int -> x3 single-def
+; V04 loc0 [V04,T01] ( 5, 12 ) int -> x5
+; V05 loc1 [V05,T00] ( 7, 25 ) int -> x6
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> x4 "CSE - aggressive"
-; V08 cse1 [V08,T01] ( 6, 13.50) int -> x8 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> x8 "CSE - aggressive"
+; V08 cse1 [V08,T06] ( 3, 8.50) int -> x7 "CSE - aggressive"
+; V09 cse2 [V09,T09] ( 4, 6.50) int -> x4 "CSE - aggressive"
+; V10 cse3 [V10,T03] ( 3, 12 ) int -> x8 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -37,11 +39,11 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M6389_IG04: ; bbWeight=8, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
cmp w6, w5
- bge G_M6389_IG06
+ bge G_M6389_IG08
;; size=8 bbWeight=8 PerfScore 12.00
G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
cmp w6, w4
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x7, x0, #12
; byrRegs +[x7]
ldrh w7, [x7, w6, UXTW #2]
@@ -49,55 +51,36 @@ G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by
add w8, w2, w6
ldr w9, [x1, #0x08]
cmp w8, w9
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x9, x1, #12
; byrRegs +[x9]
ldrh w8, [x9, w8, UXTW #2]
cmp w7, w8
beq G_M6389_IG03
;; size=48 bbWeight=4 PerfScore 60.00
-G_M6389_IG06: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0-x1]
; byrRegs -[x9]
- cmp w6, w5
- bge G_M6389_IG09
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- cmp w6, w4
- bhs G_M6389_IG11
- add x0, x0, #12
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ldrh w0, [x0, w6, UXTW #2]
- ; byrRegs -[x0]
- add w8, w2, w6
- ldr w3, [x1, #0x08]
- cmp w8, w3
- bhs G_M6389_IG11
- add x4, x1, #12
- ; byrRegs +[x4]
- ldrh w1, [x4, w8, UXTW #2]
- ; gcrRegs -[x1]
- sub w0, w0, w1
- ;; size=44 bbWeight=0.50 PerfScore 7.00
-G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ sub w0, w7, w8
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[x4]
+G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub w0, w4, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 172, prolog size 8, PerfScore 91.25, instruction count 43, allocated bytes for code 172 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 124, prolog size 8, PerfScore 83.00, instruction count 31, allocated bytes for code 124 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -108,7 +91,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-36 (-21.95%) : 31373.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -11,12 +11,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
; V02 loc0 [V02,T00] ( 7, 24.50) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> x5 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x4 "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> x6 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> x5 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -33,51 +35,39 @@ G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x2]
cmp w1, w3
blt G_M264_IG11
- b G_M264_IG09
+ b G_M264_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
; byrRegs +[x0 x2]
sxtw w4, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1
- sxtw w4, w5
- tbnz w4, #31, G_M264_IG06
+ sub w4, w4, #1
+ tbnz w4, #31, G_M264_IG09
cmp w4, w1
bhs G_M264_IG13
- ubfiz x6, x4, #2, #32
- ldr w7, [x0, x6]
+ ubfiz x5, x4, #2, #32
+ ldr w6, [x0, x5]
cmp w4, w3
bhs G_M264_IG13
- ldr w6, [x2, x6]
- cmp w7, w6
+ ldr w5, [x2, x5]
+ cmp w6, w5
beq G_M264_IG05
- ;; size=48 bbWeight=4 PerfScore 54.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- tbz w5, #31, G_M264_IG08
- mov w0, wzr
- ; byrRegs -[x0]
+ ;; size=44 bbWeight=4 PerfScore 52.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0 x2]
+ cmp w5, w6
+ bhi G_M264_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref, isz
- ; byrRegs +[x0]
- cmp w5, w1
- bhs G_M264_IG13
- ubfiz x6, x5, #2, #32
- ldr w0, [x0, x6]
- ; byrRegs -[x0]
- cmp w5, w3
- bhs G_M264_IG13
- ldr w1, [x2, x6]
- cmp w0, w1
- blo G_M264_IG11
- ;; size=36 bbWeight=0.50 PerfScore 5.75
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
- mov w0, #1
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
@@ -96,7 +86,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 8, PerfScore 68.50, instruction count 41, allocated bytes for code 164 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 128, prolog size 8, PerfScore 61.00, instruction count 32, allocated bytes for code 128 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -107,7 +97,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-12.07%) : 93669.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
@@ -8,12 +8,13 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 11, 21 ) ref -> x0 this class-hnd single-def <System.Data.ExpressionParser>
-; V01 loc0 [V01,T04] ( 6, 14 ) ref -> x3 class-hnd single-def <<unknown class>>
+; V01 loc0 [V01,T04] ( 5, 13 ) ref -> x3 class-hnd single-def <<unknown class>>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 24 ) int -> x1 "index expr"
-; V04 tmp2 [V04,T05] ( 3, 6 ) int -> x1 "index expr"
-; V05 cse0 [V05,T00] ( 9, 31 ) int -> x19 "CSE - aggressive"
-; V06 cse1 [V06,T03] ( 5, 22 ) int -> x2 "CSE - aggressive"
+;* V04 tmp2 [V04,T06] ( 0, 0 ) int -> zero-ref "index expr"
+; V05 cse0 [V05,T05] ( 3, 9 ) int -> x2 "CSE - aggressive"
+; V06 cse1 [V06,T00] ( 7, 29 ) int -> x19 "CSE - aggressive"
+; V07 cse2 [V07,T03] ( 3, 20 ) int -> x2 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -33,22 +34,9 @@ G_M44374_IG03: ; bbWeight=8, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, b
str w19, [x0, #0x30]
ldr w2, [x3, #0x08]
cmp w2, w19
- ble G_M44374_IG05
+ ble G_M44374_IG08
;; size=24 bbWeight=8 PerfScore 72.00
G_M44374_IG04: ; bbWeight=4, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref, isz
- sxtw w1, w19
- cmp w1, w2
- bhs G_M44374_IG07
- add x4, x3, #16
- ; byrRegs +[x4]
- ldrh w1, [x4, w1, UXTW #2]
- cmp w1, #35
- bne G_M44374_IG03
- ;; size=28 bbWeight=4 PerfScore 28.00
-G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x4]
- cmp w2, w19
- ble G_M44374_IG08
sxtw w1, w19
cmp w1, w2
bhs G_M44374_IG07
@@ -56,13 +44,17 @@ G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, b
; byrRegs +[x2]
ldrh w2, [x2, w1, UXTW #2]
; byrRegs -[x2]
+ cmp w2, #35
+ bne G_M44374_IG03
+ ;; size=28 bbWeight=4 PerfScore 28.00
+G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref, isz
cmp w2, #35
bne G_M44374_IG09
mov w2, #7
str w2, [x0, #0x38]
add w2, w19, #1
str w2, [x0, #0x30]
- ;; size=52 bbWeight=1 PerfScore 11.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M44374_IG06: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
@@ -114,7 +106,7 @@ G_M44374_IG09: ; bbWeight=0, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, b
brk_unix #0
;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 232, prolog size 12, PerfScore 121.00, instruction count 58, allocated bytes for code 232 (MethodHash=962252a9) for method System.Data.ExpressionParser:ScanDate():this (FullOpts)
+; Total bytes of code 204, prolog size 12, PerfScore 114.00, instruction count 51, allocated bytes for code 204 (MethodHash=962252a9) for method System.Data.ExpressionParser:ScanDate():this (FullOpts)
; ============================================================
Unwind Info:
@@ -125,7 +117,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
+ Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+4.42%) : 21088.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
@@ -13,36 +13,37 @@
; V02 arg2 [V02,T09] ( 5, 4 ) byref -> x19 single-def
; V03 arg3 [V03,T01] ( 12, 14.50) byref -> x4 single-def
; V04 loc0 [V04,T13] ( 6, 3 ) ubyte -> x5
-; V05 loc1 [V05,T07] ( 6, 8 ) ubyte -> x3
-; V06 loc2 [V06,T11] ( 5, 5.50) ubyte -> x2
-; V07 loc3 [V07,T03] ( 7, 14 ) int -> x5
-; V08 loc4 [V08,T02] ( 5, 14.50) int -> x6
-; V09 loc5 [V09,T04] ( 4, 12 ) ubyte -> x8
+; V05 loc1 [V05,T07] ( 6, 8 ) ubyte -> x20
+; V06 loc2 [V06,T12] ( 4, 3.50) ubyte -> x21
+; V07 loc3 [V07,T03] ( 7, 14 ) int -> x2
+; V08 loc4 [V08,T02] ( 5, 14.50) int -> x3
+; V09 loc5 [V09,T04] ( 4, 12 ) ubyte -> x22
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V11 tmp1 [V11,T14] ( 3, 3 ) int -> x5 "Span.get_Item index"
; V12 tmp2 [V12,T15] ( 3, 1.50) int -> x2
-; V13 tmp3 [V13,T00] ( 3, 24 ) int -> x8 "Span.get_Item index"
-; V14 tmp4 [V14 ] ( 3, 3 ) struct ( 8) [fp+0x20] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-; V15 tmp5 [V15 ] ( 3, 3 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-; V16 tmp6 [V16,T12] ( 4, 4 ) int -> x0 "Single return block return value"
+; V13 tmp3 [V13,T00] ( 3, 24 ) int -> x6 "Span.get_Item index"
+; V14 tmp4 [V14 ] ( 3, 3 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
+; V15 tmp5 [V15 ] ( 3, 3 ) struct ( 8) [fp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
+; V16 tmp6 [V16,T11] ( 4, 4 ) int -> x0 "Single return block return value"
; V17 tmp7 [V17,T08] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V18 tmp8 [V18,T06] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V19 tmp9 [V19 ] ( 3, 3 ) ubyte -> [fp+0x20] do-not-enreg[X] addr-exposed "field V14.hasValue (fldOffset=0x0)" P-DEP
-; V20 tmp10 [V20 ] ( 3, 3 ) int -> [fp+0x24] do-not-enreg[X] addr-exposed "field V14.value (fldOffset=0x4)" P-DEP
-; V21 tmp11 [V21 ] ( 3, 3 ) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed "field V15.hasValue (fldOffset=0x0)" P-DEP
-; V22 tmp12 [V22 ] ( 3, 3 ) int -> [fp+0x1C] do-not-enreg[X] addr-exposed "field V15.value (fldOffset=0x4)" P-DEP
-; V23 cse0 [V23,T05] ( 3, 12 ) int -> x7 "CSE - aggressive"
+; V19 tmp9 [V19 ] ( 3, 3 ) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed "field V14.hasValue (fldOffset=0x0)" P-DEP
+; V20 tmp10 [V20 ] ( 3, 3 ) int -> [fp+0x1C] do-not-enreg[X] addr-exposed "field V14.value (fldOffset=0x4)" P-DEP
+; V21 tmp11 [V21 ] ( 3, 3 ) ubyte -> [fp+0x10] do-not-enreg[X] addr-exposed "field V15.hasValue (fldOffset=0x0)" P-DEP
+; V22 tmp12 [V22 ] ( 3, 3 ) int -> [fp+0x14] do-not-enreg[X] addr-exposed "field V15.value (fldOffset=0x4)" P-DEP
+; V23 cse0 [V23,T05] ( 3, 12 ) int -> x5 "CSE - aggressive"
; V24 cse1 [V24,T16] ( 3, 1.50) int -> x3 "CSE - moderate"
;
-; Lcl frame size = 24
+; Lcl frame size = 16
G_M45882_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- str x19, [sp, #0x28]
+ stp fp, lr, [sp, #-0x40]!
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
mov fp, sp
mov x19, x3
; byrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M45882_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
; byrRegs +[x0 x4]
str xzr, [x19]
@@ -66,16 +67,17 @@ G_M45882_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4
; byrRegs -[x0]
;; size=52 bbWeight=0.50 PerfScore 7.00
G_M45882_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x28]
- ldp fp, lr, [sp], #0x30
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M45882_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, gcvars, byref, isz
; byrRegs +[x0]
cmp w5, #128
bge G_M45882_IG06
- str xzr, [fp, #0x18] // [V15 tmp5]
- add x0, fp, #24 // [V15 tmp5]
+ str xzr, [fp, #0x10] // [V15 tmp5]
+ add x0, fp, #16 // [V15 tmp5]
; byrRegs -[x0]
mov w1, w5
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -85,7 +87,7 @@ G_M45882_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
blr x2
; byrRegs -[x4]
; gcr arg pop 0
- ldr x0, [fp, #0x18] // [V15 tmp5]
+ ldr x0, [fp, #0x10] // [V15 tmp5]
str x0, [x19]
b G_M45882_IG22
;; size=52 bbWeight=0.50 PerfScore 6.50
@@ -101,9 +103,9 @@ G_M45882_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4
G_M45882_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
; byrRegs +[x0]
and w3, w5, #0xD1FFAB1E
- uxtb w3, w3
- add w5, w3, #1
- cmp w5, w1
+ uxtb w20, w3
+ add w3, w20, #1
+ cmp w3, w1
ble G_M45882_IG10
str wzr, [x4]
;; size=24 bbWeight=0.50 PerfScore 2.00
@@ -112,10 +114,11 @@ G_M45882_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M45882_IG09: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x28]
- ldp fp, lr, [sp], #0x30
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M45882_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, gcvars, byref, isz
; byrRegs +[x0 x4 x19]
cmp w2, #2
@@ -128,9 +131,9 @@ G_M45882_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4
mov w2, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M45882_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
- uxtb w2, w2
- cbz w2, G_M45882_IG14
- cmp w3, #4
+ uxtb w21, w2
+ cbz w21, G_M45882_IG14
+ cmp w20, #4
ble G_M45882_IG14
;; size=16 bbWeight=0.50 PerfScore 1.50
G_M45882_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref
@@ -141,43 +144,43 @@ G_M45882_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, b
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M45882_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
; byrRegs +[x0 x19]
- mov w5, wzr
- mov w6, wzr
- cmp w3, #0
+ mov w2, wzr
+ mov w3, wzr
+ cmp w20, #0
ble G_M45882_IG19
;; size=16 bbWeight=0.50 PerfScore 1.25
G_M45882_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
- ldr w7, [x4]
- sxtw w8, w7
- cmp w8, w1
+ ldr w5, [x4]
+ sxtw w6, w5
+ cmp w6, w1
bhs G_M45882_IG25
- ldrb w8, [x0, w8, UXTW #2]
- add w7, w7, #1
- str w7, [x4]
- cbnz w5, G_M45882_IG18
+ ldrb w22, [x0, w6, UXTW #2]
+ add w5, w5, #1
+ str w5, [x4]
+ cbnz w2, G_M45882_IG18
;; size=32 bbWeight=4 PerfScore 42.00
G_M45882_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
- cbz w2, G_M45882_IG17
- cbz w8, G_M45882_IG20
- ;; size=8 bbWeight=2 PerfScore 4.00
+ cbz w21, G_M45882_IG17
+ cbz w22, G_M45882_IG20
+ b G_M45882_IG18
+ ;; size=12 bbWeight=2 PerfScore 6.00
G_M45882_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
- cbnz w2, G_M45882_IG18
- cbz w8, G_M45882_IG18
- sub w7, w3, w6
- cmp w7, #4
+ cbz w22, G_M45882_IG18
+ sub w5, w20, w3
+ cmp w5, #4
bgt G_M45882_IG13
- ;; size=20 bbWeight=2 PerfScore 8.00
+ ;; size=16 bbWeight=2 PerfScore 6.00
G_M45882_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
- orr w5, w8, w5, LSL #8
- add w6, w6, #1
- cmp w6, w3
+ orr w2, w22, w2, LSL #8
+ add w3, w3, #1
+ cmp w3, w20
blt G_M45882_IG15
;; size=16 bbWeight=4 PerfScore 12.00
G_M45882_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80010 {x4 x19}, byref, isz
; byrRegs -[x0]
- tbnz w5, #31, G_M45882_IG13
- cbz w2, G_M45882_IG21
- cmp w5, #128
+ tbnz w2, #31, G_M45882_IG13
+ cbz w21, G_M45882_IG21
+ cmp w2, #128
bhs G_M45882_IG21
;; size=16 bbWeight=0.50 PerfScore 1.75
G_M45882_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref
@@ -188,16 +191,16 @@ G_M45882_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, b
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M45882_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
; byrRegs -[x4] +[x19]
- str xzr, [fp, #0x20] // [V14 tmp4]
- add x0, fp, #32 // [V14 tmp4]
- mov w1, w5
+ str xzr, [fp, #0x18] // [V14 tmp4]
+ add x0, fp, #24 // [V14 tmp4]
+ mov w1, w2
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
blr x2
; gcr arg pop 0
- ldr x0, [fp, #0x20] // [V14 tmp4]
+ ldr x0, [fp, #0x18] // [V14 tmp4]
str x0, [x19]
;; size=40 bbWeight=0.50 PerfScore 5.25
G_M45882_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -205,22 +208,24 @@ G_M45882_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov w0, #5
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M45882_IG23: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x28]
- ldp fp, lr, [sp], #0x30
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M45882_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ldr x19, [sp, #0x28]
- ldp fp, lr, [sp], #0x30
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M45882_IG25: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 452, prolog size 16, PerfScore 112.25, instruction count 113, allocated bytes for code 452 (MethodHash=0a754cc5) for method System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
+; Total bytes of code 472, prolog size 20, PerfScore 113.25, instruction count 118, allocated bytes for code 472 (MethodHash=0a754cc5) for method System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
; ============================================================
Unwind Info:
...
+12 (+6.00%) : 169522.dasm - System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
@@ -13,16 +13,18 @@
; V02 loc1 [V02,T04] ( 3, 1.50) int -> x0
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T02] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T05] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V06 tmp3 [V06,T01] ( 6, 4.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
+; V05 tmp2 [V05,T05] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
+; V06 tmp3 [V06,T01] ( 5, 3.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
; V07 tmp4 [V07,T03] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V08 cse0 [V08,T06] ( 3, 1 ) long -> x19 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M33783_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M33783_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldrb w1, [x0, #0xD1FFAB1E]
@@ -39,22 +41,21 @@ G_M33783_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
cbz x0, G_M33783_IG10
;; size=28 bbWeight=0.50 PerfScore 6.00
G_M33783_IG04: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- cmp x2, x3
+ ldr x19, [x0]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ cmp x19, x2
beq G_M33783_IG06
;; size=24 bbWeight=0.25 PerfScore 1.50
G_M33783_IG05: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x3
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
;; size=8 bbWeight=0.12 PerfScore 0.19
G_M33783_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0]
- ldr x1, [x1, #0x78]
+ ldr x1, [x19, #0x78]
ldr x1, [x1]
blr x1
movz x11, #0xD1FFAB1E // code for <unknown method>
@@ -72,11 +73,12 @@ G_M33783_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
movk x0, #2 LSL #32
ldr x0, [x0]
; gcrRegs +[x0]
- ;; size=68 bbWeight=0.50 PerfScore 11.50
+ ;; size=64 bbWeight=0.50 PerfScore 10.00
G_M33783_IG07: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M33783_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
@@ -86,9 +88,10 @@ G_M33783_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs +[x0]
;; size=16 bbWeight=0.50 PerfScore 2.25
G_M33783_IG09: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M33783_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
@@ -98,22 +101,23 @@ G_M33783_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs +[x0]
;; size=16 bbWeight=0.50 PerfScore 2.25
G_M33783_IG11: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 200, prolog size 8, PerfScore 32.19, instruction count 50, allocated bytes for code 200 (MethodHash=26627c08) for method System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
+; Total bytes of code 212, prolog size 12, PerfScore 34.69, instruction count 53, allocated bytes for code 212 (MethodHash=26627c08) for method System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 3
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 53 (0x00035) Actual length = 212 (0x0000d4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -127,7 +131,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
+8 (+7.14%) : 164635.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
@@ -13,16 +13,18 @@
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlDocument>
; V04 tmp2 [V04,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp3 [V05,T04] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V06 tmp4 [V06,T00] ( 6, 8.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
-; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
+; V05 tmp3 [V05,T04] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
+; V06 tmp4 [V06,T01] ( 5, 5.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
+; V07 tmp5 [V07,T00] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
+; V08 cse0 [V08,T05] ( 3, 1 ) long -> x19 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M56653_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M56653_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldr x0, [x0, #0x08]
@@ -36,28 +38,28 @@ G_M56653_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
cbz x0, G_M56653_IG07
;; size=32 bbWeight=1 PerfScore 15.00
G_M56653_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- cmp x2, x3
+ ldr x19, [x0]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ cmp x19, x2
beq G_M56653_IG05
;; size=24 bbWeight=0.25 PerfScore 1.50
G_M56653_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x3
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M56653_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ldr x1, [x0]
- ldr x1, [x1, #0x70]
+G_M56653_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ldr x1, [x19, #0x70]
ldr x1, [x1, #0x18]
- ;; size=12 bbWeight=1 PerfScore 9.00
-G_M56653_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ;; size=8 bbWeight=0.50 PerfScore 3.00
+G_M56653_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
br x1
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M56653_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E
@@ -65,22 +67,23 @@ G_M56653_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
movk x0, #1 LSL #32
;; size=12 bbWeight=0.50 PerfScore 0.75
G_M56653_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 112, prolog size 8, PerfScore 30.94, instruction count 28, allocated bytes for code 112 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
+; Total bytes of code 120, prolog size 12, PerfScore 26.94, instruction count 30, allocated bytes for code 120 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -91,7 +94,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
realworld.run.osx.arm64.checked.mch
-16 (-5.41%) : 811.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
@@ -8,19 +8,21 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 10, 7.50) byref -> x19 single-def
+; V00 arg0 [V00,T05] ( 10, 7.50) byref -> x19 single-def
; V01 arg1 [V01,T02] ( 5, 11.50) int -> x1 single-def
-; V02 arg2 [V02,T05] ( 3, 2.50) ubyte -> x3 single-def
+; V02 arg2 [V02,T07] ( 3, 2.50) ubyte -> x3 single-def
; V03 loc0 [V03,T01] ( 8, 15.50) long -> x20
-; V04 loc1 [V04,T00] ( 19, 44 ) int -> x21
+; V04 loc1 [V04,T00] ( 16, 41 ) int -> x21
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T07] ( 3, 3 ) byref -> x0 single-def "dup spill"
-; V07 tmp2 [V07,T08] ( 3, 3 ) long -> x0 "dup spill"
+; V06 tmp1 [V06,T09] ( 3, 3 ) byref -> x0 single-def "dup spill"
+; V07 tmp2 [V07,T11] ( 2, 2 ) long -> x0 "dup spill"
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V09 tmp4 [V09,T09] ( 2, 2 ) byref -> x20 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V09 tmp4 [V09,T10] ( 2, 2 ) byref -> x20 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-; V11 tmp6 [V11,T06] ( 2, 4 ) long -> x20 "Cast away GC"
-; V12 cse0 [V12,T03] ( 3, 10 ) int -> x0 "CSE - aggressive"
+; V11 tmp6 [V11,T08] ( 2, 4 ) long -> x20 "Cast away GC"
+; V12 cse0 [V12,T06] ( 3, 8.50) int -> x1 "CSE - aggressive"
+; V13 cse1 [V13,T03] ( 4, 10.50) int -> x0 "CSE - aggressive"
+; V14 cse2 [V14,T04] ( 3, 10 ) int -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -69,26 +71,22 @@ G_M4398_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
b G_M4398_IG09
;; size=40 bbWeight=0.50 PerfScore 5.75
G_M4398_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- sub w21, w21, #1
+ sxtw w21, w0
;; size=4 bbWeight=2 PerfScore 1.00
G_M4398_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- cmp w21, #0
- ble G_M4398_IG10
- sub w0, w21, #1
- ldrb w0, [x20, w0, SXTW #2]
- cmp w0, #57
- beq G_M4398_IG08
- ;; size=24 bbWeight=4 PerfScore 26.00
-G_M4398_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w21, #0
ble G_M4398_IG11
sub w0, w21, #1
+ ldrb w1, [x20, w0, SXTW #2]
+ cmp w1, #57
+ beq G_M4398_IG08
+ ;; size=24 bbWeight=4 PerfScore 26.00
+G_M4398_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
add x0, x20, w0, SXTW
- ldrb w1, [x0]
add w1, w1, #1
strb w1, [x0]
b G_M4398_IG14
- ;; size=32 bbWeight=0.50 PerfScore 4.25
+ ;; size=16 bbWeight=0.50 PerfScore 1.75
G_M4398_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
add x0, x19, #4
; byrRegs +[x0]
@@ -142,7 +140,7 @@ G_M4398_IG17: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 296, prolog size 24, PerfScore 124.25, instruction count 74, allocated bytes for code 296 (MethodHash=4357eed1) for method System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
+; Total bytes of code 280, prolog size 24, PerfScore 121.75, instruction count 70, allocated bytes for code 280 (MethodHash=4357eed1) for method System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
; ============================================================
Unwind Info:
@@ -153,7 +151,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 74 (0x0004a) Actual length = 296 (0x000128)
+ Function Length : 70 (0x00046) Actual length = 280 (0x000118)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-4.35%) : 16859.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
@@ -15,8 +15,8 @@
; V04 loc3 [V04,T01] ( 8, 25 ) int -> x1
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T04] ( 2, 16 ) int -> x1 "dup spill"
-; V08 tmp2 [V08,T03] ( 3, 17 ) int -> x0 "dup spill"
+; V07 tmp1 [V07,T03] ( 2, 16 ) int -> x1 "dup spill"
+; V08 tmp2 [V08,T04] ( 2, 16 ) int -> x1 "dup spill"
; V09 tmp3 [V09,T05] ( 2, 16 ) int -> x7 "dup spill"
; V10 tmp4 [V10,T06] ( 2, 16 ) int -> x6 "dup spill"
; V11 tmp5 [V11,T07] ( 2, 16 ) int -> x7 "dup spill"
@@ -109,26 +109,23 @@ G_M61853_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
bne G_M61853_IG13
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M61853_IG09: ; bbWeight=4, gcrefRegs=0008 {x3}, byrefRegs=0020 {x5}, byref, isz
- sub w0, w1, #1
- sxtw w1, w0
+ sub w1, w1, #1
cmp w1, #0
- ble G_M61853_IG10
+ ble G_M61853_IG13
add w7, w7, #1
cmp w7, w4
bhs G_M61853_IG15
ldrh w6, [x5, w7, UXTW #2]
- sub w2, w6, #48
- cmp w2, #9
+ sub w0, w6, #48
+ cmp w0, #9
bls G_M61853_IG09
- ;; size=44 bbWeight=4 PerfScore 38.00
-G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=40 bbWeight=4 PerfScore 36.00
+G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x3]
; byrRegs -[x5]
- cmp w0, #0
- ble G_M61853_IG13
cmp w6, #125
cset x2, eq
- ;; size=16 bbWeight=0.50 PerfScore 1.25
+ ;; size=8 bbWeight=0.50 PerfScore 0.50
G_M61853_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
uxtb w0, w2
;; size=4 bbWeight=0.50 PerfScore 0.25
@@ -149,7 +146,7 @@ G_M61853_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 276, prolog size 8, PerfScore 106.00, instruction count 69, allocated bytes for code 276 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
+; Total bytes of code 264, prolog size 8, PerfScore 103.25, instruction count 66, allocated bytes for code 264 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -160,7 +157,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 69 (0x00045) Actual length = 276 (0x000114)
+ Function Length : 66 (0x00042) Actual length = 264 (0x000108)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-4.00%) : 18182.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
@@ -8,27 +8,30 @@
; 0 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder>
+; V00 this [V00,T06] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder>
; V01 arg1 [V01,T02] ( 8, 8.50) int -> x19
-; V02 loc0 [V02,T00] ( 13, 28.50) ref -> x20 class-hnd <<unknown class>>
+; V02 loc0 [V02,T00] ( 11, 27 ) ref -> x20 class-hnd <<unknown class>>
;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T05] ( 4, 4 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.UnsupportedMetadataTypeSymbol>
+; V05 tmp1 [V05,T07] ( 4, 4 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.UnsupportedMetadataTypeSymbol>
;* V06 tmp2 [V06 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V08 tmp4 [V08,T06] ( 3, 1.50) ref -> x0 "field V03.array (fldOffset=0x0)" P-INDEP
-; V09 tmp5 [V09,T03] ( 2, 8 ) ref -> x1 "argument with side effect"
-; V10 cse0 [V10,T01] ( 9, 16.50) long -> x21 multi-def "CSE - aggressive"
+; V08 tmp4 [V08,T08] ( 3, 1.50) ref -> x0 "field V03.array (fldOffset=0x0)" P-INDEP
+; V09 tmp5 [V09,T05] ( 2, 8 ) ref -> x1 "argument with side effect"
+; V10 cse0 [V10,T03] ( 4, 9 ) long -> x22 "CSE - aggressive"
+; V11 cse1 [V11,T04] ( 4, 9 ) long -> x24 "CSE - aggressive"
+; V12 cse2 [V12,T01] ( 4, 14 ) long -> x21 "CSE - aggressive"
;
; Lcl frame size = 0
G_M4215_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x10]
stp x21, x22, [sp, #0x20]
+ stp x23, x24, [sp, #0x30]
mov fp, sp
mov w19, w1
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=24 bbWeight=1 PerfScore 5.00
G_M4215_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x0]
ldr x20, [x0, #0x28]
@@ -56,42 +59,37 @@ G_M4215_IG03: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, by
;; size=40 bbWeight=2 PerfScore 22.00
G_M4215_IG04: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz x20, G_M4215_IG06
+ cbz x20, G_M4215_IG07
;; size=4 bbWeight=8 PerfScore 8.00
G_M4215_IG05: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
mov x0, x20
; gcrRegs +[x0]
ldr x21, [x20]
- ldr x1, [x21, #0xD1FFAB1E]
- ldr x1, [x1, #0x30]
+ ldr x22, [x21, #0xD1FFAB1E]
+ ldr x1, [x22, #0x30]
blr x1
; gcrRegs -[x0]
- mov w22, w0
+ mov w23, w0
mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x21, #0xD1FFAB1E]
- ldr x1, [x1, #0x20]
+ ldr x24, [x21, #0xD1FFAB1E]
+ ldr x1, [x24, #0x20]
blr x1
; gcrRegs -[x0]
- sub w0, w22, w0
+ sub w0, w23, w0
cmp w0, w19
bgt G_M4215_IG03
;; size=52 bbWeight=4 PerfScore 82.00
-G_M4215_IG06: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M4215_IG08
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M4215_IG07: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M4215_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
mov x0, x20
; gcrRegs +[x0]
- ldr x21, [x20]
- ldr x1, [x21, #0xD1FFAB1E]
- ldr x1, [x1, #0x30]
+ ldr x1, [x22, #0x30]
blr x1
; gcrRegs -[x0]
cmp w0, w19
- bgt G_M4215_IG10
- ;; size=28 bbWeight=0.50 PerfScore 6.00
-G_M4215_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bgt G_M4215_IG09
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M4215_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x20]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -101,58 +99,57 @@ G_M4215_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
str xzr, [x0, #0x20]
str xzr, [x0, #0x40]
;; size=24 bbWeight=0.50 PerfScore 2.25
-G_M4215_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M4215_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M4215_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=20 bbWeight=0.50 PerfScore 2.50
+G_M4215_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x20]
mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x21, #0xD1FFAB1E]
- ldr x1, [x1, #0x30]
+ ldr x1, [x22, #0x30]
blr x1
; gcrRegs -[x0]
- mov w22, w0
+ mov w21, w0
mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x21, #0xD1FFAB1E]
- ldr x1, [x1, #0x20]
+ ldr x1, [x24, #0x20]
blr x1
; gcrRegs -[x0]
- sub w0, w22, w0
+ sub w0, w21, w0
sub w19, w19, w0
mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x21, #0xD1FFAB1E]
- ldr x1, [x1, #0x28]
+ ldr x1, [x24, #0x28]
blr x1
; gcrRegs -[x20]
ldr w1, [x0, #0x08]
cmp w19, w1
- bhs G_M4215_IG12
+ bhs G_M4215_IG11
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
ldr x0, [x0, w19, UXTW #3]
; gcrRegs +[x0]
; byrRegs -[x0]
- ;; size=80 bbWeight=0.50 PerfScore 16.00
-G_M4215_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=68 bbWeight=0.50 PerfScore 11.50
+G_M4215_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M4215_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=0.50 PerfScore 2.50
+G_M4215_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
bl CORINFO_HELP_RNGCHKFAIL
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 300, prolog size 16, PerfScore 149.25, instruction count 75, allocated bytes for code 300 (MethodHash=5d77ef88) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
+; Total bytes of code 288, prolog size 20, PerfScore 142.75, instruction count 72, allocated bytes for code 288 (MethodHash=5d77ef88) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
; ============================================================
Unwind Info:
@@ -163,7 +160,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 75 (0x0004b) Actual length = 300 (0x00012c)
+ 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)
@@ -175,9 +172,9 @@ Unwind Info:
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
E6 save_next
+ E6 save_next
C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
- E4 end
+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end
E4 end
+12 (+0.82%) : 15823.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:g_getFormatAndCloseBrace|4341(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
@@ -28,13 +28,13 @@
; V17 tmp8 [V17,T16] ( 5, 2.50) int -> x4 "Inline stloc first use temp"
; V18 tmp9 [V18,T19] ( 4, 2 ) int -> x2 "Inline stloc first use temp"
; V19 tmp10 [V19,T03] ( 9, 9 ) ref -> x22 class-hnd exact single-def "Inlining Arg" <System.String>
-; V20 tmp11 [V20,T37] ( 3, 1.50) ref -> x23 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V20 tmp11 [V20,T37] ( 3, 1.50) ref -> x25 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V21 tmp12 [V21,T09] ( 8, 4 ) ref -> x23 class-hnd exact single-def "Inline stloc first use temp" <System.String>
; V22 tmp13 [V22,T20] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
; V23 tmp14 [V23,T27] ( 2, 2 ) byref -> x0 single-def "impAppendStmt"
; V24 tmp15 [V24,T21] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
; V25 tmp16 [V25,T28] ( 2, 2 ) byref -> x0 single-def "impAppendStmt"
-; V26 tmp17 [V26,T00] ( 12, 12 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V26 tmp17 [V26,T00] ( 12, 12 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V27 tmp18 [V27,T35] ( 2, 2 ) int -> x14 "Inlining Arg"
;* V28 tmp19 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V29 tmp20 [V29 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -49,17 +49,17 @@
; V38 tmp29 [V38,T18] ( 5, 2.50) int -> x4 "Inline stloc first use temp"
; V39 tmp30 [V39,T23] ( 4, 2 ) int -> x2 "Inline stloc first use temp"
; V40 tmp31 [V40,T38] ( 3, 1.50) ref -> x1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V41 tmp32 [V41,T02] ( 11, 10.50) ref -> x19 class-hnd exact single-def "Inlining Arg" <System.String>
+; V41 tmp32 [V41,T02] ( 11, 10.50) ref -> x21 class-hnd exact single-def "Inlining Arg" <System.String>
;* V42 tmp33 [V42 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
;* V43 tmp34 [V43,T57] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
; V44 tmp35 [V44,T39] ( 3, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V45 tmp36 [V45,T10] ( 8, 4 ) ref -> x22 class-hnd exact single-def "Inline stloc first use temp" <System.String>
+; V45 tmp36 [V45,T10] ( 8, 4 ) ref -> x27 class-hnd exact single-def "Inline stloc first use temp" <System.String>
; V46 tmp37 [V46,T24] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
; V47 tmp38 [V47,T29] ( 2, 2 ) byref -> x0 single-def "impAppendStmt"
; V48 tmp39 [V48,T25] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
; V49 tmp40 [V49,T30] ( 2, 2 ) byref -> x0 single-def "impAppendStmt"
; V50 tmp41 [V50,T04] ( 8, 8 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V51 tmp42 [V51,T36] ( 2, 2 ) int -> x21 "Inlining Arg"
+; V51 tmp42 [V51,T36] ( 2, 2 ) int -> x25 "Inlining Arg"
; V52 tmp43 [V52,T05] ( 8, 8 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia>
;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V54 tmp45 [V54,T31] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
@@ -78,26 +78,27 @@
; V67 tmp58 [V67,T32] ( 2, 2 ) ref -> x2 single-def "argument with side effect"
; V68 tmp59 [V68,T33] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
; V69 cse0 [V69,T49] ( 3, 1.50) int -> x25 "CSE - moderate"
-; V70 cse1 [V70,T50] ( 3, 1.50) int -> x23 "CSE - moderate"
+; V70 cse1 [V70,T50] ( 3, 1.50) int -> x28 "CSE - moderate"
; V71 cse2 [V71,T51] ( 3, 1.50) long -> x26 "CSE - moderate"
-; V72 cse3 [V72,T52] ( 3, 1.50) long -> x24 "CSE - moderate"
+; V72 cse3 [V72,T52] ( 3, 1.50) long -> x22 "CSE - moderate"
; V73 cse4 [V73,T11] ( 8, 4 ) int -> x24 multi-def "CSE - aggressive"
-; V74 cse5 [V74,T08] ( 9, 4 ) int -> x21 multi-def "CSE - aggressive"
+; V74 cse5 [V74,T08] ( 9, 4 ) int -> x25 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
G_M21658_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
stp x19, x20, [sp, #0x10]
stp x21, x22, [sp, #0x20]
stp x23, x24, [sp, #0x30]
stp x25, x26, [sp, #0x40]
+ stp x27, x28, [sp, #0x50]
mov fp, sp
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
; byrRegs +[x19]
- ;; size=32 bbWeight=1 PerfScore 6.50
+ ;; size=36 bbWeight=1 PerfScore 7.50
G_M21658_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
mov x0, x20
; gcrRegs +[x0]
@@ -245,24 +246,24 @@ G_M21658_IG06: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs
movk x0, #1 LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- mov x23, x0
- ; gcrRegs +[x23]
+ mov x25, x0
+ ; gcrRegs +[x25]
ldr w24, [x22, #0x08]
sxtw w14, w24
mov w15, #0xD1FFAB1E
- strh w15, [x23, #0x0C]
- str w14, [x23, #0x08]
- ldrb w14, [x23, #0x0E]
+ strh w15, [x25, #0x0C]
+ str w14, [x25, #0x08]
+ ldrb w14, [x25, #0x0E]
orr w14, w14, #32
- strb w14, [x23, #0x0E]
- add x14, x23, #16
+ strb w14, [x25, #0x0E]
+ add x14, x25, #16
; byrRegs +[x14]
mov x15, x22
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- add x14, x23, #24
+ add x14, x25, #24
; byrRegs +[x14]
mov x15, x22
; gcrRegs +[x15]
@@ -270,15 +271,15 @@ G_M21658_IG06: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs
; gcrRegs -[x15 x22]
; byrRegs -[x14]
cbz x21, G_M21658_IG07
- ldrb w14, [x23, #0x0E]
+ ldrb w14, [x25, #0x0E]
ldrb w15, [x21, #0x0E]
and w15, w15, #63
orr w14, w14, w15
- strb w14, [x23, #0x0E]
+ strb w14, [x25, #0x0E]
ldr w14, [x21, #0x08]
add w14, w24, w14
- str w14, [x23, #0x08]
- add x14, x23, #32
+ str w14, [x25, #0x08]
+ add x14, x25, #32
; byrRegs +[x14]
mov x15, x21
; gcrRegs +[x15]
@@ -286,11 +287,11 @@ G_M21658_IG06: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs
; gcrRegs -[x15 x21]
; byrRegs -[x14]
;; size=124 bbWeight=0.50 PerfScore 16.50
-G_M21658_IG07: ; bbWeight=0.50, gcrefRegs=900000 {x20 x23}, byrefRegs=80000 {x19}, byref
+G_M21658_IG07: ; bbWeight=0.50, gcrefRegs=2100000 {x20 x25}, byrefRegs=80000 {x19}, byref
b G_M21658_IG09
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M21658_IG08: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref
- ; gcrRegs -[x23] +[x21]
+ ; gcrRegs -[x25] +[x21]
mov x1, x21
; gcrRegs +[x1]
mov w0, #0xD1FFAB1E
@@ -301,10 +302,10 @@ G_M21658_IG08: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=800
ldr x3, [x3]
blr x3
; gcrRegs -[x1 x21] +[x0]
- mov x23, x0
- ; gcrRegs +[x23]
+ mov x25, x0
+ ; gcrRegs +[x25]
;; size=36 bbWeight=0.50 PerfScore 3.75
-G_M21658_IG09: ; bbWeight=0.50, gcrefRegs=900000 {x20 x23}, byrefRegs=80000 {x19}, byref, isz
+G_M21658_IG09: ; bbWeight=0.50, gcrefRegs=2100000 {x20 x25}, byrefRegs=80000 {x19}, byref, isz
; gcrRegs -[x0]
ldr w21, [x19, #0x10]
ldr x0, [x19, #0x08]
@@ -316,13 +317,13 @@ G_M21658_IG09: ; bbWeight=0.50, gcrefRegs=900000 {x20 x23}, byrefRegs=800
add w4, w2, w3
add w4, w4, #1
;; size=32 bbWeight=0.50 PerfScore 7.25
-G_M21658_IG10: ; bbWeight=0.50, gcrefRegs=900001 {x0 x20 x23}, byrefRegs=80000 {x19}, byref, isz
+G_M21658_IG10: ; bbWeight=0.50, gcrefRegs=2100001 {x0 x20 x25}, byrefRegs=80000 {x19}, byref, isz
sxtw w2, w1
tbz w2, #31, G_M21658_IG11
add w2, w1, w3
add w2, w2, #1
;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M21658_IG11: ; bbWeight=0.50, gcrefRegs=900001 {x0 x20 x23}, byrefRegs=80000 {x19}, byref, isz
+G_M21658_IG11: ; bbWeight=0.50, gcrefRegs=2100001 {x0 x20 x25}, byrefRegs=80000 {x19}, byref, isz
sub w2, w2, w4
mov w1, w4
movz x3, #0xD1FFAB1E // code for System.String:Substring(int,int):System.String:this
@@ -342,13 +343,13 @@ G_M21658_IG11: ; bbWeight=0.50, gcrefRegs=900001 {x0 x20 x23}, byrefRegs=
; gcrRegs -[x2 x20]
mov x1, x0
; gcrRegs +[x1]
- mov x0, x23
+ mov x0, x25
movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxFactory:InterpolationFormatClause(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
blr x2
- ; gcrRegs -[x1 x23]
+ ; gcrRegs -[x1 x25]
mov x20, x0
; gcrRegs +[x20]
ldr x0, [x19, #0x08]
@@ -374,17 +375,17 @@ G_M21658_IG13: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=0000
movk x3, #1 LSL #32
ldr x3, [x3]
blr x3
- mov x19, x0
- ; gcrRegs +[x19]
- cbz x19, G_M21658_IG16
+ mov x21, x0
+ ; gcrRegs +[x21]
+ cbz x21, G_M21658_IG16
;; size=36 bbWeight=0.50 PerfScore 4.00
-G_M21658_IG14: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M21658_IG14: ; bbWeight=0.25, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr w21, [x19, #0x08]
- cbnz w21, G_M21658_IG16
+ ldr w25, [x21, #0x08]
+ cbnz w25, G_M21658_IG16
;; size=8 bbWeight=0.25 PerfScore 1.00
G_M21658_IG15: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
+ ; gcrRegs -[x21]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -405,8 +406,8 @@ G_M21658_IG15: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
strb w0, [x1, #0x0E]
b G_M21658_IG20
;; size=64 bbWeight=0.50 PerfScore 8.00
-G_M21658_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x1] +[x19]
+G_M21658_IG16: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x1] +[x21]
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
@@ -414,16 +415,16 @@ G_M21658_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr x1, [x1]
blr x1
; gcrRegs +[x0]
- mov x22, x0
- ; gcrRegs +[x22]
- cmp x19, x22
+ mov x27, x0
+ ; gcrRegs +[x27]
+ cmp x21, x27
beq G_M21658_IG18
- cbz x19, G_M21658_IG17
- cbz x22, G_M21658_IG17
- ldr w21, [x19, #0x08]
- ldr w0, [x22, #0x08]
+ cbz x21, G_M21658_IG17
+ cbz x27, G_M21658_IG17
+ ldr w25, [x21, #0x08]
+ ldr w0, [x27, #0x08]
; gcrRegs -[x0]
- cmp w21, w0
+ cmp w25, w0
bne G_M21658_IG17
mov w0, #1
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -437,21 +438,21 @@ G_M21658_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
movk x1, #1 LSL #32
ldr x1, [x1]
blr x1
- ldr w0, [x22, #0x08]
- cmp w0, w21
...
+4 (+0.89%) : 26947.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+d__118:MoveNext():ubyte:this (FullOpts)
@@ -8,29 +8,30 @@
; 0 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 17, 9.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118>
-; V01 loc0 [V01,T04] ( 4, 2.50) ubyte -> registers
+; V00 this [V00,T00] ( 16, 9 ) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118>
+; V01 loc0 [V01,T04] ( 4, 2.50) ubyte -> x2
; V02 loc1 [V02,T05] ( 3, 2.50) int -> x1 single-def
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
-; V04 loc3 [V04,T08] ( 3, 1.50) ref -> x19 class-hnd exact single-def <Microsoft.CodeAnalysis.SecurityWellKnownAttributeData>
+; V04 loc3 [V04,T08] ( 3, 1.50) ref -> x20 class-hnd exact single-def <Microsoft.CodeAnalysis.SecurityWellKnownAttributeData>
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <Microsoft.Cci.SecurityAttribute>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T06] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V08 tmp2 [V08,T09] ( 3, 1.25) long -> x4 "fgMakeTemp is creating a new local variable"
+; V08 tmp2 [V08,T10] ( 3, 1.25) long -> x4 "fgMakeTemp is creating a new local variable"
; V09 tmp3 [V09,T02] ( 5, 3.75) ref -> x2 class-hnd "spilling QMark2" <<unknown class>>
;* V10 tmp4 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <Microsoft.Cci.SecurityAttribute>
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V13 tmp7 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
; V14 tmp8 [V14,T01] ( 6, 6 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V15 tmp9 [V15,T10] ( 2, 1 ) ref -> x15 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP
-; V16 tmp10 [V16,T12] ( 2, 1 ) short -> x1 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP
-; V17 tmp11 [V17,T11] ( 2, 1 ) ref -> x20 single-def "field V10.array (fldOffset=0x0)" P-INDEP
+; V15 tmp9 [V15,T11] ( 2, 1 ) ref -> x15 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP
+; V16 tmp10 [V16,T13] ( 2, 1 ) short -> x1 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP
+; V17 tmp11 [V17,T12] ( 2, 1 ) ref -> x19 single-def "field V10.array (fldOffset=0x0)" P-INDEP
;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref "field V11.<Attribute>k__BackingField (fldOffset=0x0)" P-DEP
;* V19 tmp13 [V19 ] ( 0, 0 ) short -> zero-ref "field V11.<Action>k__BackingField (fldOffset=0x8)" P-DEP
-; V20 PSPSym [V20,T13] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
-; V21 cse0 [V21,T03] ( 5, 2.50) ref -> x0 multi-def "CSE - aggressive"
-; V22 cse1 [V22,T07] ( 4, 2 ) long -> x19 "CSE - aggressive"
+; V20 PSPSym [V20,T14] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
+; V21 cse0 [V21,T09] ( 3, 1.50) ref -> x19 "CSE - moderate"
+; V22 cse1 [V22,T03] ( 5, 2.50) ref -> x1 multi-def "CSE - aggressive"
+; V23 cse2 [V23,T07] ( 4, 2 ) long -> x19 "CSE - aggressive"
;
; Lcl frame size = 24
@@ -57,14 +58,15 @@ G_M21908_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
G_M21908_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
movn w1, #0
str w1, [x0, #0x20]
- ldr x1, [x0, #0x08]
+ ldr x19, [x0, #0x08]
+ ; gcrRegs +[x19]
+ ldr x1, [x19, #0x08]
; gcrRegs +[x1]
- ldr x1, [x1, #0x08]
mov x2, x1
; gcrRegs +[x2]
cbz x2, G_M21908_IG11
;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x3, [x2]
movz x4, #0xD1FFAB1E
@@ -73,7 +75,7 @@ G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}
cmp x3, x4
beq G_M21908_IG07
;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
mov x0, x4
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
@@ -82,23 +84,17 @@ G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, b
mov x2, x0
; gcrRegs +[x2]
;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x19, [x2, #0x70]
- ; gcrRegs +[x19]
- cbz x19, G_M21908_IG11
- ldr x0, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x0]
- ldr x1, [x0, #0x08]
- ; gcrRegs +[x1]
- ldr x20, [x1, #0x20]
+ ldr x20, [x2, #0x70]
; gcrRegs +[x20]
+ cbz x20, G_M21908_IG11
+ ldr x19, [x19, #0x20]
movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
bl CORINFO_HELP_NEWSFAST
- ; gcrRegs -[x1-x2] +[x0]
+ ; gcrRegs -[x2] +[x0]
; gcr arg pop 0
mov x21, x0
; gcrRegs +[x21]
@@ -110,18 +106,18 @@ G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b
str w0, [x21, #0x14]
add x14, x21, #8
; byrRegs +[x14]
- mov x15, x19
- ; gcrRegs +[x15]
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x19]
- ; byrRegs -[x14]
- add x14, x21, #56
- ; byrRegs +[x14]
mov x15, x20
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x20]
; byrRegs -[x14]
+ add x14, x21, #56
+ ; byrRegs +[x14]
+ mov x15, x19
+ ; gcrRegs +[x15]
+ bl CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[x15 x19]
+ ; byrRegs -[x14]
mov x0, x21
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -131,20 +127,20 @@ G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b
blr x1
; gcrRegs -[x21]
; gcr arg pop 0
- ldr x19, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x19]
- add x14, x19, #24
+ ldr x1, [fp, #0x18] // [V00 this]
+ ; gcrRegs +[x1]
+ add x14, x1, #24
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- mov x0, x19
+ mov x0, x1
; gcrRegs +[x0]
- ;; size=124 bbWeight=0.50 PerfScore 16.50
+ ;; size=116 bbWeight=0.50 PerfScore 14.00
G_M21908_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19]
+ ; gcrRegs -[x1]
movn w11, #2
str w11, [x0, #0x20]
ldr x0, [x0, #0x18]
@@ -157,50 +153,56 @@ G_M21908_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
; gcrRegs -[x0]
; gcr arg pop 0
cbz w0, G_M21908_IG09
- ldr x20, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x20]
- ldr x0, [x20, #0x18]
+ ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
+ ldr x1, [x0, #0x18]
+ ; gcrRegs +[x1]
+ mov x0, x1
add x11, x19, #8
ldr x1, [x11]
+ ; gcrRegs -[x1]
blr x1
; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
- add x14, x20, #40
+ ldr x0, [fp, #0x18] // [V00 this]
+ add x14, x0, #40
; byrRegs +[x14]
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15]
+ ; gcrRegs -[x15]
; byrRegs -[x14]
- strh w1, [x20, #0x30]
- mov w0, #1
- str w0, [x20, #0x20]
- mov w2, w0
+ strh w1, [x0, #0x30]
+ mov w11, #1
+ str w11, [x0, #0x20]
+ sxtw w2, w11
b G_M21908_IG12
- ;; size=92 bbWeight=0.50 PerfScore 13.50
+ ;; size=100 bbWeight=0.50 PerfScore 14.75
G_M21908_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x20]
- movn w0, #0
- ldr x20, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x20]
- str w0, [x20, #0x20]
- ldr x0, [x20, #0x18]
+ ; gcrRegs -[x0]
+ movn w11, #0
+ ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
- cbz x0, G_M21908_IG10
+ str w11, [x0, #0x20]
+ ldr x1, [x0, #0x18]
+ ; gcrRegs +[x1]
+ cbz x1, G_M21908_IG10
+ mov x0, x1
add x11, x19, #16
ldr x1, [x11]
+ ; gcrRegs -[x1]
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=32 bbWeight=0.50 PerfScore 6.00
-G_M21908_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- str xzr, [x20, #0x18]
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=36 bbWeight=0.50 PerfScore 6.25
+G_M21908_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x0, [fp, #0x18] // [V00 this]
+ ; gcrRegs +[x0]
+ str xzr, [x0, #0x18]
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M21908_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
- mov w1, wzr
- mov w2, w1
- ;; size=8 bbWeight=0.50 PerfScore 0.50
+ ; gcrRegs -[x0]
+ mov w2, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M21908_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V00}
mov w0, w2
@@ -238,7 +240,7 @@ G_M21908_IG16: ; bbWeight=0, funclet epilog, nogc, extend
ret lr
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 448, prolog size 24, PerfScore 59.25, instruction count 112, allocated bytes for code 448 (MethodHash=1a3daa6b) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 452, prolog size 24, PerfScore 59.00, instruction count 113, allocated bytes for code 452 (MethodHash=1a3daa6b) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -249,7 +251,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 98 (0x00062) Actual length = 392 (0x000188)
---- Epilog scopes ----
---- Scope 0
...
+16 (+1.32%) : 28413.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
@@ -11,16 +11,16 @@
; V00 arg0 [V00,T07] ( 22, 23 ) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[System.String]>
; V01 loc0 [V01,T20] ( 7, 3.50) ref -> x20 class-hnd exact single-def <System.String>
; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [fp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 39,149.08) int -> x22
+; V03 loc2 [V03,T00] ( 41,183.08) int -> x22
; V04 loc3 [V04,T23] ( 4, 2 ) int -> x0
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
-; V06 loc5 [V06,T06] ( 9, 25.50) int -> x21
+; V06 loc5 [V06,T06] ( 9, 25.50) int -> x23
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V09 tmp2 [V09,T04] ( 5, 28 ) ref -> x22 class-hnd exact "impAppendStmt" <System.String>
+; V09 tmp2 [V09,T04] ( 5, 28 ) ref -> x21 class-hnd exact "impAppendStmt" <System.String>
; V10 tmp3 [V10,T26] ( 2, 2 ) long -> x1 "Inlining Arg"
; V11 tmp4 [V11,T25] ( 2, 2 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String>
-; V12 tmp5 [V12,T05] ( 5, 28 ) ref -> x23 class-hnd "Inlining Arg" <System.__Canon>
+; V12 tmp5 [V12,T05] ( 5, 28 ) ref -> x22 class-hnd "Inlining Arg" <System.__Canon>
; V13 tmp6 [V13,T15] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
; V14 tmp7 [V14,T17] ( 2, 8 ) byref -> x0 "impAppendStmt"
; V15 tmp8 [V15,T27] ( 3, 1.50) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
@@ -38,12 +38,12 @@
; V27 cse0 [V27,T14] ( 3, 10 ) int -> x0 "CSE - aggressive"
; V28 cse1 [V28,T28] ( 3, 1.50) long -> x24 "CSE - moderate"
; V29 cse2 [V29,T31] ( 2, 1 ) int -> x12 "CSE - moderate"
-; V30 cse3 [V30,T01] ( 3, 48 ) long -> x1 "CSE - aggressive"
+; V30 cse3 [V30,T02] ( 3, 48 ) long -> x1 "CSE - aggressive"
; V31 cse4 [V31,T11] ( 3, 12 ) long -> x1 "CSE - aggressive"
; V32 cse5 [V32,T12] ( 3, 12 ) int -> x0 "CSE - aggressive"
; V33 cse6 [V33,T10] ( 3, 12 ) ref -> x1 "CSE - aggressive"
-; V34 cse7 [V34,T03] ( 15, 30.54) int -> x21 "CSE - aggressive"
-; V35 cse8 [V35,T02] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
+; V34 cse7 [V34,T01] ( 17, 64.54) int -> x21 "CSE - aggressive"
+; V35 cse8 [V35,T03] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
; V36 cse9 [V36,T16] ( 4, 8 ) int -> x24 "CSE - aggressive"
; V37 cse10 [V37,T18] ( 2, 8 ) int -> x3 "CSE - aggressive"
; V38 cse11 [V38,T13] ( 3, 11.88) int -> x0 "CSE - aggressive"
@@ -71,19 +71,19 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=56 bbWeight=1 PerfScore 10.50
G_M28069_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x10]
- cbz w0, G_M28069_IG27
+ cbz w0, G_M28069_IG26
;; size=8 bbWeight=1 PerfScore 4.00
G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w1, #0
- bls G_M28069_IG29
+ bls G_M28069_IG28
ldr x20, [x0, #0x10]
; gcrRegs +[x20]
ldr w21, [x20, #0x08]
cmp w21, #100
- bgt G_M28069_IG27
+ bgt G_M28069_IG26
add w0, w21, #2
; gcrRegs -[x0]
mov w1, #2
@@ -110,105 +110,103 @@ G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
mov x1, sp
;; size=8 bbWeight=0.50 PerfScore 0.50
G_M28069_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w0, #31, G_M28069_IG30
+ tbnz w0, #31, G_M28069_IG29
str x1, [fp, #-0x48] // [V17 tmp10]
str w0, [fp, #-0x40] // [V18 tmp11]
mov w22, wzr
cmp w21, #0
- ble G_M28069_IG15
+ ble G_M28069_IG14
add x23, x20, #12
; byrRegs +[x23]
;; size=28 bbWeight=0.50 PerfScore 2.75
G_M28069_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldrh w0, [x23, w22, UXTW #2]
cmp w0, #39
- bne G_M28069_IG11
+ bne G_M28069_IG10
;; size=12 bbWeight=4 PerfScore 18.00
G_M28069_IG08: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V18 tmp11]
cmp w22, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x0]
ubfiz x1, x22, #1, #32
add x0, x0, x1
+ cmp w22, w21
+ bhs G_M28069_IG28
ldrh w1, [x23, x1]
strh w1, [x0]
add w22, w22, #1
cmp w21, w22
- ble G_M28069_IG09
+ ble G_M28069_IG26
+ cmp w22, w21
+ bhs G_M28069_IG28
ldrh w0, [x23, w22, UXTW #2]
; byrRegs -[x0]
cmp w0, #39
bne G_M28069_IG08
- ;; size=56 bbWeight=16 PerfScore 280.00
-G_M28069_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
- cmp w21, w22
- bgt G_M28069_IG12
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19-x20]
- ; byrRegs -[x23]
- b G_M28069_IG27
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
- ; gcrRegs +[x19-x20]
- ; byrRegs +[x23]
+ ;; size=72 bbWeight=16 PerfScore 328.00
+G_M28069_IG09: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref
+ b G_M28069_IG11
+ ;; size=4 bbWeight=4 PerfScore 4.00
+G_M28069_IG10: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
cmp w0, #121
- beq G_M28069_IG14
+ beq G_M28069_IG13
;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V18 tmp11]
cmp w22, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x0]
ubfiz x1, x22, #1, #32
add x0, x0, x1
+ cmp w22, w21
+ bhs G_M28069_IG28
ldrh w1, [x23, x1]
strh w1, [x0]
add w22, w22, #1
cmp w21, w22
bgt G_M28069_IG07
- ;; size=44 bbWeight=4 PerfScore 52.00
-G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=52 bbWeight=4 PerfScore 58.00
+G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x23]
- b G_M28069_IG15
+ b G_M28069_IG14
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #-0x40] // [V18 tmp11]
cmp w22, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x0]
mov w1, #121
strh w1, [x0, w22, UXTW #2]
;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
sub w0, w21, #1
cmp w0, w22
- ble G_M28069_IG27
+ ble G_M28069_IG26
add w0, w22, #1
cmp w0, w21
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
add x23, x20, #12
; byrRegs +[x23]
add w0, w22, #1
ubfiz x24, x0, #1, #32
ldrh w0, [x23, x24]
cmp w0, #121
- bne G_M28069_IG27
+ bne G_M28069_IG26
add w25, w22, #2
cmp w21, w25
- ble G_M28069_IG16
+ ble G_M28069_IG15
cmp w25, w21
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldrh w0, [x23, w25, UXTW #2]
cmp w0, #121
- beq G_M28069_IG27
+ beq G_M28069_IG26
;; size=80 bbWeight=0.50 PerfScore 9.25
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w0, w22, #3
ldr w1, [fp, #-0x40] // [V18 tmp11]
cmp w0, w1
@@ -222,7 +220,7 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
add w0, w22, #1
ldr w1, [fp, #-0x40] // [V18 tmp11]
cmp w0, w1
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x0]
mov w1, #121
@@ -230,7 +228,7 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
ldr w0, [fp, #-0x40] // [V18 tmp11]
; byrRegs -[x0]
cmp w25, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x0]
strh w1, [x0, w25, UXTW #2]
@@ -238,7 +236,7 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
; byrRegs -[x0]
ldr w1, [fp, #-0x40] // [V18 tmp11]
cmp w0, w1
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x0]
add w1, w22, #3
@@ -246,15 +244,15 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
strh w2, [x0, w1, UXTW #2]
sxtw w22, w25
cmp w21, w22
- ble G_M28069_IG20
- tbnz w22, #31, G_M28069_IG19
+ ble G_M28069_IG19
+ tbnz w22, #31, G_M28069_IG18
;; size=132 bbWeight=0.50 PerfScore 17.00
-G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG16: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0]
add w0, w22, #2
ldr w1, [fp, #-0x40] // [V18 tmp11]
cmp w0, w1
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x1, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x1]
ubfiz x0, x0, #1, #32
@@ -265,32 +263,32 @@ G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800
strh w1, [x0]
add w22, w22, #1
cmp w21, w22
- bgt G_M28069_IG17
...
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.osx.arm64.checked.mch |
67 |
48 |
5 |
14 |
-492 |
+32 |
benchmarks.run_pgo.osx.arm64.checked.mch |
256 |
121 |
116 |
19 |
-836 |
+1,232 |
benchmarks.run_tiered.osx.arm64.checked.mch |
27 |
16 |
2 |
9 |
-404 |
+20 |
coreclr_tests.run.osx.arm64.checked.mch |
267 |
176 |
28 |
63 |
-1,896 |
+196 |
libraries.crossgen2.osx.arm64.checked.mch |
173 |
120 |
22 |
31 |
-1,504 |
+228 |
libraries.pmi.osx.arm64.checked.mch |
323 |
210 |
50 |
63 |
-2,036 |
+400 |
libraries_tests.run.osx.arm64.Release.mch |
1,275 |
802 |
150 |
323 |
-8,036 |
+1,892 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
849 |
412 |
75 |
362 |
-3,172 |
+596 |
realworld.run.osx.arm64.checked.mch |
43 |
27 |
6 |
10 |
-252 |
+80 |
|
3,280 |
1,932 |
454 |
894 |
-18,628 |
+4,676 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.osx.arm64.checked.mch |
24,859 |
4 |
24,855 |
0 (0.00%) |
1 (0.00%) |
benchmarks.run_pgo.osx.arm64.checked.mch |
83,797 |
48,088 |
35,709 |
4 (0.00%) |
20 (0.02%) |
benchmarks.run_tiered.osx.arm64.checked.mch |
48,122 |
37,350 |
10,772 |
1 (0.00%) |
2 (0.00%) |
coreclr_tests.run.osx.arm64.checked.mch |
585,884 |
356,765 |
229,119 |
4 (0.00%) |
4 (0.00%) |
libraries.crossgen2.osx.arm64.checked.mch |
234,105 |
15 |
234,090 |
0 (0.00%) |
0 (0.00%) |
libraries.pmi.osx.arm64.checked.mch |
316,346 |
18 |
316,328 |
0 (0.00%) |
2 (0.00%) |
libraries_tests.run.osx.arm64.Release.mch |
643,883 |
468,829 |
175,054 |
0 (0.00%) |
2 (0.00%) |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
302,299 |
21,597 |
280,702 |
0 (0.00%) |
2 (0.00%) |
realworld.run.osx.arm64.checked.mch |
31,542 |
3 |
31,539 |
0 (0.00%) |
0 (0.00%) |
|
2,270,837 |
932,669 |
1,338,168 |
9 (0.00%) |
33 (0.00%) |
jit-analyze output
benchmarks.run.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 11183964 (overridden on cmd)
Total bytes of diff: 11183504 (overridden on cmd)
Total bytes of delta: -460 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
16 : 5284.dasm (1.39 % of base)
4 : 1691.dasm (0.60 % of base)
4 : 5646.dasm (1.22 % of base)
4 : 15526.dasm (1.11 % of base)
4 : 19968.dasm (0.89 % of base)
Top file improvements (bytes):
-48 : 16896.dasm (-7.64 % of base)
-48 : 11112.dasm (-0.35 % of base)
-36 : 17156.dasm (-21.95 % of base)
-28 : 24786.dasm (-6.36 % of base)
-20 : 14255.dasm (-6.33 % of base)
-20 : 21387.dasm (-7.04 % of base)
-16 : 6133.dasm (-0.35 % of base)
-16 : 15791.dasm (-4.49 % of base)
-16 : 823.dasm (-5.41 % of base)
-12 : 15540.dasm (-0.78 % of base)
-12 : 811.dasm (-3.90 % of base)
-12 : 981.dasm (-0.22 % of base)
-12 : 10490.dasm (-0.36 % of base)
-12 : 11441.dasm (-1.38 % of base)
-12 : 1361.dasm (-4.35 % of base)
-12 : 18484.dasm (-0.36 % of base)
-8 : 10041.dasm (-1.08 % of base)
-8 : 2727.dasm (-2.41 % of base)
-8 : 5268.dasm (-3.23 % of base)
-8 : 17855.dasm (-0.26 % of base)
37 total files with Code Size differences (32 improved, 5 regressed), 14 unchanged.
Top method regressions (bytes):
16 (1.39 % of base) : 5284.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
4 (0.89 % of base) : 19968.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
4 (1.22 % of base) : 5646.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
4 (0.60 % of base) : 1691.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
4 (1.11 % of base) : 15526.dasm - System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
Top method improvements (bytes):
-48 (-0.35 % of base) : 11112.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (FullOpts)
-48 (-7.64 % of base) : 16896.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-36 (-21.95 % of base) : 17156.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-28 (-6.36 % of base) : 24786.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
-20 (-7.04 % of base) : 21387.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
-20 (-6.33 % of base) : 14255.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
-16 (-5.41 % of base) : 823.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-16 (-4.49 % of base) : 15791.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
-16 (-0.35 % of base) : 6133.dasm - Utf8Json.Internal.Emit.MetaType:.ctor(System.Type,System.Func`2[System.String,System.String],ubyte):this (FullOpts)
-12 (-0.36 % of base) : 18484.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-12 (-0.36 % of base) : 10490.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (FullOpts)
-12 (-0.22 % of base) : 981.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-12 (-3.90 % of base) : 811.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-12 (-4.35 % of base) : 1361.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-12 (-1.38 % of base) : 11441.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
-12 (-0.78 % of base) : 15540.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (FullOpts)
-8 (-0.26 % of base) : 17855.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
-8 (-1.75 % of base) : 10516.dasm - Sigil.Impl.LinqStack`1[System.__Canon]:Peek(ubyte,int):Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack][]:this (FullOpts)
-8 (-3.23 % of base) : 5268.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-8 (-1.08 % of base) : 10041.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (FullOpts)
Top method regressions (percentages):
16 (1.39 % of base) : 5284.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
4 (1.22 % of base) : 5646.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
4 (1.11 % of base) : 15526.dasm - System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
4 (0.89 % of base) : 19968.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
4 (0.60 % of base) : 1691.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
Top method improvements (percentages):
-36 (-21.95 % of base) : 17156.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-48 (-7.64 % of base) : 16896.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-20 (-7.04 % of base) : 21387.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
-28 (-6.36 % of base) : 24786.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
-20 (-6.33 % of base) : 14255.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
-16 (-5.41 % of base) : 823.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-16 (-4.49 % of base) : 15791.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
-12 (-4.35 % of base) : 1361.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-12 (-3.90 % of base) : 811.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-4 (-3.85 % of base) : 6962.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
-8 (-3.23 % of base) : 5268.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-8 (-2.41 % of base) : 2727.dasm - System.Xml.Serialization.CodeGenerator:StoreMember(System.Reflection.MemberInfo):this (FullOpts)
-8 (-1.75 % of base) : 10516.dasm - Sigil.Impl.LinqStack`1[System.__Canon]:Peek(ubyte,int):Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack][]:this (FullOpts)
-4 (-1.64 % of base) : 2875.dasm - System.Text.Json.Tests.Perf_Reader:ReadMultiSpanSequenceEmptyLoop():this (FullOpts)
-4 (-1.64 % of base) : 13227.dasm - System.Text.Json.Tests.Perf_Reader:ReadSingleSpanSequenceEmptyLoop():this (FullOpts)
-4 (-1.64 % of base) : 22169.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (FullOpts)
-8 (-1.64 % of base) : 15652.dasm - System.Xml.Linq.XContainer+<GetDescendants>d__38:MoveNext():ubyte:this (FullOpts)
-12 (-1.38 % of base) : 11441.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
-4 (-1.35 % of base) : 7136.dasm - System.Text.Json.Tests.Perf_Reader:ReadSpanEmptyLoop():this (FullOpts)
-4 (-1.12 % of base) : 21618.dasm - System.Text.Json.Tests.Perf_Depth:ReadSpanEmptyLoop():this (FullOpts)
benchmarks.run_pgo.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 34388460 (overridden on cmd)
Total bytes of diff: 34388856 (overridden on cmd)
Total bytes of delta: 396 (0.00 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
52 : 76342.dasm (2.65 % of base)
48 : 9486.dasm (2.48 % of base)
36 : 75445.dasm (8.11 % of base)
28 : 36861.dasm (0.32 % of base)
28 : 59100.dasm (0.32 % of base)
28 : 68074.dasm (0.32 % of base)
28 : 33485.dasm (0.32 % of base)
28 : 31134.dasm (0.33 % of base)
28 : 75442.dasm (1.19 % of base)
24 : 76287.dasm (1.51 % of base)
20 : 30431.dasm (0.76 % of base)
20 : 28065.dasm (3.07 % of base)
20 : 42731.dasm (2.26 % of base)
20 : 78498.dasm (3.16 % of base)
20 : 9485.dasm (0.78 % of base)
20 : 42100.dasm (2.33 % of base)
20 : 43705.dasm (2.34 % of base)
20 : 58195.dasm (8.20 % of base)
16 : 36105.dasm (2.15 % of base)
16 : 58236.dasm (2.38 % of base)
Top file improvements (bytes):
-36 : 77494.dasm (-1.55 % of base)
-32 : 77495.dasm (-20.51 % of base)
-28 : 70533.dasm (-4.17 % of base)
-28 : 83465.dasm (-5.88 % of base)
-24 : 64799.dasm (-1.96 % of base)
-24 : 83459.dasm (-5.41 % of base)
-24 : 83464.dasm (-5.41 % of base)
-24 : 46337.dasm (-1.96 % of base)
-24 : 63461.dasm (-2.35 % of base)
-20 : 34329.dasm (-6.94 % of base)
-20 : 34332.dasm (-6.33 % of base)
-20 : 34334.dasm (-6.94 % of base)
-12 : 74637.dasm (-4.05 % of base)
-12 : 74687.dasm (-0.13 % of base)
-12 : 2476.dasm (-0.22 % of base)
-12 : 73304.dasm (-4.05 % of base)
-12 : 73360.dasm (-0.13 % of base)
-8 : 73877.dasm (-2.53 % of base)
-8 : 63640.dasm (-2.99 % of base)
-8 : 70306.dasm (-2.53 % of base)
65 total files with Code Size differences (35 improved, 30 regressed), 19 unchanged.
Top method regressions (bytes):
52 (2.65 % of base) : 76342.dasm - System.Net.Sockets.SocketAsyncEventArgs:DoOperationSendTo(System.Net.Sockets.SafeSocketHandle,System.Threading.CancellationToken):int:this (Tier1)
48 (2.48 % of base) : 9486.dasm - System.Net.Sockets.SocketAsyncEventArgs:DoOperationSendTo(System.Net.Sockets.SafeSocketHandle,System.Threading.CancellationToken):int:this (Tier1)
36 (8.11 % of base) : 75445.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
28 (1.19 % of base) : 75442.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1)
28 (0.32 % of base) : 36861.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[ubyte],byref) (Tier1)
28 (0.32 % of base) : 59100.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[ubyte],byref) (Tier1)
28 (0.32 % of base) : 68074.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[ubyte],byref) (Tier1)
28 (0.32 % of base) : 33485.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[ubyte],byref) (Tier1)
28 (0.33 % of base) : 31134.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[ubyte],byref) (Tier1)
24 (1.51 % of base) : 76287.dasm - System.Net.Sockets.SocketAddressExtensions:Equals(System.Net.SocketAddress,System.Net.EndPoint):ubyte (Tier1)
20 (8.20 % of base) : 58195.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
20 (0.78 % of base) : 9485.dasm - System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
20 (2.34 % of base) : 43705.dasm - System.Net.Sockets.SocketAsyncContext:SendTo(System.ReadOnlySpan`1[ubyte],int,System.Memory`1[ubyte],int,byref):int:this (Tier1)
20 (3.07 % of base) : 28065.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
20 (2.33 % of base) : 42100.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
20 (3.16 % of base) : 78498.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
20 (2.26 % of base) : 42731.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
20 (0.76 % of base) : 30431.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (Tier1)
16 (2.38 % of base) : 58236.dasm - Microsoft.CodeAnalysis.Compilation:get_HasStrongName():ubyte:this (Tier1)
16 (6.56 % of base) : 57387.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
Top method improvements (bytes):
-36 (-1.55 % of base) : 77494.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
-32 (-20.51 % of base) : 77495.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-28 (-5.88 % of base) : 83465.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1)
-28 (-4.17 % of base) : 70533.dasm - System.Threading.ThreadPoolWorkQueue+WorkStealingQueue:TrySteal(byref):System.Object:this (Tier1)
-24 (-2.35 % of base) : 63461.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:WriteConsideredUse(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
-24 (-5.41 % of base) : 83459.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-24 (-5.41 % of base) : 83464.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-24 (-1.96 % of base) : 64799.dasm - System.Net.Sockets.SocketPal:TryCompleteSendTo(System.Net.Sockets.SafeSocketHandle,System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,byref,int,System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (Tier1)
-24 (-1.96 % of base) : 46337.dasm - System.Net.Sockets.SocketPal:TryCompleteSendTo(System.Net.Sockets.SafeSocketHandle,System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,byref,int,System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (Tier1)
-20 (-6.33 % of base) : 34332.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1)
-20 (-6.94 % of base) : 34329.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-20 (-6.94 % of base) : 34334.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-12 (-0.22 % of base) : 2476.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
-12 (-4.05 % of base) : 74637.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.05 % of base) : 73304.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-0.13 % of base) : 74687.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-12 (-0.13 % of base) : 73360.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-8 (-0.21 % of base) : 71009.dasm - System.Number:FormatDouble[ubyte](byref,double,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo):System.String (Tier1)
-8 (-0.18 % of base) : 70305.dasm - System.Number:FormatDouble[ubyte](byref,double,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo):System.String (Tier1)
-8 (-2.53 % of base) : 73877.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
Top method regressions (percentages):
20 (8.20 % of base) : 58195.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
36 (8.11 % of base) : 75445.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
16 (6.56 % of base) : 57387.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
16 (4.60 % of base) : 57384.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
12 (3.33 % of base) : 30843.dasm - System.Security.Cryptography.UniversalCryptoEncryptor:UncheckedTransformFinalBlock(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int:this (Tier1)
12 (3.26 % of base) : 37467.dasm - System.Net.Security.SslStream:HaveFullTlsFrame(byref):ubyte:this (Tier1)
20 (3.16 % of base) : 78498.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
20 (3.07 % of base) : 28065.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
52 (2.65 % of base) : 76342.dasm - System.Net.Sockets.SocketAsyncEventArgs:DoOperationSendTo(System.Net.Sockets.SafeSocketHandle,System.Threading.CancellationToken):int:this (Tier1)
48 (2.48 % of base) : 9486.dasm - System.Net.Sockets.SocketAsyncEventArgs:DoOperationSendTo(System.Net.Sockets.SafeSocketHandle,System.Threading.CancellationToken):int:this (Tier1)
16 (2.38 % of base) : 58236.dasm - Microsoft.CodeAnalysis.Compilation:get_HasStrongName():ubyte:this (Tier1)
20 (2.34 % of base) : 43705.dasm - System.Net.Sockets.SocketAsyncContext:SendTo(System.ReadOnlySpan`1[ubyte],int,System.Memory`1[ubyte],int,byref):int:this (Tier1)
4 (2.33 % of base) : 73387.dasm - System.Collections.Generic.ValueListBuilder`1[int]:AsSpan():System.ReadOnlySpan`1[int]:this (Tier1)
4 (2.33 % of base) : 63642.dasm - System.Collections.Generic.ValueListBuilder`1[ushort]:AsSpan():System.ReadOnlySpan`1[ushort]:this (Tier1)
4 (2.33 % of base) : 17316.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:get_Text():System.ReadOnlySpan`1[ushort]:this (Tier1)
20 (2.33 % of base) : 42100.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
4 (2.27 % of base) : 18116.dasm - System.Buffers.StringSearchValuesHelper:ValidateReadPosition(byref,int,byref,int) (Tier1)
20 (2.26 % of base) : 42731.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
16 (2.15 % of base) : 36105.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
16 (2.06 % of base) : 69989.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (percentages):
-32 (-20.51 % of base) : 77495.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-20 (-6.94 % of base) : 34329.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-20 (-6.94 % of base) : 34334.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-20 (-6.33 % of base) : 34332.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1)
-28 (-5.88 % of base) : 83465.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1)
-24 (-5.41 % of base) : 83459.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-24 (-5.41 % of base) : 83464.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-28 (-4.17 % of base) : 70533.dasm - System.Threading.ThreadPoolWorkQueue+WorkStealingQueue:TrySteal(byref):System.Object:this (Tier1)
-12 (-4.05 % of base) : 74637.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.05 % of base) : 73304.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-8 (-2.99 % of base) : 63640.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-8 (-2.99 % of base) : 70341.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-8 (-2.99 % of base) : 72751.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-8 (-2.99 % of base) : 73893.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-4 (-2.70 % of base) : 80042.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequence(int):this (Tier1-OSR)
-4 (-2.70 % of base) : 81665.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequence(int):this (Tier1-OSR)
-4 (-2.70 % of base) : 69564.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (Tier1-OSR)
-8 (-2.53 % of base) : 73877.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
-8 (-2.53 % of base) : 70306.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
-8 (-2.53 % of base) : 63636.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
benchmarks.run_tiered.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15513632 (overridden on cmd)
Total bytes of diff: 15513248 (overridden on cmd)
Total bytes of delta: -384 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
16 : 11062.dasm (1.39 % of base)
4 : 21747.dasm (0.60 % of base)
Top file improvements (bytes):
-200 : 29353.dasm (-7.08 % of base)
-36 : 46278.dasm (-21.95 % of base)
-28 : 48102.dasm (-6.36 % of base)
-24 : 48101.dasm (-5.83 % of base)
-20 : 28604.dasm (-6.94 % of base)
-20 : 28605.dasm (-6.33 % of base)
-16 : 3626.dasm (-5.41 % of base)
-12 : 2914.dasm (-0.22 % of base)
-12 : 3608.dasm (-3.90 % of base)
-12 : 45209.dasm (-4.35 % of base)
-4 : 14682.dasm (-0.71 % of base)
-4 : 32912.dasm (-0.53 % of base)
-4 : 44682.dasm (-2.70 % of base)
-4 : 11804.dasm (-0.27 % of base)
-4 : 39460.dasm (-0.34 % of base)
-4 : 47098.dasm (-2.70 % of base)
18 total files with Code Size differences (16 improved, 2 regressed), 9 unchanged.
Top method regressions (bytes):
16 (1.39 % of base) : 11062.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
4 (0.60 % of base) : 21747.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
Top method improvements (bytes):
-200 (-7.08 % of base) : 29353.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
-36 (-21.95 % of base) : 46278.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-28 (-6.36 % of base) : 48102.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1)
-24 (-5.83 % of base) : 48101.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-20 (-6.33 % of base) : 28605.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1)
-20 (-6.94 % of base) : 28604.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-16 (-5.41 % of base) : 3626.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-12 (-0.22 % of base) : 2914.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
-12 (-3.90 % of base) : 3608.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
-12 (-4.35 % of base) : 45209.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-4 (-0.34 % of base) : 39460.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier1)
-4 (-0.53 % of base) : 32912.dasm - Microsoft.Extensions.Configuration.ConfigurationKeyComparer:Compare(System.String,System.String):int:this (Tier1)
-4 (-0.27 % of base) : 11804.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier0-FullOpts)
-4 (-2.70 % of base) : 47098.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequence(int):this (Tier1-OSR)
-4 (-2.70 % of base) : 44682.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (Tier1-OSR)
-4 (-0.71 % of base) : 14682.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequenceByN(int):this (Tier1-OSR)
Top method regressions (percentages):
16 (1.39 % of base) : 11062.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
4 (0.60 % of base) : 21747.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
Top method improvements (percentages):
-36 (-21.95 % of base) : 46278.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-200 (-7.08 % of base) : 29353.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
-20 (-6.94 % of base) : 28604.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-28 (-6.36 % of base) : 48102.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1)
-20 (-6.33 % of base) : 28605.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1)
-24 (-5.83 % of base) : 48101.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-16 (-5.41 % of base) : 3626.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-12 (-4.35 % of base) : 45209.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-3.90 % of base) : 3608.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
-4 (-2.70 % of base) : 47098.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequence(int):this (Tier1-OSR)
-4 (-2.70 % of base) : 44682.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (Tier1-OSR)
-4 (-0.71 % of base) : 14682.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequenceByN(int):this (Tier1-OSR)
-4 (-0.53 % of base) : 32912.dasm - Microsoft.Extensions.Configuration.ConfigurationKeyComparer:Compare(System.String,System.String):int:this (Tier1)
-4 (-0.34 % of base) : 39460.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier1)
-4 (-0.27 % of base) : 11804.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier0-FullOpts)
-12 (-0.22 % of base) : 2914.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
18 total methods with Code Size differences (16 improved, 2 regressed).
coreclr_tests.run.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 486420196 (overridden on cmd)
Total bytes of diff: 486418496 (overridden on cmd)
Total bytes of delta: -1700 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
12 : 287013.dasm (0.70 % of base)
12 : 276206.dasm (0.70 % of base)
8 : 235621.dasm (0.64 % of base)
8 : 2617.dasm (0.64 % of base)
8 : 291271.dasm (0.64 % of base)
8 : 352250.dasm (0.64 % of base)
8 : 249847.dasm (0.64 % of base)
8 : 253480.dasm (0.64 % of base)
8 : 271536.dasm (0.64 % of base)
8 : 29103.dasm (0.64 % of base)
8 : 291811.dasm (0.72 % of base)
8 : 348737.dasm (0.64 % of base)
8 : 375696.dasm (0.60 % of base)
8 : 375698.dasm (0.70 % of base)
8 : 380830.dasm (0.69 % of base)
8 : 264652.dasm (0.64 % of base)
8 : 285636.dasm (0.64 % of base)
8 : 291657.dasm (0.72 % of base)
8 : 400371.dasm (0.75 % of base)
4 : 582944.dasm (0.16 % of base)
Top file improvements (bytes):
-36 : 492806.dasm (-21.95 % of base)
-36 : 509637.dasm (-0.72 % of base)
-32 : 380316.dasm (-0.15 % of base)
-32 : 374488.dasm (-0.15 % of base)
-28 : 493341.dasm (-6.36 % of base)
-24 : 240482.dasm (-0.34 % of base)
-24 : 264662.dasm (-0.28 % of base)
-24 : 280593.dasm (-0.28 % of base)
-24 : 291294.dasm (-0.28 % of base)
-24 : 306711.dasm (-0.34 % of base)
-24 : 307106.dasm (-0.28 % of base)
-24 : 352254.dasm (-0.28 % of base)
-24 : 253483.dasm (-0.28 % of base)
-24 : 271539.dasm (-0.28 % of base)
-24 : 350163.dasm (-0.28 % of base)
-24 : 235645.dasm (-0.28 % of base)
-24 : 249850.dasm (-0.28 % of base)
-24 : 2671.dasm (-0.28 % of base)
-24 : 285639.dasm (-0.28 % of base)
-24 : 29134.dasm (-0.28 % of base)
71 total files with Code Size differences (50 improved, 21 regressed), 20 unchanged.
Top method regressions (bytes):
12 (0.70 % of base) : 287013.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (Tier1)
12 (0.70 % of base) : 276206.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (Tier1)
8 (0.70 % of base) : 375698.dasm - Internal.JitInterface.JitConfigProvider+<>c__DisplayClass5_0:<Initialize>b__0(System.String,System.Reflection.Assembly,System.Nullable`1[int]):long:this (Tier1)
8 (0.69 % of base) : 380830.dasm - Internal.JitInterface.JitConfigProvider+<>c__DisplayClass5_0:<Initialize>b__0(System.String,System.Reflection.Assembly,System.Nullable`1[int]):long:this (Tier1)
8 (0.64 % of base) : 235621.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 2617.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 291271.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 352250.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 249847.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 253480.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 271536.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 29103.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 348737.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 264652.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 285636.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.72 % of base) : 291811.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
8 (0.72 % of base) : 291657.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
8 (0.75 % of base) : 400371.dasm - System.Net.Sockets.SocketPal:TryCompleteSendTo(System.Net.Sockets.SafeSocketHandle,System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,byref,int,System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (FullOpts)
8 (0.60 % of base) : 375696.dasm - System.Runtime.InteropServices.NativeLibrary:LoadLibraryCallbackStub(System.String,System.Reflection.Assembly,ubyte,uint):long (Tier1)
4 (0.16 % of base) : 582944.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.AttributePresenceFilterNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
Top method improvements (bytes):
-36 (-0.72 % of base) : 509637.dasm - GenClass`1[int]:DoTest_Inner[System.__Canon,System.__Canon,System.__Canon](int,GenClass`1[System.__Canon],GenClass`1[System.__Canon],GenClass`1[System.__Canon]) (FullOpts)
-36 (-21.95 % of base) : 492806.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-32 (-0.15 % of base) : 380316.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.TypeValidationChecker+<ValidateTypeWorker>d__10:MoveNext():this (Tier1)
-32 (-0.15 % of base) : 374488.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.TypeValidationChecker+<ValidateTypeWorker>d__10:MoveNext():this (Tier1)
-28 (-6.36 % of base) : 493341.dasm - Span.SpanBench:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
-24 (-0.34 % of base) : 240482.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
-24 (-0.34 % of base) : 306711.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
-24 (-0.28 % of base) : 264662.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-24 (-0.28 % of base) : 280593.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-24 (-0.28 % of base) : 291294.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-24 (-0.28 % of base) : 307106.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-24 (-0.28 % of base) : 352254.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-24 (-0.28 % of base) : 253483.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-24 (-0.28 % of base) : 271539.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-24 (-0.28 % of base) : 350163.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-24 (-0.28 % of base) : 235645.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-24 (-0.28 % of base) : 249850.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-24 (-0.28 % of base) : 2671.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-24 (-0.28 % of base) : 285639.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-24 (-0.28 % of base) : 29134.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
Top method regressions (percentages):
4 (0.89 % of base) : 490330.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
8 (0.75 % of base) : 400371.dasm - System.Net.Sockets.SocketPal:TryCompleteSendTo(System.Net.Sockets.SafeSocketHandle,System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,byref,int,System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (FullOpts)
8 (0.72 % of base) : 291657.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
8 (0.72 % of base) : 291811.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
8 (0.70 % of base) : 375698.dasm - Internal.JitInterface.JitConfigProvider+<>c__DisplayClass5_0:<Initialize>b__0(System.String,System.Reflection.Assembly,System.Nullable`1[int]):long:this (Tier1)
12 (0.70 % of base) : 287013.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (Tier1)
12 (0.70 % of base) : 276206.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (Tier1)
8 (0.69 % of base) : 380830.dasm - Internal.JitInterface.JitConfigProvider+<>c__DisplayClass5_0:<Initialize>b__0(System.String,System.Reflection.Assembly,System.Nullable`1[int]):long:this (Tier1)
8 (0.64 % of base) : 235621.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 2617.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 291271.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 352250.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 249847.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 253480.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 271536.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 29103.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 348737.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 264652.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.64 % of base) : 285636.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier1)
8 (0.60 % of base) : 375696.dasm - System.Runtime.InteropServices.NativeLibrary:LoadLibraryCallbackStub(System.String,System.Reflection.Assembly,ubyte,uint):long (Tier1)
Top method improvements (percentages):
-36 (-21.95 % of base) : 492806.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-20 (-7.04 % of base) : 492824.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
-28 (-6.36 % of base) : 493341.dasm - Span.SpanBench:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
-20 (-6.33 % of base) : 493347.dasm - Span.SpanBench:TestQuickSortArray(int[],int,int) (FullOpts)
-16 (-4.82 % of base) : 300277.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-16 (-4.76 % of base) : 580988.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-12 (-4.41 % of base) : 253373.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.41 % of base) : 277851.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.41 % of base) : 285604.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.41 % of base) : 235536.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.41 % of base) : 2375.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.41 % of base) : 249776.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.41 % of base) : 251672.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.41 % of base) : 29027.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.41 % of base) : 350123.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.41 % of base) : 264575.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.41 % of base) : 280513.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.35 % of base) : 387558.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-12 (-4.00 % of base) : 241754.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-3.53 % of base) : 580972.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
libraries.crossgen2.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 55725580 (overridden on cmd)
Total bytes of diff: 55724304 (overridden on cmd)
Total bytes of delta: -1276 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
32 : 71170.dasm (0.61 % of base)
32 : 76091.dasm (8.25 % of base)
32 : 157290.dasm (1.75 % of base)
24 : 84651.dasm (1.75 % of base)
16 : 22811.dasm (1.42 % of base)
12 : 177874.dasm (0.48 % of base)
12 : 33237.dasm (0.48 % of base)
8 : 76076.dasm (2.15 % of base)
8 : 22977.dasm (4.35 % of base)
4 : 203511.dasm (0.56 % of base)
4 : 21648.dasm (0.20 % of base)
4 : 216894.dasm (0.55 % of base)
4 : 216899.dasm (0.48 % of base)
4 : 220103.dasm (0.07 % of base)
4 : 233880.dasm (1.11 % of base)
4 : 82300.dasm (0.56 % of base)
4 : 20350.dasm (0.13 % of base)
4 : 216694.dasm (0.21 % of base)
4 : 21858.dasm (0.53 % of base)
4 : 140402.dasm (0.19 % of base)
Top file improvements (bytes):
-72 : 150806.dasm (-1.76 % of base)
-68 : 150848.dasm (-1.71 % of base)
-56 : 141199.dasm (-3.49 % of base)
-48 : 150066.dasm (-2.71 % of base)
-48 : 157172.dasm (-5.43 % of base)
-48 : 221913.dasm (-5.83 % of base)
-48 : 186598.dasm (-26.09 % of base)
-44 : 206872.dasm (-6.75 % of base)
-44 : 227599.dasm (-6.75 % of base)
-36 : 218292.dasm (-20.45 % of base)
-36 : 227447.dasm (-4.52 % of base)
-28 : 150592.dasm (-9.86 % of base)
-24 : 177096.dasm (-3.59 % of base)
-24 : 218618.dasm (-0.54 % of base)
-24 : 32456.dasm (-3.59 % of base)
-24 : 84641.dasm (-5.56 % of base)
-20 : 149343.dasm (-4.03 % of base)
-20 : 168865.dasm (-2.50 % of base)
-20 : 23277.dasm (-2.50 % of base)
-20 : 24502.dasm (-6.49 % of base)
61 total files with Code Size differences (40 improved, 21 regressed), 20 unchanged.
Top method regressions (bytes):
32 (0.61 % of base) : 71170.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
32 (8.25 % of base) : 76091.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
32 (1.75 % of base) : 157290.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
24 (1.75 % of base) : 84651.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
16 (1.42 % of base) : 22811.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
12 (0.48 % of base) : 177874.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
12 (0.48 % of base) : 33237.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
8 (2.15 % of base) : 76076.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
8 (4.35 % of base) : 22977.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
4 (0.56 % of base) : 82300.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
4 (1.11 % of base) : 233880.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
4 (0.65 % of base) : 141655.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:LeastGenericProcedure(Microsoft.VisualBasic.CompilerServices.Symbols+Method,Microsoft.VisualBasic.CompilerServices.Symbols+Method,int,byref):Microsoft.VisualBasic.CompilerServices.Symbols+Method (FullOpts)
4 (0.19 % of base) : 140402.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeText(System.String,System.String):ubyte (FullOpts)
4 (0.53 % of base) : 21858.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
4 (0.20 % of base) : 21648.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
4 (0.13 % of base) : 20350.dasm - System.Globalization.IdnMapping:PunycodeEncode(System.String):System.String (FullOpts)
4 (0.07 % of base) : 220103.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
4 (0.21 % of base) : 216694.dasm - System.Xml.Linq.ElementWriter+<WriteElementAsync>d__4:MoveNext():this (FullOpts)
4 (0.55 % of base) : 216894.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
4 (0.48 % of base) : 216899.dasm - System.Xml.Linq.Extensions+<GetDescendants>d__23`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
Top method improvements (bytes):
-72 (-1.76 % of base) : 150806.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-68 (-1.71 % of base) : 150848.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-56 (-3.49 % of base) : 141199.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (FullOpts)
-48 (-2.71 % of base) : 150066.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
-48 (-5.83 % of base) : 221913.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-48 (-26.09 % of base) : 186598.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-48 (-5.43 % of base) : 157172.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-44 (-6.75 % of base) : 206872.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-44 (-6.75 % of base) : 227599.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-36 (-4.52 % of base) : 227447.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
-36 (-20.45 % of base) : 218292.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-28 (-9.86 % of base) : 150592.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-24 (-3.59 % of base) : 177096.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-24 (-3.59 % of base) : 32456.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-24 (-5.56 % of base) : 84641.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
-24 (-0.54 % of base) : 218618.dasm - System.Globalization.FormatProvider+Number:NumberToStringFormat(byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-20 (-6.49 % of base) : 24502.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
-20 (-6.49 % of base) : 170074.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
-20 (-0.07 % of base) : 140498.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-20 (-2.50 % of base) : 168865.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
Top method regressions (percentages):
32 (8.25 % of base) : 76091.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
8 (4.35 % of base) : 22977.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
8 (2.15 % of base) : 76076.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
24 (1.75 % of base) : 84651.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
32 (1.75 % of base) : 157290.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
16 (1.42 % of base) : 22811.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
4 (1.11 % of base) : 233880.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
4 (0.65 % of base) : 141655.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:LeastGenericProcedure(Microsoft.VisualBasic.CompilerServices.Symbols+Method,Microsoft.VisualBasic.CompilerServices.Symbols+Method,int,byref):Microsoft.VisualBasic.CompilerServices.Symbols+Method (FullOpts)
32 (0.61 % of base) : 71170.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
4 (0.56 % of base) : 82300.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
4 (0.56 % of base) : 203511.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
4 (0.55 % of base) : 216894.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
4 (0.53 % of base) : 21858.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
12 (0.48 % of base) : 177874.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
12 (0.48 % of base) : 33237.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
4 (0.48 % of base) : 216899.dasm - System.Xml.Linq.Extensions+<GetDescendants>d__23`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
4 (0.21 % of base) : 216694.dasm - System.Xml.Linq.ElementWriter+<WriteElementAsync>d__4:MoveNext():this (FullOpts)
4 (0.20 % of base) : 21648.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
4 (0.19 % of base) : 140402.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeText(System.String,System.String):ubyte (FullOpts)
4 (0.13 % of base) : 20350.dasm - System.Globalization.IdnMapping:PunycodeEncode(System.String):System.String (FullOpts)
Top method improvements (percentages):
-48 (-26.09 % of base) : 186598.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-36 (-20.45 % of base) : 218292.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-28 (-9.86 % of base) : 150592.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-20 (-7.81 % of base) : 21659.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
-16 (-7.55 % of base) : 218658.dasm - System.Globalization.FormatProvider+Number:RoundNumber(byref,int) (FullOpts)
-44 (-6.75 % of base) : 206872.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-44 (-6.75 % of base) : 227599.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-20 (-6.49 % of base) : 24502.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
-20 (-6.49 % of base) : 170074.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
-16 (-6.15 % of base) : 21691.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-48 (-5.83 % of base) : 221913.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-12 (-5.77 % of base) : 210838.dasm - System.Transactions.CheapUnfairReaderWriterLock:EnterWriteLock():this (FullOpts)
-24 (-5.56 % of base) : 84641.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
-48 (-5.43 % of base) : 157172.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-36 (-4.52 % of base) : 227447.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
-20 (-4.24 % of base) : 150511.dasm - System.Data.XmlDataLoader:GetValueForTextOnlyColumns(System.Xml.XmlNode):System.String (FullOpts)
-12 (-4.23 % of base) : 165539.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String) (FullOpts)
-20 (-4.03 % of base) : 149343.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
-12 (-3.95 % of base) : 20032.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-4 (-3.70 % of base) : 217042.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (FullOpts)
libraries.pmi.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 80213376 (overridden on cmd)
Total bytes of diff: 80211740 (overridden on cmd)
Total bytes of delta: -1636 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
40 : 112934.dasm (2.09 % of base)
32 : 164952.dasm (3.29 % of base)
24 : 187797.dasm (1.19 % of base)
20 : 163598.dasm (2.16 % of base)
16 : 1180.dasm (1.39 % of base)
12 : 118459.dasm (3.19 % of base)
12 : 169557.dasm (0.69 % of base)
12 : 72095.dasm (0.69 % of base)
12 : 200248.dasm (3.61 % of base)
12 : 217592.dasm (0.47 % of base)
8 : 211117.dasm (2.35 % of base)
8 : 313109.dasm (0.37 % of base)
8 : 72019.dasm (0.54 % of base)
8 : 72088.dasm (0.98 % of base)
8 : 72092.dasm (0.77 % of base)
8 : 72096.dasm (0.87 % of base)
8 : 199917.dasm (7.14 % of base)
8 : 217126.dasm (4.65 % of base)
8 : 252393.dasm (2.70 % of base)
8 : 312975.dasm (0.29 % of base)
Top file improvements (bytes):
-72 : 213664.dasm (-1.76 % of base)
-68 : 213725.dasm (-1.71 % of base)
-56 : 189311.dasm (-3.73 % of base)
-48 : 222084.dasm (-27.91 % of base)
-48 : 296584.dasm (-3.72 % of base)
-48 : 196312.dasm (-7.64 % of base)
-44 : 261818.dasm (-6.21 % of base)
-44 : 255894.dasm (-6.51 % of base)
-40 : 93260.dasm (-4.29 % of base)
-36 : 279333.dasm (-21.95 % of base)
-36 : 93253.dasm (-3.42 % of base)
-32 : 213895.dasm (-1.77 % of base)
-28 : 214162.dasm (-12.07 % of base)
-24 : 208012.dasm (-17.14 % of base)
-24 : 216032.dasm (-3.14 % of base)
-24 : 245606.dasm (-2.03 % of base)
-24 : 312081.dasm (-9.68 % of base)
-24 : 49411.dasm (-2.03 % of base)
-20 : 234160.dasm (-4.67 % of base)
-20 : 312082.dasm (-5.26 % of base)
71 total files with Code Size differences (43 improved, 28 regressed), 20 unchanged.
Top method regressions (bytes):
40 (2.09 % of base) : 112934.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
32 (3.29 % of base) : 164952.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
24 (1.19 % of base) : 187797.dasm - System.Data.ProviderBase.DbConnectionFactory:TryGetConnection(System.Data.Common.DbConnection,System.Threading.Tasks.TaskCompletionSource`1[System.Data.ProviderBase.DbConnectionInternal],System.Data.Common.DbConnectionOptions,System.Data.ProviderBase.DbConnectionInternal,byref):ubyte:this (FullOpts)
20 (2.16 % of base) : 163598.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextValue(System.String,int,ubyte,byref):System.String (FullOpts)
16 (1.39 % of base) : 1180.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
12 (0.69 % of base) : 72095.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
12 (3.19 % of base) : 118459.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:GetSymbolInfo(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax,System.Threading.CancellationToken):Microsoft.CodeAnalysis.SymbolInfo:this (FullOpts)
12 (0.47 % of base) : 217592.dasm - System.ComponentModel.TypeDescriptor:PipelineMerge(int,System.Collections.ICollection,System.Collections.ICollection,System.Collections.IDictionary):System.Collections.ICollection (FullOpts)
12 (0.69 % of base) : 169557.dasm - System.Xml.EncodingStreamWrapper:CheckUTF8DeclarationEncoding(ubyte[],int,int,int,int) (FullOpts)
12 (3.61 % of base) : 200248.dasm - System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
8 (0.77 % of base) : 72092.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getCloseQuote|428_5(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
8 (0.98 % of base) : 72088.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
8 (0.87 % of base) : 72096.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getInterpolationCloseToken|434_2(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
8 (0.54 % of base) : 72019.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
8 (0.49 % of base) : 313107.dasm - Microsoft.CSharp.CSharpCodeGenerator:GenerateMethod(System.CodeDom.CodeMemberMethod):this (FullOpts)
8 (0.37 % of base) : 313109.dasm - Microsoft.CSharp.CSharpCodeGenerator:GenerateProperty(System.CodeDom.CodeMemberProperty):this (FullOpts)
8 (0.29 % of base) : 312975.dasm - Microsoft.VisualBasic.VBCodeGenerator:GenerateMethod(System.CodeDom.CodeMemberMethod,System.CodeDom.CodeTypeDeclaration):this (FullOpts)
8 (0.26 % of base) : 312978.dasm - Microsoft.VisualBasic.VBCodeGenerator:GenerateProperty(System.CodeDom.CodeMemberProperty,System.CodeDom.CodeTypeDeclaration):this (FullOpts)
8 (2.70 % of base) : 252393.dasm - Newtonsoft.Json.Linq.JProperty:SetItem(int,Newtonsoft.Json.Linq.JToken):this (FullOpts)
8 (4.65 % of base) : 217126.dasm - System.ComponentModel.TypeConverter+SimplePropertyDescriptor:ResetValue(System.Object):this (FullOpts)
Top method improvements (bytes):
-72 (-1.76 % of base) : 213664.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-68 (-1.71 % of base) : 213725.dasm - System.Data.RBTree`1[ubyte]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-56 (-3.73 % of base) : 189311.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (FullOpts)
-48 (-3.72 % of base) : 296584.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-48 (-27.91 % of base) : 222084.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-48 (-7.64 % of base) : 196312.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-44 (-6.21 % of base) : 261818.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-44 (-6.51 % of base) : 255894.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-40 (-4.29 % of base) : 93260.dasm - ILCompiler.LazyGenericsSupport+Graph`1[ubyte]:FindCyclesWorker(ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte],System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte]],byref,System.Diagnostics.Stopwatch) (FullOpts)
-36 (-3.42 % of base) : 93253.dasm - ILCompiler.LazyGenericsSupport+Graph`1[System.__Canon]:FindCyclesWorker(ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon],System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]],byref,System.Diagnostics.Stopwatch) (FullOpts)
-36 (-21.95 % of base) : 279333.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-32 (-1.77 % of base) : 213895.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
-28 (-12.07 % of base) : 214162.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-24 (-2.03 % of base) : 245606.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-24 (-2.03 % of base) : 49411.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-24 (-9.68 % of base) : 312081.dasm - R2RDump.Disassembler:TryParseAbsoluteAddress(System.String,byref,byref,byref):ubyte:this (FullOpts)
-24 (-3.14 % of base) : 216032.dasm - System.Data.Common.DbConnectionStringBuilder:GetProperties(System.Attribute[]):System.ComponentModel.PropertyDescriptorCollection:this (FullOpts)
-24 (-17.14 % of base) : 208012.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-20 (-4.67 % of base) : 234160.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
-20 (-4.67 % of base) : 36883.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
Top method regressions (percentages):
8 (7.14 % of base) : 199917.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
8 (4.65 % of base) : 217126.dasm - System.ComponentModel.TypeConverter+SimplePropertyDescriptor:ResetValue(System.Object):this (FullOpts)
12 (3.61 % of base) : 200248.dasm - System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
32 (3.29 % of base) : 164952.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
12 (3.19 % of base) : 118459.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:GetSymbolInfo(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax,System.Threading.CancellationToken):Microsoft.CodeAnalysis.SymbolInfo:this (FullOpts)
8 (2.70 % of base) : 252393.dasm - Newtonsoft.Json.Linq.JProperty:SetItem(int,Newtonsoft.Json.Linq.JToken):this (FullOpts)
8 (2.35 % of base) : 211117.dasm - System.Xml.XmlBoundElement:CloneNode(ubyte):System.Xml.XmlNode:this (FullOpts)
20 (2.16 % of base) : 163598.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextValue(System.String,int,ubyte,byref):System.String (FullOpts)
40 (2.09 % of base) : 112934.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
4 (1.96 % of base) : 130649.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:VisitEventStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
4 (1.96 % of base) : 130650.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:VisitPropertyStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
4 (1.43 % of base) : 130645.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:VisitMethodStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
16 (1.39 % of base) : 1180.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
4 (1.22 % of base) : 289799.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
24 (1.19 % of base) : 187797.dasm - System.Data.ProviderBase.DbConnectionFactory:TryGetConnection(System.Data.Common.DbConnection,System.Threading.Tasks.TaskCompletionSource`1[System.Data.ProviderBase.DbConnectionInternal],System.Data.Common.DbConnectionOptions,System.Data.ProviderBase.DbConnectionInternal,byref):ubyte:this (FullOpts)
8 (0.98 % of base) : 72088.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
4 (0.89 % of base) : 88995.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
8 (0.87 % of base) : 72096.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getInterpolationCloseToken|434_2(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
4 (0.85 % of base) : 312981.dasm - Microsoft.VisualBasic.VBCodeGenerator:GenerateTypeConstructor(System.CodeDom.CodeTypeConstructor):this (FullOpts)
8 (0.77 % of base) : 72092.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getCloseQuote|428_5(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
Top method improvements (percentages):
-48 (-27.91 % of base) : 222084.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-36 (-21.95 % of base) : 279333.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-24 (-17.14 % of base) : 208012.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-28 (-12.07 % of base) : 214162.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-24 (-9.68 % of base) : 312081.dasm - R2RDump.Disassembler:TryParseAbsoluteAddress(System.String,byref,byref,byref):ubyte:this (FullOpts)
-20 (-8.20 % of base) : 5531.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
-48 (-7.64 % of base) : 196312.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-16 (-7.55 % of base) : 279272.dasm - System.Globalization.FormatProvider+Number:RoundNumber(byref,int) (FullOpts)
-44 (-6.51 % of base) : 255894.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-44 (-6.21 % of base) : 261818.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-12 (-5.56 % of base) : 309911.dasm - System.Transactions.CheapUnfairReaderWriterLock:EnterWriteLock():this (FullOpts)
-16 (-5.56 % of base) : 204851.dasm - System.Xml.Xsl.XsltOld.ProcessingInstructionAction:IsProcessingInstructionName(System.String):ubyte (FullOpts)
-16 (-5.41 % of base) : 1333.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-20 (-5.26 % of base) : 312082.dasm - R2RDump.Disassembler:TryParseRipRelative(System.String,byref,byref,byref):ubyte:this (FullOpts)
-20 (-4.67 % of base) : 234160.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
-20 (-4.67 % of base) : 36883.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
-16 (-4.49 % of base) : 200334.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
-12 (-4.35 % of base) : 112924.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
-12 (-4.35 % of base) : 160586.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-40 (-4.29 % of base) : 93260.dasm - ILCompiler.LazyGenericsSupport+Graph`1[ubyte]:FindCyclesWorker(ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte],System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte]],byref,System.Diagnostics.Stopwatch) (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: 324574672 (overridden on cmd)
Total bytes of diff: 324568528 (overridden on cmd)
Total bytes of delta: -6144 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
236 : 158122.dasm (5.88 % of base)
60 : 386129.dasm (0.31 % of base)
56 : 543279.dasm (0.79 % of base)
56 : 484374.dasm (0.65 % of base)
40 : 614852.dasm (1.30 % of base)
36 : 387664.dasm (0.65 % of base)
36 : 407281.dasm (2.90 % of base)
36 : 615047.dasm (1.53 % of base)
32 : 470548.dasm (0.29 % of base)
32 : 607225.dasm (1.24 % of base)
28 : 611265.dasm (4.29 % of base)
28 : 385304.dasm (0.22 % of base)
24 : 613395.dasm (3.45 % of base)
24 : 601055.dasm (0.21 % of base)
24 : 270465.dasm (1.94 % of base)
24 : 392027.dasm (1.18 % of base)
20 : 58764.dasm (0.23 % of base)
20 : 407675.dasm (0.68 % of base)
20 : 478427.dasm (0.25 % of base)
20 : 541987.dasm (0.46 % of base)
Top file improvements (bytes):
-252 : 94739.dasm (-1.81 % of base)
-208 : 65512.dasm (-0.84 % of base)
-104 : 395336.dasm (-14.61 % of base)
-88 : 613233.dasm (-0.47 % of base)
-84 : 327195.dasm (-3.16 % of base)
-80 : 606756.dasm (-1.15 % of base)
-80 : 327194.dasm (-2.18 % of base)
-76 : 94738.dasm (-3.04 % of base)
-76 : 94733.dasm (-0.96 % of base)
-68 : 614627.dasm (-0.97 % of base)
-60 : 500563.dasm (-1.18 % of base)
-60 : 559358.dasm (-0.66 % of base)
-52 : 602283.dasm (-0.83 % of base)
-48 : 392226.dasm (-27.91 % of base)
-48 : 608191.dasm (-2.38 % of base)
-44 : 327191.dasm (-6.29 % of base)
-40 : 434458.dasm (-1.58 % of base)
-40 : 541853.dasm (-0.43 % of base)
-40 : 606454.dasm (-0.99 % of base)
-36 : 470553.dasm (-1.68 % of base)
74 total files with Code Size differences (38 improved, 36 regressed), 20 unchanged.
Top method regressions (bytes):
236 (5.88 % of base) : 158122.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:EqualsComplicatedCases(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,int):ubyte:this (Tier1)
60 (0.31 % of base) : 386129.dasm - XPathTests.Common.Utils:XPathNodesetTest(int,System.String,System.String,XPathTests.Common.XPathResult,System.Xml.XmlNamespaceManager,System.String) (Tier1)
56 (0.65 % of base) : 484374.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[ubyte],byref) (Tier1)
56 (0.79 % of base) : 543279.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Collections.Generic.KeyValuePair`2[int,int]]:ReadConstructorArgumentsWithContinuation(byref,byref,System.Text.Json.JsonSerializerOptions):ubyte:this (Tier1)
40 (1.30 % of base) : 614852.dasm - Microsoft.Cci.MetadataWriter:PopulateFieldMarshalTableRows():this (Tier1)
36 (1.53 % of base) : 615047.dasm - Microsoft.Cci.MetadataWriter:PopulateAssemblyTableRows():this (Tier1)
36 (0.65 % of base) : 387664.dasm - MS.Internal.Xml.XPath.FollSiblingQuery:Advance():System.Xml.XPath.XPathNavigator:this (Tier1)
36 (2.90 % of base) : 407281.dasm - System.Xml.DtdParser:ParseElementMixedContent(System.Xml.Schema.ParticleContentValidator,int):this (Tier1)
32 (1.24 % of base) : 607225.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:FormatComment(System.String):System.String:this (Tier1)
32 (0.29 % of base) : 470548.dasm - System.Numerics.BigIntegerCalculator:PowCore(System.Span`1[uint],int,System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint],System.Span`1[uint],System.Span`1[uint]) (Tier1)
28 (4.29 % of base) : 611265.dasm - Microsoft.CodeAnalysis.Compilation:get_HasStrongName():ubyte:this (Tier1)
28 (0.22 % of base) : 385304.dasm - System.Xml.XmlLoader:LoadNode(ubyte):System.Xml.XmlNode:this (Tier1-OSR)
24 (3.45 % of base) : 613395.dasm - Microsoft.CodeAnalysis.Compilation:get_IsRealSigned():ubyte:this (Tier1)
24 (0.21 % of base) : 601055.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (Tier1)
24 (1.94 % of base) : 270465.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier1)
24 (1.18 % of base) : 392027.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext:GetXPathType(System.Type):int (Tier1)
20 (0.23 % of base) : 58764.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ValidateAttributeSemantics(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
20 (0.25 % of base) : 478427.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[ubyte],byref) (Tier1)
20 (0.46 % of base) : 541987.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,int]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
20 (0.68 % of base) : 407675.dasm - System.Xml.RwFactoryWriterTests.CReaderFactory:SetupReadOverload():this (Tier1)
Top method improvements (bytes):
-252 (-1.81 % of base) : 94739.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckValidNullableMethodOverride[System.__Canon](Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInReturnType`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInParameterType`1[System.__Canon],System.__Canon,ubyte):ubyte (Tier1)
-208 (-0.84 % of base) : 65512.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeDeconstructionConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],byref):ubyte:this (Tier1)
-104 (-14.61 % of base) : 395336.dasm - System.Text.EncodingTable:InternalGetCodePageFromName(System.String):int (Tier1)
-88 (-0.47 % of base) : 613233.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitBinaryLogicalOperatorChildren(Microsoft.CodeAnalysis.CSharp.BoundExpression):this (Tier1)
-84 (-3.16 % of base) : 327195.dasm - System.Net.CookieTokenizer:Next(ubyte,ubyte):int:this (Tier1)
-80 (-1.15 % of base) : 606756.dasm - Microsoft.Cci.MetadataWriter:SerializeMethodBodies(System.Reflection.Metadata.BlobBuilder,Microsoft.Cci.PdbWriter,byref):int[]:this (Tier1-OSR)
-80 (-2.18 % of base) : 327194.dasm - System.Net.CookieParser:GetServer():System.Net.Cookie:this (Tier1)
-76 (-3.04 % of base) : 94738.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckValidScopedOverride[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInParameterType`1[System.__Canon],System.__Canon,ubyte,ubyte):ubyte (Tier1)
-76 (-0.96 % of base) : 94733.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:PartialMethodChecks(Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (Tier1)
-68 (-0.97 % of base) : 614627.dasm - Microsoft.Cci.MetadataWriter:SerializeMethodBodies(System.Reflection.Metadata.BlobBuilder,Microsoft.Cci.PdbWriter,byref):int[]:this (Tier1)
-60 (-1.18 % of base) : 500563.dasm - System.Linq.Expressions.Expression:ValidateLambdaArgs(System.Type,byref,System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression],System.String) (Tier1)
-60 (-0.66 % of base) : 559358.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:WriteDateTimeOffsetsValue(System.Text.Json.JsonWriterOptions,System.String):this (Tier1-OSR)
-52 (-0.83 % of base) : 602283.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArgumentsEvaluate(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]:this (Tier1)
-48 (-2.38 % of base) : 608191.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitFieldLoadReceiver(Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CodeGen.LocalDefinition:this (Tier1)
-48 (-27.91 % of base) : 392226.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
-44 (-6.29 % of base) : 327191.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (Tier1)
-40 (-0.99 % of base) : 606454.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitStatementListWorker(Microsoft.CodeAnalysis.CSharp.BoundStatementList):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
-40 (-1.58 % of base) : 434458.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
-40 (-0.43 % of base) : 541853.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
-36 (-22.50 % of base) : 470561.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
Top method regressions (percentages):
16 (6.56 % of base) : 57149.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
16 (6.56 % of base) : 88624.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
16 (6.56 % of base) : 603274.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
16 (6.56 % of base) : 613768.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
16 (6.56 % of base) : 90229.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
16 (6.56 % of base) : 58775.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
16 (6.56 % of base) : 614263.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
16 (6.56 % of base) : 58772.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
16 (6.56 % of base) : 90226.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
16 (6.45 % of base) : 614724.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyAlgorithmIdAttributeSetting():System.Nullable`1[int]:this (Tier1)
236 (5.88 % of base) : 158122.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:EqualsComplicatedCases(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,int):ubyte:this (Tier1)
16 (4.60 % of base) : 58779.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
16 (4.60 % of base) : 603273.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
16 (4.60 % of base) : 90233.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
28 (4.29 % of base) : 611265.dasm - Microsoft.CodeAnalysis.Compilation:get_HasStrongName():ubyte:this (Tier1)
24 (3.45 % of base) : 613395.dasm - Microsoft.CodeAnalysis.Compilation:get_IsRealSigned():ubyte:this (Tier1)
36 (2.90 % of base) : 407281.dasm - System.Xml.DtdParser:ParseElementMixedContent(System.Xml.Schema.ParticleContentValidator,int):this (Tier1)
4 (2.78 % of base) : 614036.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_HasDebuggableAttribute():ubyte:this (Tier1)
4 (2.33 % of base) : 60955.dasm - Microsoft.CodeAnalysis.DefaultTextDocumentServiceProvider:GetService[System.__Canon]():System.__Canon:this (Tier1)
4 (2.33 % of base) : 93058.dasm - Microsoft.CodeAnalysis.DefaultTextDocumentServiceProvider:GetService[System.__Canon]():System.__Canon:this (Tier1)
Top method improvements (percentages):
-48 (-27.91 % of base) : 392226.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
-36 (-22.50 % of base) : 470561.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-36 (-22.50 % of base) : 479444.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-36 (-22.50 % of base) : 493486.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-28 (-17.07 % of base) : 433560.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1-OSR)
-28 (-15.91 % of base) : 432879.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1-OSR)
-24 (-15.79 % of base) : 89047.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedIf():ubyte:this (Tier1)
-24 (-15.38 % of base) : 159013.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedIf():ubyte:this (Tier1)
-24 (-15.38 % of base) : 159014.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedRegion():ubyte:this (Tier1)
-24 (-15.38 % of base) : 89048.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedRegion():ubyte:this (Tier1)
-24 (-15.00 % of base) : 434459.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-104 (-14.61 % of base) : 395336.dasm - System.Text.EncodingTable:InternalGetCodePageFromName(System.String):int (Tier1)
-20 (-13.16 % of base) : 51556.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedIf():ubyte:this (Tier1)
-20 (-13.16 % of base) : 51557.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedRegion():ubyte:this (Tier1)
-12 (-7.32 % of base) : 573032.dasm - System.Text.Json.Tests.Utf8JsonReaderTests+<>c:<TrailingCommasHelper>b__195_0(byref):this (Tier1)
-44 (-6.29 % of base) : 327191.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (Tier1)
-24 (-5.61 % of base) : 86608.dasm - System.IO.File:GetUtcDateTimeOffset(System.DateTime):System.DateTimeOffset (Instrumented Tier1)
-16 (-5.13 % of base) : 434305.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
-36 (-5.06 % of base) : 470559.dasm - System.Numerics.BigIntegerCalculator+FastReducer:SubMod(System.Span`1[uint],System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint],int):int (Tier1)
-36 (-5.06 % of base) : 479442.dasm - System.Numerics.BigIntegerCalculator+FastReducer:SubMod(System.Span`1[uint],System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint],int):int (Tier1)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 162569128 (overridden on cmd)
Total bytes of diff: 162566552 (overridden on cmd)
Total bytes of delta: -2576 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
36 : 15853.dasm (0.60 % of base)
32 : 147492.dasm (3.29 % of base)
32 : 144580.dasm (3.33 % of base)
28 : 251070.dasm (0.46 % of base)
28 : 263568.dasm (0.46 % of base)
20 : 151546.dasm (1.30 % of base)
20 : 21088.dasm (4.42 % of base)
16 : 290809.dasm (0.59 % of base)
16 : 78382.dasm (0.65 % of base)
16 : 264425.dasm (0.59 % of base)
16 : 145543.dasm (1.72 % of base)
12 : 169522.dasm (6.00 % of base)
12 : 193116.dasm (1.18 % of base)
12 : 271507.dasm (0.58 % of base)
12 : 194810.dasm (0.71 % of base)
8 : 124039.dasm (1.14 % of base)
8 : 35691.dasm (1.11 % of base)
8 : 254539.dasm (1.36 % of base)
8 : 63188.dasm (0.29 % of base)
8 : 63900.dasm (0.22 % of base)
Top file improvements (bytes):
-72 : 90270.dasm (-1.76 % of base)
-68 : 89204.dasm (-1.71 % of base)
-48 : 163063.dasm (-7.64 % of base)
-48 : 128185.dasm (-27.91 % of base)
-48 : 95920.dasm (-4.29 % of base)
-44 : 149830.dasm (-6.51 % of base)
-44 : 147157.dasm (-6.51 % of base)
-44 : 150190.dasm (-6.51 % of base)
-36 : 120402.dasm (-1.22 % of base)
-36 : 31373.dasm (-21.95 % of base)
-36 : 36170.dasm (-1.92 % of base)
-32 : 59555.dasm (-1.61 % of base)
-32 : 89820.dasm (-1.77 % of base)
-28 : 93669.dasm (-12.07 % of base)
-24 : 262078.dasm (-1.94 % of base)
-24 : 31296.dasm (-2.12 % of base)
-20 : 82694.dasm (-1.25 % of base)
-20 : 263256.dasm (-0.56 % of base)
-20 : 59054.dasm (-0.07 % of base)
-16 : 34474.dasm (-3.12 % of base)
70 total files with Code Size differences (40 improved, 30 regressed), 20 unchanged.
Top method regressions (bytes):
36 (0.60 % of base) : 15853.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
32 (3.29 % of base) : 147492.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
32 (3.33 % of base) : 144580.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
28 (0.46 % of base) : 251070.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<<FloatingPointConstants_Pass>g__PerformFloatingPointSerialization|38_0>d:MoveNext():this (FullOpts)
28 (0.46 % of base) : 263568.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<<FloatingPointConstants_Pass>g__PerformFloatingPointSerialization|38_0>d:MoveNext():this (FullOpts)
20 (4.42 % of base) : 21088.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
20 (1.30 % of base) : 151546.dasm - System.Net.Tests.HttpWebRequestTest+<>c+<<SendHttpGetRequest_WithCachePolicyBypassCache_DoNotAddHeaders>b__145_1>d:MoveNext():this (FullOpts)
16 (0.65 % of base) : 78382.dasm - System.ComponentModel.TypeDescriptor:PipelineMerge(int,System.Collections.ICollection,System.Collections.ICollection,System.Collections.IDictionary):System.Collections.ICollection (FullOpts)
16 (1.72 % of base) : 145543.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextValue(System.String,int,ubyte,byref):System.String (FullOpts)
16 (0.59 % of base) : 290809.dasm - System.Text.RegularExpressions.RegexCharClass:DescribeSet(System.String):System.String (FullOpts)
16 (0.59 % of base) : 264425.dasm - System.Text.RegularExpressions.RegexCharClass:DescribeSet(System.String):System.String (FullOpts)
12 (1.18 % of base) : 193116.dasm - System.Runtime.Serialization.SchemaHelper:AddSchemaImport(System.String,System.Xml.Schema.XmlSchema) (FullOpts)
12 (0.58 % of base) : 271507.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1517_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
12 (0.71 % of base) : 194810.dasm - System.Xml.EncodingStreamWrapper:CheckUTF8DeclarationEncoding(ubyte[],int,int,int,int) (FullOpts)
12 (6.00 % of base) : 169522.dasm - System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
8 (1.11 % of base) : 35691.dasm - LamarCodeGeneration.Util.ImHashMap:UpdateEntry[System.__Canon,System.__Canon](LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon],LamarCodeGeneration.Util.ImHashMapEntry`2[System.__Canon,System.__Canon]):LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon] (FullOpts)
8 (0.22 % of base) : 63900.dasm - Microsoft.CSharp.CSharpCodeGenerator:GenerateProperty(System.CodeDom.CodeMemberProperty):this (FullOpts)
8 (0.29 % of base) : 63188.dasm - Microsoft.VisualBasic.VBCodeGenerator:GenerateMethod(System.CodeDom.CodeMemberMethod,System.CodeDom.CodeTypeDeclaration):this (FullOpts)
8 (1.14 % of base) : 124039.dasm - System.IO.Hashing.Tests.NonCryptoHashTestDriver:StaticVerifyTryOneShotDriver(System.IO.Hashing.Tests.NonCryptoHashTestDriver+TestCase):this (FullOpts)
8 (1.36 % of base) : 254539.dasm - System.Text.Json.JsonReaderHelper:UnescapeAndCompare(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
Top method improvements (bytes):
-72 (-1.76 % of base) : 90270.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-68 (-1.71 % of base) : 89204.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-48 (-4.29 % of base) : 95920.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-48 (-27.91 % of base) : 128185.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-48 (-7.64 % of base) : 163063.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-44 (-6.51 % of base) : 149830.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-44 (-6.51 % of base) : 147157.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-44 (-6.51 % of base) : 150190.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-36 (-1.92 % of base) : 36170.dasm - FastExpressionCompiler.LightExpression.ExpressionCompiler+EmittingVisitor:TryEmitNestedLambda(FastExpressionCompiler.LightExpression.LambdaExpression,System.Collections.Generic.IReadOnlyList`1[FastExpressionCompiler.LightExpression.ParameterExpression],System.Reflection.Emit.ILGenerator,byref):ubyte (FullOpts)
-36 (-1.22 % of base) : 120402.dasm - System.IO.Compression.Tests.zip_UpdateTests:Update_Comment_EntryName_Encoding_Internal(System.String,System.String,System.String,System.Text.Encoding,System.String,System.String) (FullOpts)
-36 (-21.95 % of base) : 31373.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-32 (-1.61 % of base) : 59555.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (FullOpts)
-32 (-1.77 % of base) : 89820.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
-28 (-12.07 % of base) : 93669.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-24 (-2.12 % of base) : 31296.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-24 (-1.94 % of base) : 262078.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestTextEqualsTooSmallToMatch(System.String) (FullOpts)
-20 (-0.07 % of base) : 59054.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-20 (-1.25 % of base) : 82694.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:GetExtenders(System.Collections.ICollection,System.Object,System.Collections.IDictionary):System.ComponentModel.IExtenderProvider[] (FullOpts)
-20 (-0.56 % of base) : 263256.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestSkipPartial(System.String,ubyte) (FullOpts)
-16 (-3.12 % of base) : 34474.dasm - Stashbox.Registration.DecoratorRepository:GetRegistrationsForType(System.Type):System.Collections.Generic.IEnumerable`1[Stashbox.Registration.ServiceRegistrations.ServiceRegistration]:this (FullOpts)
Top method regressions (percentages):
8 (7.14 % of base) : 164635.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
12 (6.00 % of base) : 169522.dasm - System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
20 (4.42 % of base) : 21088.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
32 (3.33 % of base) : 144580.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
32 (3.29 % of base) : 147492.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
4 (1.75 % of base) : 172218.dasm - OLEDB.Test.ModuleCore.CVariation:Execute():int:this (FullOpts)
16 (1.72 % of base) : 145543.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextValue(System.String,int,ubyte,byref):System.String (FullOpts)
8 (1.36 % of base) : 254539.dasm - System.Text.Json.JsonReaderHelper:UnescapeAndCompare(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
20 (1.30 % of base) : 151546.dasm - System.Net.Tests.HttpWebRequestTest+<>c+<<SendHttpGetRequest_WithCachePolicyBypassCache_DoNotAddHeaders>b__145_1>d:MoveNext():this (FullOpts)
4 (1.22 % of base) : 34902.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
12 (1.18 % of base) : 193116.dasm - System.Runtime.Serialization.SchemaHelper:AddSchemaImport(System.String,System.Xml.Schema.XmlSchema) (FullOpts)
8 (1.14 % of base) : 124039.dasm - System.IO.Hashing.Tests.NonCryptoHashTestDriver:StaticVerifyTryOneShotDriver(System.IO.Hashing.Tests.NonCryptoHashTestDriver+TestCase):this (FullOpts)
8 (1.11 % of base) : 35691.dasm - LamarCodeGeneration.Util.ImHashMap:UpdateEntry[System.__Canon,System.__Canon](LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon],LamarCodeGeneration.Util.ImHashMapEntry`2[System.__Canon,System.__Canon]):LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon] (FullOpts)
4 (1.04 % of base) : 174364.dasm - OLEDB.Test.ModuleCore.CError:Compare(System.Object,System.Object,System.Object,System.String):ubyte (FullOpts)
8 (0.95 % of base) : 259771.dasm - System.Text.Json.Serialization.Tests.SpanTests:ParseUntyped() (FullOpts)
4 (0.89 % of base) : 46720.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__115:MoveNext():ubyte:this (FullOpts)
4 (0.89 % of base) : 52654.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__115:MoveNext():ubyte:this (FullOpts)
4 (0.89 % of base) : 55067.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__122:MoveNext():ubyte:this (FullOpts)
4 (0.88 % of base) : 207259.dasm - System.Int128:TryFormat(System.Span`1[ubyte],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
4 (0.85 % of base) : 63911.dasm - Microsoft.VisualBasic.VBCodeGenerator:GenerateTypeConstructor(System.CodeDom.CodeTypeConstructor):this (FullOpts)
Top method improvements (percentages):
-48 (-27.91 % of base) : 128185.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-36 (-21.95 % of base) : 31373.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-28 (-12.07 % of base) : 93669.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-48 (-7.64 % of base) : 163063.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-16 (-7.55 % of base) : 142419.dasm - System.Globalization.FormatProvider+Number:RoundNumber(byref,int) (FullOpts)
-44 (-6.51 % of base) : 149830.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-44 (-6.51 % of base) : 147157.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-44 (-6.51 % of base) : 150190.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-16 (-4.49 % of base) : 33765.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
-12 (-4.35 % of base) : 264323.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-12 (-4.35 % of base) : 172.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-48 (-4.29 % of base) : 95920.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-12 (-4.00 % of base) : 44924.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-4 (-3.85 % of base) : 16884.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
-4 (-3.57 % of base) : 786.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (FullOpts)
-12 (-3.33 % of base) : 290730.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-4 (-3.33 % of base) : 161916.dasm - System.Xml.Linq.XObject:get_BaseUri():System.String:this (FullOpts)
-16 (-3.12 % of base) : 34474.dasm - Stashbox.Registration.DecoratorRepository:GetRegistrationsForType(System.Type):System.Collections.Generic.IEnumerable`1[Stashbox.Registration.ServiceRegistrations.ServiceRegistration]:this (FullOpts)
-8 (-2.94 % of base) : 74589.dasm - System.Collections.Generic.SortedSet`1[int]:SymmetricExceptWithSameComparer(int[],int):this (FullOpts)
-12 (-2.83 % of base) : 94129.dasm - System.Xml.DataSetMapper:GetColumnSchemaForNode(System.Xml.XmlBoundElement,System.Xml.XmlNode):System.Data.DataColumn:this (FullOpts)
realworld.run.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15061040 (overridden on cmd)
Total bytes of diff: 15060868 (overridden on cmd)
Total bytes of delta: -172 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
36 : 20547.dasm (0.60 % of base)
16 : 28413.dasm (1.32 % of base)
12 : 15823.dasm (0.82 % of base)
8 : 15804.dasm (0.58 % of base)
4 : 26947.dasm (0.89 % of base)
4 : 4846.dasm (0.64 % of base)
Top file improvements (bytes):
-24 : 15856.dasm (-2.03 % of base)
-20 : 14187.dasm (-1.82 % of base)
-16 : 811.dasm (-5.41 % of base)
-12 : 799.dasm (-3.90 % of base)
-12 : 13214.dasm (-0.35 % of base)
-12 : 16859.dasm (-4.35 % of base)
-12 : 1802.dasm (-1.21 % of base)
-12 : 18182.dasm (-4.00 % of base)
-12 : 18366.dasm (-0.36 % of base)
-12 : 967.dasm (-0.22 % of base)
-8 : 14832.dasm (-0.67 % of base)
-8 : 16552.dasm (-0.26 % of base)
-8 : 17417.dasm (-0.12 % of base)
-8 : 21997.dasm (-0.92 % of base)
-8 : 28398.dasm (-3.23 % of base)
-8 : 17419.dasm (-0.40 % of base)
-8 : 19004.dasm (-0.29 % of base)
-8 : 23857.dasm (-1.01 % of base)
-8 : 29290.dasm (-0.47 % of base)
-8 : 7711.dasm (-1.64 % of base)
32 total files with Code Size differences (26 improved, 6 regressed), 10 unchanged.
Top method regressions (bytes):
36 (0.60 % of base) : 20547.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
16 (1.32 % of base) : 28413.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
12 (0.82 % of base) : 15823.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
8 (0.58 % of base) : 15804.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
4 (0.89 % of base) : 26947.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
4 (0.64 % of base) : 4846.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
Top method improvements (bytes):
-24 (-2.03 % of base) : 15856.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-20 (-1.82 % of base) : 14187.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
-16 (-5.41 % of base) : 811.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-12 (-4.00 % of base) : 18182.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-12 (-0.36 % of base) : 18366.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-12 (-0.35 % of base) : 13214.dasm - Microsoft.ML.Data.SchemaDefinition:Create(System.Type,int):Microsoft.ML.Data.SchemaDefinition (FullOpts)
-12 (-0.22 % of base) : 967.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-12 (-3.90 % of base) : 799.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-12 (-4.35 % of base) : 16859.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-12 (-1.21 % of base) : 1802.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
-8 (-0.26 % of base) : 16552.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
-8 (-0.40 % of base) : 17419.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
-8 (-0.12 % of base) : 17417.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
-8 (-0.92 % of base) : 21997.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromEqualsMethod>g__isWellKnownEqualityMethodOrImplementation|213_1(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,int):ubyte (FullOpts)
-8 (-0.29 % of base) : 19004.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-8 (-0.67 % of base) : 14832.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
-8 (-1.01 % of base) : 23857.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+NumericValueSet`2[int,Microsoft.CodeAnalysis.CSharp.ValueSetFactory+IntTC]:Union(Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]):Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]:this (FullOpts)
-8 (-3.23 % of base) : 28398.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-8 (-0.47 % of base) : 29290.dasm - System.Management.Automation.PowerShell:CoreInvoke[System.__Canon,System.__Canon](System.Management.Automation.PSDataCollection`1[System.__Canon],System.Management.Automation.PSDataCollection`1[System.__Canon],System.Management.Automation.PSInvocationSettings):this (FullOpts)
-8 (-1.64 % of base) : 7711.dasm - System.Xml.Linq.XContainer+<GetDescendants>d__38:MoveNext():ubyte:this (FullOpts)
Top method regressions (percentages):
16 (1.32 % of base) : 28413.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
4 (0.89 % of base) : 26947.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
12 (0.82 % of base) : 15823.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
4 (0.64 % of base) : 4846.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
36 (0.60 % of base) : 20547.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
8 (0.58 % of base) : 15804.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
Top method improvements (percentages):
-16 (-5.41 % of base) : 811.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-12 (-4.35 % of base) : 16859.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-12 (-4.00 % of base) : 18182.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-12 (-3.90 % of base) : 799.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-8 (-3.23 % of base) : 28398.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-24 (-2.03 % of base) : 15856.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-20 (-1.82 % of base) : 14187.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
-8 (-1.64 % of base) : 7711.dasm - System.Xml.Linq.XContainer+<GetDescendants>d__38:MoveNext():ubyte:this (FullOpts)
-4 (-1.49 % of base) : 23191.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsFixedStatementExpression(Microsoft.CodeAnalysis.SyntaxNode):ubyte (FullOpts)
-12 (-1.21 % of base) : 1802.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
-8 (-1.01 % of base) : 23857.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+NumericValueSet`2[int,Microsoft.CodeAnalysis.CSharp.ValueSetFactory+IntTC]:Union(Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]):Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]:this (FullOpts)
-8 (-0.92 % of base) : 21997.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromEqualsMethod>g__isWellKnownEqualityMethodOrImplementation|213_1(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,int):ubyte (FullOpts)
-4 (-0.73 % of base) : 22874.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ResetStack():this (FullOpts)
-8 (-0.67 % of base) : 14832.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
-4 (-0.62 % of base) : 23049.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:FindLocalFunction(Microsoft.CodeAnalysis.CSharp.Syntax.LocalFunctionStatementSyntax,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Symbols.LocalFunctionSymbol (FullOpts)
-8 (-0.47 % of base) : 29290.dasm - System.Management.Automation.PowerShell:CoreInvoke[System.__Canon,System.__Canon](System.Management.Automation.PSDataCollection`1[System.__Canon],System.Management.Automation.PSDataCollection`1[System.__Canon],System.Management.Automation.PSInvocationSettings):this (FullOpts)
-8 (-0.40 % of base) : 17419.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
-12 (-0.36 % of base) : 18366.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-12 (-0.35 % of base) : 13214.dasm - Microsoft.ML.Data.SchemaDefinition:Create(System.Type,int):Microsoft.ML.Data.SchemaDefinition (FullOpts)
-4 (-0.34 % of base) : 16632.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
windows arm64
Diffs are based on 2,341,104 contexts (938,449 MinOpts, 1,402,655 FullOpts).
MISSED contexts: base: 8 (0.00%), diff: 13 (0.00%)
Overall (-14,220 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.windows.arm64.checked.mch |
10,965,984 |
-408 |
benchmarks.run_pgo.windows.arm64.checked.mch |
45,573,612 |
+256 |
benchmarks.run_tiered.windows.arm64.checked.mch |
15,586,996 |
-360 |
coreclr_tests.run.windows.arm64.checked.mch |
495,271,548 |
-1,956 |
libraries.crossgen2.windows.arm64.checked.mch |
59,070,348 |
-1,344 |
libraries.pmi.windows.arm64.checked.mch |
79,841,380 |
-1,472 |
libraries_tests.run.windows.arm64.Release.mch |
330,789,420 |
-5,652 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
171,576,132 |
-2,904 |
realworld.run.windows.arm64.checked.mch |
15,904,740 |
-176 |
smoke_tests.nativeaot.windows.arm64.checked.mch |
3,970,716 |
-204 |
FullOpts (-14,220 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.windows.arm64.checked.mch |
10,965,448 |
-408 |
benchmarks.run_pgo.windows.arm64.checked.mch |
29,562,216 |
+256 |
benchmarks.run_tiered.windows.arm64.checked.mch |
4,409,808 |
-360 |
coreclr_tests.run.windows.arm64.checked.mch |
156,582,444 |
-1,956 |
libraries.crossgen2.windows.arm64.checked.mch |
59,068,712 |
-1,344 |
libraries.pmi.windows.arm64.checked.mch |
79,721,396 |
-1,472 |
libraries_tests.run.windows.arm64.Release.mch |
127,355,824 |
-5,652 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
158,422,384 |
-2,904 |
realworld.run.windows.arm64.checked.mch |
15,340,760 |
-176 |
smoke_tests.nativeaot.windows.arm64.checked.mch |
3,969,704 |
-204 |
Example diffs
benchmarks.run.windows.arm64.checked.mch
-36 (-21.95%) : 7035.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -11,12 +11,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
; V02 loc0 [V02,T00] ( 7, 24.50) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> x5 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x4 "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> x6 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> x5 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -33,51 +35,39 @@ G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x2]
cmp w1, w3
blt G_M264_IG11
- b G_M264_IG09
+ b G_M264_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
; byrRegs +[x0 x2]
sxtw w4, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1
- sxtw w4, w5
- tbnz w4, #31, G_M264_IG06
+ sub w4, w4, #1
+ tbnz w4, #31, G_M264_IG09
cmp w4, w1
bhs G_M264_IG13
- ubfiz x6, x4, #2, #32
- ldr w7, [x0, x6]
+ ubfiz x5, x4, #2, #32
+ ldr w6, [x0, x5]
cmp w4, w3
bhs G_M264_IG13
- ldr w6, [x2, x6]
- cmp w7, w6
+ ldr w5, [x2, x5]
+ cmp w6, w5
beq G_M264_IG05
- ;; size=48 bbWeight=4 PerfScore 54.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- tbz w5, #31, G_M264_IG08
- mov w0, wzr
- ; byrRegs -[x0]
+ ;; size=44 bbWeight=4 PerfScore 52.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0 x2]
+ cmp w5, w6
+ bhi G_M264_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref, isz
- ; byrRegs +[x0]
- cmp w5, w1
- bhs G_M264_IG13
- ubfiz x6, x5, #2, #32
- ldr w0, [x0, x6]
- ; byrRegs -[x0]
- cmp w5, w3
- bhs G_M264_IG13
- ldr w1, [x2, x6]
- cmp w0, w1
- blo G_M264_IG11
- ;; size=36 bbWeight=0.50 PerfScore 5.75
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
- mov w0, #1
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
@@ -96,7 +86,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 8, PerfScore 68.50, instruction count 41, allocated bytes for code 164 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 128, prolog size 8, PerfScore 61.00, instruction count 32, allocated bytes for code 128 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -107,7 +97,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-48 (-7.64%) : 16412.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan1[ushort],System.Span
1[ubyte],byref,byref):this (FullOpts)
@@ -9,12 +9,12 @@
; Final local variable assignments
;
; V00 this [V00,T10] ( 6, 6 ) ref -> x0 this class-hnd single-def <System.Xml.Base64Decoder>
-; V01 arg1 [V01 ] ( 20, 43 ) struct (16) [fp+0x10] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V01 arg1 [V01 ] ( 19, 42.50) struct (16) [fp+0x10] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
; V03 arg3 [V03,T13] ( 3, 3 ) byref -> x5 single-def
; V04 arg4 [V04,T14] ( 3, 3 ) byref -> x6 single-def
; V05 loc0 [V05,T06] ( 6, 12 ) int -> registers
-; V06 loc1 [V06,T00] ( 19, 56 ) int -> registers
+; V06 loc1 [V06,T00] ( 18, 55.50) int -> registers
; V07 loc2 [V07,T11] ( 5, 8 ) int -> x7
; V08 loc3 [V08,T04] ( 8, 12.50) int -> x8
;* V09 loc4 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
@@ -36,7 +36,7 @@
;* V25 tmp13 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V26 tmp14 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
; V27 tmp15 [V27 ] ( 9, 15.50) byref -> [fp+0x10] do-not-enreg[X] addr-exposed single-def "field V01._reference (fldOffset=0x0)" P-DEP
-; V28 tmp16 [V28 ] ( 15, 29.50) int -> [fp+0x18] do-not-enreg[X] addr-exposed single-def "field V01._length (fldOffset=0x8)" P-DEP
+; V28 tmp16 [V28 ] ( 14, 29 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed single-def "field V01._length (fldOffset=0x8)" P-DEP
; V29 tmp17 [V29,T15] ( 2, 3 ) byref -> x3 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
; V30 tmp18 [V30,T09] ( 3, 7 ) int -> x4 single-def "field V02._length (fldOffset=0x8)" P-INDEP
; V31 tmp19 [V31,T16] ( 2, 3 ) byref -> x9 single-def "field V09._reference (fldOffset=0x0)" P-INDEP
@@ -84,7 +84,7 @@ G_M19254_IG03: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0268 {x3 x5 x
bhs G_M19254_IG06
ldr w10, [fp, #0x18] // [V28 tmp16]
cmp w2, w10
- bhs G_M19254_IG17
+ bhs G_M19254_IG12
ldr x10, [fp, #0x10] // [V27 tmp15]
; byrRegs +[x10]
ldrh w10, [x10, w2, UXTW #2]
@@ -100,10 +100,10 @@ G_M19254_IG03: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0268 {x3 x5 x
;; size=60 bbWeight=4 PerfScore 70.00
G_M19254_IG04: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0268 {x3 x5 x6 x9}, byref, isz
cmp w10, #123
- bge G_M19254_IG18
+ bge G_M19254_IG13
ldrb w10, [x9, w10, UXTW #2]
cmp w10, #255
- beq G_M19254_IG18
+ beq G_M19254_IG13
orr w7, w10, w7, LSL #6
add w8, w8, #6
cmp w8, #8
@@ -114,7 +114,7 @@ G_M19254_IG04: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0268 {x3 x5 x
strb w11, [x3, w1, UXTW #2]
cmp w10, w4
mov w1, w10
- beq G_M19254_IG16
+ beq G_M19254_IG10
;; size=64 bbWeight=2 PerfScore 27.00
G_M19254_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0268 {x3 x5 x6 x9}, byref, isz
ldr w10, [fp, #0x18] // [V28 tmp16]
@@ -125,26 +125,26 @@ G_M19254_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x
; byrRegs -[x3 x9]
ldr w3, [fp, #0x18] // [V28 tmp16]
cmp w2, w3
- bhs G_M19254_IG15
+ bhs G_M19254_IG10
ldr w3, [fp, #0x18] // [V28 tmp16]
cmp w2, w3
- bhs G_M19254_IG17
+ bhs G_M19254_IG12
ldr x3, [fp, #0x10] // [V27 tmp15]
; byrRegs +[x3]
ldrh w3, [x3, w2, UXTW #2]
; byrRegs -[x3]
cmp w3, #61
- bne G_M19254_IG14
+ bne G_M19254_IG10
mov w8, wzr
;; size=44 bbWeight=0.50 PerfScore 7.00
G_M19254_IG07: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref, isz
add w2, w2, #1
ldr w3, [fp, #0x18] // [V28 tmp16]
cmp w2, w3
- bhs G_M19254_IG08
+ bhs G_M19254_IG10
ldr w3, [fp, #0x18] // [V28 tmp16]
cmp w2, w3
- bhs G_M19254_IG17
+ bhs G_M19254_IG12
ldr x3, [fp, #0x10] // [V27 tmp15]
; byrRegs +[x3]
ldrh w3, [x3, w2, UXTW #2]
@@ -152,66 +152,44 @@ G_M19254_IG07: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6},
cmp w3, #61
beq G_M19254_IG07
;; size=44 bbWeight=4 PerfScore 56.00
-G_M19254_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref, isz
- ldr w3, [fp, #0x18] // [V28 tmp16]
- cmp w2, w3
- bhs G_M19254_IG13
+G_M19254_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref
movz x11, #0xD1FFAB1E
movk x11, #0xD1FFAB1E LSL #16
movk x11, #0xD1FFAB1E LSL #32
- ;; size=24 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 0.75
G_M19254_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref, isz
add w3, w2, #1
ldr w4, [fp, #0x18] // [V28 tmp16]
cmp w2, w4
- bhs G_M19254_IG17
+ bhs G_M19254_IG12
ldr x4, [fp, #0x10] // [V27 tmp15]
; byrRegs +[x4]
ldrh w2, [x4, w2, UXTW #2]
ldrb w2, [x11, w2, UXTW #2]
- tbz w2, #0, G_M19254_IG19
+ tbz w2, #0, G_M19254_IG14
ldr w2, [fp, #0x18] // [V28 tmp16]
cmp w3, w2
- blo G_M19254_IG12
- ;; size=44 bbWeight=4 PerfScore 66.00
+ mov w2, w3
+ blo G_M19254_IG09
+ ;; size=48 bbWeight=4 PerfScore 68.00
G_M19254_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref
; byrRegs -[x4]
stp w7, w8, [x0, #0x1C]
str w1, [x6]
- str w3, [x5]
+ str w2, [x5]
;; size=12 bbWeight=1 PerfScore 3.00
G_M19254_IG11: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M19254_IG12: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, gcvars, byref
- mov w2, w3
- b G_M19254_IG09
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M19254_IG13: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref
- mov w3, w2
- b G_M19254_IG10
- ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M19254_IG14: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref
- mov w3, w2
- b G_M19254_IG10
- ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M19254_IG15: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref
- mov w3, w2
- b G_M19254_IG10
- ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M19254_IG16: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref
- mov w3, w2
- b G_M19254_IG10
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19254_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19254_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
; byrRegs -[x5-x6]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M19254_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19254_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for <unknown method>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -257,7 +235,7 @@ G_M19254_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x20]
; gcr arg pop 0
;; size=108 bbWeight=0 PerfScore 0.00
-G_M19254_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19254_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for <unknown method>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -305,7 +283,7 @@ G_M19254_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=112 bbWeight=0 PerfScore 0.00
-; Total bytes of code 628, prolog size 16, PerfScore 266.12, instruction count 157, allocated bytes for code 628 (MethodHash=6376b4c9) for method System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
+; Total bytes of code 580, prolog size 16, PerfScore 260.75, instruction count 145, allocated bytes for code 580 (MethodHash=6376b4c9) for method System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
; ============================================================
Unwind Info:
@@ -316,7 +294,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 157 (0x0009d) Actual length = 628 (0x000274)
+ Function Length : 145 (0x00091) Actual length = 580 (0x000244)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-7.04%) : 21058.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
@@ -7,20 +7,21 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T05] ( 6, 22 ) int -> x0
-; V01 arg1 [V01,T06] ( 6, 19 ) int -> x19 single-def
-; V02 arg2 [V02,T08] ( 5, 11 ) ref -> x20 class-hnd single-def <int[]>
-; V03 loc0 [V03,T00] ( 17,112 ) int -> x23
-; V04 loc1 [V04,T01] ( 13,100 ) int -> x1
+; V00 arg0 [V00,T06] ( 6, 22 ) int -> x0
+; V01 arg1 [V01,T07] ( 6, 19 ) int -> x19 single-def
+; V02 arg2 [V02,T09] ( 5, 11 ) ref -> x20 class-hnd single-def <int[]>
+; V03 loc0 [V03,T00] ( 16,110 ) int -> x23
+; V04 loc1 [V04,T01] ( 10, 94 ) int -> x1
; V05 loc2 [V05,T04] ( 4, 38 ) int -> x3
-; V06 loc3 [V06,T09] ( 4, 8 ) int -> x4
+; V06 loc3 [V06,T10] ( 4, 8 ) int -> x5
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T10] ( 2, 8 ) int -> x5 "Strict ordering of exceptions for Array store"
-; V09 tmp2 [V09,T07] ( 2, 16 ) int -> x0 "arg temp"
-; V10 cse0 [V10,T11] ( 3, 7 ) long -> x22 hoist "CSE - aggressive"
-; V11 cse1 [V11,T12] ( 3, 6 ) long -> x1 "CSE - aggressive"
-; V12 cse2 [V12,T02] ( 11, 51 ) byref -> x21 hoist "CSE - aggressive"
-; V13 cse3 [V13,T03] ( 7, 46 ) int -> x2 "CSE - aggressive"
+; V08 tmp1 [V08,T11] ( 2, 8 ) int -> x4 "Strict ordering of exceptions for Array store"
+; V09 tmp2 [V09,T08] ( 2, 16 ) int -> x0 "arg temp"
+; V10 cse0 [V10,T05] ( 3, 34 ) int -> x4 "CSE - aggressive"
+; V11 cse1 [V11,T12] ( 3, 7 ) long -> x22 hoist "CSE - aggressive"
+; V12 cse2 [V12,T13] ( 3, 6 ) long -> x1 "CSE - aggressive"
+; V13 cse3 [V13,T02] ( 10, 49 ) byref -> x21 hoist "CSE - aggressive"
+; V14 cse4 [V14,T03] ( 6, 44 ) int -> x2 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -72,7 +73,7 @@ G_M36260_IG08: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=200000 {x2
;; size=4 bbWeight=8 PerfScore 4.00
G_M36260_IG09: ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
cmp w1, w23
- ble G_M36260_IG10
+ ble G_M36260_IG11
cmp w1, w2
bhs G_M36260_IG15
ldr w4, [x21, w1, UXTW #2]
@@ -80,17 +81,12 @@ G_M36260_IG09: ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=200000 {x
bge G_M36260_IG08
;; size=28 bbWeight=16 PerfScore 120.00
G_M36260_IG10: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
- cmp w23, w1
- bge G_M36260_IG11
cmp w23, w2
bhs G_M36260_IG15
- ldr w4, [x21, w23, UXTW #2]
- cmp w1, w2
- bhs G_M36260_IG15
- ldr w5, [x21, w1, UXTW #2]
- str w5, [x21, w23, UXTW #2]
- str w4, [x21, w1, UXTW #2]
- ;; size=40 bbWeight=2 PerfScore 25.00
+ ldr w5, [x21, w23, UXTW #2]
+ str w4, [x21, w23, UXTW #2]
+ str w5, [x21, w1, UXTW #2]
+ ;; size=20 bbWeight=2 PerfScore 13.00
G_M36260_IG11: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
cmp w23, w1
blt G_M36260_IG06
@@ -101,9 +97,9 @@ G_M36260_IG12: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=200000 {x2
cmp w23, w2
bhs G_M36260_IG15
ubfiz x1, x23, #2, #32
- ldr w4, [x21, x1]
+ ldr w5, [x21, x1]
str w3, [x21, x1]
- str w4, [x21, x22]
+ str w5, [x21, x22]
;; size=24 bbWeight=2 PerfScore 15.00
G_M36260_IG13: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref
sub w1, w23, #1
@@ -134,7 +130,7 @@ G_M36260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 284, prolog size 28, PerfScore 399.00, instruction count 71, allocated bytes for code 284 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
+; Total bytes of code 264, prolog size 28, PerfScore 387.00, instruction count 66, allocated bytes for code 264 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
; ============================================================
Unwind Info:
@@ -145,7 +141,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
+ Function Length : 66 (0x00042) Actual length = 264 (0x000108)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+1.11%) : 15942.dasm - System.Enum+<>c__631[uint]:<FormatNumberAsHex>b__63_0(System.Span
1[ushort],long):this (FullOpts)
@@ -10,32 +10,32 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Enum+<>c__63`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ushort]>
-; V02 arg2 [V02,T02] ( 3, 2.50) long -> x3 single-def
+; V02 arg2 [V02,T01] ( 3, 2.50) long -> x3 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) ubyte -> zero-ref
;* V04 loc1 [V04,T17] ( 0, 0 ) int -> zero-ref ld-addr-op
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
; V08 tmp3 [V08,T08] ( 5, 2.50) int -> x0 "Inline stloc first use temp"
-; V09 tmp4 [V09,T04] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V09 tmp4 [V09,T03] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V10 tmp5 [V10,T09] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
; V11 tmp6 [V11,T10] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V13 tmp8 [V13,T05] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V13 tmp8 [V13,T04] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V14 tmp9 [V14,T11] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
; V15 tmp10 [V15,T12] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V17 tmp12 [V17,T06] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V17 tmp12 [V17,T05] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V18 tmp13 [V18,T13] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
; V19 tmp14 [V19,T14] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
;* V20 tmp15 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V21 tmp16 [V21,T07] ( 3, 3 ) ubyte -> x0 "Inlining Arg"
+; V21 tmp16 [V21,T06] ( 3, 3 ) ubyte -> x0 "Inlining Arg"
; V22 tmp17 [V22,T15] ( 3, 1.50) int -> x0 "Inline stloc first use temp"
; V23 tmp18 [V23,T16] ( 3, 1.50) int -> x0 "Inline stloc first use temp"
;* V24 tmp19 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V25 tmp20 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V26 tmp21 [V26,T00] ( 9, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp22 [V27,T03] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V27 tmp22 [V27,T02] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp24 [V29 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
@@ -46,14 +46,15 @@
;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
;* V36 tmp31 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
-; V38 cse0 [V38,T01] ( 6, 6 ) ref -> x1 multi-def "CSE - aggressive"
+; V38 cse0 [V38,T07] ( 5, 2.50) ref -> x19 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M18375_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M18375_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
cmp w2, #8
@@ -127,48 +128,50 @@ G_M18375_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, b
strh w0, [x1, #0x0C]
b G_M18375_IG05
;; size=264 bbWeight=0.50 PerfScore 23.75
-G_M18375_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M18375_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x1]
- movz x1, #8
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1
+ movz x19, #8
+ movk x19, #0xD1FFAB1E LSL #16
+ movk x19, #0xD1FFAB1E LSL #32
+ mov x0, x19
; gcrRegs +[x0]
+ mov x1, x19
+ ; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- ; gcrRegs -[x0]
- movz x1, #8
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1
+ ; gcrRegs -[x0-x1] +[x19]
+ mov x0, x19
; gcrRegs +[x0]
+ mov x1, x19
+ ; gcrRegs +[x1]
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=72 bbWeight=1 PerfScore 15.00
+ ; gcrRegs -[x0-x1 x19]
+ ;; size=68 bbWeight=0.50 PerfScore 7.25
G_M18375_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 360, prolog size 8, PerfScore 43.75, instruction count 90, allocated bytes for code 360 (MethodHash=1579b838) for method System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
+; Total bytes of code 364, prolog size 12, PerfScore 39.00, instruction count 91, allocated bytes for code 364 (MethodHash=1579b838) for method System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 90 (0x0005a) Actual length = 360 (0x000168)
+ Function Length : 91 (0x0005b) Actual length = 364 (0x00016c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -176,7 +179,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
+4 (+1.22%) : 6388.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
@@ -8,34 +8,37 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T10] ( 5, 15 ) ref -> x20 class-hnd single-def <System.Reflection.ParameterInfo[]>
-; V01 arg1 [V01,T11] ( 5, 11 ) ref -> x21 class-hnd single-def <System.Type[]>
-; V02 arg2 [V02,T06] ( 5, 23 ) byref -> x19 single-def
+; V00 arg0 [V00,T10] ( 4, 11 ) ref -> x20 class-hnd single-def <System.Reflection.ParameterInfo[]>
+; V01 arg1 [V01,T14] ( 4, 4 ) ref -> x21 class-hnd single-def <System.Type[]>
+; V02 arg2 [V02,T05] ( 5, 23 ) byref -> x19 single-def
; V03 loc0 [V03,T09] ( 6, 21 ) int -> x23
-;* V04 loc1 [V04,T13] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc2 [V05,T12] ( 2, 12 ) ref -> x24 class-hnd <System.Type>
-; V06 loc3 [V06,T01] ( 7, 88 ) int -> x25
+;* V04 loc1 [V04,T12] ( 0, 0 ) ubyte -> zero-ref
+; V05 loc2 [V05,T11] ( 2, 12 ) ref -> x25 class-hnd <System.Type>
+; V06 loc3 [V06,T01] ( 7, 88 ) int -> x26
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-; V09 tmp2 [V09,T07] ( 3, 24 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
+; V09 tmp2 [V09,T06] ( 3, 24 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
;* V10 tmp3 [V10 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V11 tmp4 [V11,T15] ( 0, 0 ) ubyte -> zero-ref "field V08.hasValue (fldOffset=0x0)" P-INDEP
-; V12 tmp5 [V12,T14] ( 2, 8 ) int -> x1 "field V08.value (fldOffset=0x4)" P-INDEP
+;* V11 tmp4 [V11,T17] ( 0, 0 ) ubyte -> zero-ref "field V08.hasValue (fldOffset=0x0)" P-INDEP
+; V12 tmp5 [V12,T13] ( 2, 8 ) int -> x1 "field V08.value (fldOffset=0x4)" P-INDEP
; V13 tmp6 [V13,T00] ( 3, 96 ) ref -> x0 "arr expr"
; V14 tmp7 [V14,T02] ( 3, 48 ) ref -> x0 "argument with side effect"
; V15 tmp8 [V15,T03] ( 3, 48 ) ref -> x0 "argument with side effect"
-; V16 tmp9 [V16,T08] ( 3, 24 ) byref -> x0 "BlockOp address local"
-; V17 cse0 [V17,T04] ( 4, 44 ) long -> x26 "CSE - aggressive"
-; V18 cse1 [V18,T05] ( 5, 26 ) int -> x22 multi-def "CSE - aggressive"
+; V16 tmp9 [V16,T07] ( 3, 24 ) byref -> x0 "BlockOp address local"
+; V17 cse0 [V17,T04] ( 4, 44 ) long -> x27 "CSE - aggressive"
+; V18 cse1 [V18,T08] ( 4, 22 ) int -> x22 "CSE - aggressive"
+; V19 cse2 [V19,T16] ( 2, 5 ) byref -> x21 hoist "CSE - aggressive"
+; V20 cse3 [V20,T15] ( 3, 6 ) int -> x24 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M59545_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x10]
- stp x21, x22, [sp, #0x20]
- stp x23, x24, [sp, #0x30]
- stp x25, x26, [sp, #0x40]
+ 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
mov x20, x0
; gcrRegs +[x20]
@@ -43,7 +46,7 @@ G_M59545_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x21]
mov x19, x2
; byrRegs +[x19]
- ;; size=36 bbWeight=1 PerfScore 7.00
+ ;; size=40 bbWeight=1 PerfScore 8.00
G_M59545_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref, isz
ldr w22, [x20, #0x08]
mov w1, w22
@@ -61,37 +64,36 @@ G_M59545_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=80000
; gcrRegs -[x0 x15]
; byrRegs -[x14]
mov w23, wzr
- ldr w0, [x21, #0x08]
- cmp w0, #0
+ ldr w24, [x21, #0x08]
+ cmp w24, #0
ble G_M59545_IG09
- ;; size=52 bbWeight=1 PerfScore 13.00
-G_M59545_IG03: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref, isz
- add x0, x21, #16
- ; byrRegs +[x0]
- ldr x24, [x0, w23, UXTW #3]
- ; gcrRegs +[x24]
- mov w25, wzr
- ldr w22, [x20, #0x08]
+ add x21, x21, #16
+ ; gcrRegs -[x21]
+ ; byrRegs +[x21]
+ ;; size=56 bbWeight=1 PerfScore 13.50
+G_M59545_IG03: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=280000 {x19 x21}, byref, isz
+ ldr x25, [x21, w23, UXTW #3]
+ ; gcrRegs +[x25]
+ mov w26, wzr
cmp w22, #0
ble G_M59545_IG11
- ;; size=24 bbWeight=4 PerfScore 34.00
-G_M59545_IG04: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=80000 {x19}, byref, isz
- ; byrRegs -[x0]
+ ;; size=16 bbWeight=4 PerfScore 20.00
+G_M59545_IG04: ; bbWeight=16, gcrefRegs=2100000 {x20 x25}, byrefRegs=280000 {x19 x21}, byref, isz
ldr x0, [x19]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
- cmp w25, w1
+ cmp w26, w1
bhs G_M59545_IG13
- ubfiz x26, x25, #3, #32
- add x1, x26, #16
+ ubfiz x27, x26, #3, #32
+ add x1, x27, #16
ldrb w0, [x0, x1]
; gcrRegs -[x0]
cbnz w0, G_M59545_IG06
;; size=32 bbWeight=16 PerfScore 208.00
-G_M59545_IG05: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=80000 {x19}, byref, isz
+G_M59545_IG05: ; bbWeight=8, gcrefRegs=2100000 {x20 x25}, byrefRegs=280000 {x19 x21}, byref, isz
add x0, x20, #16
; byrRegs +[x0]
- ldr x0, [x0, x26]
+ ldr x0, [x0, x27]
; gcrRegs +[x0]
; byrRegs -[x0]
ldr x1, [x0]
@@ -99,7 +101,7 @@ G_M59545_IG05: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
ldr x1, [x1, #0x38]
blr x1
; gcr arg pop 0
- mov x1, x24
+ mov x1, x25
; gcrRegs +[x1]
ldr x2, [x0]
ldr x2, [x2, #0xB8]
@@ -109,26 +111,26 @@ G_M59545_IG05: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
; gcr arg pop 0
cbnz w0, G_M59545_IG08
;; size=48 bbWeight=8 PerfScore 200.00
-G_M59545_IG06: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=80000 {x19}, byref, isz
- add w25, w25, #1
- cmp w22, w25
+G_M59545_IG06: ; bbWeight=16, gcrefRegs=2100000 {x20 x25}, byrefRegs=280000 {x19 x21}, byref, isz
+ add w26, w26, #1
+ cmp w22, w26
bgt G_M59545_IG04
;; size=12 bbWeight=16 PerfScore 32.00
G_M59545_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20-x21 x24]
- ; byrRegs -[x19]
+ ; gcrRegs -[x20 x25]
+ ; byrRegs -[x19 x21]
b G_M59545_IG11
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M59545_IG08: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref, isz
- ; gcrRegs +[x20-x21]
- ; byrRegs +[x19]
+G_M59545_IG08: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=280000 {x19 x21}, byref, isz
+ ; gcrRegs +[x20]
+ ; byrRegs +[x19 x21]
ldr x0, [x19]
; gcrRegs +[x0]
sxtw w1, w23
ldr w2, [x0, #0x08]
- cmp w25, w2
+ cmp w26, w2
bhs G_M59545_IG13
- add x2, x26, #16
+ add x2, x27, #16
add x0, x0, x2
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -136,53 +138,53 @@ G_M59545_IG08: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=80000
strb w2, [x0]
str w1, [x0, #0x04]
add w23, w23, #1
- ldr w0, [x21, #0x08]
- ; byrRegs -[x0]
- cmp w0, w23
+ cmp w24, w23
bgt G_M59545_IG03
- ;; size=56 bbWeight=4 PerfScore 66.00
+ ;; size=52 bbWeight=4 PerfScore 54.00
G_M59545_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20-x21]
- ; byrRegs -[x19]
+ ; gcrRegs -[x20]
+ ; byrRegs -[x0 x19 x21]
mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M59545_IG10: ; bbWeight=0.50, epilog, nogc, extend
- 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
+ ldr x27, [sp, #0x58]
+ ldp x25, x26, [sp, #0x48]
+ ldp x23, x24, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=24 bbWeight=0.50 PerfScore 3.00
+ ;; size=28 bbWeight=0.50 PerfScore 4.00
G_M59545_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M59545_IG12: ; bbWeight=0.50, epilog, nogc, extend
- 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
+ ldr x27, [sp, #0x58]
+ ldp x25, x26, [sp, #0x48]
+ ldp x23, x24, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=24 bbWeight=0.50 PerfScore 3.00
+ ;; size=28 bbWeight=0.50 PerfScore 4.00
G_M59545_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 328, prolog size 36, PerfScore 567.00, instruction count 82, allocated bytes for code 328 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
+; Total bytes of code 332, prolog size 40, PerfScore 544.50, instruction count 83, allocated bytes for code 332 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 3
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 82 (0x00052) Actual length = 328 (0x000148)
+ Function Length : 83 (0x00053) Actual length = 332 (0x00014c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -193,10 +195,13 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+ D2 0B save_reg X#8 Z#11 (0x0B); str x27, [sp, #88]
E6 save_next
E6 save_next
E6 save_next
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
...
+16 (+1.32%) : 4099.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
@@ -11,16 +11,16 @@
; V00 arg0 [V00,T07] ( 22, 23 ) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[System.String]>
; V01 loc0 [V01,T20] ( 7, 3.50) ref -> x20 class-hnd exact single-def <System.String>
; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [fp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 39,149.08) int -> x22
+; V03 loc2 [V03,T00] ( 41,183.08) int -> x22
; V04 loc3 [V04,T23] ( 4, 2 ) int -> x0
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
-; V06 loc5 [V06,T06] ( 9, 25.50) int -> x21
+; V06 loc5 [V06,T06] ( 9, 25.50) int -> x23
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V09 tmp2 [V09,T04] ( 5, 28 ) ref -> x22 class-hnd exact "impAppendStmt" <System.String>
+; V09 tmp2 [V09,T04] ( 5, 28 ) ref -> x21 class-hnd exact "impAppendStmt" <System.String>
; V10 tmp3 [V10,T26] ( 2, 2 ) long -> x1 "Inlining Arg"
; V11 tmp4 [V11,T25] ( 2, 2 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String>
-; V12 tmp5 [V12,T05] ( 5, 28 ) ref -> x23 class-hnd "Inlining Arg" <System.__Canon>
+; V12 tmp5 [V12,T05] ( 5, 28 ) ref -> x22 class-hnd "Inlining Arg" <System.__Canon>
; V13 tmp6 [V13,T15] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
; V14 tmp7 [V14,T17] ( 2, 8 ) byref -> x0 "impAppendStmt"
; V15 tmp8 [V15,T27] ( 3, 1.50) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
@@ -38,12 +38,12 @@
; V27 cse0 [V27,T14] ( 3, 10 ) int -> x0 "CSE - aggressive"
; V28 cse1 [V28,T28] ( 3, 1.50) long -> x24 "CSE - moderate"
; V29 cse2 [V29,T31] ( 2, 1 ) int -> x12 "CSE - moderate"
-; V30 cse3 [V30,T01] ( 3, 48 ) long -> x1 "CSE - aggressive"
+; V30 cse3 [V30,T02] ( 3, 48 ) long -> x1 "CSE - aggressive"
; V31 cse4 [V31,T11] ( 3, 12 ) long -> x1 "CSE - aggressive"
; V32 cse5 [V32,T12] ( 3, 12 ) int -> x0 "CSE - aggressive"
; V33 cse6 [V33,T10] ( 3, 12 ) ref -> x1 "CSE - aggressive"
-; V34 cse7 [V34,T03] ( 15, 30.54) int -> x21 "CSE - aggressive"
-; V35 cse8 [V35,T02] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
+; V34 cse7 [V34,T01] ( 17, 64.54) int -> x21 "CSE - aggressive"
+; V35 cse8 [V35,T03] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
; V36 cse9 [V36,T16] ( 4, 8 ) int -> x24 "CSE - aggressive"
; V37 cse10 [V37,T18] ( 2, 8 ) int -> x3 "CSE - aggressive"
; V38 cse11 [V38,T13] ( 3, 11.88) int -> x0 "CSE - aggressive"
@@ -71,19 +71,19 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=56 bbWeight=1 PerfScore 10.50
G_M28069_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x10]
- cbz w0, G_M28069_IG27
+ cbz w0, G_M28069_IG26
;; size=8 bbWeight=1 PerfScore 4.00
G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w1, #0
- bls G_M28069_IG29
+ bls G_M28069_IG28
ldr x20, [x0, #0x10]
; gcrRegs +[x20]
ldr w21, [x20, #0x08]
cmp w21, #100
- bgt G_M28069_IG27
+ bgt G_M28069_IG26
add w0, w21, #2
; gcrRegs -[x0]
mov w1, #2
@@ -110,105 +110,103 @@ G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
mov x1, sp
;; size=8 bbWeight=0.50 PerfScore 0.50
G_M28069_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w0, #31, G_M28069_IG30
+ tbnz w0, #31, G_M28069_IG29
str x1, [fp, #-0x48] // [V17 tmp10]
str w0, [fp, #-0x40] // [V18 tmp11]
mov w22, wzr
cmp w21, #0
- ble G_M28069_IG15
+ ble G_M28069_IG14
add x23, x20, #12
; byrRegs +[x23]
;; size=28 bbWeight=0.50 PerfScore 2.75
G_M28069_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldrh w0, [x23, w22, UXTW #2]
cmp w0, #39
- bne G_M28069_IG11
+ bne G_M28069_IG10
;; size=12 bbWeight=4 PerfScore 18.00
G_M28069_IG08: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V18 tmp11]
cmp w22, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x0]
ubfiz x1, x22, #1, #32
add x0, x0, x1
+ cmp w22, w21
+ bhs G_M28069_IG28
ldrh w1, [x23, x1]
strh w1, [x0]
add w22, w22, #1
cmp w21, w22
- ble G_M28069_IG09
+ ble G_M28069_IG26
+ cmp w22, w21
+ bhs G_M28069_IG28
ldrh w0, [x23, w22, UXTW #2]
; byrRegs -[x0]
cmp w0, #39
bne G_M28069_IG08
- ;; size=56 bbWeight=16 PerfScore 280.00
-G_M28069_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
- cmp w21, w22
- bgt G_M28069_IG12
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19-x20]
- ; byrRegs -[x23]
- b G_M28069_IG27
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
- ; gcrRegs +[x19-x20]
- ; byrRegs +[x23]
+ ;; size=72 bbWeight=16 PerfScore 328.00
+G_M28069_IG09: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref
+ b G_M28069_IG11
+ ;; size=4 bbWeight=4 PerfScore 4.00
+G_M28069_IG10: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
cmp w0, #121
- beq G_M28069_IG14
+ beq G_M28069_IG13
;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V18 tmp11]
cmp w22, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x0]
ubfiz x1, x22, #1, #32
add x0, x0, x1
+ cmp w22, w21
+ bhs G_M28069_IG28
ldrh w1, [x23, x1]
strh w1, [x0]
add w22, w22, #1
cmp w21, w22
bgt G_M28069_IG07
- ;; size=44 bbWeight=4 PerfScore 52.00
-G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=52 bbWeight=4 PerfScore 58.00
+G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x23]
- b G_M28069_IG15
+ b G_M28069_IG14
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #-0x40] // [V18 tmp11]
cmp w22, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x0]
mov w1, #121
strh w1, [x0, w22, UXTW #2]
;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
sub w0, w21, #1
cmp w0, w22
- ble G_M28069_IG27
+ ble G_M28069_IG26
add w0, w22, #1
cmp w0, w21
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
add x23, x20, #12
; byrRegs +[x23]
add w0, w22, #1
ubfiz x24, x0, #1, #32
ldrh w0, [x23, x24]
cmp w0, #121
- bne G_M28069_IG27
+ bne G_M28069_IG26
add w25, w22, #2
cmp w21, w25
- ble G_M28069_IG16
+ ble G_M28069_IG15
cmp w25, w21
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldrh w0, [x23, w25, UXTW #2]
cmp w0, #121
- beq G_M28069_IG27
+ beq G_M28069_IG26
;; size=80 bbWeight=0.50 PerfScore 9.25
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w0, w22, #3
ldr w1, [fp, #-0x40] // [V18 tmp11]
cmp w0, w1
@@ -222,7 +220,7 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
add w0, w22, #1
ldr w1, [fp, #-0x40] // [V18 tmp11]
cmp w0, w1
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x0]
mov w1, #121
@@ -230,7 +228,7 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
ldr w0, [fp, #-0x40] // [V18 tmp11]
; byrRegs -[x0]
cmp w25, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x0]
strh w1, [x0, w25, UXTW #2]
@@ -238,7 +236,7 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
; byrRegs -[x0]
ldr w1, [fp, #-0x40] // [V18 tmp11]
cmp w0, w1
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x0]
add w1, w22, #3
@@ -246,15 +244,15 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
strh w2, [x0, w1, UXTW #2]
sxtw w22, w25
cmp w21, w22
- ble G_M28069_IG20
- tbnz w22, #31, G_M28069_IG19
+ ble G_M28069_IG19
+ tbnz w22, #31, G_M28069_IG18
;; size=132 bbWeight=0.50 PerfScore 17.00
-G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG16: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0]
add w0, w22, #2
ldr w1, [fp, #-0x40] // [V18 tmp11]
cmp w0, w1
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x1, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x1]
ubfiz x0, x0, #1, #32
@@ -265,32 +263,32 @@ G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800
strh w1, [x0]
add w22, w22, #1
cmp w21, w22
- bgt G_M28069_IG17
...
benchmarks.run_pgo.windows.arm64.checked.mch
-32 (-20.51%) : 84780.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (Tier1)
@@ -5,19 +5,21 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 7733
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 7733
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T02] ( 7, 6.95) int -> x4
+; V02 loc0 [V02,T00] ( 7, 6.95) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 6, 11.74) int -> x5 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 2.97) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T03] ( 5, 4.00) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 2.97) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T01] ( 6, 4.97) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T04] ( 6, 5.90) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T05] ( 2, 3.99) int -> x4 "dup spill"
+; V05 tmp2 [V05,T03] ( 2, 2.00) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T02] ( 4, 3.03) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T04] ( 2, 2.00) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T01] ( 5, 4.00) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T07] ( 3, 2.96) int -> x6 "CSE - aggressive"
+; V10 cse1 [V10,T08] ( 3, 2.96) int -> x5 "CSE - aggressive"
+; V11 cse2 [V11,T06] ( 3, 2.99) long -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -28,70 +30,61 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
; byrRegs +[x0 x2]
cmp w1, w3
- bne G_M264_IG08
+ bne G_M264_IG10
;; size=8 bbWeight=1 PerfScore 1.50
G_M264_IG03: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
sxtw w4, w3
;; size=4 bbWeight=0.97 PerfScore 0.48
G_M264_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1
- sxtw w4, w5
- tbnz w4, #31, G_M264_IG05
+ sub w4, w4, #1
+ tbnz w4, #31, G_M264_IG08
cmp w4, w1
- bhs G_M264_IG11
- ubfiz x6, x4, #2, #32
- ldr w7, [x0, x6]
+ bhs G_M264_IG13
+ ubfiz x5, x4, #2, #32
+ ldr w6, [x0, x5]
cmp w4, w3
- bhs G_M264_IG11
- ldr w6, [x2, x6]
- cmp w7, w6
+ bhs G_M264_IG13
+ ldr w5, [x2, x5]
+ cmp w6, w5
beq G_M264_IG04
- ;; size=48 bbWeight=1.00 PerfScore 13.47
-G_M264_IG05: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- tbnz w5, #31, G_M264_IG12
- cmp w5, w1
- bhs G_M264_IG11
- ubfiz x6, x5, #2, #32
- ldr w0, [x0, x6]
- ; byrRegs -[x0]
- cmp w5, w3
- bhs G_M264_IG11
- ldr w1, [x2, x6]
- cmp w0, w1
- blo G_M264_IG09
- ;; size=40 bbWeight=0.97 PerfScore 12.11
+ ;; size=44 bbWeight=1.00 PerfScore 12.97
+G_M264_IG05: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0 x2]
+ cmp w5, w6
+ bhi G_M264_IG11
+ ;; size=8 bbWeight=0.97 PerfScore 1.45
G_M264_IG06: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
mov w0, #1
;; size=4 bbWeight=0.74 PerfScore 0.37
G_M264_IG07: ; bbWeight=0.74, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.74 PerfScore 1.47
-G_M264_IG08: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M264_IG08: ; bbWeight=0.97, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.97 PerfScore 0.48
+G_M264_IG09: ; bbWeight=0.97, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.97 PerfScore 1.94
+G_M264_IG10: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp w1, w3
bge G_M264_IG06
;; size=8 bbWeight=0.03 PerfScore 0.05
-G_M264_IG09: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M264_IG11: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movn w0, #0
;; size=4 bbWeight=0.26 PerfScore 0.13
-G_M264_IG10: ; bbWeight=0.26, epilog, nogc, extend
+G_M264_IG12: ; bbWeight=0.26, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.26 PerfScore 0.53
-G_M264_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG13: ; 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_M264_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov w0, wzr
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M264_IG13: ; bbWeight=0, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
+ brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 156, prolog size 8, PerfScore 31.60, instruction count 39, allocated bytes for code 156 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 124, prolog size 8, PerfScore 22.87, instruction count 31, allocated bytes for code 124 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================
Unwind Info:
@@ -102,7 +95,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-6.94%) : 35941.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
@@ -9,18 +9,19 @@
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 299.05
; Final local variable assignments
;
-; V00 arg0 [V00,T09] ( 6, 24.22) ref -> x20 class-hnd single-def <int[]>
-; V01 arg1 [V01,T10] ( 3, 12.11) int -> x1 single-def
-; V02 arg2 [V02,T07] ( 6, 72.09) int -> x19 single-def
-; V03 loc0 [V03,T00] ( 14,724.35) int -> x21
-; V04 loc1 [V04,T01] ( 10,701.89) int -> x2
-; V05 loc2 [V05,T04] ( 3,213.62) int -> x0
-; V06 loc3 [V06,T08] ( 4, 63.78) int -> x6
+; V00 arg0 [V00,T10] ( 6, 24.22) ref -> x20 class-hnd single-def <int[]>
+; V01 arg1 [V01,T11] ( 3, 12.11) int -> x1 single-def
+; V02 arg2 [V02,T08] ( 6, 72.09) int -> x19 single-def
+; V03 loc0 [V03,T00] ( 13,690.21) int -> x21
+; V04 loc1 [V04,T01] ( 7,619.67) int -> x2
+; V05 loc2 [V05,T05] ( 3,213.62) int -> x0
+; V06 loc3 [V06,T09] ( 4, 63.78) int -> x7
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T05] ( 2, 96.14) int -> x7 "Strict ordering of exceptions for Array store"
-; V09 cse0 [V09,T06] ( 6, 95.67) long -> x5 multi-def "CSE - aggressive"
-; V10 cse1 [V10,T03] ( 7,270.54) int -> x3 hoist "CSE - aggressive"
-; V11 cse2 [V11,T02] ( 10,326.47) byref -> x4 hoist "CSE - aggressive"
+; V08 tmp1 [V08,T06] ( 2, 96.14) int -> x5 "Strict ordering of exceptions for Array store"
+; V09 cse0 [V09,T04] ( 3,235.56) int -> x5 "CSE - aggressive"
+; V10 cse1 [V10,T07] ( 6, 95.67) long -> x6 multi-def "CSE - aggressive"
+; V11 cse2 [V11,T03] ( 6,246.51) int -> x3 hoist "CSE - aggressive"
+; V12 cse3 [V12,T02] ( 9,302.43) byref -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 8
@@ -50,7 +51,7 @@ G_M63260_IG04: ; bbWeight=104.79, gcrefRegs=100000 {x20}, byrefRegs=0010
;; size=8 bbWeight=104.79 PerfScore 157.18
G_M63260_IG05: ; bbWeight=100, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16
+ bhs G_M63260_IG15
ldr w5, [x4, w21, UXTW #2]
cmp w5, w0
ble G_M63260_IG03
@@ -63,46 +64,39 @@ G_M63260_IG07: ; bbWeight=81.73, gcrefRegs=100000 {x20}, byrefRegs=0010 {
;; size=4 bbWeight=81.73 PerfScore 40.86
G_M63260_IG08: ; bbWeight=115.87, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w2, w21
- ble G_M63260_IG10
+ ble G_M63260_IG11
;; size=8 bbWeight=115.87 PerfScore 173.81
G_M63260_IG09: ; bbWeight=105.76, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w2, w3
- bhs G_M63260_IG16
+ bhs G_M63260_IG15
ldr w5, [x4, w2, UXTW #2]
cmp w5, w0
bge G_M63260_IG07
;; size=20 bbWeight=105.76 PerfScore 634.57
-G_M63260_IG10: ; bbWeight=34.15, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
- cmp w21, w2
- bge G_M63260_IG12
- ;; size=8 bbWeight=34.15 PerfScore 51.22
-G_M63260_IG11: ; bbWeight=24.04, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+G_M63260_IG10: ; bbWeight=24.04, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16
- ubfiz x5, x21, #2, #32
- ldr w6, [x4, x5]
- cmp w2, w3
- bhs G_M63260_IG16
- ldr w7, [x4, w2, UXTW #2]
- str w7, [x4, x5]
- str w6, [x4, w2, UXTW #2]
+ bhs G_M63260_IG15
+ ubfiz x6, x21, #2, #32
+ ldr w7, [x4, x6]
+ str w5, [x4, x6]
+ str w7, [x4, w2, UXTW #2]
b G_M63260_IG04
- ;; size=40 bbWeight=24.04 PerfScore 312.47
-G_M63260_IG12: ; bbWeight=44.26, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+ ;; size=28 bbWeight=24.04 PerfScore 204.31
+G_M63260_IG11: ; bbWeight=44.26, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w19
- beq G_M63260_IG14
+ beq G_M63260_IG13
;; size=8 bbWeight=44.26 PerfScore 66.40
-G_M63260_IG13: ; bbWeight=7.85, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+G_M63260_IG12: ; bbWeight=7.85, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16
- ubfiz x5, x21, #2, #32
- ldr w6, [x4, x5]
- str w0, [x4, x5]
+ bhs G_M63260_IG15
+ ubfiz x6, x21, #2, #32
+ ldr w7, [x4, x6]
+ str w0, [x4, x6]
cmp w19, w3
- bhs G_M63260_IG16
- str w6, [x4, w19, UXTW #2]
+ bhs G_M63260_IG15
+ str w7, [x4, w19, UXTW #2]
;; size=32 bbWeight=7.85 PerfScore 70.69
-G_M63260_IG14: ; bbWeight=10.11, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M63260_IG13: ; bbWeight=10.11, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; byrRegs -[x4]
sub w2, w21, #1
mov x0, x20
@@ -126,20 +120,20 @@ G_M63260_IG14: ; bbWeight=10.11, gcrefRegs=100000 {x20}, byrefRegs=0000 {
; gcrRegs -[x0 x20]
; gcr arg pop 0
;; size=60 bbWeight=10.11 PerfScore 136.51
-G_M63260_IG15: ; bbWeight=10.11, epilog, nogc, extend
+G_M63260_IG14: ; bbWeight=10.11, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
add sp, sp, #64
ret lr
;; size=20 bbWeight=10.11 PerfScore 55.62
-G_M63260_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M63260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 288, prolog size 32, PerfScore 2380.01, instruction count 72, allocated bytes for code 288 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
+; Total bytes of code 268, prolog size 32, PerfScore 2220.63, instruction count 67, allocated bytes for code 268 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -150,7 +144,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 72 (0x00048) Actual length = 288 (0x000120)
+ Function Length : 67 (0x00043) Actual length = 268 (0x00010c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-6.94%) : 35948.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
@@ -9,18 +9,19 @@
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 319877.1
; Final local variable assignments
;
-; V00 arg0 [V00,T09] ( 6, 24.21) ref -> x20 class-hnd single-def <int[]>
-; V01 arg1 [V01,T10] ( 3, 12.10) int -> x1 single-def
-; V02 arg2 [V02,T07] ( 6, 72.13) int -> x19 single-def
-; V03 loc0 [V03,T00] ( 14,725.07) int -> x21
-; V04 loc1 [V04,T01] ( 10,699.04) int -> x2
-; V05 loc2 [V05,T04] ( 3,212.97) int -> x0
-; V06 loc3 [V06,T08] ( 4, 63.74) int -> x6
+; V00 arg0 [V00,T10] ( 6, 24.21) ref -> x20 class-hnd single-def <int[]>
+; V01 arg1 [V01,T11] ( 3, 12.10) int -> x1 single-def
+; V02 arg2 [V02,T08] ( 6, 72.13) int -> x19 single-def
+; V03 loc0 [V03,T00] ( 13,691.01) int -> x21
+; V04 loc1 [V04,T01] ( 7,617.10) int -> x2
+; V05 loc2 [V05,T05] ( 3,212.97) int -> x0
+; V06 loc3 [V06,T09] ( 4, 63.74) int -> x7
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T05] ( 2, 95.76) int -> x7 "Strict ordering of exceptions for Array store"
-; V09 cse0 [V09,T06] ( 6, 95.60) long -> x5 multi-def "CSE - aggressive"
-; V10 cse1 [V10,T03] ( 7,269.78) int -> x3 hoist "CSE - aggressive"
-; V11 cse2 [V11,T02] ( 10,325.59) byref -> x4 hoist "CSE - aggressive"
+; V08 tmp1 [V08,T06] ( 2, 95.76) int -> x5 "Strict ordering of exceptions for Array store"
+; V09 cse0 [V09,T04] ( 3,234.02) int -> x5 "CSE - aggressive"
+; V10 cse1 [V10,T07] ( 6, 95.60) long -> x6 multi-def "CSE - aggressive"
+; V11 cse2 [V11,T03] ( 6,245.84) int -> x3 hoist "CSE - aggressive"
+; V12 cse3 [V12,T02] ( 9,301.65) byref -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 8
@@ -50,7 +51,7 @@ G_M63260_IG04: ; bbWeight=105.23, gcrefRegs=100000 {x20}, byrefRegs=0010
;; size=8 bbWeight=105.23 PerfScore 157.85
G_M63260_IG05: ; bbWeight=100, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16
+ bhs G_M63260_IG15
ldr w5, [x4, w21, UXTW #2]
cmp w5, w0
ble G_M63260_IG03
@@ -63,46 +64,39 @@ G_M63260_IG07: ; bbWeight=81.26, gcrefRegs=100000 {x20}, byrefRegs=0010 {
;; size=4 bbWeight=81.26 PerfScore 40.63
G_M63260_IG08: ; bbWeight=115.32, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w2, w21
- ble G_M63260_IG10
+ ble G_M63260_IG11
;; size=8 bbWeight=115.32 PerfScore 172.98
G_M63260_IG09: ; bbWeight=105.04, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w2, w3
- bhs G_M63260_IG16
+ bhs G_M63260_IG15
ldr w5, [x4, w2, UXTW #2]
cmp w5, w0
bge G_M63260_IG07
;; size=20 bbWeight=105.04 PerfScore 630.25
-G_M63260_IG10: ; bbWeight=34.06, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
- cmp w21, w2
- bge G_M63260_IG12
- ;; size=8 bbWeight=34.06 PerfScore 51.09
-G_M63260_IG11: ; bbWeight=23.94, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+G_M63260_IG10: ; bbWeight=23.94, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16
- ubfiz x5, x21, #2, #32
- ldr w6, [x4, x5]
- cmp w2, w3
- bhs G_M63260_IG16
- ldr w7, [x4, w2, UXTW #2]
- str w7, [x4, x5]
- str w6, [x4, w2, UXTW #2]
+ bhs G_M63260_IG15
+ ubfiz x6, x21, #2, #32
+ ldr w7, [x4, x6]
+ str w5, [x4, x6]
+ str w7, [x4, w2, UXTW #2]
b G_M63260_IG04
- ;; size=40 bbWeight=23.94 PerfScore 311.20
-G_M63260_IG12: ; bbWeight=44.17, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+ ;; size=28 bbWeight=23.94 PerfScore 203.48
+G_M63260_IG11: ; bbWeight=44.17, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w19
- beq G_M63260_IG14
+ beq G_M63260_IG13
;; size=8 bbWeight=44.17 PerfScore 66.25
-G_M63260_IG13: ; bbWeight=7.93, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+G_M63260_IG12: ; bbWeight=7.93, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16
- ubfiz x5, x21, #2, #32
- ldr w6, [x4, x5]
- str w0, [x4, x5]
+ bhs G_M63260_IG15
+ ubfiz x6, x21, #2, #32
+ ldr w7, [x4, x6]
+ str w0, [x4, x6]
cmp w19, w3
- bhs G_M63260_IG16
- str w6, [x4, w19, UXTW #2]
+ bhs G_M63260_IG15
+ str w7, [x4, w19, UXTW #2]
;; size=32 bbWeight=7.93 PerfScore 71.37
-G_M63260_IG14: ; bbWeight=10.10, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M63260_IG13: ; bbWeight=10.10, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; byrRegs -[x4]
sub w2, w21, #1
mov x0, x20
@@ -126,20 +120,20 @@ G_M63260_IG14: ; bbWeight=10.10, gcrefRegs=100000 {x20}, byrefRegs=0000 {
; gcrRegs -[x0 x20]
; gcr arg pop 0
;; size=60 bbWeight=10.10 PerfScore 136.41
-G_M63260_IG15: ; bbWeight=10.10, epilog, nogc, extend
+G_M63260_IG14: ; bbWeight=10.10, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
add sp, sp, #64
ret lr
;; size=20 bbWeight=10.10 PerfScore 55.58
-G_M63260_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M63260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 288, prolog size 32, PerfScore 2374.03, instruction count 72, allocated bytes for code 288 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
+; Total bytes of code 268, prolog size 32, PerfScore 2215.21, instruction count 67, allocated bytes for code 268 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -150,7 +144,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 72 (0x00048) Actual length = 288 (0x000120)
+ Function Length : 67 (0x00043) Actual length = 268 (0x00010c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+6.56%) : 60155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
@@ -9,19 +9,19 @@
; 3 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 9, 5 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V00 this [V00,T00] ( 9, 5 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
;* V01 loc0 [V01,T09] ( 0, 0 ) ubyte -> zero-ref single-def
-; V02 loc1 [V02,T03] ( 5, 5 ) ubyte -> x20
+; V02 loc1 [V02,T06] ( 5, 3 ) ubyte -> x20
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V06 tmp2 [V06,T06] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
-; V07 tmp3 [V07,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V06 tmp2 [V06,T05] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
+; V07 tmp3 [V07,T03] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
; V08 tmp4 [V08,T07] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V09 tmp5 [V09,T00] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V10 tmp6 [V10,T05] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
-; V11 tmp7 [V11,T08] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V12 tmp8 [V12,T01] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V09 tmp5 [V09,T01] ( 5, 5.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V10 tmp6 [V10,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V11 tmp7 [V11,T08] ( 3, 2.50) long -> x2 "fgMakeTemp is creating a new local variable"
+; V12 tmp8 [V12,T02] ( 5, 5.50) ref -> x3 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;
; Lcl frame size = 8
@@ -38,16 +38,16 @@ G_M43843_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
mov w20, wzr
ldr x21, [x19, #0x80]
; gcrRegs +[x21]
- cbz x21, G_M43843_IG14
+ cbz x21, G_M43843_IG12
ldrb w0, [x21, #0x18]
- tbz w0, #1, G_M43843_IG14
+ tbz w0, #1, G_M43843_IG12
;; size=20 bbWeight=1 PerfScore 8.50
G_M43843_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr x1, [x21, #0x08]
; gcrRegs +[x1]
mov x2, x1
; gcrRegs +[x2]
- cbz x2, G_M43843_IG07
+ cbz x2, G_M43843_IG06
;; size=12 bbWeight=1 PerfScore 4.50
G_M43843_IG04: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x21]
@@ -56,7 +56,7 @@ G_M43843_IG04: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=00
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
cmp x0, x3
- beq G_M43843_IG06
+ beq G_M43843_IG13
;; size=24 bbWeight=0.50 PerfScore 3.00
G_M43843_IG05: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
@@ -65,60 +65,54 @@ G_M43843_IG05: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
; gcrRegs -[x1] +[x0]
mov x2, x0
; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M43843_IG06: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldrb w20, [x2, #0x84]
- ;; size=4 bbWeight=1 PerfScore 3.00
-G_M43843_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
- cbnz w20, G_M43843_IG12
+ b G_M43843_IG13
+ ;; size=16 bbWeight=0.25 PerfScore 0.75
+G_M43843_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0 x2]
+ cbnz w20, G_M43843_IG10
ldr x0, [x19, #0x88]
; gcrRegs +[x0]
- cbz x0, G_M43843_IG15
+ cbz x0, G_M43843_IG14
;; size=12 bbWeight=1 PerfScore 5.00
-G_M43843_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M43843_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x0, [x19, #0x88]
; gcrRegs +[x0]
ldr x1, [x0, #0x08]
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M43843_IG12
+ mov x3, x1
+ ; gcrRegs +[x3]
+ cbz x3, G_M43843_IG10
;; size=16 bbWeight=1 PerfScore 7.50
-G_M43843_IG09: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M43843_IG08: ; bbWeight=0.50, gcrefRegs=000A {x1 x3}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x19]
- ldr x0, [x2]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- cmp x0, x3
- beq G_M43843_IG11
+ ldr x0, [x3]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x0, x2
+ beq G_M43843_IG15
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M43843_IG10: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
- mov x0, x3
+G_M43843_IG09: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x3]
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M43843_IG11: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldrb w20, [x2, #0x84]
- ;; size=4 bbWeight=1 PerfScore 3.00
-G_M43843_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
+ mov x3, x0
+ ; gcrRegs +[x3]
+ b G_M43843_IG15
+ ;; size=16 bbWeight=0.25 PerfScore 0.75
+G_M43843_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x3]
mov w0, w20
;; size=4 bbWeight=1 PerfScore 0.50
-G_M43843_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M43843_IG11: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-G_M43843_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M43843_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
mov x0, x19
; gcrRegs +[x0]
@@ -132,8 +126,13 @@ G_M43843_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
; gcrRegs +[x21]
b G_M43843_IG03
;; size=32 bbWeight=0 PerfScore 0.00
-G_M43843_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x21]
+G_M43843_IG13: ; bbWeight=0, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x21] +[x2]
+ ldrb w20, [x2, #0x84]
+ b G_M43843_IG06
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M43843_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x2]
add x1, x19, #136
; byrRegs +[x1]
mov x0, x19
@@ -145,10 +144,15 @@ G_M43843_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x2
; gcrRegs -[x0]
; byrRegs -[x1]
- b G_M43843_IG08
+ b G_M43843_IG07
;; size=32 bbWeight=0 PerfScore 0.00
+G_M43843_IG15: ; bbWeight=0, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19] +[x3]
+ ldrb w20, [x3, #0x84]
+ b G_M43843_IG10
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 16, PerfScore 48.00, instruction count 61, allocated bytes for code 244 (MethodHash=f14d54bc) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
+; Total bytes of code 260, prolog size 16, PerfScore 42.50, instruction count 65, allocated bytes for code 260 (MethodHash=f14d54bc) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -159,7 +163,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
+ Function Length : 65 (0x00041) Actual length = 260 (0x000104)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+36 (+8.11%) : 32416.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
@@ -5,22 +5,22 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 56032
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 56032
; 8 inlinees with PGO data; 19 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) ref -> x20 this class-hnd single-def <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]>
-; V01 arg1 [V01,T03] ( 3, 3 ) byref -> x21 single-def
-; V02 arg2 [V02,T00] ( 5, 4 ) int -> x19 single-def
-; V03 arg3 [V03,T04] ( 3, 3 ) byref -> x22 single-def
+; V00 this [V00,T02] ( 4, 3 ) ref -> x20 this class-hnd single-def <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]>
+; V01 arg1 [V01,T03] ( 4, 3 ) byref -> x21 single-def
+; V02 arg2 [V02,T00] ( 6, 4 ) int -> x19 single-def
+; V03 arg3 [V03,T04] ( 4, 3 ) byref -> x22 single-def
; V04 arg4 [V04,T06] ( 3, 3 ) int -> x4 single-def
; V05 arg5 [V05,T05] ( 3, 3 ) byref -> x23 single-def
-; V06 loc0 [V06,T08] ( 3, 3 ) int -> x24
-; V07 loc1 [V07,T10] ( 2, 2 ) byref -> x22
+; V06 loc0 [V06,T09] ( 4, 3 ) int -> x24
+; V07 loc1 [V07,T10] ( 4, 2 ) byref -> x25
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp2 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 tmp3 [V11,T07] ( 3, 4 ) int -> x25 "Inlining Arg"
+; V11 tmp3 [V11,T07] ( 4, 4 ) int -> x26 "Inlining Arg"
;* V12 tmp4 [V12 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V13 tmp5 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -29,7 +29,7 @@
;* V17 tmp9 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp10 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V19 tmp11 [V19 ] ( 0, 0 ) byref -> zero-ref "Spilling op1 side effects for Unsafe.ByteOffset"
-; V20 tmp12 [V20,T01] ( 8, 5 ) long -> x26 "Inline stloc first use temp"
+; V20 tmp12 [V20,T01] ( 10, 5 ) long -> x28 "Inline stloc first use temp"
;* V21 tmp13 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V22 tmp14 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V23 tmp15 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -61,16 +61,17 @@
;* V49 tmp41 [V49 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
;* V50 tmp42 [V50 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP
;* V51 tmp43 [V51 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
-; V52 cse0 [V52,T09] ( 3, 3 ) long -> x22 "CSE - aggressive"
+; V52 cse0 [V52,T08] ( 5, 3 ) long -> x27 "CSE - aggressive"
;
; Lcl frame size = 0
G_M44984_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
stp x19, x20, [sp, #0x10]
stp x21, x22, [sp, #0x20]
stp x23, x24, [sp, #0x30]
stp x25, x26, [sp, #0x40]
+ stp x27, x28, [sp, #0x50]
mov fp, sp
mov x20, x0
; gcrRegs +[x20]
@@ -81,73 +82,52 @@ G_M44984_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; byrRegs +[x22]
mov x23, x5
; byrRegs +[x23]
- ;; size=44 bbWeight=1 PerfScore 8.00
+ ;; size=48 bbWeight=1 PerfScore 9.00
G_M44984_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=E00000 {x21 x22 x23}, byref, isz
rbit w0, w4
clz w24, w0
tbnz w24, #0, G_M44984_IG08
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M44984_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=E00000 {x21 x22 x23}, byref, isz
sxtw x0, w24
- add x22, x22, x0
+ add x25, x22, x0
+ ; byrRegs +[x25]
ldr x0, [x20, #0x10]
; gcrRegs +[x0]
- ldr w25, [x0, #0x08]
- tbz w19, #31, G_M44984_IG04
- movz x0, #8
- ; gcrRegs -[x0]
- 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
- ; gcrRegs -[x20]
- 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
- ;; size=108 bbWeight=1 PerfScore 25.00
-G_M44984_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=E00000 {x21 x22 x23}, byref, isz
- sub x22, x22, x21
+ ldr w26, [x0, #0x08]
+ tbnz w19, #31, G_M44984_IG09
+ ;; size=32 bbWeight=1 PerfScore 10.50
+G_M44984_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=2A00000 {x21 x23 x25}, byref, isz
+ ; gcrRegs -[x0 x20]
; byrRegs -[x22]
- mov x26, x22
- tbnz x26, #63, G_M44984_IG09
- tbnz w26, #0, G_M44984_IG10
- ;; size=16 bbWeight=1 PerfScore 3.00
+ sub x27, x25, x21
+ mov x28, x27
+ tbnz x28, #63, G_M44984_IG10
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M44984_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
+ ; byrRegs -[x21 x25]
+ tbnz w28, #0, G_M44984_IG11
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M44984_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
- ; byrRegs -[x21]
- add x0, x26, x26, LSR #63
+ add x0, x28, x28, LSR #63
asr x0, x0, #1
sub w0, w19, w0
- cmp w0, w25
- blt G_M44984_IG11
+ cmp w0, w26
+ blt G_M44984_IG12
;; size=20 bbWeight=1 PerfScore 4.00
G_M44984_IG06: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
- lsr x0, x22, #1
+ lsr x0, x27, #1
str w0, [x23]
mov w0, #1
;; size=12 bbWeight=1.00 PerfScore 2.50
G_M44984_IG07: ; bbWeight=1.00, epilog, nogc, extend
+ ldp x27, x28, [sp, #0x50]
ldp x25, x26, [sp, #0x40]
ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=24 bbWeight=1.00 PerfScore 6.00
-G_M44984_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=E00000 {x21 x22 x23}, gcvars, byref
+ ;; size=28 bbWeight=1.00 PerfScore 7.00
+G_M44984_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=E00000 {x21 x22 x23}, gcvars, byref, isz
; gcrRegs +[x20]
; byrRegs +[x21-x22]
movz x0, #8
@@ -161,11 +141,17 @@ G_M44984_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- b G_M44984_IG03
- ;; size=48 bbWeight=0 PerfScore 0.00
-G_M44984_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
- ; gcrRegs -[x20]
- ; byrRegs -[x21-x22]
+ sxtw x0, w24
+ add x25, x22, x0
+ ; byrRegs +[x25]
+ ldr x0, [x20, #0x10]
+ ; gcrRegs +[x0]
+ ldr w26, [x0, #0x08]
+ tbz w19, #31, G_M44984_IG03
+ ;; size=64 bbWeight=0 PerfScore 0.00
+G_M44984_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=2A00000 {x21 x23 x25}, byref, isz
+ ; gcrRegs -[x0 x20]
+ ; byrRegs -[x22]
movz x0, #8
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -177,9 +163,23 @@ G_M44984_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- tbz w26, #0, G_M44984_IG05
- ;; size=48 bbWeight=0 PerfScore 0.00
+ 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
+ sub x27, x25, x21
+ mov x28, x27
+ tbz x28, #63, G_M44984_IG04
+ ;; size=100 bbWeight=0 PerfScore 0.00
G_M44984_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
+ ; byrRegs -[x21 x25]
movz x0, #8
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -191,13 +191,27 @@ G_M44984_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- add x0, x26, x26, LSR #63
+ tbz w28, #0, G_M44984_IG05
+ ;; size=48 bbWeight=0 PerfScore 0.00
+G_M44984_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
+ 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
+ add x0, x28, x28, LSR #63
asr x0, x0, #1
sub w0, w19, w0
- cmp w0, w25
+ cmp w0, w26
bge G_M44984_IG06
;; size=64 bbWeight=0 PerfScore 0.00
-G_M44984_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
+G_M44984_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
movz x0, #8
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -212,18 +226,18 @@ G_M44984_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b
b G_M44984_IG06
;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 444, prolog size 24, PerfScore 51.00, instruction count 111, allocated bytes for code 444 (MethodHash=d0aa5047) for method System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
+; Total bytes of code 480, prolog size 28, PerfScore 36.00, instruction count 120, allocated bytes for code 480 (MethodHash=d0aa5047) for method System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
...
+20 (+8.20%) : 64265.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
@@ -9,18 +9,18 @@
; 3 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 9, 5 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
-; V01 loc0 [V01,T03] ( 5, 5 ) int -> x20
+; V00 this [V00,T00] ( 10, 5 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V01 loc0 [V01,T08] ( 5, 2 ) int -> x20
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V05 tmp2 [V05,T06] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
-; V06 tmp3 [V06,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
-; V07 tmp4 [V07,T07] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V08 tmp5 [V08,T00] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V09 tmp6 [V09,T05] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
-; V10 tmp7 [V10,T08] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V11 tmp8 [V11,T01] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V05 tmp2 [V05,T05] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
+; V06 tmp3 [V06,T03] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V07 tmp4 [V07,T06] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
+; V08 tmp5 [V08,T01] ( 5, 5.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V09 tmp6 [V09,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V10 tmp7 [V10,T07] ( 3, 2.50) long -> x2 "fgMakeTemp is creating a new local variable"
+; V11 tmp8 [V11,T02] ( 5, 5.50) ref -> x3 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;
; Lcl frame size = 8
@@ -37,16 +37,16 @@ G_M4380_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
mov w20, wzr
ldr x21, [x19, #0x80]
; gcrRegs +[x21]
- cbz x21, G_M4380_IG14
+ cbz x21, G_M4380_IG12
ldrb w0, [x21, #0x18]
- tbz w0, #1, G_M4380_IG14
+ tbz w0, #1, G_M4380_IG12
;; size=20 bbWeight=1 PerfScore 8.50
G_M4380_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr x1, [x21, #0x08]
; gcrRegs +[x1]
mov x2, x1
; gcrRegs +[x2]
- cbz x2, G_M4380_IG07
+ cbz x2, G_M4380_IG06
;; size=12 bbWeight=1 PerfScore 4.50
G_M4380_IG04: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x21]
@@ -55,7 +55,7 @@ G_M4380_IG04: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=000
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
cmp x0, x3
- beq G_M4380_IG06
+ beq G_M4380_IG13
;; size=24 bbWeight=0.50 PerfScore 3.00
G_M4380_IG05: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
@@ -64,60 +64,53 @@ G_M4380_IG05: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {
; gcrRegs -[x1] +[x0]
mov x2, x0
; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M4380_IG06: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr w20, [x2, #0x80]
- ;; size=4 bbWeight=1 PerfScore 3.00
-G_M4380_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
+ b G_M4380_IG13
+ ;; size=16 bbWeight=0.25 PerfScore 0.75
+G_M4380_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0 x2]
ldr x0, [x19, #0x88]
; gcrRegs +[x0]
- cbz x0, G_M4380_IG15
+ cbz x0, G_M4380_IG14
;; size=8 bbWeight=1 PerfScore 4.00
-G_M4380_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x0, [x19, #0x88]
; gcrRegs +[x0]
ldr x1, [x0, #0x08]
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M4380_IG12
+ mov x3, x1
+ ; gcrRegs +[x3]
+ cbz x3, G_M4380_IG10
;; size=16 bbWeight=1 PerfScore 7.50
-G_M4380_IG09: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG08: ; bbWeight=0.50, gcrefRegs=000A {x1 x3}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x19]
- ldr x0, [x2]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- cmp x0, x3
- beq G_M4380_IG11
+ ldr x0, [x3]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x0, x2
+ beq G_M4380_IG15
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M4380_IG10: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
- mov x0, x3
+G_M4380_IG09: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x3]
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M4380_IG11: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr w0, [x2, #0x80]
- orr w20, w20, w0
- ;; size=8 bbWeight=1 PerfScore 3.50
-G_M4380_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
+ mov x3, x0
+ ; gcrRegs +[x3]
+ b G_M4380_IG15
+ ;; size=16 bbWeight=0.25 PerfScore 0.75
+G_M4380_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x3]
mov w0, w20
;; size=4 bbWeight=1 PerfScore 0.50
-G_M4380_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M4380_IG11: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-G_M4380_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M4380_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
mov x0, x19
; gcrRegs +[x0]
@@ -131,8 +124,15 @@ G_M4380_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {
; gcrRegs +[x21]
b G_M4380_IG03
;; size=32 bbWeight=0 PerfScore 0.00
-G_M4380_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x21]
+G_M4380_IG13: ; bbWeight=0, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x21] +[x2]
+ ldr w20, [x2, #0x80]
+ ldr x1, [x19, #0x88]
+ ; gcrRegs +[x1]
+ cbnz x1, G_M4380_IG07
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M4380_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1-x2]
add x1, x19, #136
; byrRegs +[x1]
mov x0, x19
@@ -144,10 +144,16 @@ G_M4380_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
blr x2
; gcrRegs -[x0]
; byrRegs -[x1]
- b G_M4380_IG08
+ b G_M4380_IG07
;; size=32 bbWeight=0 PerfScore 0.00
+G_M4380_IG15: ; bbWeight=0, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19] +[x3]
+ ldr w0, [x3, #0x80]
+ orr w20, w20, w0
+ b G_M4380_IG10
+ ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 16, PerfScore 47.50, instruction count 61, allocated bytes for code 244 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
+; Total bytes of code 264, prolog size 16, PerfScore 41.50, instruction count 66, allocated bytes for code 264 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
; ============================================================
Unwind Info:
@@ -158,7 +164,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
+ Function Length : 66 (0x00042) Actual length = 264 (0x000108)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run_tiered.windows.arm64.checked.mch
-36 (-21.95%) : 46977.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (Tier1)
@@ -11,12 +11,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
; V02 loc0 [V02,T00] ( 7, 24.50) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> x5 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x4 "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> x6 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> x5 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -33,51 +35,39 @@ G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x2]
cmp w1, w3
blt G_M264_IG11
- b G_M264_IG09
+ b G_M264_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
; byrRegs +[x0 x2]
sxtw w4, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1
- sxtw w4, w5
- tbnz w4, #31, G_M264_IG06
+ sub w4, w4, #1
+ tbnz w4, #31, G_M264_IG09
cmp w4, w1
bhs G_M264_IG13
- ubfiz x6, x4, #2, #32
- ldr w7, [x0, x6]
+ ubfiz x5, x4, #2, #32
+ ldr w6, [x0, x5]
cmp w4, w3
bhs G_M264_IG13
- ldr w6, [x2, x6]
- cmp w7, w6
+ ldr w5, [x2, x5]
+ cmp w6, w5
beq G_M264_IG05
- ;; size=48 bbWeight=4 PerfScore 54.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- tbz w5, #31, G_M264_IG08
- mov w0, wzr
- ; byrRegs -[x0]
+ ;; size=44 bbWeight=4 PerfScore 52.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0 x2]
+ cmp w5, w6
+ bhi G_M264_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref, isz
- ; byrRegs +[x0]
- cmp w5, w1
- bhs G_M264_IG13
- ubfiz x6, x5, #2, #32
- ldr w0, [x0, x6]
- ; byrRegs -[x0]
- cmp w5, w3
- bhs G_M264_IG13
- ldr w1, [x2, x6]
- cmp w0, w1
- blo G_M264_IG11
- ;; size=36 bbWeight=0.50 PerfScore 5.75
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
- mov w0, #1
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
@@ -96,7 +86,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 8, PerfScore 68.50, instruction count 41, allocated bytes for code 164 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 128, prolog size 8, PerfScore 61.00, instruction count 32, allocated bytes for code 128 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================
Unwind Info:
@@ -107,7 +97,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-6.94%) : 27419.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
@@ -8,18 +8,19 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T08] ( 6, 4.02) ref -> x20 class-hnd single-def <int[]>
-; V01 arg1 [V01,T10] ( 3, 3 ) int -> x1 single-def
-; V02 arg2 [V02,T05] ( 6, 12 ) int -> x19 single-def
-; V03 loc0 [V03,T00] ( 14,227 ) int -> x21
-; V04 loc1 [V04,T01] ( 10,134 ) int -> x2
+; V00 arg0 [V00,T09] ( 6, 4.02) ref -> x20 class-hnd single-def <int[]>
+; V01 arg1 [V01,T11] ( 3, 3 ) int -> x1 single-def
+; V02 arg2 [V02,T06] ( 6, 12 ) int -> x19 single-def
+; V03 loc0 [V03,T00] ( 13,219 ) int -> x21
+; V04 loc1 [V04,T01] ( 7,122 ) int -> x2
; V05 loc2 [V05,T04] ( 3, 80.50) int -> x0
-; V06 loc3 [V06,T09] ( 4, 5 ) int -> x6
+; V06 loc3 [V06,T10] ( 4, 5 ) int -> x7
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T06] ( 2, 8 ) int -> x7 "Strict ordering of exceptions for Array store"
-; V09 cse0 [V09,T07] ( 6, 7.50) long -> x5 multi-def "CSE - aggressive"
-; V10 cse1 [V10,T03] ( 7, 85.01) int -> x3 hoist "CSE - aggressive"
-; V11 cse2 [V11,T02] ( 10, 89.51) byref -> x4 hoist "CSE - aggressive"
+; V08 tmp1 [V08,T07] ( 2, 8 ) int -> x5 "Strict ordering of exceptions for Array store"
+; V09 cse0 [V09,T05] ( 3, 34 ) int -> x5 "CSE - aggressive"
+; V10 cse1 [V10,T08] ( 6, 7.50) long -> x6 multi-def "CSE - aggressive"
+; V11 cse2 [V11,T03] ( 6, 83.01) int -> x3 hoist "CSE - aggressive"
+; V12 cse3 [V12,T02] ( 9, 87.51) byref -> x4 hoist "CSE - aggressive"
;
; Lcl frame size = 8
@@ -49,7 +50,7 @@ G_M63260_IG04: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4},
;; size=8 bbWeight=8 PerfScore 12.00
G_M63260_IG05: ; bbWeight=64, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16
+ bhs G_M63260_IG15
ldr w5, [x4, w21, UXTW #2]
cmp w5, w0
ble G_M63260_IG03
@@ -62,46 +63,39 @@ G_M63260_IG07: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4},
;; size=4 bbWeight=8 PerfScore 4.00
G_M63260_IG08: ; bbWeight=64, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w2, w21
- ble G_M63260_IG10
+ ble G_M63260_IG11
;; size=8 bbWeight=64 PerfScore 96.00
G_M63260_IG09: ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w2, w3
- bhs G_M63260_IG16
+ bhs G_M63260_IG15
ldr w5, [x4, w2, UXTW #2]
cmp w5, w0
bge G_M63260_IG07
;; size=20 bbWeight=16 PerfScore 96.00
-G_M63260_IG10: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
- cmp w21, w2
- bge G_M63260_IG12
- ;; size=8 bbWeight=8 PerfScore 12.00
-G_M63260_IG11: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+G_M63260_IG10: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16
- ubfiz x5, x21, #2, #32
- ldr w6, [x4, x5]
- cmp w2, w3
- bhs G_M63260_IG16
- ldr w7, [x4, w2, UXTW #2]
- str w7, [x4, x5]
- str w6, [x4, w2, UXTW #2]
+ bhs G_M63260_IG15
+ ubfiz x6, x21, #2, #32
+ ldr w7, [x4, x6]
+ str w5, [x4, x6]
+ str w7, [x4, w2, UXTW #2]
b G_M63260_IG04
- ;; size=40 bbWeight=2 PerfScore 26.00
-G_M63260_IG12: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+ ;; size=28 bbWeight=2 PerfScore 17.00
+G_M63260_IG11: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w19
- beq G_M63260_IG14
+ beq G_M63260_IG13
;; size=8 bbWeight=8 PerfScore 12.00
-G_M63260_IG13: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+G_M63260_IG12: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16
- ubfiz x5, x21, #2, #32
- ldr w6, [x4, x5]
- str w0, [x4, x5]
+ bhs G_M63260_IG15
+ ubfiz x6, x21, #2, #32
+ ldr w7, [x4, x6]
+ str w0, [x4, x6]
cmp w19, w3
- bhs G_M63260_IG16
- str w6, [x4, w19, UXTW #2]
+ bhs G_M63260_IG15
+ str w7, [x4, w19, UXTW #2]
;; size=32 bbWeight=0.50 PerfScore 4.50
-G_M63260_IG14: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M63260_IG13: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; byrRegs -[x4]
sub w2, w21, #1
mov x0, x20
@@ -125,20 +119,20 @@ G_M63260_IG14: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcrRegs -[x0 x20]
; gcr arg pop 0
;; size=60 bbWeight=1 PerfScore 13.50
-G_M63260_IG15: ; bbWeight=1, epilog, nogc, extend
+G_M63260_IG14: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
add sp, sp, #64
ret lr
;; size=20 bbWeight=1 PerfScore 5.50
-G_M63260_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M63260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 288, prolog size 32, PerfScore 668.66, instruction count 72, allocated bytes for code 288 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
+; Total bytes of code 268, prolog size 32, PerfScore 647.66, instruction count 67, allocated bytes for code 268 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -149,7 +143,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 72 (0x00048) Actual length = 288 (0x000120)
+ Function Length : 67 (0x00043) Actual length = 268 (0x00010c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-5.83%) : 48999.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
@@ -9,13 +9,13 @@
; 0 inlinees with PGO data; 4 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T09] ( 5, 3.02) struct (16) [fp+0x80] do-not-enreg[SFA] multireg-arg ld-addr-op single-def tier0-frame <System.Span`1[int]>
+; V00 arg0 [V00,T10] ( 5, 3.02) struct (16) [fp+0x80] do-not-enreg[SFA] multireg-arg ld-addr-op single-def tier0-frame <System.Span`1[int]>
;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref
-; V02 loc1 [V02,T05] ( 3, 9 ) int -> x2
-; V03 loc2 [V03,T00] ( 16,229 ) int -> x19
-; V04 loc3 [V04,T01] ( 10,134 ) int -> x0
+; V02 loc1 [V02,T06] ( 3, 9 ) int -> x2
+; V03 loc2 [V03,T00] ( 15,221 ) int -> x19
+; V04 loc3 [V04,T01] ( 7,122 ) int -> x0
; V05 loc4 [V05,T04] ( 3, 80.50) int -> x1
-; V06 loc5 [V06,T10] ( 4, 5 ) int -> x4
+; V06 loc5 [V06,T11] ( 4, 5 ) int -> x5
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
@@ -23,24 +23,25 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V12 tmp5 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp6 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp7 [V14,T06] ( 4, 8 ) int -> x0 "Inlining Arg"
+; V14 tmp7 [V14,T07] ( 4, 8 ) int -> x0 "Inlining Arg"
;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
-; V16 tmp9 [V16,T08] ( 3, 6 ) int -> x20 "Inlining Arg"
-; V17 tmp10 [V17,T11] ( 2, 4 ) byref -> x19 single-def "Inlining Arg"
+; V16 tmp9 [V16,T09] ( 3, 6 ) int -> x20 "Inlining Arg"
+; V17 tmp10 [V17,T12] ( 2, 4 ) byref -> x19 single-def "Inlining Arg"
;* V18 tmp11 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp13 [V20 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
;* V21 tmp14 [V21 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
;* V22 tmp15 [V22 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp16 [V23 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-;* V24 tmp17 [V24,T16] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
-; V25 tmp18 [V25,T14] ( 2, 2 ) int -> x1 single-def "field V10._length (fldOffset=0x8)" P-INDEP
-; V26 tmp19 [V26,T13] ( 2, 2 ) byref -> x0 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T15] ( 2, 2 ) int -> x1 single-def "field V15._length (fldOffset=0x8)" P-INDEP
-; V28 tmp21 [V28,T02] ( 12, 91.51) byref -> x20 single-def "V00.[000..008)"
-; V29 tmp22 [V29,T03] ( 10, 88.01) int -> x21 single-def "V00.[008..012)"
-; V30 cse0 [V30,T07] ( 6, 7.50) long -> x3 multi-def "CSE - aggressive"
-; V31 cse1 [V31,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
+;* V24 tmp17 [V24,T17] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
+; V25 tmp18 [V25,T15] ( 2, 2 ) int -> x1 single-def "field V10._length (fldOffset=0x8)" P-INDEP
+; V26 tmp19 [V26,T14] ( 2, 2 ) byref -> x0 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+; V27 tmp20 [V27,T16] ( 2, 2 ) int -> x1 single-def "field V15._length (fldOffset=0x8)" P-INDEP
+; V28 tmp21 [V28,T02] ( 11, 89.51) byref -> x20 single-def "V00.[000..008)"
+; V29 tmp22 [V29,T03] ( 9, 86.01) int -> x21 single-def "V00.[008..012)"
+; V30 cse0 [V30,T05] ( 3, 34 ) int -> x3 "CSE - aggressive"
+; V31 cse1 [V31,T08] ( 6, 7.50) long -> x4 multi-def "CSE - aggressive"
+; V32 cse2 [V32,T13] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
;
; Lcl frame size = 8
@@ -67,7 +68,7 @@ G_M24415_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, b
;; size=8 bbWeight=8 PerfScore 12.00
G_M24415_IG05: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
cmp w19, w21
- bhs G_M24415_IG20
+ bhs G_M24415_IG19
ldr w3, [x20, w19, UXTW #2]
cmp w3, w1
ble G_M24415_IG03
@@ -80,54 +81,44 @@ G_M24415_IG07: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, b
;; size=4 bbWeight=8 PerfScore 4.00
G_M24415_IG08: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
cmp w0, w19
- ble G_M24415_IG10
+ ble G_M24415_IG11
;; size=8 bbWeight=64 PerfScore 96.00
G_M24415_IG09: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
cmp w0, w21
- bhs G_M24415_IG20
+ bhs G_M24415_IG19
ldr w3, [x20, w0, UXTW #2]
cmp w3, w1
bge G_M24415_IG07
;; size=20 bbWeight=16 PerfScore 96.00
-G_M24415_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
- cmp w19, w0
- bge G_M24415_IG12
- ;; size=8 bbWeight=8 PerfScore 12.00
-G_M24415_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
+G_M24415_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
cmp w19, w21
- bhs G_M24415_IG20
- ubfiz x3, x19, #2, #32
- ldr w4, [x20, x3]
- add x3, x20, x3
- ; byrRegs +[x3]
- cmp w0, w21
- bhs G_M24415_IG20
- ldr w5, [x20, w0, UXTW #2]
- str w5, [x3]
- str w4, [x20, w0, UXTW #2]
+ bhs G_M24415_IG19
+ ubfiz x4, x19, #2, #32
+ ldr w5, [x20, x4]
+ str w3, [x20, x4]
+ str w5, [x20, w0, UXTW #2]
b G_M24415_IG04
- ;; size=44 bbWeight=2 PerfScore 27.00
-G_M24415_IG12: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
- ; byrRegs -[x3]
+ ;; size=28 bbWeight=2 PerfScore 17.00
+G_M24415_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
cmp w19, w2
- beq G_M24415_IG14
+ beq G_M24415_IG13
;; size=8 bbWeight=8 PerfScore 12.00
-G_M24415_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
+G_M24415_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
cmp w19, w21
- bhs G_M24415_IG20
- ubfiz x3, x19, #2, #32
- ldr w4, [x20, x3]
- str w1, [x20, x3]
+ bhs G_M24415_IG19
+ ubfiz x4, x19, #2, #32
+ ldr w5, [x20, x4]
+ str w1, [x20, x4]
cmp w2, w21
- bhs G_M24415_IG20
- str w4, [x20, w2, UXTW #2]
+ bhs G_M24415_IG19
+ str w5, [x20, w2, UXTW #2]
;; size=32 bbWeight=0.50 PerfScore 4.50
-G_M24415_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
+G_M24415_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
cmp w19, w21
- bhi G_M24415_IG21
- tbz w19, #31, G_M24415_IG16
+ bhi G_M24415_IG20
+ tbz w19, #31, G_M24415_IG15
;; size=12 bbWeight=1 PerfScore 2.50
-G_M24415_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
+G_M24415_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -141,7 +132,7 @@ G_M24415_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}
; gcrRegs -[x0]
; gcr arg pop 0
;; size=36 bbWeight=0.50 PerfScore 3.75
-G_M24415_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
+G_M24415_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
sxtw w1, w19
mov x0, x20
; byrRegs +[x0]
@@ -154,15 +145,15 @@ G_M24415_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, b
; gcr arg pop 0
add w0, w19, #1
cmp w0, w21
- bhi G_M24415_IG21
+ bhi G_M24415_IG20
ubfiz x1, x0, #2, #32
add x19, x20, x1
; byrRegs +[x19]
sub w20, w21, w0
; byrRegs -[x20]
- tbz w20, #31, G_M24415_IG18
+ tbz w20, #31, G_M24415_IG17
;; size=56 bbWeight=1 PerfScore 11.50
-G_M24415_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M24415_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -176,7 +167,7 @@ G_M24415_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
; gcrRegs -[x0]
; gcr arg pop 0
;; size=36 bbWeight=0.50 PerfScore 3.75
-G_M24415_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M24415_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
mov x0, x19
; byrRegs +[x0]
sxtw w1, w20
@@ -188,18 +179,18 @@ G_M24415_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
; byrRegs -[x0 x19]
; gcr arg pop 0
;; size=28 bbWeight=1 PerfScore 6.50
-G_M24415_IG19: ; bbWeight=1, epilog, nogc, extend
+G_M24415_IG18: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
add sp, sp, #96
ret lr
;; size=20 bbWeight=1 PerfScore 5.50
-G_M24415_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M24415_IG19: ; 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_M24415_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M24415_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -209,7 +200,7 @@ G_M24415_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 412, prolog size 24, PerfScore 684.12, instruction count 103, allocated bytes for code 412 (MethodHash=e254a0a0) for method Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
+; Total bytes of code 388, prolog size 24, PerfScore 662.12, instruction count 97, allocated bytes for code 388 (MethodHash=e254a0a0) for method Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -220,7 +211,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 103 (0x00067) Actual length = 412 (0x00019c)
+ Function Length : 97 (0x00061) Actual length = 388 (0x000184)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 24288.dasm - System.Formats.Tar.TarHeader:FormatOctal(long,System.Span`1[ubyte]):int (Tier0-FullOpts)
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T06] ( 3, 3 ) long -> x0 single-def
+; V00 arg0 [V00,T05] ( 3, 3 ) long -> x0 single-def
; V01 arg1 [V01,T03] ( 4, 4 ) struct (16) [fp+0x10] do-not-enreg[SA] multireg-arg single-def <System.Span`1[ubyte]>
; V02 loc0 [V02,T00] ( 5, 33 ) long -> x0
;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ubyte]>
@@ -21,7 +21,7 @@
;* V10 tmp4 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V12 tmp6 [V12,T04] ( 3, 6 ) int -> x20 "Inlining Arg"
-; V13 tmp7 [V13,T07] ( 2, 4 ) byref -> x19 single-def "Inlining Arg"
+; V13 tmp7 [V13,T06] ( 2, 4 ) byref -> x19 single-def "Inlining Arg"
;* V14 tmp8 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp9 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V16 tmp10 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
@@ -47,7 +47,7 @@
; V36 tmp30 [V36,T09] ( 2, 2 ) byref -> x0 single-def "field V17._reference (fldOffset=0x0)" P-INDEP
; V37 tmp31 [V37,T10] ( 2, 2 ) int -> x1 "field V17._length (fldOffset=0x8)" P-INDEP
; V38 GsCookie [V38 ] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V39 cse0 [V39,T05] ( 5, 5 ) ref -> x21 "CSE - aggressive"
+; V39 cse0 [V39,T07] ( 5, 2.50) ref -> x21 "CSE - aggressive"
;
; Lcl frame size = 56
@@ -70,7 +70,7 @@ G_M19635_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
G_M19635_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
cmp w2, #32
- bhs G_M19635_IG08
+ bhs G_M19635_IG09
and w3, w0, #7
add w3, w3, #48
strb w3, [x1, w2, UXTW #2]
@@ -83,13 +83,16 @@ G_M19635_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byre
;; size=8 bbWeight=4 PerfScore 6.00
G_M19635_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
cmp w2, #32
- bhi G_M19635_IG09
+ bhi G_M19635_IG10
mov w0, w2
add x19, x1, x0
; byrRegs +[x19]
mov w0, #32
sub w20, w0, w2
- tbz w20, #31, G_M19635_IG06
+ tbz w20, #31, G_M19635_IG07
+ ;; size=28 bbWeight=1 PerfScore 4.50
+G_M19635_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+ ; byrRegs -[x1]
movz x21, #8
movk x21, #0xD1FFAB1E LSL #16
movk x21, #0xD1FFAB1E LSL #32
@@ -97,7 +100,6 @@ G_M19635_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byre
; gcrRegs +[x0]
mov x1, x21
; gcrRegs +[x1]
- ; byrRegs -[x1]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -116,8 +118,8 @@ G_M19635_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byre
blr x2
; gcrRegs -[x0-x1 x21]
; gcr arg pop 0
- ;; size=96 bbWeight=1 PerfScore 19.00
-G_M19635_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ ;; size=68 bbWeight=0.50 PerfScore 7.25
+G_M19635_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
mov x0, x19
; byrRegs +[x0]
sxtw w1, w20
@@ -136,21 +138,21 @@ G_M19635_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
movk xip0, #0xD1FFAB1E LSL #48
ldr xip1, [fp, #0x40] // [V38 GsCookie]
cmp xip0, xip1
- beq G_M19635_IG07
+ beq G_M19635_IG08
bl CORINFO_HELP_FAIL_FAST
; gcr arg pop 0
;; size=64 bbWeight=1 PerfScore 16.00
-G_M19635_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M19635_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x21, [sp, #0x58]
ldp x19, x20, [sp, #0x48]
ldp fp, lr, [sp], #0x60
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-G_M19635_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M19635_IG09: ; 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_M19635_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19635_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -160,7 +162,7 @@ G_M19635_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 288, prolog size 40, PerfScore 98.50, instruction count 72, allocated bytes for code 288 (MethodHash=8d43b34c) for method System.Formats.Tar.TarHeader:FormatOctal(long,System.Span`1[ubyte]):int (Tier0-FullOpts)
+; Total bytes of code 288, prolog size 40, PerfScore 91.25, instruction count 72, allocated bytes for code 288 (MethodHash=8d43b34c) for method System.Formats.Tar.TarHeader:FormatOctal(long,System.Span`1[ubyte]):int (Tier0-FullOpts)
; ============================================================
Unwind Info:
+4 (+0.60%) : 19751.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
@@ -106,11 +106,11 @@ G_M62513_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
ldr w1, [x0, #0x14]
- cbz w1, G_M62513_IG18
+ cbz w1, G_M62513_IG19
ldr w1, [x0, #0x18]
cbnz w1, G_M62513_IG10
str w21, [x0, #0x18]
- b G_M62513_IG18
+ b G_M62513_IG19
;; size=28 bbWeight=0.50 PerfScore 6.00
G_M62513_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
@@ -134,7 +134,7 @@ G_M62513_IG10: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
; gcrRegs +[x0]
sub w1, w21, w1
cmp w1, w23
- ble G_M62513_IG18
+ ble G_M62513_IG19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -236,30 +236,33 @@ G_M62513_IG14: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
; gcrRegs +[x0]
ldr w20, [x0, #0x14]
cmp w20, #0
- ble G_M62513_IG15
+ ble G_M62513_IG16
sub w1, w24, #1
sxtw w22, w1
cmp w24, #0
bgt G_M62513_IG12
;; size=32 bbWeight=4 PerfScore 36.00
-G_M62513_IG15: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M62513_IG15: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs -[x21]
- cmp w20, #0
- bgt G_M62513_IG16
- mov w1, wzr
b G_M62513_IG17
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M62513_IG16: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ cmp w20, #0
+ bgt G_M62513_IG17
+ mov w1, wzr
+ b G_M62513_IG18
;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M62513_IG16: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M62513_IG17: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
asr w1, w23, #31
and w1, w1, #3
add w1, w1, w23
ldr w2, [x0, #0x18]
add w1, w2, w1, ASR #2
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M62513_IG17: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
str w1, [x0, #0x18]
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M62513_IG19: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldrb w1, [fp, #0x20] // [V08 loc3]
cbz w1, G_M62513_IG03
; GC ptr vars -{V00 V01}
@@ -268,7 +271,7 @@ G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
; gcr arg pop 0
b G_M62513_IG03
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M62513_IG19: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M62513_IG20: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01}
stp fp, lr, [sp, #-0x50]!
stp x19, x20, [sp, #0x20]
@@ -277,9 +280,9 @@ G_M62513_IG19: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=000
add x3, fp, #96
str x3, [sp, #0x18]
;; size=24 bbWeight=0 PerfScore 0.00
-G_M62513_IG20: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M62513_IG21: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w0, [fp, #0x20] // [V08 loc3]
- cbz w0, G_M62513_IG21
+ cbz w0, G_M62513_IG22
ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
; GC ptr vars -{V00 V01}
@@ -287,7 +290,7 @@ G_M62513_IG20: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=000
; gcrRegs -[x0]
; gcr arg pop 0
;; size=16 bbWeight=0 PerfScore 0.00
-G_M62513_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M62513_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
@@ -295,7 +298,7 @@ G_M62513_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 668, prolog size 48, PerfScore 215.00, instruction count 167, allocated bytes for code 668 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
+; Total bytes of code 672, prolog size 48, PerfScore 215.50, instruction count 168, allocated bytes for code 672 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
; ============================================================
Unwind Info:
@@ -306,7 +309,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 152 (0x00098) Actual length = 608 (0x000260)
+ Function Length : 153 (0x00099) Actual length = 612 (0x000264)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -343,4 +346,4 @@ Unwind Info:
*************** EH table for System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M62513_IG05..G_M62513_IG18) handled by [G_M62513_IG19..END) (fault)
+EH#0: try [G_M62513_IG05..G_M62513_IG19) handled by [G_M62513_IG20..END) (fault)
+16 (+1.39%) : 6673.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
@@ -11,10 +11,10 @@
; V00 arg0 [V00,T07] ( 22, 23 ) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[System.String]>
; V01 loc0 [V01,T19] ( 7, 3.50) ref -> x20 class-hnd exact single-def <System.String>
; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [fp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 39,149.08) int -> x22
+; V03 loc2 [V03,T00] ( 41,183.08) int -> x22
; V04 loc3 [V04,T22] ( 4, 2 ) int -> x0
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
-; V06 loc5 [V06,T06] ( 9, 25.50) int -> x21
+; V06 loc5 [V06,T06] ( 9, 25.50) int -> x23
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V09 tmp2 [V09,T04] ( 5, 28 ) ref -> x0 class-hnd exact "impAppendStmt" <System.String>
@@ -44,12 +44,12 @@
; V33 cse0 [V33,T14] ( 3, 10 ) int -> x0 "CSE - aggressive"
; V34 cse1 [V34,T28] ( 3, 1.50) long -> x24 "CSE - moderate"
; V35 cse2 [V35,T31] ( 2, 1 ) int -> x12 "CSE - moderate"
-; V36 cse3 [V36,T01] ( 3, 48 ) long -> x1 "CSE - aggressive"
+; V36 cse3 [V36,T02] ( 3, 48 ) long -> x1 "CSE - aggressive"
; V37 cse4 [V37,T11] ( 3, 12 ) long -> x1 "CSE - aggressive"
; V38 cse5 [V38,T12] ( 3, 12 ) int -> x2 "CSE - aggressive"
; V39 cse6 [V39,T10] ( 3, 12 ) ref -> x1 "CSE - aggressive"
-; V40 cse7 [V40,T03] ( 15, 30.54) int -> x21 "CSE - aggressive"
-; V41 cse8 [V41,T02] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
+; V40 cse7 [V40,T01] ( 17, 64.54) int -> x21 "CSE - aggressive"
+; V41 cse8 [V41,T03] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
; V42 cse9 [V42,T27] ( 3, 1.50) ref -> x1 "CSE - aggressive"
; V43 cse10 [V43,T17] ( 2, 8 ) int -> x3 "CSE - aggressive"
; V44 cse11 [V44,T13] ( 3, 11.88) int -> x0 "CSE - aggressive"
@@ -77,19 +77,19 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=56 bbWeight=1 PerfScore 10.50
G_M28069_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x10]
- cbz w0, G_M28069_IG28
+ cbz w0, G_M28069_IG27
;; size=8 bbWeight=1 PerfScore 4.00
G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w1, #0
- bls G_M28069_IG30
+ bls G_M28069_IG29
ldr x20, [x0, #0x10]
; gcrRegs +[x20]
ldr w21, [x20, #0x08]
cmp w21, #100
- bgt G_M28069_IG28
+ bgt G_M28069_IG27
add w0, w21, #2
; gcrRegs -[x0]
mov w1, #2
@@ -116,109 +116,107 @@ G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
mov x1, sp
;; size=8 bbWeight=0.50 PerfScore 0.50
G_M28069_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w0, #31, G_M28069_IG31
+ tbnz w0, #31, G_M28069_IG30
str x1, [fp, #-0x48] // [V23 tmp16]
str w0, [fp, #-0x40] // [V24 tmp17]
mov w22, wzr
cmp w21, #0
- ble G_M28069_IG15
+ ble G_M28069_IG14
add x23, x20, #12
; byrRegs +[x23]
;; size=28 bbWeight=0.50 PerfScore 2.75
G_M28069_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldrh w0, [x23, w22, UXTW #2]
cmp w0, #39
- bne G_M28069_IG11
+ bne G_M28069_IG10
;; size=12 bbWeight=4 PerfScore 18.00
G_M28069_IG08: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V24 tmp17]
cmp w22, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
ubfiz x1, x22, #1, #32
add x0, x0, x1
+ cmp w22, w21
+ bhs G_M28069_IG29
ldrh w1, [x23, x1]
strh w1, [x0]
add w22, w22, #1
cmp w21, w22
- ble G_M28069_IG09
+ ble G_M28069_IG27
+ cmp w22, w21
+ bhs G_M28069_IG29
ldrh w0, [x23, w22, UXTW #2]
; byrRegs -[x0]
cmp w0, #39
bne G_M28069_IG08
- ;; size=56 bbWeight=16 PerfScore 280.00
-G_M28069_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
- cmp w21, w22
- bgt G_M28069_IG12
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19-x20]
- ; byrRegs -[x23]
- b G_M28069_IG28
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
- ; gcrRegs +[x19-x20]
- ; byrRegs +[x23]
+ ;; size=72 bbWeight=16 PerfScore 328.00
+G_M28069_IG09: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref
+ b G_M28069_IG11
+ ;; size=4 bbWeight=4 PerfScore 4.00
+G_M28069_IG10: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
cmp w0, #121
- beq G_M28069_IG14
+ beq G_M28069_IG13
;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V24 tmp17]
cmp w22, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
ubfiz x1, x22, #1, #32
add x0, x0, x1
+ cmp w22, w21
+ bhs G_M28069_IG29
ldrh w1, [x23, x1]
strh w1, [x0]
add w22, w22, #1
cmp w21, w22
bgt G_M28069_IG07
- ;; size=44 bbWeight=4 PerfScore 52.00
-G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=52 bbWeight=4 PerfScore 58.00
+G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x23]
- b G_M28069_IG15
+ b G_M28069_IG14
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #-0x40] // [V24 tmp17]
cmp w22, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
mov w1, #121
strh w1, [x0, w22, UXTW #2]
;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
sub w0, w21, #1
cmp w0, w22
- ble G_M28069_IG28
+ ble G_M28069_IG27
add w0, w22, #1
cmp w0, w21
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
add x23, x20, #12
; byrRegs +[x23]
add w0, w22, #1
ubfiz x24, x0, #1, #32
ldrh w0, [x23, x24]
cmp w0, #121
- bne G_M28069_IG28
+ bne G_M28069_IG27
add w25, w22, #2
cmp w21, w25
- ble G_M28069_IG16
+ ble G_M28069_IG15
cmp w25, w21
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldrh w0, [x23, w25, UXTW #2]
cmp w0, #121
- beq G_M28069_IG28
+ beq G_M28069_IG27
;; size=80 bbWeight=0.50 PerfScore 9.25
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w0, w22, #3
ldr w1, [fp, #-0x40] // [V24 tmp17]
cmp w0, w1
- blt G_M28069_IG17
+ blt G_M28069_IG16
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -232,11 +230,11 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
; gcrRegs -[x0]
; gcr arg pop 0
;; size=52 bbWeight=0.50 PerfScore 5.75
-G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w0, w22, #1
ldr w1, [fp, #-0x40] // [V24 tmp17]
cmp w0, w1
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
mov w1, #121
@@ -244,7 +242,7 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
ldr w0, [fp, #-0x40] // [V24 tmp17]
; byrRegs -[x0]
cmp w25, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
strh w1, [x0, w25, UXTW #2]
@@ -252,7 +250,7 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
; byrRegs -[x0]
ldr w1, [fp, #-0x40] // [V24 tmp17]
cmp w0, w1
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x0]
add w1, w22, #3
@@ -260,15 +258,15 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
strh w2, [x0, w1, UXTW #2]
sxtw w22, w25
cmp w21, w22
- ble G_M28069_IG21
- tbnz w22, #31, G_M28069_IG20
+ ble G_M28069_IG20
+ tbnz w22, #31, G_M28069_IG19
;; size=96 bbWeight=0.50 PerfScore 12.50
-G_M28069_IG18: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0]
add w0, w22, #2
ldr w1, [fp, #-0x40] // [V24 tmp17]
cmp w0, w1
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x1, [fp, #-0x48] // [V23 tmp16]
; byrRegs +[x1]
ubfiz x0, x0, #1, #32
@@ -279,32 +277,32 @@ G_M28069_IG18: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800
strh w1, [x0]
add w22, w22, #1
...
coreclr_tests.run.windows.arm64.checked.mch
-36 (-21.95%) : 205411.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -11,12 +11,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
; V02 loc0 [V02,T00] ( 7, 24.50) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> x5 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x4 "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> x6 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> x5 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -33,51 +35,39 @@ G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x2]
cmp w1, w3
blt G_M264_IG11
- b G_M264_IG09
+ b G_M264_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
; byrRegs +[x0 x2]
sxtw w4, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1
- sxtw w4, w5
- tbnz w4, #31, G_M264_IG06
+ sub w4, w4, #1
+ tbnz w4, #31, G_M264_IG09
cmp w4, w1
bhs G_M264_IG13
- ubfiz x6, x4, #2, #32
- ldr w7, [x0, x6]
+ ubfiz x5, x4, #2, #32
+ ldr w6, [x0, x5]
cmp w4, w3
bhs G_M264_IG13
- ldr w6, [x2, x6]
- cmp w7, w6
+ ldr w5, [x2, x5]
+ cmp w6, w5
beq G_M264_IG05
- ;; size=48 bbWeight=4 PerfScore 54.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- tbz w5, #31, G_M264_IG08
- mov w0, wzr
- ; byrRegs -[x0]
+ ;; size=44 bbWeight=4 PerfScore 52.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0 x2]
+ cmp w5, w6
+ bhi G_M264_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref, isz
- ; byrRegs +[x0]
- cmp w5, w1
- bhs G_M264_IG13
- ubfiz x6, x5, #2, #32
- ldr w0, [x0, x6]
- ; byrRegs -[x0]
- cmp w5, w3
- bhs G_M264_IG13
- ldr w1, [x2, x6]
- cmp w0, w1
- blo G_M264_IG11
- ;; size=36 bbWeight=0.50 PerfScore 5.75
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
- mov w0, #1
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
@@ -96,7 +86,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 8, PerfScore 68.50, instruction count 41, allocated bytes for code 164 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 128, prolog size 8, PerfScore 61.00, instruction count 32, allocated bytes for code 128 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -107,7 +97,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-7.04%) : 205429.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
@@ -7,20 +7,21 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T05] ( 6, 22 ) int -> x0
-; V01 arg1 [V01,T06] ( 6, 19 ) int -> x19 single-def
-; V02 arg2 [V02,T08] ( 5, 11 ) ref -> x20 class-hnd single-def <int[]>
-; V03 loc0 [V03,T00] ( 17,112 ) int -> x23
-; V04 loc1 [V04,T01] ( 13,100 ) int -> x1
+; V00 arg0 [V00,T06] ( 6, 22 ) int -> x0
+; V01 arg1 [V01,T07] ( 6, 19 ) int -> x19 single-def
+; V02 arg2 [V02,T09] ( 5, 11 ) ref -> x20 class-hnd single-def <int[]>
+; V03 loc0 [V03,T00] ( 16,110 ) int -> x23
+; V04 loc1 [V04,T01] ( 10, 94 ) int -> x1
; V05 loc2 [V05,T04] ( 4, 38 ) int -> x3
-; V06 loc3 [V06,T09] ( 4, 8 ) int -> x4
+; V06 loc3 [V06,T10] ( 4, 8 ) int -> x5
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T10] ( 2, 8 ) int -> x5 "Strict ordering of exceptions for Array store"
-; V09 tmp2 [V09,T07] ( 2, 16 ) int -> x0 "arg temp"
-; V10 cse0 [V10,T11] ( 3, 7 ) long -> x22 hoist "CSE - aggressive"
-; V11 cse1 [V11,T12] ( 3, 6 ) long -> x1 "CSE - aggressive"
-; V12 cse2 [V12,T02] ( 11, 51 ) byref -> x21 hoist "CSE - aggressive"
-; V13 cse3 [V13,T03] ( 7, 46 ) int -> x2 "CSE - aggressive"
+; V08 tmp1 [V08,T11] ( 2, 8 ) int -> x4 "Strict ordering of exceptions for Array store"
+; V09 tmp2 [V09,T08] ( 2, 16 ) int -> x0 "arg temp"
+; V10 cse0 [V10,T05] ( 3, 34 ) int -> x4 "CSE - aggressive"
+; V11 cse1 [V11,T12] ( 3, 7 ) long -> x22 hoist "CSE - aggressive"
+; V12 cse2 [V12,T13] ( 3, 6 ) long -> x1 "CSE - aggressive"
+; V13 cse3 [V13,T02] ( 10, 49 ) byref -> x21 hoist "CSE - aggressive"
+; V14 cse4 [V14,T03] ( 6, 44 ) int -> x2 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -72,7 +73,7 @@ G_M36260_IG08: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=200000 {x2
;; size=4 bbWeight=8 PerfScore 4.00
G_M36260_IG09: ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
cmp w1, w23
- ble G_M36260_IG10
+ ble G_M36260_IG11
cmp w1, w2
bhs G_M36260_IG15
ldr w4, [x21, w1, UXTW #2]
@@ -80,17 +81,12 @@ G_M36260_IG09: ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=200000 {x
bge G_M36260_IG08
;; size=28 bbWeight=16 PerfScore 120.00
G_M36260_IG10: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
- cmp w23, w1
- bge G_M36260_IG11
cmp w23, w2
bhs G_M36260_IG15
- ldr w4, [x21, w23, UXTW #2]
- cmp w1, w2
- bhs G_M36260_IG15
- ldr w5, [x21, w1, UXTW #2]
- str w5, [x21, w23, UXTW #2]
- str w4, [x21, w1, UXTW #2]
- ;; size=40 bbWeight=2 PerfScore 25.00
+ ldr w5, [x21, w23, UXTW #2]
+ str w4, [x21, w23, UXTW #2]
+ str w5, [x21, w1, UXTW #2]
+ ;; size=20 bbWeight=2 PerfScore 13.00
G_M36260_IG11: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
cmp w23, w1
blt G_M36260_IG06
@@ -101,9 +97,9 @@ G_M36260_IG12: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=200000 {x2
cmp w23, w2
bhs G_M36260_IG15
ubfiz x1, x23, #2, #32
- ldr w4, [x21, x1]
+ ldr w5, [x21, x1]
str w3, [x21, x1]
- str w4, [x21, x22]
+ str w5, [x21, x22]
;; size=24 bbWeight=2 PerfScore 15.00
G_M36260_IG13: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref
sub w1, w23, #1
@@ -134,7 +130,7 @@ G_M36260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 284, prolog size 28, PerfScore 399.00, instruction count 71, allocated bytes for code 284 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
+; Total bytes of code 264, prolog size 28, PerfScore 387.00, instruction count 66, allocated bytes for code 264 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
; ============================================================
Unwind Info:
@@ -145,7 +141,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
+ Function Length : 66 (0x00042) Actual length = 264 (0x000108)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-6.36%) : 205980.dasm - Span.SpanBench:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
@@ -10,11 +10,11 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[int]>
;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref single-def
-; V02 loc1 [V02,T10] ( 3, 1.50) int -> x0 single-def
-; V03 loc2 [V03,T00] ( 19, 26.50) int -> x21
-; V04 loc3 [V04,T01] ( 13, 23.50) int -> x1
+; V02 loc1 [V02,T11] ( 3, 1.50) int -> x0 single-def
+; V03 loc2 [V03,T00] ( 18, 26 ) int -> x21
+; V04 loc3 [V04,T01] ( 10, 22 ) int -> x1
; V05 loc4 [V05,T04] ( 4, 9 ) int -> x3 single-def
-; V06 loc5 [V06,T08] ( 4, 2 ) int -> x4
+; V06 loc5 [V06,T09] ( 4, 2 ) int -> x5
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
@@ -22,25 +22,26 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V12 tmp5 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp6 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp7 [V14,T05] ( 4, 4 ) int -> x0 "Inlining Arg"
+; V14 tmp7 [V14,T06] ( 4, 4 ) int -> x0 "Inlining Arg"
;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
-; V16 tmp9 [V16,T07] ( 3, 3 ) int -> x20 "Inlining Arg"
-; V17 tmp10 [V17,T09] ( 2, 2 ) byref -> x19 single-def "Inlining Arg"
+; V16 tmp9 [V16,T08] ( 3, 3 ) int -> x20 "Inlining Arg"
+; V17 tmp10 [V17,T10] ( 2, 2 ) byref -> x19 single-def "Inlining Arg"
;* V18 tmp11 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V20 tmp13 [V20,T02] ( 13, 14 ) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V21 tmp14 [V21,T03] ( 11, 13.50) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V20 tmp13 [V20,T02] ( 12, 13.50) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V21 tmp14 [V21,T03] ( 10, 13 ) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V22 tmp15 [V22 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp16 [V23 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
;* V24 tmp17 [V24 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V25 tmp18 [V25 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-;* V26 tmp19 [V26,T16] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T14] ( 2, 1 ) int -> x1 single-def "field V10._length (fldOffset=0x8)" P-INDEP
-; V28 tmp21 [V28,T13] ( 2, 1 ) byref -> x0 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
-; V29 tmp22 [V29,T15] ( 2, 1 ) int -> x1 single-def "field V15._length (fldOffset=0x8)" P-INDEP
-; V30 cse0 [V30,T11] ( 3, 1.50) long -> x0 "CSE - moderate"
-; V31 cse1 [V31,T12] ( 3, 1.50) long -> x2 "CSE - moderate"
-; V32 cse2 [V32,T06] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
+;* V26 tmp19 [V26,T17] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
+; V27 tmp20 [V27,T15] ( 2, 1 ) int -> x1 single-def "field V10._length (fldOffset=0x8)" P-INDEP
+; V28 tmp21 [V28,T14] ( 2, 1 ) byref -> x0 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+; V29 tmp22 [V29,T16] ( 2, 1 ) int -> x1 single-def "field V15._length (fldOffset=0x8)" P-INDEP
+; V30 cse0 [V30,T05] ( 3, 8.50) int -> x4 "CSE - aggressive"
+; V31 cse1 [V31,T12] ( 3, 1.50) long -> x0 "CSE - moderate"
+; V32 cse2 [V32,T13] ( 3, 1.50) long -> x2 "CSE - moderate"
+; V33 cse3 [V33,T07] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
;
; Lcl frame size = 8
@@ -93,7 +94,7 @@ G_M11915_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M11915_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w1, w21
- ble G_M11915_IG10
+ ble G_M11915_IG11
cmp w1, w20
bhs G_M11915_IG16
ldr w4, [x19, w1, UXTW #2]
@@ -101,22 +102,13 @@ G_M11915_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
bge G_M11915_IG08
;; size=28 bbWeight=4 PerfScore 30.00
G_M11915_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- cmp w21, w1
- bge G_M11915_IG11
cmp w21, w20
bhs G_M11915_IG16
- ldr w4, [x19, w21, UXTW #2]
- ubfiz x5, x21, #2, #32
- add x5, x19, x5
- ; byrRegs +[x5]
- cmp w1, w20
- bhs G_M11915_IG16
- ldr w6, [x19, w1, UXTW #2]
- str w6, [x5]
- str w4, [x19, w1, UXTW #2]
- ;; size=48 bbWeight=0.50 PerfScore 7.00
+ ldr w5, [x19, w21, UXTW #2]
+ str w4, [x19, w21, UXTW #2]
+ str w5, [x19, w1, UXTW #2]
+ ;; size=20 bbWeight=0.50 PerfScore 3.25
G_M11915_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- ; byrRegs -[x5]
cmp w21, w1
blt G_M11915_IG06
cmp w21, w0
@@ -124,9 +116,9 @@ G_M11915_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
cmp w21, w20
bhs G_M11915_IG16
ubfiz x0, x21, #2, #32
- ldr w4, [x19, x0]
+ ldr w5, [x19, x0]
str w3, [x19, x0]
- str w4, [x19, x2]
+ str w5, [x19, x2]
;; size=40 bbWeight=0.50 PerfScore 5.25
G_M11915_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w21, w20
@@ -208,7 +200,7 @@ G_M11915_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 440, prolog size 24, PerfScore 107.25, instruction count 110, allocated bytes for code 440 (MethodHash=8081d174) for method Span.SpanBench:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
+; Total bytes of code 412, prolog size 24, PerfScore 103.50, instruction count 103, allocated bytes for code 412 (MethodHash=8081d174) for method Span.SpanBench:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
; ============================================================
Unwind Info:
@@ -219,7 +211,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 110 (0x0006e) Actual length = 440 (0x0001b8)
+ Function Length : 103 (0x00067) Actual length = 412 (0x00019c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+0.89%) : 202907.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+d__118:MoveNext():ubyte:this (FullOpts)
@@ -8,29 +8,30 @@
; 0 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 17, 9.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118>
-; V01 loc0 [V01,T04] ( 4, 2.50) ubyte -> registers
+; V00 this [V00,T00] ( 16, 9 ) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118>
+; V01 loc0 [V01,T04] ( 4, 2.50) ubyte -> x2
; V02 loc1 [V02,T05] ( 3, 2.50) int -> x1 single-def
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
-; V04 loc3 [V04,T08] ( 3, 1.50) ref -> x19 class-hnd exact single-def <Microsoft.CodeAnalysis.SecurityWellKnownAttributeData>
+; V04 loc3 [V04,T08] ( 3, 1.50) ref -> x20 class-hnd exact single-def <Microsoft.CodeAnalysis.SecurityWellKnownAttributeData>
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <Microsoft.Cci.SecurityAttribute>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T06] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V08 tmp2 [V08,T09] ( 3, 1.25) long -> x4 "fgMakeTemp is creating a new local variable"
+; V08 tmp2 [V08,T10] ( 3, 1.25) long -> x4 "fgMakeTemp is creating a new local variable"
; V09 tmp3 [V09,T02] ( 5, 3.75) ref -> x2 class-hnd "spilling QMark2" <<unknown class>>
;* V10 tmp4 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <Microsoft.Cci.SecurityAttribute>
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V13 tmp7 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
; V14 tmp8 [V14,T01] ( 6, 6 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V15 tmp9 [V15,T10] ( 2, 1 ) ref -> x15 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP
-; V16 tmp10 [V16,T12] ( 2, 1 ) short -> x1 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP
-; V17 tmp11 [V17,T11] ( 2, 1 ) ref -> x20 single-def "field V10.array (fldOffset=0x0)" P-INDEP
+; V15 tmp9 [V15,T11] ( 2, 1 ) ref -> x15 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP
+; V16 tmp10 [V16,T13] ( 2, 1 ) short -> x1 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP
+; V17 tmp11 [V17,T12] ( 2, 1 ) ref -> x19 single-def "field V10.array (fldOffset=0x0)" P-INDEP
;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref "field V11.<Attribute>k__BackingField (fldOffset=0x0)" P-DEP
;* V19 tmp13 [V19 ] ( 0, 0 ) short -> zero-ref "field V11.<Action>k__BackingField (fldOffset=0x8)" P-DEP
-; V20 PSPSym [V20,T13] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
-; V21 cse0 [V21,T03] ( 5, 2.50) ref -> x0 multi-def "CSE - aggressive"
-; V22 cse1 [V22,T07] ( 4, 2 ) long -> x19 "CSE - aggressive"
+; V20 PSPSym [V20,T14] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
+; V21 cse0 [V21,T09] ( 3, 1.50) ref -> x19 "CSE - moderate"
+; V22 cse1 [V22,T03] ( 5, 2.50) ref -> x1 multi-def "CSE - aggressive"
+; V23 cse2 [V23,T07] ( 4, 2 ) long -> x19 "CSE - aggressive"
;
; Lcl frame size = 24
@@ -57,14 +58,15 @@ G_M21908_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
G_M21908_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
movn w1, #0
str w1, [x0, #0x20]
- ldr x1, [x0, #0x08]
+ ldr x19, [x0, #0x08]
+ ; gcrRegs +[x19]
+ ldr x1, [x19, #0x08]
; gcrRegs +[x1]
- ldr x1, [x1, #0x08]
mov x2, x1
; gcrRegs +[x2]
cbz x2, G_M21908_IG11
;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x3, [x2]
movz x4, #0xD1FFAB1E
@@ -73,7 +75,7 @@ G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}
cmp x3, x4
beq G_M21908_IG07
;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
mov x0, x4
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
@@ -82,23 +84,17 @@ G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, b
mov x2, x0
; gcrRegs +[x2]
;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x19, [x2, #0x70]
- ; gcrRegs +[x19]
- cbz x19, G_M21908_IG11
- ldr x0, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x0]
- ldr x1, [x0, #0x08]
- ; gcrRegs +[x1]
- ldr x20, [x1, #0x20]
+ ldr x20, [x2, #0x70]
; gcrRegs +[x20]
+ cbz x20, G_M21908_IG11
+ ldr x19, [x19, #0x20]
movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
- ; gcrRegs -[x1-x2] +[x0]
+ ; gcrRegs -[x2] +[x0]
; gcr arg pop 0
mov x21, x0
; gcrRegs +[x21]
@@ -110,18 +106,18 @@ G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b
str w0, [x21, #0x14]
add x14, x21, #8
; byrRegs +[x14]
- mov x15, x19
- ; gcrRegs +[x15]
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x19]
- ; byrRegs -[x14]
- add x14, x21, #56
- ; byrRegs +[x14]
mov x15, x20
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x20]
; byrRegs -[x14]
+ add x14, x21, #56
+ ; byrRegs +[x14]
+ mov x15, x19
+ ; gcrRegs +[x15]
+ bl CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[x15 x19]
+ ; byrRegs -[x14]
mov x0, x21
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -131,20 +127,20 @@ G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b
blr x1
; gcrRegs -[x21]
; gcr arg pop 0
- ldr x19, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x19]
- add x14, x19, #24
+ ldr x1, [fp, #0x18] // [V00 this]
+ ; gcrRegs +[x1]
+ add x14, x1, #24
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- mov x0, x19
+ mov x0, x1
; gcrRegs +[x0]
- ;; size=124 bbWeight=0.50 PerfScore 16.50
+ ;; size=116 bbWeight=0.50 PerfScore 14.00
G_M21908_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19]
+ ; gcrRegs -[x1]
movn w11, #2
str w11, [x0, #0x20]
ldr x0, [x0, #0x18]
@@ -157,50 +153,56 @@ G_M21908_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
; gcrRegs -[x0]
; gcr arg pop 0
cbz w0, G_M21908_IG09
- ldr x20, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x20]
- ldr x0, [x20, #0x18]
+ ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
+ ldr x1, [x0, #0x18]
+ ; gcrRegs +[x1]
+ mov x0, x1
add x11, x19, #8
ldr x1, [x11]
+ ; gcrRegs -[x1]
blr x1
; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
- add x14, x20, #40
+ ldr x0, [fp, #0x18] // [V00 this]
+ add x14, x0, #40
; byrRegs +[x14]
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15]
+ ; gcrRegs -[x15]
; byrRegs -[x14]
- strh w1, [x20, #0x30]
- mov w0, #1
- str w0, [x20, #0x20]
- mov w2, w0
+ strh w1, [x0, #0x30]
+ mov w11, #1
+ str w11, [x0, #0x20]
+ sxtw w2, w11
b G_M21908_IG12
- ;; size=92 bbWeight=0.50 PerfScore 13.50
+ ;; size=100 bbWeight=0.50 PerfScore 14.75
G_M21908_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x20]
- movn w0, #0
- ldr x20, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x20]
- str w0, [x20, #0x20]
- ldr x0, [x20, #0x18]
+ ; gcrRegs -[x0]
+ movn w11, #0
+ ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
- cbz x0, G_M21908_IG10
+ str w11, [x0, #0x20]
+ ldr x1, [x0, #0x18]
+ ; gcrRegs +[x1]
+ cbz x1, G_M21908_IG10
+ mov x0, x1
add x11, x19, #16
ldr x1, [x11]
+ ; gcrRegs -[x1]
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=32 bbWeight=0.50 PerfScore 6.00
-G_M21908_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- str xzr, [x20, #0x18]
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=36 bbWeight=0.50 PerfScore 6.25
+G_M21908_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x0, [fp, #0x18] // [V00 this]
+ ; gcrRegs +[x0]
+ str xzr, [x0, #0x18]
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M21908_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
- mov w1, wzr
- mov w2, w1
- ;; size=8 bbWeight=0.50 PerfScore 0.50
+ ; gcrRegs -[x0]
+ mov w2, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M21908_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V00}
mov w0, w2
@@ -238,7 +240,7 @@ G_M21908_IG16: ; bbWeight=0, funclet epilog, nogc, extend
ret lr
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 448, prolog size 24, PerfScore 59.25, instruction count 112, allocated bytes for code 448 (MethodHash=1a3daa6b) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 452, prolog size 24, PerfScore 59.00, instruction count 113, allocated bytes for code 452 (MethodHash=1a3daa6b) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -249,7 +251,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 98 (0x00062) Actual length = 392 (0x000188)
---- Epilog scopes ----
---- Scope 0
...
+8 (+1.09%) : 461960.dasm - System.Reflection.TypeNameParser:GetType(System.String,ubyte,ubyte,System.Reflection.Assembly):System.Type (Instrumented Tier1)
@@ -18,8 +18,8 @@
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V10 tmp5 [V10,T21] ( 2, 2 ) int -> x5 "Inlining Arg"
-; V11 tmp6 [V11,T19] ( 2, 2 ) byref -> x4 single-def "Inlining Arg"
+; V10 tmp5 [V10,T20] ( 2, 2 ) int -> x5 "Inlining Arg"
+; V11 tmp6 [V11,T18] ( 2, 2 ) byref -> x4 single-def "Inlining Arg"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp9 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -30,7 +30,7 @@
; V19 tmp14 [V19,T28] ( 3, 1 ) ref -> x0 "guarded devirt return temp"
;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.TypeNameParser+NamespaceTypeName>
;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V22 tmp17 [V22,T16] ( 4, 2 ) int -> x21 "Inline stloc first use temp"
+; V22 tmp17 [V22,T21] ( 4, 1.50) int -> x21 "Inline stloc first use temp"
; V23 tmp18 [V23,T15] ( 3, 3 ) int -> x0 "Span.get_Item index"
; V24 tmp19 [V24,T23] ( 3, 1.50) int -> x2
;* V25 tmp20 [V25 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp"
@@ -55,11 +55,11 @@
;* V44 tmp39 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V45 tmp40 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V46 tmp41 [V46 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[System.String]>
-; V47 tmp42 [V47,T20] ( 2, 2 ) ref -> x1 class-hnd exact single-def "impAppendStmt" <System.String>
+; V47 tmp42 [V47,T19] ( 2, 2 ) ref -> x1 class-hnd exact single-def "impAppendStmt" <System.String>
;* V48 tmp43 [V48 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
;* V49 tmp44 [V49 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
-; V50 tmp45 [V50,T17] ( 3, 2 ) byref -> x4 "field V07._reference (fldOffset=0x0)" P-INDEP
-; V51 tmp46 [V51,T18] ( 3, 2 ) int -> x5 "field V07._length (fldOffset=0x8)" P-INDEP
+; V50 tmp45 [V50,T16] ( 3, 2 ) byref -> x4 "field V07._reference (fldOffset=0x0)" P-INDEP
+; V51 tmp46 [V51,T17] ( 3, 2 ) int -> x5 "field V07._length (fldOffset=0x8)" P-INDEP
; V52 tmp47 [V52,T29] ( 2, 1 ) byref -> x4 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
; V53 tmp48 [V53,T31] ( 2, 1 ) int -> x5 "field V08._length (fldOffset=0x8)" P-INDEP
;* V54 tmp49 [V54 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
@@ -154,7 +154,7 @@ G_M33298_IG05: ; bbWeight=1, gcrefRegs=0008 {x3}, byrefRegs=0010 {x4}, by
; gcr arg pop 0
mov x19, x0
; gcrRegs +[x19]
- cbz x19, G_M33298_IG22
+ cbz x19, G_M33298_IG20
;; size=84 bbWeight=1 PerfScore 20.50
G_M33298_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
@@ -169,7 +169,7 @@ G_M33298_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
cmp w0, w1
bge G_M33298_IG10
cmp w0, w1
- bhs G_M33298_IG21
+ bhs G_M33298_IG19
ldr x1, [fp, #0x48] // [V04 loc0+0x30]
; byrRegs +[x1]
ldrh w0, [x1, w0, UXTW #2]
@@ -182,7 +182,7 @@ G_M33298_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbnz w0, G_M33298_IG23
+ cbnz w0, G_M33298_IG21
;; size=64 bbWeight=4 PerfScore 80.00
G_M33298_IG08: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
b G_M33298_IG10
@@ -192,7 +192,7 @@ G_M33298_IG09: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldrb w0, [x1, w0, UXTW #2]
- tbnz w0, #7, G_M33298_IG23
+ tbnz w0, #7, G_M33298_IG21
;; size=20 bbWeight=4 PerfScore 22.00
G_M33298_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #0x38] // [V04 loc0+0x20]
@@ -204,7 +204,7 @@ G_M33298_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
;; size=24 bbWeight=0.50 PerfScore 3.50
G_M33298_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cmp w0, w1
- bhs G_M33298_IG21
+ bhs G_M33298_IG19
ldr x2, [fp, #0x48] // [V04 loc0+0x30]
; byrRegs +[x2]
ldrh w2, [x2, w0, UXTW #2]
@@ -219,9 +219,9 @@ G_M33298_IG12: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
blr x1
; gcr arg pop 0
sxtw w21, w0
- cbz w21, G_M33298_IG19
+ cbz w21, G_M33298_IG17
cmp w21, #7
- beq G_M33298_IG17
+ beq G_M33298_IG23
;; size=40 bbWeight=0.50 PerfScore 4.50
G_M33298_IG13: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20]
@@ -230,7 +230,7 @@ G_M33298_IG13: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
cmp w0, w1
bge G_M33298_IG16
cmp w0, w1
- bhs G_M33298_IG21
+ bhs G_M33298_IG19
ldr x1, [fp, #0x48] // [V04 loc0+0x30]
; byrRegs +[x1]
ldrh w0, [x1, w0, UXTW #2]
@@ -243,7 +243,7 @@ G_M33298_IG13: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbnz w0, G_M33298_IG24
+ cbnz w0, G_M33298_IG22
;; size=64 bbWeight=4 PerfScore 80.00
G_M33298_IG14: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
b G_M33298_IG16
@@ -253,64 +253,25 @@ G_M33298_IG15: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldrb w0, [x1, w0, UXTW #2]
- tbnz w0, #7, G_M33298_IG24
+ tbnz w0, #7, G_M33298_IG22
;; size=20 bbWeight=4 PerfScore 22.00
G_M33298_IG16: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w2, [fp, #0x38] // [V04 loc0+0x20]
ldr w3, [fp, #0x50] // [V04 loc0+0x38]
cmp w2, w3
- bge G_M33298_IG17
+ bge G_M33298_IG23
add w2, w2, #1
str w2, [fp, #0x38] // [V04 loc0+0x20]
- ;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M33298_IG17: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cmp w21, #3
- bne G_M33298_IG25
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M33298_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- add x0, fp, #24 // [V04 loc0]
- movz x1, #0xD1FFAB1E // code for System.Reflection.TypeNameParser:CheckTopLevelAssemblyQualifiedName():ubyte:this
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- ; gcr arg pop 0
- cbz w0, G_M33298_IG22
- add x0, fp, #24 // [V04 loc0]
- movz x1, #0xD1FFAB1E // code for System.Reflection.TypeNameParser:GetNextAssemblyName():System.String:this
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- ; gcrRegs +[x0]
- ; gcr arg pop 0
- mov x20, x0
+ b G_M33298_IG23
+ ;; size=28 bbWeight=0.50 PerfScore 4.00
+G_M33298_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x20]
- cbz x20, G_M33298_IG22
- add x0, fp, #24 // [V04 loc0]
- ; gcrRegs -[x0]
- movz x1, #0xD1FFAB1E // code for System.Reflection.TypeNameParser:get_Peek():int:this
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- ; gcr arg pop 0
- cmp w0, #0
- cset x0, eq
- movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte)
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- ; gcr arg pop 0
- ;; size=112 bbWeight=0 PerfScore 0.00
-G_M33298_IG19: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x2, [x19]
movz x3, #0xD1FFAB1E
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
cmp x2, x3
- bne G_M33298_IG26
+ bne G_M33298_IG25
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
mov x2, xzr
@@ -328,49 +289,89 @@ G_M33298_IG19: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; byrRegs -[x2]
; gcr arg pop 0
;; size=64 bbWeight=0.50 PerfScore 8.25
-G_M33298_IG20: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M33298_IG18: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x21, [sp, #0x68]
ldp x19, x20, [sp, #0x58]
ldp fp, lr, [sp], #0x70
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-G_M33298_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M33298_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M33298_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M33298_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov x0, xzr
; gcrRegs +[x0]
- b G_M33298_IG20
+ b G_M33298_IG18
;; size=8 bbWeight=0 PerfScore 0.00
-G_M33298_IG23: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M33298_IG21: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] +[x19-x20]
ldr w0, [fp, #0x38] // [V04 loc0+0x20]
add w0, w0, #1
str w0, [fp, #0x38] // [V04 loc0+0x20]
b G_M33298_IG07
;; size=16 bbWeight=0 PerfScore 0.00
-G_M33298_IG24: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M33298_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20]
ldr w0, [fp, #0x38] // [V04 loc0+0x20]
add w0, w0, #1
str w0, [fp, #0x38] // [V04 loc0+0x20]
b G_M33298_IG13
;; size=16 bbWeight=0 PerfScore 0.00
-G_M33298_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
+G_M33298_IG23: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ cmp w21, #3
+ beq G_M33298_IG24
add x0, fp, #24 // [V04 loc0]
movz x1, #0xD1FFAB1E // code for System.Reflection.TypeNameParser:ParseError():this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
+ ; gcrRegs -[x19]
; gcr arg pop 0
- b G_M33298_IG22
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M33298_IG26: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x19-x20]
+ b G_M33298_IG20
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M33298_IG24: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x19]
+ add x0, fp, #24 // [V04 loc0]
+ movz x1, #0xD1FFAB1E // code for System.Reflection.TypeNameParser:CheckTopLevelAssemblyQualifiedName():ubyte:this
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
+ blr x1
+ ; gcr arg pop 0
+ cbz w0, G_M33298_IG20
...
+16 (+1.92%) : 562758.dasm - System.Environment:get_CurrentDirectoryCore():System.String (Tier0-FullOpts)
@@ -8,7 +8,7 @@
; 5 inlinees with PGO data; 20 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
-; V00 loc0 [V00 ] ( 23, 41 ) struct (32) [fp-0x30] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder>
+; V00 loc0 [V00 ] ( 23, 41 ) struct (32) [fp-0x38] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder>
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref
;* V02 loc2 [V02 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
; V03 loc3 [V03,T10] ( 2, 1 ) ref -> x19 class-hnd exact single-def <System.String>
@@ -27,7 +27,7 @@
;* V16 tmp12 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V17 tmp13 [V17,T03] ( 6, 8 ) int -> x20 "Inlining Arg"
;* V18 tmp14 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V19 tmp15 [V19,T04] ( 2, 4 ) byref -> x19 single-def "Inlining Arg"
+; V19 tmp15 [V19,T04] ( 2, 4 ) byref -> x21 single-def "Inlining Arg"
;* V20 tmp16 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp17 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp18 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
@@ -44,7 +44,7 @@
;* V33 tmp29 [V33 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
;* V34 tmp30 [V34 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V35 tmp31 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V36 tmp32 [V36,T09] ( 3, 1.50) ref -> x20 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V36 tmp32 [V36,T09] ( 3, 1.50) ref -> x21 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
;* V37 tmp33 [V37 ] ( 0, 0 ) byref -> zero-ref single-def "field V02._reference (fldOffset=0x0)" P-INDEP
;* V38 tmp34 [V38 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
; V39 tmp35 [V39,T06] ( 2, 2 ) byref -> x0 single-def "field V05._reference (fldOffset=0x0)" P-INDEP
@@ -68,44 +68,45 @@
;* V57 tmp53 [V57 ] ( 0, 0 ) byref -> zero-ref "field V35._reference (fldOffset=0x0)" P-INDEP
;* V58 tmp54 [V58 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP
; V59 tmp55 [V59,T07] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V60 GsCookie [V60 ] ( 1, 1 ) long -> [fp-0x38] do-not-enreg[X] addr-exposed "GSSecurityCookie"
+; V60 GsCookie [V60 ] ( 1, 1 ) long -> [fp-0x40] do-not-enreg[X] addr-exposed "GSSecurityCookie"
;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M20617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub sp, sp, #80
- stp x19, x20, [sp, #0x30]
+ stp x19, x20, [sp, #0x28]
+ str x21, [sp, #0x38]
stp fp, lr, [sp, #0x40]
add fp, sp, #64
- str xzr, [fp, #-0x30] // [V00 loc0]
- str xzr, [fp, #-0x20] // [V00 loc0+0x10]
+ str xzr, [fp, #-0x38] // [V00 loc0]
+ str xzr, [fp, #-0x28] // [V00 loc0+0x10]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
movk x0, #0xD1FFAB1E LSL #48
- str x0, [fp, #-0x38] // [V60 GsCookie]
- ;; size=44 bbWeight=1 PerfScore 8.00
+ str x0, [fp, #-0x40] // [V60 GsCookie]
+ ;; size=48 bbWeight=1 PerfScore 9.00
G_M20617_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr wzr, [sp]
sub sp, sp, #0xD1FFAB1E
mov x0, sp
- str xzr, [fp, #-0x30] // [V00 loc0]
- str x0, [fp, #-0x20] // [V00 loc0+0x10]
+ str xzr, [fp, #-0x38] // [V00 loc0]
+ str x0, [fp, #-0x28] // [V00 loc0+0x10]
mov w0, #0xD1FFAB1E
- str w0, [fp, #-0x18] // [V00 loc0+0x18]
- str wzr, [fp, #-0x28] // [V00 loc0+0x08]
+ str w0, [fp, #-0x20] // [V00 loc0+0x18]
+ str wzr, [fp, #-0x30] // [V00 loc0+0x08]
b G_M20617_IG05
;; size=36 bbWeight=1 PerfScore 8.50
G_M20617_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
tbnz w19, #31, G_M20617_IG15
;; size=4 bbWeight=2 PerfScore 2.00
G_M20617_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr w1, [fp, #-0x18] // [V00 loc0+0x18]
+ ldr w1, [fp, #-0x20] // [V00 loc0+0x18]
cmp w19, w1
bls G_M20617_IG05
- ldr w1, [fp, #-0x28] // [V00 loc0+0x08]
+ ldr w1, [fp, #-0x30] // [V00 loc0+0x08]
sub w1, w19, w1
- sub x0, fp, #48 // [V00 loc0]
+ sub x0, fp, #56 // [V00 loc0]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -113,8 +114,8 @@ G_M20617_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blr x2
;; size=44 bbWeight=2 PerfScore 24.00
G_M20617_IG05: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr w0, [fp, #-0x18] // [V00 loc0+0x18]
- ldr x1, [fp, #-0x20] // [V00 loc0+0x10]
+ ldr w0, [fp, #-0x20] // [V00 loc0+0x18]
+ ldr x1, [fp, #-0x28] // [V00 loc0+0x10]
; byrRegs +[x1]
movz x2, #0xD1FFAB1E // code for Interop+Kernel32:GetCurrentDirectory(uint,byref):uint
movk x2, #0xD1FFAB1E LSL #16
@@ -124,54 +125,32 @@ G_M20617_IG05: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; byrRegs -[x1]
sxtw w19, w0
mov w1, w19
- ldrsw x0, [fp, #-0x18] // [V00 loc0+0x18]
+ ldrsw x0, [fp, #-0x20] // [V00 loc0+0x18]
cmp x1, x0
bgt G_M20617_IG03
;; size=48 bbWeight=8 PerfScore 112.00
G_M20617_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cbz w19, G_M20617_IG16
tbnz w19, #31, G_M20617_IG17
- ldr w0, [fp, #-0x18] // [V00 loc0+0x18]
- cmp w19, w0
+ ldr w1, [fp, #-0x20] // [V00 loc0+0x18]
+ cmp w19, w1
bgt G_M20617_IG18
;; size=20 bbWeight=1 PerfScore 5.50
G_M20617_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- str w19, [fp, #-0x28] // [V00 loc0+0x08]
- ldr w20, [fp, #-0x28] // [V00 loc0+0x08]
- ldr w0, [fp, #-0x18] // [V00 loc0+0x18]
- cmp w20, w0
+ str w19, [fp, #-0x30] // [V00 loc0+0x08]
+ ldr w20, [fp, #-0x30] // [V00 loc0+0x08]
+ ldr w1, [fp, #-0x20] // [V00 loc0+0x18]
+ cmp w20, w1
bhi G_M20617_IG19
;; size=20 bbWeight=1 PerfScore 6.50
G_M20617_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x19, [fp, #-0x20] // [V00 loc0+0x10]
- ; byrRegs +[x19]
- tbz w20, #31, G_M20617_IG09
- 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
- 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
- ;; size=96 bbWeight=1 PerfScore 20.00
-G_M20617_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ ldr x21, [fp, #-0x28] // [V00 loc0+0x10]
+ ; byrRegs +[x21]
+ tbnz w20, #31, G_M20617_IG20
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M20617_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
mov w1, #126
- mov x0, x19
+ mov x0, x21
; byrRegs +[x0]
mov w2, w20
movz x3, #0xD1FFAB1E // code for <unknown method>
@@ -179,11 +158,11 @@ G_M20617_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ; byrRegs -[x0 x19]
+ ; byrRegs -[x0 x21]
cbz w0, G_M20617_IG13
;; size=36 bbWeight=1 PerfScore 8.00
G_M20617_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- sub x0, fp, #48 // [V00 loc0]
+ sub x0, fp, #56 // [V00 loc0]
mov x1, xzr
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
@@ -193,11 +172,11 @@ G_M20617_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[x0]
mov x19, x0
; gcrRegs +[x19]
- ldr x20, [fp, #-0x30] // [V00 loc0]
- ; gcrRegs +[x20]
- stp xzr, xzr, [fp, #-0x30]
- stp xzr, xzr, [fp, #-0x20]
- cbz x20, G_M20617_IG11
+ ldr x21, [fp, #-0x38] // [V00 loc0]
+ ; gcrRegs +[x21]
+ stp xzr, xzr, [fp, #-0x38]
+ stp xzr, xzr, [fp, #-0x28]
+ cbz x21, G_M20617_IG11
movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
@@ -209,7 +188,7 @@ G_M20617_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
; gcrRegs +[x0]
- mov x1, x20
+ mov x1, x21
; gcrRegs +[x1]
mov w2, wzr
movz x3, #0xD1FFAB1E // code for <unknown method>
@@ -218,7 +197,7 @@ G_M20617_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr x3, [x3]
ldr wzr, [x0]
blr x3
- ; gcrRegs -[x0-x1 x20]
+ ; gcrRegs -[x0-x1 x21]
;; size=116 bbWeight=0.50 PerfScore 14.50
G_M20617_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x0, x19
@@ -227,7 +206,7 @@ G_M20617_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
movk xip0, #0xD1FFAB1E LSL #16
movk xip0, #0xD1FFAB1E LSL #32
movk xip0, #0xD1FFAB1E LSL #48
- ldr xip1, [fp, #-0x38] // [V60 GsCookie]
+ ldr xip1, [fp, #-0x40] // [V60 GsCookie]
cmp xip0, xip1
beq G_M20617_IG12
bl CORINFO_HELP_FAIL_FAST
@@ -237,13 +216,14 @@ G_M20617_IG12: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
; gcrRegs +[x0]
sub sp, fp, #64
ldp fp, lr, [sp, #0x40]
- ldp x19, x20, [sp, #0x30]
+ ldr x21, [sp, #0x38]
+ ldp x19, x20, [sp, #0x28]
add sp, sp, #80
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 2.00
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
G_M20617_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- sub x0, fp, #48 // [V00 loc0]
+ sub x0, fp, #56 // [V00 loc0]
movz x1, #0xD1FFAB1E // code for System.Text.ValueStringBuilder:ToString():System.String:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -254,7 +234,7 @@ G_M20617_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
movk xip0, #0xD1FFAB1E LSL #16
movk xip0, #0xD1FFAB1E LSL #32
movk xip0, #0xD1FFAB1E LSL #48
- ldr xip1, [fp, #-0x38] // [V60 GsCookie]
+ ldr xip1, [fp, #-0x40] // [V60 GsCookie]
cmp xip0, xip1
beq G_M20617_IG14
...
libraries.crossgen2.windows.arm64.checked.mch
-48 (-26.09%) : 120262.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
@@ -8,15 +8,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 6, 11 ) ref -> x1 class-hnd single-def <System.String>
-; V02 arg2 [V02,T05] ( 4, 6.50) int -> x2 single-def
-; V03 arg3 [V03,T07] ( 5, 4.50) int -> x3 single-def
-; V04 loc0 [V04,T03] ( 6, 13 ) int -> x5
-; V05 loc1 [V05,T00] ( 11, 27.50) int -> x6
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> x1 class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 3, 6 ) int -> x2 single-def
+; V03 arg3 [V03,T08] ( 5, 4.50) int -> x3 single-def
+; V04 loc0 [V04,T01] ( 5, 12 ) int -> x5
+; V05 loc1 [V05,T00] ( 7, 25 ) int -> x6
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> x4 "CSE - aggressive"
-; V08 cse1 [V08,T01] ( 6, 13.50) int -> x8 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> x8 "CSE - aggressive"
+; V08 cse1 [V08,T06] ( 3, 8.50) int -> x7 "CSE - aggressive"
+; V09 cse2 [V09,T09] ( 4, 6.50) int -> x4 "CSE - aggressive"
+; V10 cse3 [V10,T03] ( 3, 12 ) int -> x8 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -38,11 +40,11 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M6389_IG04: ; bbWeight=8, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
cmp w6, w5
- bge G_M6389_IG06
+ bge G_M6389_IG08
;; size=8 bbWeight=8 PerfScore 12.00
G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
cmp w6, w4
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x7, x0, #12
; byrRegs +[x7]
ldrh w7, [x7, w6, UXTW #2]
@@ -50,49 +52,30 @@ G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by
add w8, w2, w6
ldr w9, [x1, #0x08]
cmp w8, w9
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x9, x1, #12
; byrRegs +[x9]
ldrh w8, [x9, w8, UXTW #2]
cmp w7, w8
beq G_M6389_IG03
;; size=48 bbWeight=4 PerfScore 60.00
-G_M6389_IG06: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0-x1]
; byrRegs -[x9]
- cmp w6, w5
- bge G_M6389_IG09
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- cmp w6, w4
- bhs G_M6389_IG11
- add x0, x0, #12
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ldrh w0, [x0, w6, UXTW #2]
- ; byrRegs -[x0]
- add w8, w2, w6
- ldr w3, [x1, #0x08]
- cmp w8, w3
- bhs G_M6389_IG11
- add x4, x1, #12
- ; byrRegs +[x4]
- ldrh w1, [x4, w8, UXTW #2]
- ; gcrRegs -[x1]
- sub w0, w0, w1
- ;; size=44 bbWeight=0.50 PerfScore 7.00
-G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ sub w0, w7, w8
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[x4]
+G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub w0, w4, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
@@ -101,7 +84,7 @@ G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
brk_windows #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 184, prolog size 8, PerfScore 91.25, instruction count 46, allocated bytes for code 184 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 136, prolog size 8, PerfScore 83.00, instruction count 34, allocated bytes for code 136 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -112,7 +95,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
+ Function Length : 34 (0x00022) Actual length = 136 (0x000088)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-36 (-20.45%) : 225638.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -12,12 +12,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
; V02 loc0 [V02,T00] ( 7, 24.50) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> x5 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x4 "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> x6 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> x5 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -34,51 +36,39 @@ G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x2]
cmp w1, w3
blt G_M264_IG11
- b G_M264_IG09
+ b G_M264_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
; byrRegs +[x0 x2]
sxtw w4, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1
- sxtw w4, w5
- tbnz w4, #31, G_M264_IG06
+ sub w4, w4, #1
+ tbnz w4, #31, G_M264_IG09
cmp w4, w1
bhs G_M264_IG13
- ubfiz x6, x4, #2, #32
- ldr w7, [x0, x6]
+ ubfiz x5, x4, #2, #32
+ ldr w6, [x0, x5]
cmp w4, w3
bhs G_M264_IG13
- ldr w6, [x2, x6]
- cmp w7, w6
+ ldr w5, [x2, x5]
+ cmp w6, w5
beq G_M264_IG05
- ;; size=48 bbWeight=4 PerfScore 54.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- tbz w5, #31, G_M264_IG08
- mov w0, wzr
- ; byrRegs -[x0]
+ ;; size=44 bbWeight=4 PerfScore 52.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0 x2]
+ cmp w5, w6
+ bhi G_M264_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref, isz
- ; byrRegs +[x0]
- cmp w5, w1
- bhs G_M264_IG13
- ubfiz x6, x5, #2, #32
- ldr w0, [x0, x6]
- ; byrRegs -[x0]
- cmp w5, w3
- bhs G_M264_IG13
- ldr w1, [x2, x6]
- cmp w0, w1
- blo G_M264_IG11
- ;; size=36 bbWeight=0.50 PerfScore 5.75
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
- mov w0, #1
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
@@ -100,7 +90,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
brk_windows #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 8, PerfScore 68.50, instruction count 44, allocated bytes for code 176 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 140, prolog size 8, PerfScore 61.00, instruction count 35, allocated bytes for code 140 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -111,7 +101,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-9.86%) : 124871.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
@@ -9,14 +9,15 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 11, 21 ) ref -> x0 this class-hnd single-def <System.Data.ExpressionParser>
-; V01 loc0 [V01,T04] ( 6, 14 ) ref -> x3 class-hnd single-def <<unknown class>>
+; V01 loc0 [V01,T04] ( 5, 13 ) ref -> x3 class-hnd single-def <<unknown class>>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 24 ) int -> x1 "index expr"
-; V04 tmp2 [V04,T05] ( 3, 6 ) int -> x1 "index expr"
-; V05 tmp3 [V05,T06] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V06 tmp4 [V06,T07] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V07 cse0 [V07,T00] ( 9, 31 ) int -> x19 "CSE - aggressive"
-; V08 cse1 [V08,T03] ( 5, 22 ) int -> x2 "CSE - aggressive"
+;* V04 tmp2 [V04,T06] ( 0, 0 ) int -> zero-ref "index expr"
+; V05 tmp3 [V05,T07] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V06 tmp4 [V06,T08] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V07 cse0 [V07,T05] ( 3, 9 ) int -> x2 "CSE - aggressive"
+; V08 cse1 [V08,T00] ( 7, 29 ) int -> x19 "CSE - aggressive"
+; V09 cse2 [V09,T03] ( 3, 20 ) int -> x2 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -36,22 +37,9 @@ G_M44374_IG03: ; bbWeight=8, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, b
str w19, [x0, #0x30]
ldr w2, [x3, #0x08]
cmp w2, w19
- ble G_M44374_IG05
+ ble G_M44374_IG08
;; size=24 bbWeight=8 PerfScore 72.00
G_M44374_IG04: ; bbWeight=4, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref, isz
- sxtw w1, w19
- cmp w1, w2
- bhs G_M44374_IG07
- add x11, x3, #16
- ; byrRegs +[x11]
- ldrh w1, [x11, w1, UXTW #2]
- cmp w1, #35
- bne G_M44374_IG03
- ;; size=28 bbWeight=4 PerfScore 28.00
-G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x11]
- cmp w2, w19
- ble G_M44374_IG08
sxtw w1, w19
cmp w1, w2
bhs G_M44374_IG07
@@ -59,13 +47,17 @@ G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, b
; byrRegs +[x2]
ldrh w2, [x2, w1, UXTW #2]
; byrRegs -[x2]
+ cmp w2, #35
+ bne G_M44374_IG03
+ ;; size=28 bbWeight=4 PerfScore 28.00
+G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref, isz
cmp w2, #35
bne G_M44374_IG09
mov w2, #7
str w2, [x0, #0x38]
add w2, w19, #1
str w2, [x0, #0x30]
- ;; size=52 bbWeight=1 PerfScore 11.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M44374_IG06: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
@@ -130,7 +122,7 @@ G_M44374_IG09: ; bbWeight=0, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, b
brk_windows #0
;; size=68 bbWeight=0 PerfScore 0.00
-; Total bytes of code 284, prolog size 12, PerfScore 121.00, instruction count 71, allocated bytes for code 284 (MethodHash=962252a9) for method System.Data.ExpressionParser:ScanDate():this (FullOpts)
+; Total bytes of code 256, prolog size 12, PerfScore 114.00, instruction count 64, allocated bytes for code 256 (MethodHash=962252a9) for method System.Data.ExpressionParser:ScanDate():this (FullOpts)
; ============================================================
Unwind Info:
@@ -141,7 +133,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
+ 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)
+8 (+2.15%) : 29845.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
@@ -8,45 +8,47 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 7, 4.50) ref -> x19 this class-hnd single-def <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 8, 4.38) ref -> x20 class-hnd single-def <System.Object>
+; V00 this [V00,T01] ( 6, 4 ) ref -> x20 this class-hnd single-def <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
+; V01 arg1 [V01,T00] ( 8, 4.38) ref -> x19 class-hnd single-def <System.Object>
; V02 arg2 [V02,T03] ( 3, 2.50) ref -> x21 class-hnd single-def <System.Collections.IComparer>
;* V03 loc0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
-; V04 loc1 [V04,T10] ( 2, 1 ) ref -> x20 class-hnd single-def <System.__Canon>
-; V05 loc2 [V05,T11] ( 2, 1 ) ref -> x22 class-hnd single-def <System.__Canon>
+; V04 loc1 [V04,T11] ( 2, 1 ) ref -> x19 class-hnd single-def <System.__Canon>
+; V05 loc2 [V05,T12] ( 2, 1 ) ref -> x22 class-hnd single-def <System.__Canon>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T07] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
+; V07 tmp1 [V07,T08] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
; V08 tmp2 [V08,T02] ( 5, 5.75) ref -> x22 class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
-; V09 tmp3 [V09,T08] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
+; V09 tmp3 [V09,T09] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
; V10 tmp4 [V10,T04] ( 3, 2.50) ref -> x0 class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
-; V11 tmp5 [V11,T09] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
+; V11 tmp5 [V11,T10] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
; V12 tmp6 [V12,T05] ( 3, 2.50) ref -> x0 class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
; V13 tmp7 [V13,T06] ( 2, 2 ) long -> x0 "argument with side effect"
+; V14 cse0 [V14,T07] ( 5, 1.50) long -> x24 multi-def "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M49351_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x50]!
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
+ stp x23, x24, [sp, #0x40]
mov fp, sp
- str x0, [fp, #0x10]
- mov x19, x0
- ; gcrRegs +[x19]
- mov x20, x1
+ str x0, [fp, #0x18]
+ mov x20, x0
; gcrRegs +[x20]
+ mov x19, x1
+ ; gcrRegs +[x19]
mov x21, x2
; gcrRegs +[x21]
;; size=36 bbWeight=1 PerfScore 7.00
G_M49351_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- mov x22, x20
+ mov x22, x19
; gcrRegs +[x22]
cbz x22, G_M49351_IG05
;; size=8 bbWeight=1 PerfScore 1.50
G_M49351_IG03: ; bbWeight=0.25, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr x23, [x22]
- ldr x0, [x19]
+ ldr x24, [x20]
+ mov x0, x24
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
@@ -54,10 +56,10 @@ G_M49351_IG03: ; bbWeight=0.25, gcrefRegs=780000 {x19 x20 x21 x22}, byref
; gcr arg pop 0
cmp x23, x0
beq G_M49351_IG05
- ;; size=32 bbWeight=0.25 PerfScore 3.12
+ ;; size=36 bbWeight=0.25 PerfScore 3.25
G_M49351_IG04: ; bbWeight=0.12, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
- mov x1, x20
+ mov x1, x19
; gcrRegs +[x1]
adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address
add x2, x2, [LOW RELOC #0xD1FFAB1E]
@@ -70,16 +72,17 @@ G_M49351_IG04: ; bbWeight=0.12, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
;; size=24 bbWeight=0.12 PerfScore 0.75
G_M49351_IG05: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz x19, G_M49351_IG13
+ cbz x20, G_M49351_IG13
;; size=4 bbWeight=1 PerfScore 1.00
G_M49351_IG06: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
cbz x0, G_M49351_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M49351_IG07: ; bbWeight=0.25, gcrefRegs=780001 {x0 x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr x23, [x0]
- ldr x0, [x19]
+ ldr x24, [x20]
+ mov x0, x24
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -88,23 +91,23 @@ G_M49351_IG07: ; bbWeight=0.25, gcrefRegs=780001 {x0 x19 x20 x21 x22}, by
; gcr arg pop 0
cmp x23, x0
beq G_M49351_IG09
- ;; size=32 bbWeight=0.25 PerfScore 3.12
+ ;; size=36 bbWeight=0.25 PerfScore 3.25
G_M49351_IG08: ; bbWeight=0.12, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- mov x1, x20
+ mov x1, x19
; gcrRegs +[x1]
adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address
add x2, x2, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x2]
blr x2
- ; gcrRegs -[x1 x20] +[x0]
+ ; gcrRegs -[x1 x19] +[x0]
; gcr arg pop 0
;; size=20 bbWeight=0.12 PerfScore 0.69
-G_M49351_IG09: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref
+G_M49351_IG09: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- ldr x20, [x19, #0x08]
- ; gcrRegs +[x20]
+ ldr x19, [x20, #0x08]
+ ; gcrRegs +[x19]
ldr x22, [x22, #0x08]
- ldr x0, [x19]
+ mov x0, x24
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
@@ -114,34 +117,34 @@ G_M49351_IG09: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs
; gcrRegs +[x3]
mov x1, x21
; gcrRegs +[x1]
- mov x2, x20
+ mov x2, x19
; gcrRegs +[x2]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x4, [x11]
- ;; size=52 bbWeight=0.50 PerfScore 9.75
+ ;; size=52 bbWeight=0.50 PerfScore 8.50
G_M49351_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x40
+ ldp x23, x24, [sp, #0x40]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x50
br x4
; gcr arg pop 0
- ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M49351_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x1-x3 x20-x22]
+ ;; size=20 bbWeight=0.50 PerfScore 2.50
+G_M49351_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x1-x3 x19 x21-x22]
mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M49351_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x40
+ ldp x23, x24, [sp, #0x40]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x50
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=20 bbWeight=0.50 PerfScore 2.50
G_M49351_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x20]
- mov x0, x20
+ ; gcrRegs +[x19]
+ mov x0, x19
; gcrRegs +[x0]
cbz x0, G_M49351_IG18
;; size=8 bbWeight=0.50 PerfScore 0.75
@@ -159,38 +162,38 @@ G_M49351_IG14: ; bbWeight=0.25, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=
beq G_M49351_IG16
;; size=36 bbWeight=0.25 PerfScore 3.25
G_M49351_IG15: ; bbWeight=0.12, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x1, x20
+ mov x1, x19
; gcrRegs +[x1]
adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address
add x2, x2, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x2]
blr x2
- ; gcrRegs -[x1 x20] +[x0]
+ ; gcrRegs -[x1 x19] +[x0]
; gcr arg pop 0
;; size=20 bbWeight=0.12 PerfScore 0.69
-G_M49351_IG16: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M49351_IG16: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movn w0, #0
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M49351_IG17: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x40
+ ldp x23, x24, [sp, #0x40]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x50
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M49351_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=0.50 PerfScore 2.50
+G_M49351_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M49351_IG19: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x40
+ ldp x23, x24, [sp, #0x40]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x50
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=20 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 372, prolog size 36, PerfScore 45.12, instruction count 93, allocated bytes for code 372 (MethodHash=56213f38) for method Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
+; Total bytes of code 380, prolog size 36, PerfScore 42.12, instruction count 95, allocated bytes for code 380 (MethodHash=56213f38) for method Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -201,7 +204,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 93 (0x0005d) Actual length = 372 (0x000174)
+ Function Length : 95 (0x0005f) Actual length = 380 (0x00017c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -218,9 +221,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
...
+8 (+4.35%) : 25872.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
@@ -11,8 +11,8 @@
;
; V00 this [V00,T03] ( 4, 3.50) ref -> x0 this class-hnd single-def <System.Threading.PortableThreadPool>
; V01 arg1 [V01,T01] ( 4, 7 ) ref -> x1 class-hnd single-def <System.Threading.PortableThreadPool+WaitThread>
-; V02 loc0 [V02,T00] ( 9, 19.50) ref -> registers class-hnd <System.Threading.PortableThreadPool+WaitThreadNode>
-; V03 loc1 [V03,T02] ( 3, 8.50) ref -> x19 class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
+; V02 loc0 [V02,T00] ( 8, 19 ) ref -> registers class-hnd <System.Threading.PortableThreadPool+WaitThreadNode>
+; V03 loc1 [V03,T02] ( 3, 8.50) ref -> registers class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V06 tmp2 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -56,22 +56,33 @@ G_M1296_IG05: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=80002 {
; gcrRegs +[x1 x19]
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
- cbz x0, G_M1296_IG06
+ cbz x0, G_M1296_IG08
ldr x11, [x0, #0x08]
; gcrRegs +[x11]
cmp x11, x1
bne G_M1296_IG07
;; size=20 bbWeight=4 PerfScore 34.00
-G_M1296_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M1296_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x1 x11]
- cbnz x0, G_M1296_IG08
+ mov x14, x19
+ ; gcrRegs +[x14]
+ mov x19, x0
+ b G_M1296_IG09
+ ;; size=12 bbWeight=0.50 PerfScore 1.00
+G_M1296_IG07: ; bbWeight=2, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x14 x19] +[x1]
+ mov x19, x0
+ ; gcrRegs +[x19]
+ b G_M1296_IG05
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M1296_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0-x1 x19]
adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x1, x1, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x1]
ldr x1, [x1]
; gcrRegs +[x1]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
- ; gcrRegs -[x0]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
ldr x0, [x0]
@@ -80,36 +91,31 @@ G_M1296_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
blr x2
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1]
; gcr arg pop 0
- b G_M1296_IG09
- ;; size=56 bbWeight=0.50 PerfScore 10.50
-G_M1296_IG07: ; bbWeight=2, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0-x1]
- mov x19, x0
- ; gcrRegs +[x19]
- b G_M1296_IG05
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M1296_IG08: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1]
- ldr x15, [x0, #0x10]
+ b G_M1296_IG10
+ ;; size=52 bbWeight=0.50 PerfScore 10.00
+G_M1296_IG09: ; bbWeight=0.50, gcrefRegs=84000 {x14 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x14 x19]
+ ldr x15, [x19, #0x10]
; gcrRegs +[x15]
- add x14, x19, #16
+ add x14, x14, #16
+ ; gcrRegs -[x14]
; byrRegs +[x14]
adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_ASSIGN_REF
add x12, x12, [LOW RELOC #0xD1FFAB1E]
ldr x12, [x12]
blr x12
- ; gcrRegs -[x0 x15 x19]
+ ; gcrRegs -[x15 x19]
; byrRegs -[x14]
;; size=24 bbWeight=0.50 PerfScore 4.25
-G_M1296_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M1296_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 184, prolog size 12, PerfScore 70.00, instruction count 46, allocated bytes for code 184 (MethodHash=2a35faef) for method System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
+; Total bytes of code 192, prolog size 12, PerfScore 70.50, instruction count 48, allocated bytes for code 192 (MethodHash=2a35faef) for method System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
; ============================================================
Unwind Info:
@@ -120,7 +126,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+32 (+8.25%) : 29860.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
@@ -8,7 +8,7 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 7, 4.50) ref -> x20 this class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
+; V00 this [V00,T01] ( 6, 4 ) ref -> x20 this class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
; V01 arg1 [V01,T00] ( 7, 4.75) ref -> x19 class-hnd single-def <System.Object>
; V02 arg2 [V02,T03] ( 3, 2.50) ref -> x21 class-hnd single-def <System.Collections.IComparer>
; V03 loc0 [V03,T04] ( 5, 2.38) ref -> x22 class-hnd exact single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
@@ -16,35 +16,37 @@
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
;* V06 loc3 [V06 ] ( 0, 0 ) int -> zero-ref single-def
;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
-; V08 loc5 [V08,T13] ( 2, 1 ) ref -> x19 class-hnd single-def <System.__Canon>
-; V09 loc6 [V09,T14] ( 2, 1 ) ref -> x22 class-hnd single-def <System.__Canon>
+; V08 loc5 [V08,T14] ( 2, 1 ) ref -> x19 class-hnd single-def <System.__Canon>
+; V09 loc6 [V09,T15] ( 2, 1 ) ref -> x22 class-hnd single-def <System.__Canon>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T09] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
+; V11 tmp1 [V11,T10] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
; V12 tmp2 [V12,T02] ( 3, 4.50) ref -> x0 class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
-; V13 tmp3 [V13,T10] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
+; V13 tmp3 [V13,T11] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
; V14 tmp4 [V14,T05] ( 3, 2.50) ref -> x0 class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
-; V15 tmp5 [V15,T11] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
-;* V16 tmp6 [V16,T12] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
-;* V17 tmp7 [V17,T15] ( 0, 0 ) int -> zero-ref single-def
-; V18 tmp8 [V18,T08] ( 3, 1.50) int -> x19
+; V15 tmp5 [V15,T12] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V16 tmp6 [V16,T13] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
+;* V17 tmp7 [V17,T16] ( 0, 0 ) int -> zero-ref single-def
+; V18 tmp8 [V18,T09] ( 3, 1.50) int -> x19
; V19 tmp9 [V19,T06] ( 2, 2 ) int -> x0 "Single return block return value"
; V20 tmp10 [V20,T07] ( 2, 2 ) long -> x0 "argument with side effect"
+; V21 cse0 [V21,T08] ( 5, 1.50) long -> x23 multi-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M56277_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
+ stp x19, x20, [sp, #0x18]
+ stp x21, x22, [sp, #0x28]
+ str x23, [sp, #0x38]
mov fp, sp
- str x0, [fp, #0x18]
+ str x0, [fp, #0x10]
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
; gcrRegs +[x19]
mov x21, x2
; gcrRegs +[x21]
- ;; size=32 bbWeight=1 PerfScore 6.00
+ ;; size=36 bbWeight=1 PerfScore 7.00
G_M56277_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
@@ -52,7 +54,8 @@ G_M56277_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
;; size=8 bbWeight=1 PerfScore 1.50
G_M56277_IG03: ; bbWeight=0.25, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
ldr x22, [x0]
- ldr x0, [x20]
+ ldr x23, [x20]
+ mov x0, x23
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -61,7 +64,7 @@ G_M56277_IG03: ; bbWeight=0.25, gcrefRegs=380001 {x0 x19 x20 x21}, byrefR
; gcr arg pop 0
cmp x22, x0
beq G_M56277_IG05
- ;; size=32 bbWeight=0.25 PerfScore 3.12
+ ;; size=36 bbWeight=0.25 PerfScore 3.25
G_M56277_IG04: ; bbWeight=0.12, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
@@ -84,7 +87,8 @@ G_M56277_IG06: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M56277_IG07: ; bbWeight=0.25, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr x19, [x22]
- ldr x0, [x20]
+ ldr x23, [x20]
+ mov x0, x23
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
@@ -92,7 +96,7 @@ G_M56277_IG07: ; bbWeight=0.25, gcrefRegs=700000 {x20 x21 x22}, byrefRegs
; gcr arg pop 0
cmp x19, x0
beq G_M56277_IG09
- ;; size=32 bbWeight=0.25 PerfScore 3.12
+ ;; size=36 bbWeight=0.25 PerfScore 3.25
G_M56277_IG08: ; bbWeight=0.12, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
mov x1, x22
; gcrRegs +[x1]
@@ -111,7 +115,7 @@ G_M56277_IG09: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs
ldr x19, [x20, #0x08]
; gcrRegs +[x19]
ldr x22, [x22, #0x08]
- ldr x0, [x20]
+ mov x0, x23
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
@@ -126,14 +130,15 @@ G_M56277_IG09: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x4, [x11]
- ;; size=64 bbWeight=0.50 PerfScore 10.75
+ ;; size=64 bbWeight=0.50 PerfScore 9.50
G_M56277_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
br x4
; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M56277_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x1-x3 x19 x21-x22]
mov w0, #1
@@ -144,11 +149,12 @@ G_M56277_IG12: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M56277_IG13: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M56277_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19]
mov x0, x19
@@ -183,28 +189,31 @@ G_M56277_IG17: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
movn w0, #0
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M56277_IG18: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M56277_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M56277_IG20: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M56277_IG21: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, epilog, nogc
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
-; Total bytes of code 388, prolog size 32, PerfScore 44.31, instruction count 97, allocated bytes for code 388 (MethodHash=ba80242a) for method Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
+; Total bytes of code 420, prolog size 36, PerfScore 49.31, instruction count 105, allocated bytes for code 420 (MethodHash=ba80242a) for method Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -215,7 +224,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 105 (0x00069) Actual length = 420 (0x0001a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -235,10 +244,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end
- E4 end
- E4 end
libraries.pmi.windows.arm64.checked.mch
-48 (-27.91%) : 215343.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
@@ -7,15 +7,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 6, 11 ) ref -> x1 class-hnd single-def <System.String>
-; V02 arg2 [V02,T05] ( 4, 6.50) int -> x2 single-def
-; V03 arg3 [V03,T07] ( 5, 4.50) int -> x3 single-def
-; V04 loc0 [V04,T03] ( 6, 13 ) int -> x5
-; V05 loc1 [V05,T00] ( 11, 27.50) int -> x6
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> x1 class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 3, 6 ) int -> x2 single-def
+; V03 arg3 [V03,T08] ( 5, 4.50) int -> x3 single-def
+; V04 loc0 [V04,T01] ( 5, 12 ) int -> x5
+; V05 loc1 [V05,T00] ( 7, 25 ) int -> x6
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> x4 "CSE - aggressive"
-; V08 cse1 [V08,T01] ( 6, 13.50) int -> x8 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> x8 "CSE - aggressive"
+; V08 cse1 [V08,T06] ( 3, 8.50) int -> x7 "CSE - aggressive"
+; V09 cse2 [V09,T09] ( 4, 6.50) int -> x4 "CSE - aggressive"
+; V10 cse3 [V10,T03] ( 3, 12 ) int -> x8 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -37,11 +39,11 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M6389_IG04: ; bbWeight=8, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
cmp w6, w5
- bge G_M6389_IG06
+ bge G_M6389_IG08
;; size=8 bbWeight=8 PerfScore 12.00
G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
cmp w6, w4
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x7, x0, #12
; byrRegs +[x7]
ldrh w7, [x7, w6, UXTW #2]
@@ -49,55 +51,36 @@ G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by
add w8, w2, w6
ldr w9, [x1, #0x08]
cmp w8, w9
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x9, x1, #12
; byrRegs +[x9]
ldrh w8, [x9, w8, UXTW #2]
cmp w7, w8
beq G_M6389_IG03
;; size=48 bbWeight=4 PerfScore 60.00
-G_M6389_IG06: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0-x1]
; byrRegs -[x9]
- cmp w6, w5
- bge G_M6389_IG09
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- cmp w6, w4
- bhs G_M6389_IG11
- add x0, x0, #12
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ldrh w0, [x0, w6, UXTW #2]
- ; byrRegs -[x0]
- add w8, w2, w6
- ldr w3, [x1, #0x08]
- cmp w8, w3
- bhs G_M6389_IG11
- add x4, x1, #12
- ; byrRegs +[x4]
- ldrh w1, [x4, w8, UXTW #2]
- ; gcrRegs -[x1]
- sub w0, w0, w1
- ;; size=44 bbWeight=0.50 PerfScore 7.00
-G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ sub w0, w7, w8
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[x4]
+G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub w0, w4, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 172, prolog size 8, PerfScore 91.25, instruction count 43, allocated bytes for code 172 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 124, prolog size 8, PerfScore 83.00, instruction count 31, allocated bytes for code 124 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -108,7 +91,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-36 (-21.95%) : 290235.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -11,12 +11,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
; V02 loc0 [V02,T00] ( 7, 24.50) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> x5 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x4 "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> x6 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> x5 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -33,51 +35,39 @@ G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x2]
cmp w1, w3
blt G_M264_IG11
- b G_M264_IG09
+ b G_M264_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
; byrRegs +[x0 x2]
sxtw w4, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1
- sxtw w4, w5
- tbnz w4, #31, G_M264_IG06
+ sub w4, w4, #1
+ tbnz w4, #31, G_M264_IG09
cmp w4, w1
bhs G_M264_IG13
- ubfiz x6, x4, #2, #32
- ldr w7, [x0, x6]
+ ubfiz x5, x4, #2, #32
+ ldr w6, [x0, x5]
cmp w4, w3
bhs G_M264_IG13
- ldr w6, [x2, x6]
- cmp w7, w6
+ ldr w5, [x2, x5]
+ cmp w6, w5
beq G_M264_IG05
- ;; size=48 bbWeight=4 PerfScore 54.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- tbz w5, #31, G_M264_IG08
- mov w0, wzr
- ; byrRegs -[x0]
+ ;; size=44 bbWeight=4 PerfScore 52.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0 x2]
+ cmp w5, w6
+ bhi G_M264_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref, isz
- ; byrRegs +[x0]
- cmp w5, w1
- bhs G_M264_IG13
- ubfiz x6, x5, #2, #32
- ldr w0, [x0, x6]
- ; byrRegs -[x0]
- cmp w5, w3
- bhs G_M264_IG13
- ldr w1, [x2, x6]
- cmp w0, w1
- blo G_M264_IG11
- ;; size=36 bbWeight=0.50 PerfScore 5.75
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
- mov w0, #1
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
@@ -96,7 +86,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 8, PerfScore 68.50, instruction count 41, allocated bytes for code 164 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 128, prolog size 8, PerfScore 61.00, instruction count 32, allocated bytes for code 128 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -107,7 +97,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-17.14%) : 205004.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
@@ -8,10 +8,10 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 10, 20 ) ref -> x19 class-hnd <System.Xml.Schema.XmlSchemaObject>
+; V00 arg0 [V00,T00] ( 9, 19.50) ref -> x19 class-hnd <System.Xml.Schema.XmlSchemaObject>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-; V03 tmp2 [V03,T02] ( 3, 2 ) ref -> x0 class-hnd "spilling QMark2" <System.Xml.Schema.XmlSchema>
+; V02 tmp1 [V02,T02] ( 2, 2 ) long -> x1 "fgMakeTemp is creating a new local variable"
+; V03 tmp2 [V03,T01] ( 2, 2 ) ref -> x0 class-hnd "spilling QMark2" <System.Xml.Schema.XmlSchema>
;
; Lcl frame size = 8
@@ -29,7 +29,7 @@ G_M32300_IG03: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x19, [x19, #0x18]
;; size=4 bbWeight=2 PerfScore 6.00
G_M32300_IG04: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M32300_IG06
+ cbz x19, G_M32300_IG08
;; size=4 bbWeight=8 PerfScore 8.00
G_M32300_IG05: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x19
@@ -42,54 +42,35 @@ G_M32300_IG05: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcr arg pop 0
cbz x0, G_M32300_IG03
;; size=24 bbWeight=4 PerfScore 16.00
-G_M32300_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M32300_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- cbz x19, G_M32300_IG12
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M32300_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- beq G_M32300_IG09
- ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M32300_IG08: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x0, x1
- mov x1, x19
- ; gcrRegs +[x1]
- bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
- ; gcrRegs -[x1 x19] +[x0]
- ; gcr arg pop 0
- b G_M32300_IG10
- ;; size=16 bbWeight=0.25 PerfScore 0.75
-G_M32300_IG09: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0] +[x19]
- mov x0, x19
+ csel x0, x19, x19, eq
; gcrRegs +[x0]
- ;; size=4 bbWeight=0.25 PerfScore 0.12
-G_M32300_IG10: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
ldr x0, [x0, #0x30]
- ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M32300_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=28 bbWeight=0.50 PerfScore 4.25
+G_M32300_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M32300_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
+G_M32300_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x19]
movz x0, #8
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M32300_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M32300_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 140, prolog size 16, PerfScore 45.12, instruction count 35, allocated bytes for code 140 (MethodHash=8b5f81d3) for method System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
+; Total bytes of code 116, prolog size 16, PerfScore 43.00, instruction count 29, allocated bytes for code 116 (MethodHash=8b5f81d3) for method System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -100,7 +81,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+3.61%) : 197244.dasm - System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
@@ -13,16 +13,18 @@
; V02 loc1 [V02,T04] ( 3, 1.50) int -> x0
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T02] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T05] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V06 tmp3 [V06,T01] ( 6, 4.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
+; V05 tmp2 [V05,T05] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
+; V06 tmp3 [V06,T01] ( 5, 3.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
; V07 tmp4 [V07,T03] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V08 cse0 [V08,T06] ( 3, 1 ) long -> x19 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M33783_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M33783_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldrb w1, [x0, #0xD1FFAB1E]
@@ -39,22 +41,21 @@ G_M33783_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
cbz x0, G_M33783_IG12
;; size=28 bbWeight=0.50 PerfScore 6.00
G_M33783_IG04: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- cmp x2, x3
+ ldr x19, [x0]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x19, x2
beq G_M33783_IG06
;; size=24 bbWeight=0.25 PerfScore 1.50
G_M33783_IG05: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x3
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
;; size=8 bbWeight=0.12 PerfScore 0.19
G_M33783_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0]
- ldr x1, [x1, #0x78]
+ ldr x1, [x19, #0x78]
ldr x1, [x1]
blr x1
movz x11, #0xD1FFAB1E // code for <unknown method>
@@ -72,7 +73,7 @@ G_M33783_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
movk x0, #0xD1FFAB1E LSL #32
ldr w0, [x0]
tbz w0, #0, G_M33783_IG15
- ;; size=72 bbWeight=0.50 PerfScore 12.00
+ ;; size=68 bbWeight=0.50 PerfScore 10.50
G_M33783_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x0, #0xD1FFAB1E LSL #16
@@ -81,9 +82,10 @@ G_M33783_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[x0]
;; size=16 bbWeight=0.50 PerfScore 2.25
G_M33783_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M33783_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E
@@ -100,9 +102,10 @@ G_M33783_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[x0]
;; size=16 bbWeight=0.50 PerfScore 2.25
G_M33783_IG11: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M33783_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E
@@ -119,9 +122,10 @@ G_M33783_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[x0]
;; size=16 bbWeight=0.50 PerfScore 2.25
G_M33783_IG14: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M33783_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E
@@ -148,18 +152,18 @@ G_M33783_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
b G_M33783_IG13
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 332, prolog size 8, PerfScore 40.44, instruction count 83, allocated bytes for code 332 (MethodHash=26627c08) for method System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
+; Total bytes of code 344, prolog size 12, PerfScore 42.94, instruction count 86, allocated bytes for code 344 (MethodHash=26627c08) for method System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 3
E bit : 0
X bit : 0
Vers : 0
- Function Length : 83 (0x00053) Actual length = 332 (0x00014c)
+ Function Length : 86 (0x00056) Actual length = 344 (0x000158)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -173,7 +177,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
+8 (+4.65%) : 254077.dasm - System.ComponentModel.TypeConverter+SimplePropertyDescriptor:ResetValue(System.Object):this (FullOpts)
@@ -7,27 +7,29 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 6 ) ref -> x19 this class-hnd single-def <System.ComponentModel.TypeConverter+SimplePropertyDescriptor>
-; V01 arg1 [V01,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 6, 5 ) ref -> x19 this class-hnd single-def <System.ComponentModel.TypeConverter+SimplePropertyDescriptor>
+; V01 arg1 [V01,T03] ( 3, 2.50) ref -> x20 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T04] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T06] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V06 tmp3 [V06,T00] ( 6, 8.75) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
-; V07 tmp4 [V07,T02] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
-; V08 tmp5 [V08,T05] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
+; V05 tmp2 [V05,T06] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
+; V06 tmp3 [V06,T02] ( 5, 5.75) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
+; V07 tmp4 [V07,T01] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
+; V08 tmp5 [V08,T05] ( 2, 2 ) ref -> x2 single-def "argument with side effect"
+; V09 cse0 [V09,T07] ( 3, 1 ) long -> x21 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M9521_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
; gcrRegs +[x20]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M9521_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
@@ -47,22 +49,21 @@ G_M9521_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
cbz x0, G_M9521_IG07
;; size=56 bbWeight=1 PerfScore 23.50
G_M9521_IG03: ; bbWeight=0.25, gcrefRegs=180003 {x0 x1 x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- cmp x2, x3
+ ldr x21, [x0]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x21, x2
beq G_M9521_IG05
;; size=24 bbWeight=0.25 PerfScore 1.50
G_M9521_IG04: ; bbWeight=0.12, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x3
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M9521_IG05: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
- ldr x1, [x0]
- ldr x1, [x1, #0x48]
+G_M9521_IG05: ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
+ ldr x1, [x21, #0x48]
ldr x1, [x1, #0x38]
blr x1
mov x2, x0
@@ -73,20 +74,22 @@ G_M9521_IG05: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
ldr x3, [x19]
ldr x3, [x3, #0x60]
ldr x3, [x3, #0x30]
- ;; size=40 bbWeight=1 PerfScore 20.50
-G_M9521_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ;; size=36 bbWeight=0.50 PerfScore 8.75
+G_M9521_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
br x3
- ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
G_M9521_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x0-x2 x19-x20]
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 172, prolog size 12, PerfScore 53.69, instruction count 43, allocated bytes for code 172 (MethodHash=ff5fdace) for method System.ComponentModel.TypeConverter+SimplePropertyDescriptor:ResetValue(System.Object):this (FullOpts)
+; Total bytes of code 180, prolog size 16, PerfScore 43.44, instruction count 45, allocated bytes for code 180 (MethodHash=ff5fdace) for method System.ComponentModel.TypeConverter+SimplePropertyDescriptor:ResetValue(System.Object):this (FullOpts)
; ============================================================
Unwind Info:
@@ -97,7 +100,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -108,10 +111,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
+8 (+7.14%) : 196914.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
@@ -13,16 +13,18 @@
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlDocument>
; V04 tmp2 [V04,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp3 [V05,T04] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V06 tmp4 [V06,T00] ( 6, 8.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
-; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
+; V05 tmp3 [V05,T04] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
+; V06 tmp4 [V06,T01] ( 5, 5.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
+; V07 tmp5 [V07,T00] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
+; V08 cse0 [V08,T05] ( 3, 1 ) long -> x19 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M56653_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M56653_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldr x0, [x0, #0x08]
@@ -36,28 +38,28 @@ G_M56653_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
cbz x0, G_M56653_IG07
;; size=32 bbWeight=1 PerfScore 15.00
G_M56653_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- cmp x2, x3
+ ldr x19, [x0]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x19, x2
beq G_M56653_IG05
;; size=24 bbWeight=0.25 PerfScore 1.50
G_M56653_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x3
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M56653_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ldr x1, [x0]
- ldr x1, [x1, #0x70]
+G_M56653_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ldr x1, [x19, #0x70]
ldr x1, [x1, #0x18]
- ;; size=12 bbWeight=1 PerfScore 9.00
-G_M56653_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ;; size=8 bbWeight=0.50 PerfScore 3.00
+G_M56653_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
br x1
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M56653_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
movz x0, #8
@@ -65,22 +67,23 @@ G_M56653_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
movk x0, #0xD1FFAB1E LSL #32
;; size=12 bbWeight=0.50 PerfScore 0.75
G_M56653_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 112, prolog size 8, PerfScore 30.94, instruction count 28, allocated bytes for code 112 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
+; Total bytes of code 120, prolog size 12, PerfScore 26.94, instruction count 30, allocated bytes for code 120 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -91,7 +94,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
libraries_tests.run.windows.arm64.Release.mch
-48 (-27.91%) : 411946.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
@@ -8,15 +8,17 @@
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 37
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 5, 6.14) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T01] ( 6, 8.27) ref -> x1 class-hnd single-def <System.String>
-; V02 arg2 [V02,T05] ( 4, 5.14) int -> x2 single-def
+; V00 arg0 [V00,T02] ( 4, 5.19) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T01] ( 4, 6.38) ref -> x1 class-hnd single-def <System.String>
+; V02 arg2 [V02,T05] ( 3, 4.19) int -> x2 single-def
; V03 arg3 [V03,T06] ( 5, 4.05) int -> x3 single-def
-; V04 loc0 [V04,T04] ( 6, 7.24) int -> x5
-; V05 loc1 [V05,T00] ( 11, 16.14) int -> x6
+; V04 loc0 [V04,T04] ( 5, 6.24) int -> x5
+; V05 loc1 [V05,T00] ( 7, 12.30) int -> x6
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T07] ( 5, 5.19) int -> x4 "CSE - aggressive"
-; V08 cse1 [V08,T02] ( 6, 9.41) int -> x8 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T07] ( 3, 5.32) int -> x8 "CSE - aggressive"
+; V08 cse1 [V08,T08] ( 3, 5.32) int -> x7 "CSE - aggressive"
+; V09 cse2 [V09,T03] ( 3, 6.57) int -> x8 "CSE - aggressive"
+; V10 cse3 [V10,T09] ( 4, 4.24) int -> x4 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -38,11 +40,11 @@ G_M6389_IG03: ; bbWeight=1.24, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {},
;; size=4 bbWeight=1.24 PerfScore 0.62
G_M6389_IG04: ; bbWeight=2.24, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
cmp w6, w5
- bge G_M6389_IG06
+ bge G_M6389_IG08
;; size=8 bbWeight=2.24 PerfScore 3.36
G_M6389_IG05: ; bbWeight=2.19, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
cmp w6, w4
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x7, x0, #12
; byrRegs +[x7]
ldrh w7, [x7, w6, UXTW #2]
@@ -50,55 +52,36 @@ G_M6389_IG05: ; bbWeight=2.19, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {},
add w8, w2, w6
ldr w9, [x1, #0x08]
cmp w8, w9
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x9, x1, #12
; byrRegs +[x9]
ldrh w8, [x9, w8, UXTW #2]
cmp w7, w8
beq G_M6389_IG03
;; size=48 bbWeight=2.19 PerfScore 32.84
-G_M6389_IG06: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M6389_IG06: ; bbWeight=0.95, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0-x1]
; byrRegs -[x9]
- cmp w6, w5
- bge G_M6389_IG09
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M6389_IG07: ; bbWeight=0.95, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- cmp w6, w4
- bhs G_M6389_IG11
- add x0, x0, #12
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ldrh w0, [x0, w6, UXTW #2]
- ; byrRegs -[x0]
- add w8, w2, w6
- ldr w3, [x1, #0x08]
- cmp w8, w3
- bhs G_M6389_IG11
- add x4, x1, #12
- ; byrRegs +[x4]
- ldrh w1, [x4, w8, UXTW #2]
- ; gcrRegs -[x1]
- sub w0, w0, w1
- ;; size=44 bbWeight=0.95 PerfScore 13.24
-G_M6389_IG08: ; bbWeight=0.95, epilog, nogc, extend
+ sub w0, w7, w8
+ ;; size=4 bbWeight=0.95 PerfScore 0.47
+G_M6389_IG07: ; bbWeight=0.95, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.95 PerfScore 1.89
-G_M6389_IG09: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[x4]
+G_M6389_IG08: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub w0, w4, w3
;; size=4 bbWeight=0.05 PerfScore 0.03
-G_M6389_IG10: ; bbWeight=0.05, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.05, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.05 PerfScore 0.11
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 172, prolog size 8, PerfScore 61.09, instruction count 43, allocated bytes for code 172 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
+; Total bytes of code 124, prolog size 8, PerfScore 46.82, instruction count 31, allocated bytes for code 124 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
; ============================================================
Unwind Info:
@@ -109,7 +92,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-36 (-22.50%) : 495086.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (Tier1)
@@ -5,19 +5,21 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 6711
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 6711
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T01] ( 7, 7 ) int -> x4
+; V02 loc0 [V02,T00] ( 7, 7 ) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 6, 12 ) int -> x5 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 3 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 4 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 3 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T02] ( 6, 5 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T03] ( 6, 6 ) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T05] ( 2, 4 ) int -> x4 "dup spill"
+; V05 tmp2 [V05,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T02] ( 4, 3 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T04] ( 2, 2 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T01] ( 5, 4 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T06] ( 3, 3 ) int -> x6 "CSE - aggressive"
+; V10 cse1 [V10,T07] ( 3, 3 ) int -> x5 "CSE - aggressive"
+; V11 cse2 [V11,T08] ( 3, 3 ) long -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -28,69 +30,57 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
; byrRegs +[x0 x2]
cmp w1, w3
- bne G_M264_IG10
+ bne G_M264_IG11
sxtw w4, w3
;; size=12 bbWeight=1 PerfScore 2.00
G_M264_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1
- sxtw w4, w5
- tbnz w4, #31, G_M264_IG04
+ sub w4, w4, #1
+ tbnz w4, #31, G_M264_IG06
cmp w4, w1
- bhs G_M264_IG09
- ubfiz x6, x4, #2, #32
- ldr w7, [x0, x6]
+ bhs G_M264_IG10
+ ubfiz x5, x4, #2, #32
+ ldr w6, [x0, x5]
cmp w4, w3
- bhs G_M264_IG09
- ldr w6, [x2, x6]
- cmp w7, w6
+ bhs G_M264_IG10
+ ldr w5, [x2, x5]
+ cmp w6, w5
beq G_M264_IG03
- ;; size=48 bbWeight=1 PerfScore 13.50
-G_M264_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- tbnz w5, #31, G_M264_IG11
- cmp w5, w1
- bhs G_M264_IG09
- ubfiz x6, x5, #2, #32
- ldr w0, [x0, x6]
- ; byrRegs -[x0]
- cmp w5, w3
- bhs G_M264_IG09
- ldr w1, [x2, x6]
- cmp w0, w1
- bhs G_M264_IG07
- ;; size=40 bbWeight=1 PerfScore 12.50
-G_M264_IG05: ; bbWeight=0.95, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
+ cmp w5, w6
+ bls G_M264_IG08
+ ;; size=52 bbWeight=1 PerfScore 14.50
+G_M264_IG04: ; bbWeight=0.95, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x0 x2]
movn w0, #0
;; size=4 bbWeight=0.95 PerfScore 0.48
-G_M264_IG06: ; bbWeight=0.95, epilog, nogc, extend
+G_M264_IG05: ; bbWeight=0.95, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.95 PerfScore 1.91
-G_M264_IG07: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M264_IG07: ; bbWeight=1, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M264_IG08: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
;; size=4 bbWeight=0.05 PerfScore 0.02
-G_M264_IG08: ; bbWeight=0.05, epilog, nogc, extend
+G_M264_IG09: ; bbWeight=0.05, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.05 PerfScore 0.09
-G_M264_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG10: ; 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_M264_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M264_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp w1, w3
- blt G_M264_IG05
- b G_M264_IG07
+ blt G_M264_IG04
+ b G_M264_IG08
;; size=12 bbWeight=0 PerfScore 0.00
-G_M264_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov w0, wzr
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M264_IG12: ; bbWeight=0, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 160, prolog size 8, PerfScore 32.00, instruction count 40, allocated bytes for code 160 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 124, prolog size 8, PerfScore 23.00, instruction count 31, allocated bytes for code 124 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================
Unwind Info:
@@ -101,7 +91,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-36 (-22.50%) : 511950.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (Tier1)
@@ -5,19 +5,21 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 7309
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 7309
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T01] ( 7, 7 ) int -> x4
+; V02 loc0 [V02,T00] ( 7, 7 ) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 6, 12 ) int -> x5 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 3 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 4 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 3 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T02] ( 6, 5 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T03] ( 6, 6 ) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T05] ( 2, 4 ) int -> x4 "dup spill"
+; V05 tmp2 [V05,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T02] ( 4, 3 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T04] ( 2, 2 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T01] ( 5, 4 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T06] ( 3, 3 ) int -> x6 "CSE - aggressive"
+; V10 cse1 [V10,T07] ( 3, 3 ) int -> x5 "CSE - aggressive"
+; V11 cse2 [V11,T08] ( 3, 3 ) long -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -28,69 +30,57 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
; byrRegs +[x0 x2]
cmp w1, w3
- bne G_M264_IG10
+ bne G_M264_IG11
sxtw w4, w3
;; size=12 bbWeight=1 PerfScore 2.00
G_M264_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1
- sxtw w4, w5
- tbnz w4, #31, G_M264_IG04
+ sub w4, w4, #1
+ tbnz w4, #31, G_M264_IG06
cmp w4, w1
- bhs G_M264_IG09
- ubfiz x6, x4, #2, #32
- ldr w7, [x0, x6]
+ bhs G_M264_IG10
+ ubfiz x5, x4, #2, #32
+ ldr w6, [x0, x5]
cmp w4, w3
- bhs G_M264_IG09
- ldr w6, [x2, x6]
- cmp w7, w6
+ bhs G_M264_IG10
+ ldr w5, [x2, x5]
+ cmp w6, w5
beq G_M264_IG03
- ;; size=48 bbWeight=1 PerfScore 13.50
-G_M264_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- tbnz w5, #31, G_M264_IG11
- cmp w5, w1
- bhs G_M264_IG09
- ubfiz x6, x5, #2, #32
- ldr w0, [x0, x6]
- ; byrRegs -[x0]
- cmp w5, w3
- bhs G_M264_IG09
- ldr w1, [x2, x6]
- cmp w0, w1
- bhs G_M264_IG07
- ;; size=40 bbWeight=1 PerfScore 12.50
-G_M264_IG05: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
+ cmp w5, w6
+ bls G_M264_IG08
+ ;; size=52 bbWeight=1 PerfScore 14.50
+G_M264_IG04: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x0 x2]
movn w0, #0
;; size=4 bbWeight=0.96 PerfScore 0.48
-G_M264_IG06: ; bbWeight=0.96, epilog, nogc, extend
+G_M264_IG05: ; bbWeight=0.96, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.96 PerfScore 1.91
-G_M264_IG07: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M264_IG07: ; bbWeight=1, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M264_IG08: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
;; size=4 bbWeight=0.04 PerfScore 0.02
-G_M264_IG08: ; bbWeight=0.04, epilog, nogc, extend
+G_M264_IG09: ; bbWeight=0.04, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.04 PerfScore 0.09
-G_M264_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG10: ; 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_M264_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M264_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp w1, w3
- blt G_M264_IG05
- b G_M264_IG07
+ blt G_M264_IG04
+ b G_M264_IG08
;; size=12 bbWeight=0 PerfScore 0.00
-G_M264_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov w0, wzr
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M264_IG12: ; bbWeight=0, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 160, prolog size 8, PerfScore 32.00, instruction count 40, allocated bytes for code 160 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 124, prolog size 8, PerfScore 23.00, instruction count 31, allocated bytes for code 124 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================
Unwind Info:
@@ -101,7 +91,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+6.56%) : 159968.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
@@ -11,17 +11,17 @@
;
; V00 this [V00,T00] ( 9, 5.57) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
;* V01 loc0 [V01,T09] ( 0, 0 ) ubyte -> zero-ref single-def
-; V02 loc1 [V02,T03] ( 5, 5 ) ubyte -> x20
+; V02 loc1 [V02,T06] ( 5, 3 ) ubyte -> x20
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V06 tmp2 [V06,T06] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
-; V07 tmp3 [V07,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V06 tmp2 [V06,T05] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
+; V07 tmp3 [V07,T03] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
; V08 tmp4 [V08,T07] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V09 tmp5 [V09,T01] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V10 tmp6 [V10,T05] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V09 tmp5 [V09,T01] ( 5, 5.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V10 tmp6 [V10,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
; V11 tmp7 [V11,T08] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V12 tmp8 [V12,T02] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V12 tmp8 [V12,T02] ( 5, 5.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;
; Lcl frame size = 8
@@ -38,18 +38,18 @@ G_M43843_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
mov w20, wzr
ldr x21, [x19, #0x88]
; gcrRegs +[x21]
- cbz x21, G_M43843_IG16
+ cbz x21, G_M43843_IG14
;; size=12 bbWeight=1 PerfScore 4.50
G_M43843_IG03: ; bbWeight=0.94, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x21, #0x18]
- tbz w0, #1, G_M43843_IG16
+ tbz w0, #1, G_M43843_IG14
;; size=8 bbWeight=0.94 PerfScore 3.76
G_M43843_IG04: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr x1, [x21, #0x08]
; gcrRegs +[x1]
mov x2, x1
; gcrRegs +[x2]
- cbz x2, G_M43843_IG08
+ cbz x2, G_M43843_IG07
;; size=12 bbWeight=1 PerfScore 4.50
G_M43843_IG05: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x21]
@@ -58,7 +58,7 @@ G_M43843_IG05: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=00
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
cmp x0, x3
- beq G_M43843_IG07
+ beq G_M43843_IG15
;; size=24 bbWeight=0.50 PerfScore 3.00
G_M43843_IG06: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
@@ -67,19 +67,16 @@ G_M43843_IG06: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
; gcrRegs -[x1] +[x0]
mov x2, x0
; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M43843_IG07: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldrb w20, [x2, #0x94]
- ;; size=4 bbWeight=1 PerfScore 3.00
-G_M43843_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
- cbnz w20, G_M43843_IG13
+ b G_M43843_IG15
+ ;; size=16 bbWeight=0.25 PerfScore 0.75
+G_M43843_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0 x2]
+ cbnz w20, G_M43843_IG11
ldr x1, [x19, #0x90]
; gcrRegs +[x1]
- cbz x1, G_M43843_IG15
+ cbz x1, G_M43843_IG13
;; size=12 bbWeight=1 PerfScore 5.00
-G_M43843_IG09: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M43843_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
ldr x0, [x19, #0x90]
; gcrRegs +[x0]
@@ -87,40 +84,37 @@ G_M43843_IG09: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcrRegs +[x1]
mov x2, x1
; gcrRegs +[x2]
- cbz x2, G_M43843_IG13
+ cbz x2, G_M43843_IG11
;; size=16 bbWeight=1 PerfScore 7.50
-G_M43843_IG10: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M43843_IG09: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x19]
ldr x0, [x2]
movz x3, #0xD1FFAB1E
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
cmp x0, x3
- beq G_M43843_IG12
+ beq G_M43843_IG16
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M43843_IG11: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M43843_IG10: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
mov x0, x3
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
mov x2, x0
; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M43843_IG12: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldrb w20, [x2, #0x94]
- ;; size=4 bbWeight=1 PerfScore 3.00
-G_M43843_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
+ b G_M43843_IG16
+ ;; size=16 bbWeight=0.25 PerfScore 0.75
+G_M43843_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x2]
mov w0, w20
;; size=4 bbWeight=1 PerfScore 0.50
-G_M43843_IG14: ; bbWeight=1, epilog, nogc, extend
+G_M43843_IG12: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-G_M43843_IG15: ; bbWeight=0.22, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M43843_IG13: ; bbWeight=0.22, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
add x1, x19, #144
; byrRegs +[x1]
@@ -133,9 +127,9 @@ G_M43843_IG15: ; bbWeight=0.22, gcVars=0000000000000000 {}, gcrefRegs=800
blr x2
; gcrRegs -[x0]
; byrRegs -[x1]
- b G_M43843_IG09
+ b G_M43843_IG08
;; size=32 bbWeight=0.22 PerfScore 1.68
-G_M43843_IG16: ; bbWeight=0.06, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M43843_IG14: ; bbWeight=0.06, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:EnsureAttributesAreBound():this
@@ -148,8 +142,18 @@ G_M43843_IG16: ; bbWeight=0.06, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs +[x21]
b G_M43843_IG04
;; size=32 bbWeight=0.06 PerfScore 0.59
+G_M43843_IG15: ; bbWeight=0, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x21] +[x2]
+ ldrb w20, [x2, #0x94]
+ b G_M43843_IG07
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M43843_IG16: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19]
+ ldrb w20, [x2, #0x94]
+ b G_M43843_IG11
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 16, PerfScore 50.04, instruction count 61, allocated bytes for code 244 (MethodHash=f14d54bc) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
+; Total bytes of code 260, prolog size 16, PerfScore 44.54, instruction count 65, allocated bytes for code 260 (MethodHash=f14d54bc) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -160,7 +164,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
+ Function Length : 65 (0x00041) Actual length = 260 (0x000104)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+6.56%) : 613308.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
@@ -9,20 +9,20 @@
; 4 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 9, 5.22) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V00 this [V00,T00] ( 9, 5.22) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Version>
-; V02 loc1 [V02,T03] ( 5, 5 ) ref -> x20 class-hnd <System.Version>
+; V02 loc1 [V02,T06] ( 5, 3 ) ref -> x20 class-hnd <System.Version>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V06 tmp2 [V06,T06] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
-; V07 tmp3 [V07,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V06 tmp2 [V06,T05] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
+; V07 tmp3 [V07,T03] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
; V08 tmp4 [V08,T07] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V09 tmp5 [V09,T00] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V09 tmp5 [V09,T01] ( 5, 5.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
-; V11 tmp7 [V11,T05] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V11 tmp7 [V11,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
; V12 tmp8 [V12,T08] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V13 tmp9 [V13,T01] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V13 tmp9 [V13,T02] ( 5, 5.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;
; Lcl frame size = 8
@@ -40,18 +40,18 @@ G_M53393_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcrRegs +[x20]
ldr x21, [x19, #0x88]
; gcrRegs +[x21]
- cbz x21, G_M53393_IG15
+ cbz x21, G_M53393_IG13
;; size=12 bbWeight=1 PerfScore 4.50
G_M53393_IG03: ; bbWeight=0.94, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x21, #0x18]
- tbz w0, #1, G_M53393_IG15
+ tbz w0, #1, G_M53393_IG13
;; size=8 bbWeight=0.94 PerfScore 3.76
G_M53393_IG04: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
ldr x1, [x21, #0x08]
; gcrRegs +[x1]
mov x2, x1
; gcrRegs +[x2]
- cbz x2, G_M53393_IG08
+ cbz x2, G_M53393_IG07
;; size=12 bbWeight=1 PerfScore 4.50
G_M53393_IG05: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20-x21]
@@ -60,7 +60,7 @@ G_M53393_IG05: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=00
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
cmp x0, x3
- beq G_M53393_IG07
+ beq G_M53393_IG15
;; size=24 bbWeight=0.50 PerfScore 3.00
G_M53393_IG06: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
@@ -69,20 +69,16 @@ G_M53393_IG06: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
; gcrRegs -[x1] +[x0]
mov x2, x0
; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M53393_IG07: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x20, [x2, #0x20]
- ; gcrRegs +[x20]
- ;; size=4 bbWeight=1 PerfScore 3.00
-G_M53393_IG08: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
- cbnz x20, G_M53393_IG13
+ b G_M53393_IG15
+ ;; size=16 bbWeight=0.25 PerfScore 0.75
+G_M53393_IG07: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0 x2] +[x20]
+ cbnz x20, G_M53393_IG11
ldr x1, [x19, #0x90]
; gcrRegs +[x1]
- cbz x1, G_M53393_IG16
+ cbz x1, G_M53393_IG14
;; size=12 bbWeight=1 PerfScore 5.00
-G_M53393_IG09: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M53393_IG08: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
ldr x0, [x19, #0x90]
; gcrRegs +[x0]
@@ -90,42 +86,38 @@ G_M53393_IG09: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs +[x1]
mov x2, x1
; gcrRegs +[x2]
- cbz x2, G_M53393_IG13
+ cbz x2, G_M53393_IG11
;; size=16 bbWeight=1 PerfScore 7.50
-G_M53393_IG10: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M53393_IG09: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x19-x20]
ldr x0, [x2]
movz x3, #0xD1FFAB1E
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
cmp x0, x3
- beq G_M53393_IG12
+ beq G_M53393_IG16
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M53393_IG11: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M53393_IG10: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
mov x0, x3
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
mov x2, x0
; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M53393_IG12: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x20, [x2, #0x20]
- ; gcrRegs +[x20]
- ;; size=4 bbWeight=1 PerfScore 3.00
-G_M53393_IG13: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
+ b G_M53393_IG16
+ ;; size=16 bbWeight=0.25 PerfScore 0.75
+G_M53393_IG11: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x2] +[x20]
mov x0, x20
; gcrRegs +[x0]
;; size=4 bbWeight=1 PerfScore 0.50
-G_M53393_IG14: ; bbWeight=1, epilog, nogc, extend
+G_M53393_IG12: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-G_M53393_IG15: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M53393_IG13: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x19]
mov x0, x19
; gcrRegs +[x0]
@@ -139,7 +131,7 @@ G_M53393_IG15: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=180
; gcrRegs +[x21]
b G_M53393_IG04
;; size=32 bbWeight=0.06 PerfScore 0.59
-G_M53393_IG16: ; bbWeight=0.05, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M53393_IG14: ; bbWeight=0.05, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x21]
add x1, x19, #144
; byrRegs +[x1]
@@ -152,10 +144,22 @@ G_M53393_IG16: ; bbWeight=0.05, gcrefRegs=180000 {x19 x20}, byrefRegs=000
blr x2
; gcrRegs -[x0]
; byrRegs -[x1]
- b G_M53393_IG09
+ b G_M53393_IG08
;; size=32 bbWeight=0.05 PerfScore 0.38
+G_M53393_IG15: ; bbWeight=0, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20] +[x2]
+ ldr x20, [x2, #0x20]
+ ; gcrRegs +[x20]
+ b G_M53393_IG07
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M53393_IG16: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19-x20]
+ ldr x20, [x2, #0x20]
+ ; gcrRegs +[x20]
+ b G_M53393_IG11
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 16, PerfScore 48.73, instruction count 61, allocated bytes for code 244 (MethodHash=53202f6e) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
+; Total bytes of code 260, prolog size 16, PerfScore 43.23, instruction count 65, allocated bytes for code 260 (MethodHash=53202f6e) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
; ============================================================
Unwind Info:
@@ -166,7 +170,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
+ Function Length : 65 (0x00041) Actual length = 260 (0x000104)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+8.00%) : 333362.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
@@ -5,34 +5,35 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1170
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1170
; 1 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T07] ( 3, 3 ) byref -> x0 single-def
-; V01 arg1 [V01,T05] ( 6, 4.01) int -> x1 single-def
+; V01 arg1 [V01,T05] ( 6, 4.02) int -> x1 single-def
; V02 arg2 [V02,T08] ( 3, 3 ) byref -> x2 single-def
-; V03 arg3 [V03,T06] ( 6, 4.01) int -> x3 single-def
-; V04 loc0 [V04,T02] ( 7, 9.82) int -> x4
+; V03 arg3 [V03,T06] ( 6, 4.02) int -> x3 single-def
+; V04 loc0 [V04,T02] ( 6, 9.81) int -> x4
; V05 loc1 [V05,T12] ( 5, 1.01) int -> x5
; V06 loc2 [V06,T03] ( 5, 8.79) byref -> x0
; V07 loc3 [V07,T04] ( 5, 8.79) byref -> x2
; V08 loc4 [V08,T09] ( 5, 4.93) int -> x0
-; V09 loc5 [V09,T10] ( 5, 4.93) int -> x4
+; V09 loc5 [V09,T10] ( 5, 4.93) int -> x1
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V11 tmp1 [V11,T11] ( 2, 2 ) int -> x4 "Inline return value spill temp"
;* V12 tmp2 [V12 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
;* V13 tmp3 [V13 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
;* V14 tmp4 [V14 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V15 cse0 [V15,T00] ( 7, 18.25) int -> x6 "CSE - aggressive"
-; V16 cse1 [V16,T01] ( 6, 14.99) int -> x7 "CSE - aggressive"
+; V15 cse0 [V15,T00] ( 7, 18.25) int -> x19 "CSE - aggressive"
+; V16 cse1 [V16,T01] ( 6, 14.99) int -> x20 "CSE - aggressive"
;
; Lcl frame size = 0
G_M49993_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ stp x19, x20, [sp, #0x10]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M49993_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
; byrRegs +[x0 x2]
cmp w1, w3
@@ -41,14 +42,14 @@ G_M49993_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, b
b G_M49993_IG05
;; size=16 bbWeight=1 PerfScore 2.50
G_M49993_IG03: ; bbWeight=3.25, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- orr w8, w6, #32
- orr w9, w7, #32
- orr w10, w6, #32
- sub w10, w10, #97
- cmp w8, w9
- ccmp w10, #25, c, eq
- ccmp w6, w7, z, hi
- bne G_M49993_IG11
+ orr w6, w19, #32
+ orr w7, w20, #32
+ orr w8, w19, #32
+ sub w8, w8, #97
+ cmp w6, w7
+ ccmp w8, #25, c, eq
+ ccmp w19, w20, z, hi
+ bne G_M49993_IG08
;; size=32 bbWeight=3.25 PerfScore 14.65
G_M49993_IG04: ; bbWeight=2.27, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
sub w4, w4, #1
@@ -56,47 +57,47 @@ G_M49993_IG04: ; bbWeight=2.27, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}
add x2, x2, #2
;; size=12 bbWeight=2.27 PerfScore 3.40
G_M49993_IG05: ; bbWeight=3.27, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- cbz w4, G_M49993_IG08
+ cbz w4, G_M49993_IG10
;; size=4 bbWeight=3.27 PerfScore 3.27
G_M49993_IG06: ; bbWeight=3.26, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- ldrh w6, [x0]
- cmp w6, #127
- bgt G_M49993_IG13
+ ldrh w19, [x0]
+ cmp w19, #127
+ bgt G_M49993_IG12
;; size=12 bbWeight=3.26 PerfScore 14.65
G_M49993_IG07: ; bbWeight=3.25, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- ldrh w7, [x2]
- cmp w7, #127
- ble G_M49993_IG03
- ;; size=12 bbWeight=3.25 PerfScore 14.65
-G_M49993_IG08: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- cbnz w4, G_M49993_IG13
- ;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M49993_IG09: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldrh w20, [x2]
+ cmp w20, #127
+ bgt G_M49993_IG12
+ b G_M49993_IG03
+ ;; size=16 bbWeight=3.25 PerfScore 17.90
+G_M49993_IG08: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x2]
+ sxtw w0, w19
+ sxtw w1, w20
+ sub w2, w19, #97
+ sub w3, w0, #32
+ cmp w2, #25
+ csel w0, w0, w3, hi
+ sub w2, w20, #97
+ sub w3, w1, #32
+ cmp w2, #25
+ csel w1, w1, w3, hi
+ sub w0, w0, w1
+ ;; size=44 bbWeight=0.99 PerfScore 5.42
+G_M49993_IG09: ; bbWeight=0.99, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.99 PerfScore 2.96
+G_M49993_IG10: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub w0, w1, w3
;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M49993_IG10: ; bbWeight=0.01, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+G_M49993_IG11: ; bbWeight=0.01, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.01 PerfScore 0.02
-G_M49993_IG11: ; bbWeight=0.99, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- sxtw w0, w6
- sxtw w4, w7
- sub w5, w6, #97
- sub w3, w0, #32
- cmp w5, #25
- csel w0, w0, w3, hi
- sub w3, w7, #97
- sub w1, w4, #32
- cmp w3, #25
- csel w4, w4, w1, hi
- sub w0, w0, w4
- ;; size=44 bbWeight=0.99 PerfScore 5.42
-G_M49993_IG12: ; bbWeight=0.99, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.99 PerfScore 1.97
-G_M49993_IG13: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref
+ ;; size=12 bbWeight=0.01 PerfScore 0.04
+G_M49993_IG12: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref
; byrRegs +[x0 x2]
sub w5, w5, w4
sub w3, w3, w5
@@ -106,24 +107,25 @@ G_M49993_IG13: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=000
movk x4, #0xD1FFAB1E LSL #32
ldr x4, [x4]
;; size=28 bbWeight=0.00 PerfScore 0.01
-G_M49993_IG14: ; bbWeight=0.00, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+G_M49993_IG13: ; bbWeight=0.00, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
br x4
; gcr arg pop 0
- ;; size=8 bbWeight=0.00 PerfScore 0.00
+ ;; size=12 bbWeight=0.00 PerfScore 0.01
-; Total bytes of code 200, prolog size 8, PerfScore 62.07, instruction count 50, allocated bytes for code 200 (MethodHash=d5cf3cb6) for method System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
+; Total bytes of code 216, prolog size 12, PerfScore 67.32, instruction count 54, allocated bytes for code 216 (MethodHash=d5cf3cb6) for method System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 3
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -137,7 +139,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
-48 (-27.91%) : 97037.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
@@ -7,15 +7,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 6, 11 ) ref -> x1 class-hnd single-def <System.String>
-; V02 arg2 [V02,T05] ( 4, 6.50) int -> x2 single-def
-; V03 arg3 [V03,T07] ( 5, 4.50) int -> x3 single-def
-; V04 loc0 [V04,T03] ( 6, 13 ) int -> x5
-; V05 loc1 [V05,T00] ( 11, 27.50) int -> x6
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> x1 class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 3, 6 ) int -> x2 single-def
+; V03 arg3 [V03,T08] ( 5, 4.50) int -> x3 single-def
+; V04 loc0 [V04,T01] ( 5, 12 ) int -> x5
+; V05 loc1 [V05,T00] ( 7, 25 ) int -> x6
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> x4 "CSE - aggressive"
-; V08 cse1 [V08,T01] ( 6, 13.50) int -> x8 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> x8 "CSE - aggressive"
+; V08 cse1 [V08,T06] ( 3, 8.50) int -> x7 "CSE - aggressive"
+; V09 cse2 [V09,T09] ( 4, 6.50) int -> x4 "CSE - aggressive"
+; V10 cse3 [V10,T03] ( 3, 12 ) int -> x8 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -37,11 +39,11 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M6389_IG04: ; bbWeight=8, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
cmp w6, w5
- bge G_M6389_IG06
+ bge G_M6389_IG08
;; size=8 bbWeight=8 PerfScore 12.00
G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
cmp w6, w4
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x7, x0, #12
; byrRegs +[x7]
ldrh w7, [x7, w6, UXTW #2]
@@ -49,55 +51,36 @@ G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by
add w8, w2, w6
ldr w9, [x1, #0x08]
cmp w8, w9
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x9, x1, #12
; byrRegs +[x9]
ldrh w8, [x9, w8, UXTW #2]
cmp w7, w8
beq G_M6389_IG03
;; size=48 bbWeight=4 PerfScore 60.00
-G_M6389_IG06: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0-x1]
; byrRegs -[x9]
- cmp w6, w5
- bge G_M6389_IG09
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- cmp w6, w4
- bhs G_M6389_IG11
- add x0, x0, #12
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ldrh w0, [x0, w6, UXTW #2]
- ; byrRegs -[x0]
- add w8, w2, w6
- ldr w3, [x1, #0x08]
- cmp w8, w3
- bhs G_M6389_IG11
- add x4, x1, #12
- ; byrRegs +[x4]
- ldrh w1, [x4, w8, UXTW #2]
- ; gcrRegs -[x1]
- sub w0, w0, w1
- ;; size=44 bbWeight=0.50 PerfScore 7.00
-G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ sub w0, w7, w8
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[x4]
+G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub w0, w4, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 172, prolog size 8, PerfScore 91.25, instruction count 43, allocated bytes for code 172 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 124, prolog size 8, PerfScore 83.00, instruction count 31, allocated bytes for code 124 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -108,7 +91,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-36 (-21.95%) : 31969.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -11,12 +11,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
; V02 loc0 [V02,T00] ( 7, 24.50) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> x5 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x4 "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> x6 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> x5 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -33,51 +35,39 @@ G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x2]
cmp w1, w3
blt G_M264_IG11
- b G_M264_IG09
+ b G_M264_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
; byrRegs +[x0 x2]
sxtw w4, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1
- sxtw w4, w5
- tbnz w4, #31, G_M264_IG06
+ sub w4, w4, #1
+ tbnz w4, #31, G_M264_IG09
cmp w4, w1
bhs G_M264_IG13
- ubfiz x6, x4, #2, #32
- ldr w7, [x0, x6]
+ ubfiz x5, x4, #2, #32
+ ldr w6, [x0, x5]
cmp w4, w3
bhs G_M264_IG13
- ldr w6, [x2, x6]
- cmp w7, w6
+ ldr w5, [x2, x5]
+ cmp w6, w5
beq G_M264_IG05
- ;; size=48 bbWeight=4 PerfScore 54.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- tbz w5, #31, G_M264_IG08
- mov w0, wzr
- ; byrRegs -[x0]
+ ;; size=44 bbWeight=4 PerfScore 52.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0 x2]
+ cmp w5, w6
+ bhi G_M264_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref, isz
- ; byrRegs +[x0]
- cmp w5, w1
- bhs G_M264_IG13
- ubfiz x6, x5, #2, #32
- ldr w0, [x0, x6]
- ; byrRegs -[x0]
- cmp w5, w3
- bhs G_M264_IG13
- ldr w1, [x2, x6]
- cmp w0, w1
- blo G_M264_IG11
- ;; size=36 bbWeight=0.50 PerfScore 5.75
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
- mov w0, #1
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
@@ -96,7 +86,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 8, PerfScore 68.50, instruction count 41, allocated bytes for code 164 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 128, prolog size 8, PerfScore 61.00, instruction count 32, allocated bytes for code 128 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -107,7 +97,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-12.07%) : 94908.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
@@ -8,12 +8,13 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 11, 21 ) ref -> x0 this class-hnd single-def <System.Data.ExpressionParser>
-; V01 loc0 [V01,T04] ( 6, 14 ) ref -> x3 class-hnd single-def <<unknown class>>
+; V01 loc0 [V01,T04] ( 5, 13 ) ref -> x3 class-hnd single-def <<unknown class>>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 24 ) int -> x1 "index expr"
-; V04 tmp2 [V04,T05] ( 3, 6 ) int -> x1 "index expr"
-; V05 cse0 [V05,T00] ( 9, 31 ) int -> x19 "CSE - aggressive"
-; V06 cse1 [V06,T03] ( 5, 22 ) int -> x2 "CSE - aggressive"
+;* V04 tmp2 [V04,T06] ( 0, 0 ) int -> zero-ref "index expr"
+; V05 cse0 [V05,T05] ( 3, 9 ) int -> x2 "CSE - aggressive"
+; V06 cse1 [V06,T00] ( 7, 29 ) int -> x19 "CSE - aggressive"
+; V07 cse2 [V07,T03] ( 3, 20 ) int -> x2 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -33,22 +34,9 @@ G_M44374_IG03: ; bbWeight=8, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, b
str w19, [x0, #0x30]
ldr w2, [x3, #0x08]
cmp w2, w19
- ble G_M44374_IG05
+ ble G_M44374_IG08
;; size=24 bbWeight=8 PerfScore 72.00
G_M44374_IG04: ; bbWeight=4, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref, isz
- sxtw w1, w19
- cmp w1, w2
- bhs G_M44374_IG07
- add x4, x3, #16
- ; byrRegs +[x4]
- ldrh w1, [x4, w1, UXTW #2]
- cmp w1, #35
- bne G_M44374_IG03
- ;; size=28 bbWeight=4 PerfScore 28.00
-G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x4]
- cmp w2, w19
- ble G_M44374_IG08
sxtw w1, w19
cmp w1, w2
bhs G_M44374_IG07
@@ -56,13 +44,17 @@ G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, b
; byrRegs +[x2]
ldrh w2, [x2, w1, UXTW #2]
; byrRegs -[x2]
+ cmp w2, #35
+ bne G_M44374_IG03
+ ;; size=28 bbWeight=4 PerfScore 28.00
+G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref, isz
cmp w2, #35
bne G_M44374_IG09
mov w2, #7
str w2, [x0, #0x38]
add w2, w19, #1
str w2, [x0, #0x30]
- ;; size=52 bbWeight=1 PerfScore 11.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M44374_IG06: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
@@ -114,7 +106,7 @@ G_M44374_IG09: ; bbWeight=0, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, b
brk_windows #0
;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 232, prolog size 12, PerfScore 121.00, instruction count 58, allocated bytes for code 232 (MethodHash=962252a9) for method System.Data.ExpressionParser:ScanDate():this (FullOpts)
+; Total bytes of code 204, prolog size 12, PerfScore 114.00, instruction count 51, allocated bytes for code 204 (MethodHash=962252a9) for method System.Data.ExpressionParser:ScanDate():this (FullOpts)
; ============================================================
Unwind Info:
@@ -125,7 +117,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
+ Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+4.42%) : 22318.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
@@ -13,36 +13,37 @@
; V02 arg2 [V02,T09] ( 5, 4 ) byref -> x19 single-def
; V03 arg3 [V03,T01] ( 12, 14.50) byref -> x4 single-def
; V04 loc0 [V04,T13] ( 6, 3 ) ubyte -> x5
-; V05 loc1 [V05,T07] ( 6, 8 ) ubyte -> x3
-; V06 loc2 [V06,T11] ( 5, 5.50) ubyte -> x2
-; V07 loc3 [V07,T03] ( 7, 14 ) int -> x5
-; V08 loc4 [V08,T02] ( 5, 14.50) int -> x6
-; V09 loc5 [V09,T04] ( 4, 12 ) ubyte -> x8
+; V05 loc1 [V05,T07] ( 6, 8 ) ubyte -> x20
+; V06 loc2 [V06,T12] ( 4, 3.50) ubyte -> x21
+; V07 loc3 [V07,T03] ( 7, 14 ) int -> x2
+; V08 loc4 [V08,T02] ( 5, 14.50) int -> x3
+; V09 loc5 [V09,T04] ( 4, 12 ) ubyte -> x22
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V11 tmp1 [V11,T14] ( 3, 3 ) int -> x5 "Span.get_Item index"
; V12 tmp2 [V12,T15] ( 3, 1.50) int -> x2
-; V13 tmp3 [V13,T00] ( 3, 24 ) int -> x8 "Span.get_Item index"
-; V14 tmp4 [V14 ] ( 3, 3 ) struct ( 8) [fp+0x20] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-; V15 tmp5 [V15 ] ( 3, 3 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-; V16 tmp6 [V16,T12] ( 4, 4 ) int -> x0 "Single return block return value"
+; V13 tmp3 [V13,T00] ( 3, 24 ) int -> x6 "Span.get_Item index"
+; V14 tmp4 [V14 ] ( 3, 3 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
+; V15 tmp5 [V15 ] ( 3, 3 ) struct ( 8) [fp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
+; V16 tmp6 [V16,T11] ( 4, 4 ) int -> x0 "Single return block return value"
; V17 tmp7 [V17,T08] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V18 tmp8 [V18,T06] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V19 tmp9 [V19 ] ( 3, 3 ) ubyte -> [fp+0x20] do-not-enreg[X] addr-exposed "field V14.hasValue (fldOffset=0x0)" P-DEP
-; V20 tmp10 [V20 ] ( 3, 3 ) int -> [fp+0x24] do-not-enreg[X] addr-exposed "field V14.value (fldOffset=0x4)" P-DEP
-; V21 tmp11 [V21 ] ( 3, 3 ) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed "field V15.hasValue (fldOffset=0x0)" P-DEP
-; V22 tmp12 [V22 ] ( 3, 3 ) int -> [fp+0x1C] do-not-enreg[X] addr-exposed "field V15.value (fldOffset=0x4)" P-DEP
-; V23 cse0 [V23,T05] ( 3, 12 ) int -> x7 "CSE - aggressive"
+; V19 tmp9 [V19 ] ( 3, 3 ) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed "field V14.hasValue (fldOffset=0x0)" P-DEP
+; V20 tmp10 [V20 ] ( 3, 3 ) int -> [fp+0x1C] do-not-enreg[X] addr-exposed "field V14.value (fldOffset=0x4)" P-DEP
+; V21 tmp11 [V21 ] ( 3, 3 ) ubyte -> [fp+0x10] do-not-enreg[X] addr-exposed "field V15.hasValue (fldOffset=0x0)" P-DEP
+; V22 tmp12 [V22 ] ( 3, 3 ) int -> [fp+0x14] do-not-enreg[X] addr-exposed "field V15.value (fldOffset=0x4)" P-DEP
+; V23 cse0 [V23,T05] ( 3, 12 ) int -> x5 "CSE - aggressive"
; V24 cse1 [V24,T16] ( 3, 1.50) int -> x3 "CSE - moderate"
;
-; Lcl frame size = 24
+; Lcl frame size = 16
G_M45882_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- str x19, [sp, #0x28]
+ stp fp, lr, [sp, #-0x40]!
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
mov fp, sp
mov x19, x3
; byrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M45882_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
; byrRegs +[x0 x4]
str xzr, [x19]
@@ -66,16 +67,17 @@ G_M45882_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4
; byrRegs -[x0]
;; size=52 bbWeight=0.50 PerfScore 7.00
G_M45882_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x28]
- ldp fp, lr, [sp], #0x30
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M45882_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, gcvars, byref, isz
; byrRegs +[x0]
cmp w5, #128
bge G_M45882_IG06
- str xzr, [fp, #0x18] // [V15 tmp5]
- add x0, fp, #24 // [V15 tmp5]
+ str xzr, [fp, #0x10] // [V15 tmp5]
+ add x0, fp, #16 // [V15 tmp5]
; byrRegs -[x0]
mov w1, w5
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -85,7 +87,7 @@ G_M45882_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
blr x2
; byrRegs -[x4]
; gcr arg pop 0
- ldr x0, [fp, #0x18] // [V15 tmp5]
+ ldr x0, [fp, #0x10] // [V15 tmp5]
str x0, [x19]
b G_M45882_IG22
;; size=52 bbWeight=0.50 PerfScore 6.50
@@ -101,9 +103,9 @@ G_M45882_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4
G_M45882_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
; byrRegs +[x0]
and w3, w5, #0xD1FFAB1E
- uxtb w3, w3
- add w5, w3, #1
- cmp w5, w1
+ uxtb w20, w3
+ add w3, w20, #1
+ cmp w3, w1
ble G_M45882_IG10
str wzr, [x4]
;; size=24 bbWeight=0.50 PerfScore 2.00
@@ -112,10 +114,11 @@ G_M45882_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M45882_IG09: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x28]
- ldp fp, lr, [sp], #0x30
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M45882_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, gcvars, byref, isz
; byrRegs +[x0 x4 x19]
cmp w2, #2
@@ -128,9 +131,9 @@ G_M45882_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4
mov w2, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M45882_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
- uxtb w2, w2
- cbz w2, G_M45882_IG14
- cmp w3, #4
+ uxtb w21, w2
+ cbz w21, G_M45882_IG14
+ cmp w20, #4
ble G_M45882_IG14
;; size=16 bbWeight=0.50 PerfScore 1.50
G_M45882_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref
@@ -141,43 +144,43 @@ G_M45882_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, b
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M45882_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
; byrRegs +[x0 x19]
- mov w5, wzr
- mov w6, wzr
- cmp w3, #0
+ mov w2, wzr
+ mov w3, wzr
+ cmp w20, #0
ble G_M45882_IG19
;; size=16 bbWeight=0.50 PerfScore 1.25
G_M45882_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
- ldr w7, [x4]
- sxtw w8, w7
- cmp w8, w1
+ ldr w5, [x4]
+ sxtw w6, w5
+ cmp w6, w1
bhs G_M45882_IG25
- ldrb w8, [x0, w8, UXTW #2]
- add w7, w7, #1
- str w7, [x4]
- cbnz w5, G_M45882_IG18
+ ldrb w22, [x0, w6, UXTW #2]
+ add w5, w5, #1
+ str w5, [x4]
+ cbnz w2, G_M45882_IG18
;; size=32 bbWeight=4 PerfScore 42.00
G_M45882_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
- cbz w2, G_M45882_IG17
- cbz w8, G_M45882_IG20
- ;; size=8 bbWeight=2 PerfScore 4.00
+ cbz w21, G_M45882_IG17
+ cbz w22, G_M45882_IG20
+ b G_M45882_IG18
+ ;; size=12 bbWeight=2 PerfScore 6.00
G_M45882_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
- cbnz w2, G_M45882_IG18
- cbz w8, G_M45882_IG18
- sub w7, w3, w6
- cmp w7, #4
+ cbz w22, G_M45882_IG18
+ sub w5, w20, w3
+ cmp w5, #4
bgt G_M45882_IG13
- ;; size=20 bbWeight=2 PerfScore 8.00
+ ;; size=16 bbWeight=2 PerfScore 6.00
G_M45882_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
- orr w5, w8, w5, LSL #8
- add w6, w6, #1
- cmp w6, w3
+ orr w2, w22, w2, LSL #8
+ add w3, w3, #1
+ cmp w3, w20
blt G_M45882_IG15
;; size=16 bbWeight=4 PerfScore 12.00
G_M45882_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80010 {x4 x19}, byref, isz
; byrRegs -[x0]
- tbnz w5, #31, G_M45882_IG13
- cbz w2, G_M45882_IG21
- cmp w5, #128
+ tbnz w2, #31, G_M45882_IG13
+ cbz w21, G_M45882_IG21
+ cmp w2, #128
bhs G_M45882_IG21
;; size=16 bbWeight=0.50 PerfScore 1.75
G_M45882_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref
@@ -188,16 +191,16 @@ G_M45882_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, b
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M45882_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
; byrRegs -[x4] +[x19]
- str xzr, [fp, #0x20] // [V14 tmp4]
- add x0, fp, #32 // [V14 tmp4]
- mov w1, w5
+ str xzr, [fp, #0x18] // [V14 tmp4]
+ add x0, fp, #24 // [V14 tmp4]
+ mov w1, w2
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
; gcr arg pop 0
- ldr x0, [fp, #0x20] // [V14 tmp4]
+ ldr x0, [fp, #0x18] // [V14 tmp4]
str x0, [x19]
;; size=40 bbWeight=0.50 PerfScore 5.25
G_M45882_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -205,22 +208,24 @@ G_M45882_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov w0, #5
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M45882_IG23: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x28]
- ldp fp, lr, [sp], #0x30
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M45882_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ldr x19, [sp, #0x28]
- ldp fp, lr, [sp], #0x30
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M45882_IG25: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 452, prolog size 16, PerfScore 112.25, instruction count 113, allocated bytes for code 452 (MethodHash=0a754cc5) for method System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
+; Total bytes of code 472, prolog size 20, PerfScore 113.25, instruction count 118, allocated bytes for code 472 (MethodHash=0a754cc5) for method System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
; ============================================================
Unwind Info:
...
+12 (+6.00%) : 178904.dasm - System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
@@ -13,16 +13,18 @@
; V02 loc1 [V02,T04] ( 3, 1.50) int -> x0
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T02] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T05] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V06 tmp3 [V06,T01] ( 6, 4.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
+; V05 tmp2 [V05,T05] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
+; V06 tmp3 [V06,T01] ( 5, 3.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
; V07 tmp4 [V07,T03] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V08 cse0 [V08,T06] ( 3, 1 ) long -> x19 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M33783_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M33783_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldrb w1, [x0, #0xD1FFAB1E]
@@ -39,22 +41,21 @@ G_M33783_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
cbz x0, G_M33783_IG10
;; size=28 bbWeight=0.50 PerfScore 6.00
G_M33783_IG04: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- cmp x2, x3
+ ldr x19, [x0]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x19, x2
beq G_M33783_IG06
;; size=24 bbWeight=0.25 PerfScore 1.50
G_M33783_IG05: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x3
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
;; size=8 bbWeight=0.12 PerfScore 0.19
G_M33783_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0]
- ldr x1, [x1, #0x78]
+ ldr x1, [x19, #0x78]
ldr x1, [x1]
blr x1
movz x11, #0xD1FFAB1E // code for <unknown method>
@@ -72,11 +73,12 @@ G_M33783_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
; gcrRegs +[x0]
- ;; size=68 bbWeight=0.50 PerfScore 11.50
+ ;; size=64 bbWeight=0.50 PerfScore 10.00
G_M33783_IG07: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M33783_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
@@ -86,9 +88,10 @@ G_M33783_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs +[x0]
;; size=16 bbWeight=0.50 PerfScore 2.25
G_M33783_IG09: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M33783_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
@@ -98,22 +101,23 @@ G_M33783_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs +[x0]
;; size=16 bbWeight=0.50 PerfScore 2.25
G_M33783_IG11: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 200, prolog size 8, PerfScore 32.19, instruction count 50, allocated bytes for code 200 (MethodHash=26627c08) for method System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
+; Total bytes of code 212, prolog size 12, PerfScore 34.69, instruction count 53, allocated bytes for code 212 (MethodHash=26627c08) for method System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 3
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 53 (0x00035) Actual length = 212 (0x0000d4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -127,7 +131,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
+8 (+7.14%) : 174016.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
@@ -13,16 +13,18 @@
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlDocument>
; V04 tmp2 [V04,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp3 [V05,T04] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V06 tmp4 [V06,T00] ( 6, 8.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
-; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
+; V05 tmp3 [V05,T04] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
+; V06 tmp4 [V06,T01] ( 5, 5.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
+; V07 tmp5 [V07,T00] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
+; V08 cse0 [V08,T05] ( 3, 1 ) long -> x19 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M56653_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M56653_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldr x0, [x0, #0x08]
@@ -36,28 +38,28 @@ G_M56653_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
cbz x0, G_M56653_IG07
;; size=32 bbWeight=1 PerfScore 15.00
G_M56653_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- cmp x2, x3
+ ldr x19, [x0]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x19, x2
beq G_M56653_IG05
;; size=24 bbWeight=0.25 PerfScore 1.50
G_M56653_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x3
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M56653_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ldr x1, [x0]
- ldr x1, [x1, #0x70]
+G_M56653_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ldr x1, [x19, #0x70]
ldr x1, [x1, #0x18]
- ;; size=12 bbWeight=1 PerfScore 9.00
-G_M56653_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ;; size=8 bbWeight=0.50 PerfScore 3.00
+G_M56653_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
br x1
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M56653_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
movz x0, #8
@@ -65,22 +67,23 @@ G_M56653_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
movk x0, #0xD1FFAB1E LSL #32
;; size=12 bbWeight=0.50 PerfScore 0.75
G_M56653_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 112, prolog size 8, PerfScore 30.94, instruction count 28, allocated bytes for code 112 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
+; Total bytes of code 120, prolog size 12, PerfScore 26.94, instruction count 30, allocated bytes for code 120 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -91,7 +94,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
realworld.run.windows.arm64.checked.mch
-16 (-5.41%) : 667.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
@@ -8,19 +8,21 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 10, 7.50) byref -> x19 single-def
+; V00 arg0 [V00,T05] ( 10, 7.50) byref -> x19 single-def
; V01 arg1 [V01,T02] ( 5, 11.50) int -> x1 single-def
-; V02 arg2 [V02,T05] ( 3, 2.50) ubyte -> x3 single-def
+; V02 arg2 [V02,T07] ( 3, 2.50) ubyte -> x3 single-def
; V03 loc0 [V03,T01] ( 8, 15.50) long -> x20
-; V04 loc1 [V04,T00] ( 19, 44 ) int -> x21
+; V04 loc1 [V04,T00] ( 16, 41 ) int -> x21
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T07] ( 3, 3 ) byref -> x0 single-def "dup spill"
-; V07 tmp2 [V07,T08] ( 3, 3 ) long -> x0 "dup spill"
+; V06 tmp1 [V06,T09] ( 3, 3 ) byref -> x0 single-def "dup spill"
+; V07 tmp2 [V07,T11] ( 2, 2 ) long -> x0 "dup spill"
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V09 tmp4 [V09,T09] ( 2, 2 ) byref -> x20 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V09 tmp4 [V09,T10] ( 2, 2 ) byref -> x20 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-; V11 tmp6 [V11,T06] ( 2, 4 ) long -> x20 "Cast away GC"
-; V12 cse0 [V12,T03] ( 3, 10 ) int -> x0 "CSE - aggressive"
+; V11 tmp6 [V11,T08] ( 2, 4 ) long -> x20 "Cast away GC"
+; V12 cse0 [V12,T06] ( 3, 8.50) int -> x1 "CSE - aggressive"
+; V13 cse1 [V13,T03] ( 4, 10.50) int -> x0 "CSE - aggressive"
+; V14 cse2 [V14,T04] ( 3, 10 ) int -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -69,26 +71,22 @@ G_M4398_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
b G_M4398_IG09
;; size=40 bbWeight=0.50 PerfScore 5.75
G_M4398_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- sub w21, w21, #1
+ sxtw w21, w0
;; size=4 bbWeight=2 PerfScore 1.00
G_M4398_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- cmp w21, #0
- ble G_M4398_IG10
- sub w0, w21, #1
- ldrb w0, [x20, w0, SXTW #2]
- cmp w0, #57
- beq G_M4398_IG08
- ;; size=24 bbWeight=4 PerfScore 26.00
-G_M4398_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w21, #0
ble G_M4398_IG11
sub w0, w21, #1
+ ldrb w1, [x20, w0, SXTW #2]
+ cmp w1, #57
+ beq G_M4398_IG08
+ ;; size=24 bbWeight=4 PerfScore 26.00
+G_M4398_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
add x0, x20, w0, SXTW
- ldrb w1, [x0]
add w1, w1, #1
strb w1, [x0]
b G_M4398_IG14
- ;; size=32 bbWeight=0.50 PerfScore 4.25
+ ;; size=16 bbWeight=0.50 PerfScore 1.75
G_M4398_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
add x0, x19, #4
; byrRegs +[x0]
@@ -142,7 +140,7 @@ G_M4398_IG17: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 296, prolog size 24, PerfScore 124.25, instruction count 74, allocated bytes for code 296 (MethodHash=4357eed1) for method System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
+; Total bytes of code 280, prolog size 24, PerfScore 121.75, instruction count 70, allocated bytes for code 280 (MethodHash=4357eed1) for method System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
; ============================================================
Unwind Info:
@@ -153,7 +151,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 74 (0x0004a) Actual length = 296 (0x000128)
+ Function Length : 70 (0x00046) Actual length = 280 (0x000118)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-4.35%) : 17893.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
@@ -15,8 +15,8 @@
; V04 loc3 [V04,T01] ( 8, 25 ) int -> x1
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T04] ( 2, 16 ) int -> x1 "dup spill"
-; V08 tmp2 [V08,T03] ( 3, 17 ) int -> x0 "dup spill"
+; V07 tmp1 [V07,T03] ( 2, 16 ) int -> x1 "dup spill"
+; V08 tmp2 [V08,T04] ( 2, 16 ) int -> x1 "dup spill"
; V09 tmp3 [V09,T05] ( 2, 16 ) int -> x7 "dup spill"
; V10 tmp4 [V10,T06] ( 2, 16 ) int -> x6 "dup spill"
; V11 tmp5 [V11,T07] ( 2, 16 ) int -> x7 "dup spill"
@@ -109,26 +109,23 @@ G_M61853_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
bne G_M61853_IG13
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M61853_IG09: ; bbWeight=4, gcrefRegs=0008 {x3}, byrefRegs=0020 {x5}, byref, isz
- sub w0, w1, #1
- sxtw w1, w0
+ sub w1, w1, #1
cmp w1, #0
- ble G_M61853_IG10
+ ble G_M61853_IG13
add w7, w7, #1
cmp w7, w4
bhs G_M61853_IG15
ldrh w6, [x5, w7, UXTW #2]
- sub w2, w6, #48
- cmp w2, #9
+ sub w0, w6, #48
+ cmp w0, #9
bls G_M61853_IG09
- ;; size=44 bbWeight=4 PerfScore 38.00
-G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=40 bbWeight=4 PerfScore 36.00
+G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x3]
; byrRegs -[x5]
- cmp w0, #0
- ble G_M61853_IG13
cmp w6, #125
cset x2, eq
- ;; size=16 bbWeight=0.50 PerfScore 1.25
+ ;; size=8 bbWeight=0.50 PerfScore 0.50
G_M61853_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
uxtb w0, w2
;; size=4 bbWeight=0.50 PerfScore 0.25
@@ -149,7 +146,7 @@ G_M61853_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 276, prolog size 8, PerfScore 106.00, instruction count 69, allocated bytes for code 276 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
+; Total bytes of code 264, prolog size 8, PerfScore 103.25, instruction count 66, allocated bytes for code 264 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -160,7 +157,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 69 (0x00045) Actual length = 276 (0x000114)
+ Function Length : 66 (0x00042) Actual length = 264 (0x000108)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-4.00%) : 19211.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
@@ -8,27 +8,30 @@
; 0 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder>
+; V00 this [V00,T06] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder>
; V01 arg1 [V01,T02] ( 8, 8.50) int -> x19
-; V02 loc0 [V02,T00] ( 13, 28.50) ref -> x20 class-hnd <<unknown class>>
+; V02 loc0 [V02,T00] ( 11, 27 ) ref -> x20 class-hnd <<unknown class>>
;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T05] ( 4, 4 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.UnsupportedMetadataTypeSymbol>
+; V05 tmp1 [V05,T07] ( 4, 4 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.UnsupportedMetadataTypeSymbol>
;* V06 tmp2 [V06 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V08 tmp4 [V08,T06] ( 3, 1.50) ref -> x0 "field V03.array (fldOffset=0x0)" P-INDEP
-; V09 tmp5 [V09,T03] ( 2, 8 ) ref -> x1 "argument with side effect"
-; V10 cse0 [V10,T01] ( 9, 16.50) long -> x21 multi-def "CSE - aggressive"
+; V08 tmp4 [V08,T08] ( 3, 1.50) ref -> x0 "field V03.array (fldOffset=0x0)" P-INDEP
+; V09 tmp5 [V09,T05] ( 2, 8 ) ref -> x1 "argument with side effect"
+; V10 cse0 [V10,T03] ( 4, 9 ) long -> x22 "CSE - aggressive"
+; V11 cse1 [V11,T04] ( 4, 9 ) long -> x24 "CSE - aggressive"
+; V12 cse2 [V12,T01] ( 4, 14 ) long -> x21 "CSE - aggressive"
;
; Lcl frame size = 0
G_M4215_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x10]
stp x21, x22, [sp, #0x20]
+ stp x23, x24, [sp, #0x30]
mov fp, sp
mov w19, w1
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=24 bbWeight=1 PerfScore 5.00
G_M4215_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x0]
ldr x20, [x0, #0x28]
@@ -56,42 +59,37 @@ G_M4215_IG03: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, by
;; size=40 bbWeight=2 PerfScore 22.00
G_M4215_IG04: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz x20, G_M4215_IG06
+ cbz x20, G_M4215_IG07
;; size=4 bbWeight=8 PerfScore 8.00
G_M4215_IG05: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
mov x0, x20
; gcrRegs +[x0]
ldr x21, [x20]
- ldr x1, [x21, #0xD1FFAB1E]
- ldr x1, [x1, #0x30]
+ ldr x22, [x21, #0xD1FFAB1E]
+ ldr x1, [x22, #0x30]
blr x1
; gcrRegs -[x0]
- mov w22, w0
+ mov w23, w0
mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x21, #0xD1FFAB1E]
- ldr x1, [x1, #0x20]
+ ldr x24, [x21, #0xD1FFAB1E]
+ ldr x1, [x24, #0x20]
blr x1
; gcrRegs -[x0]
- sub w0, w22, w0
+ sub w0, w23, w0
cmp w0, w19
bgt G_M4215_IG03
;; size=52 bbWeight=4 PerfScore 82.00
-G_M4215_IG06: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M4215_IG08
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M4215_IG07: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M4215_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
mov x0, x20
; gcrRegs +[x0]
- ldr x21, [x20]
- ldr x1, [x21, #0xD1FFAB1E]
- ldr x1, [x1, #0x30]
+ ldr x1, [x22, #0x30]
blr x1
; gcrRegs -[x0]
cmp w0, w19
- bgt G_M4215_IG10
- ;; size=28 bbWeight=0.50 PerfScore 6.00
-G_M4215_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bgt G_M4215_IG09
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M4215_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x20]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -101,58 +99,57 @@ G_M4215_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
str xzr, [x0, #0x20]
str xzr, [x0, #0x40]
;; size=24 bbWeight=0.50 PerfScore 2.25
-G_M4215_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M4215_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M4215_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=20 bbWeight=0.50 PerfScore 2.50
+G_M4215_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x20]
mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x21, #0xD1FFAB1E]
- ldr x1, [x1, #0x30]
+ ldr x1, [x22, #0x30]
blr x1
; gcrRegs -[x0]
- mov w22, w0
+ mov w21, w0
mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x21, #0xD1FFAB1E]
- ldr x1, [x1, #0x20]
+ ldr x1, [x24, #0x20]
blr x1
; gcrRegs -[x0]
- sub w0, w22, w0
+ sub w0, w21, w0
sub w19, w19, w0
mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x21, #0xD1FFAB1E]
- ldr x1, [x1, #0x28]
+ ldr x1, [x24, #0x28]
blr x1
; gcrRegs -[x20]
ldr w1, [x0, #0x08]
cmp w19, w1
- bhs G_M4215_IG12
+ bhs G_M4215_IG11
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
ldr x0, [x0, w19, UXTW #3]
; gcrRegs +[x0]
; byrRegs -[x0]
- ;; size=80 bbWeight=0.50 PerfScore 16.00
-G_M4215_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=68 bbWeight=0.50 PerfScore 11.50
+G_M4215_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M4215_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=0.50 PerfScore 2.50
+G_M4215_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
bl CORINFO_HELP_RNGCHKFAIL
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 300, prolog size 16, PerfScore 149.25, instruction count 75, allocated bytes for code 300 (MethodHash=5d77ef88) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
+; Total bytes of code 288, prolog size 20, PerfScore 142.75, instruction count 72, allocated bytes for code 288 (MethodHash=5d77ef88) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
; ============================================================
Unwind Info:
@@ -163,7 +160,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 75 (0x0004b) Actual length = 300 (0x00012c)
+ 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)
@@ -175,9 +172,9 @@ Unwind Info:
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
E6 save_next
+ E6 save_next
C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
- E4 end
+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end
E4 end
+12 (+0.82%) : 16619.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:g_getFormatAndCloseBrace|4341(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
@@ -28,13 +28,13 @@
; V17 tmp8 [V17,T16] ( 5, 2.50) int -> x4 "Inline stloc first use temp"
; V18 tmp9 [V18,T19] ( 4, 2 ) int -> x2 "Inline stloc first use temp"
; V19 tmp10 [V19,T03] ( 9, 9 ) ref -> x22 class-hnd exact single-def "Inlining Arg" <System.String>
-; V20 tmp11 [V20,T37] ( 3, 1.50) ref -> x23 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V20 tmp11 [V20,T37] ( 3, 1.50) ref -> x25 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V21 tmp12 [V21,T09] ( 8, 4 ) ref -> x23 class-hnd exact single-def "Inline stloc first use temp" <System.String>
; V22 tmp13 [V22,T20] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
; V23 tmp14 [V23,T27] ( 2, 2 ) byref -> x0 single-def "impAppendStmt"
; V24 tmp15 [V24,T21] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
; V25 tmp16 [V25,T28] ( 2, 2 ) byref -> x0 single-def "impAppendStmt"
-; V26 tmp17 [V26,T00] ( 12, 12 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V26 tmp17 [V26,T00] ( 12, 12 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V27 tmp18 [V27,T35] ( 2, 2 ) int -> x14 "Inlining Arg"
;* V28 tmp19 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V29 tmp20 [V29 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -49,17 +49,17 @@
; V38 tmp29 [V38,T18] ( 5, 2.50) int -> x4 "Inline stloc first use temp"
; V39 tmp30 [V39,T23] ( 4, 2 ) int -> x2 "Inline stloc first use temp"
; V40 tmp31 [V40,T38] ( 3, 1.50) ref -> x1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V41 tmp32 [V41,T02] ( 11, 10.50) ref -> x19 class-hnd exact single-def "Inlining Arg" <System.String>
+; V41 tmp32 [V41,T02] ( 11, 10.50) ref -> x21 class-hnd exact single-def "Inlining Arg" <System.String>
;* V42 tmp33 [V42 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
;* V43 tmp34 [V43,T57] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
; V44 tmp35 [V44,T39] ( 3, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V45 tmp36 [V45,T10] ( 8, 4 ) ref -> x22 class-hnd exact single-def "Inline stloc first use temp" <System.String>
+; V45 tmp36 [V45,T10] ( 8, 4 ) ref -> x27 class-hnd exact single-def "Inline stloc first use temp" <System.String>
; V46 tmp37 [V46,T24] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
; V47 tmp38 [V47,T29] ( 2, 2 ) byref -> x0 single-def "impAppendStmt"
; V48 tmp39 [V48,T25] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
; V49 tmp40 [V49,T30] ( 2, 2 ) byref -> x0 single-def "impAppendStmt"
; V50 tmp41 [V50,T04] ( 8, 8 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V51 tmp42 [V51,T36] ( 2, 2 ) int -> x21 "Inlining Arg"
+; V51 tmp42 [V51,T36] ( 2, 2 ) int -> x25 "Inlining Arg"
; V52 tmp43 [V52,T05] ( 8, 8 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia>
;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V54 tmp45 [V54,T31] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
@@ -78,26 +78,27 @@
; V67 tmp58 [V67,T32] ( 2, 2 ) ref -> x2 single-def "argument with side effect"
; V68 tmp59 [V68,T33] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
; V69 cse0 [V69,T49] ( 3, 1.50) int -> x25 "CSE - moderate"
-; V70 cse1 [V70,T50] ( 3, 1.50) int -> x23 "CSE - moderate"
+; V70 cse1 [V70,T50] ( 3, 1.50) int -> x28 "CSE - moderate"
; V71 cse2 [V71,T51] ( 3, 1.50) long -> x26 "CSE - moderate"
-; V72 cse3 [V72,T52] ( 3, 1.50) long -> x24 "CSE - moderate"
+; V72 cse3 [V72,T52] ( 3, 1.50) long -> x22 "CSE - moderate"
; V73 cse4 [V73,T11] ( 8, 4 ) int -> x24 multi-def "CSE - aggressive"
-; V74 cse5 [V74,T08] ( 9, 4 ) int -> x21 multi-def "CSE - aggressive"
+; V74 cse5 [V74,T08] ( 9, 4 ) int -> x25 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
G_M21658_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
stp x19, x20, [sp, #0x10]
stp x21, x22, [sp, #0x20]
stp x23, x24, [sp, #0x30]
stp x25, x26, [sp, #0x40]
+ stp x27, x28, [sp, #0x50]
mov fp, sp
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
; byrRegs +[x19]
- ;; size=32 bbWeight=1 PerfScore 6.50
+ ;; size=36 bbWeight=1 PerfScore 7.50
G_M21658_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
mov x0, x20
; gcrRegs +[x0]
@@ -245,24 +246,24 @@ G_M21658_IG06: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- mov x23, x0
- ; gcrRegs +[x23]
+ mov x25, x0
+ ; gcrRegs +[x25]
ldr w24, [x22, #0x08]
sxtw w14, w24
mov w15, #0xD1FFAB1E
- strh w15, [x23, #0x0C]
- str w14, [x23, #0x08]
- ldrb w14, [x23, #0x0E]
+ strh w15, [x25, #0x0C]
+ str w14, [x25, #0x08]
+ ldrb w14, [x25, #0x0E]
orr w14, w14, #32
- strb w14, [x23, #0x0E]
- add x14, x23, #16
+ strb w14, [x25, #0x0E]
+ add x14, x25, #16
; byrRegs +[x14]
mov x15, x22
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- add x14, x23, #24
+ add x14, x25, #24
; byrRegs +[x14]
mov x15, x22
; gcrRegs +[x15]
@@ -270,15 +271,15 @@ G_M21658_IG06: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs
; gcrRegs -[x15 x22]
; byrRegs -[x14]
cbz x21, G_M21658_IG07
- ldrb w14, [x23, #0x0E]
+ ldrb w14, [x25, #0x0E]
ldrb w15, [x21, #0x0E]
and w15, w15, #63
orr w14, w14, w15
- strb w14, [x23, #0x0E]
+ strb w14, [x25, #0x0E]
ldr w14, [x21, #0x08]
add w14, w24, w14
- str w14, [x23, #0x08]
- add x14, x23, #32
+ str w14, [x25, #0x08]
+ add x14, x25, #32
; byrRegs +[x14]
mov x15, x21
; gcrRegs +[x15]
@@ -286,11 +287,11 @@ G_M21658_IG06: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs
; gcrRegs -[x15 x21]
; byrRegs -[x14]
;; size=124 bbWeight=0.50 PerfScore 16.50
-G_M21658_IG07: ; bbWeight=0.50, gcrefRegs=900000 {x20 x23}, byrefRegs=80000 {x19}, byref
+G_M21658_IG07: ; bbWeight=0.50, gcrefRegs=2100000 {x20 x25}, byrefRegs=80000 {x19}, byref
b G_M21658_IG09
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M21658_IG08: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref
- ; gcrRegs -[x23] +[x21]
+ ; gcrRegs -[x25] +[x21]
mov x1, x21
; gcrRegs +[x1]
mov w0, #0xD1FFAB1E
@@ -301,10 +302,10 @@ G_M21658_IG08: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=800
ldr x3, [x3]
blr x3
; gcrRegs -[x1 x21] +[x0]
- mov x23, x0
- ; gcrRegs +[x23]
+ mov x25, x0
+ ; gcrRegs +[x25]
;; size=36 bbWeight=0.50 PerfScore 3.75
-G_M21658_IG09: ; bbWeight=0.50, gcrefRegs=900000 {x20 x23}, byrefRegs=80000 {x19}, byref, isz
+G_M21658_IG09: ; bbWeight=0.50, gcrefRegs=2100000 {x20 x25}, byrefRegs=80000 {x19}, byref, isz
; gcrRegs -[x0]
ldr w21, [x19, #0x10]
ldr x0, [x19, #0x08]
@@ -316,13 +317,13 @@ G_M21658_IG09: ; bbWeight=0.50, gcrefRegs=900000 {x20 x23}, byrefRegs=800
add w4, w2, w3
add w4, w4, #1
;; size=32 bbWeight=0.50 PerfScore 7.25
-G_M21658_IG10: ; bbWeight=0.50, gcrefRegs=900001 {x0 x20 x23}, byrefRegs=80000 {x19}, byref, isz
+G_M21658_IG10: ; bbWeight=0.50, gcrefRegs=2100001 {x0 x20 x25}, byrefRegs=80000 {x19}, byref, isz
sxtw w2, w1
tbz w2, #31, G_M21658_IG11
add w2, w1, w3
add w2, w2, #1
;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M21658_IG11: ; bbWeight=0.50, gcrefRegs=900001 {x0 x20 x23}, byrefRegs=80000 {x19}, byref, isz
+G_M21658_IG11: ; bbWeight=0.50, gcrefRegs=2100001 {x0 x20 x25}, byrefRegs=80000 {x19}, byref, isz
sub w2, w2, w4
mov w1, w4
movz x3, #0xD1FFAB1E // code for System.String:Substring(int,int):System.String:this
@@ -342,13 +343,13 @@ G_M21658_IG11: ; bbWeight=0.50, gcrefRegs=900001 {x0 x20 x23}, byrefRegs=
; gcrRegs -[x2 x20]
mov x1, x0
; gcrRegs +[x1]
- mov x0, x23
+ mov x0, x25
movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxFactory:InterpolationFormatClause(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- ; gcrRegs -[x1 x23]
+ ; gcrRegs -[x1 x25]
mov x20, x0
; gcrRegs +[x20]
ldr x0, [x19, #0x08]
@@ -374,17 +375,17 @@ G_M21658_IG13: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=0000
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- mov x19, x0
- ; gcrRegs +[x19]
- cbz x19, G_M21658_IG16
+ mov x21, x0
+ ; gcrRegs +[x21]
+ cbz x21, G_M21658_IG16
;; size=36 bbWeight=0.50 PerfScore 4.00
-G_M21658_IG14: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M21658_IG14: ; bbWeight=0.25, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr w21, [x19, #0x08]
- cbnz w21, G_M21658_IG16
+ ldr w25, [x21, #0x08]
+ cbnz w25, G_M21658_IG16
;; size=8 bbWeight=0.25 PerfScore 1.00
G_M21658_IG15: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
+ ; gcrRegs -[x21]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -405,8 +406,8 @@ G_M21658_IG15: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
strb w0, [x1, #0x0E]
b G_M21658_IG20
;; size=64 bbWeight=0.50 PerfScore 8.00
-G_M21658_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x1] +[x19]
+G_M21658_IG16: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x1] +[x21]
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
@@ -414,16 +415,16 @@ G_M21658_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr x1, [x1]
blr x1
; gcrRegs +[x0]
- mov x22, x0
- ; gcrRegs +[x22]
- cmp x19, x22
+ mov x27, x0
+ ; gcrRegs +[x27]
+ cmp x21, x27
beq G_M21658_IG18
- cbz x19, G_M21658_IG17
- cbz x22, G_M21658_IG17
- ldr w21, [x19, #0x08]
- ldr w0, [x22, #0x08]
+ cbz x21, G_M21658_IG17
+ cbz x27, G_M21658_IG17
+ ldr w25, [x21, #0x08]
+ ldr w0, [x27, #0x08]
; gcrRegs -[x0]
- cmp w21, w0
+ cmp w25, w0
bne G_M21658_IG17
mov w0, #1
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -437,21 +438,21 @@ G_M21658_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- ldr w0, [x22, #0x08]
- cmp w0, w21
...
+4 (+0.89%) : 27943.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+d__118:MoveNext():ubyte:this (FullOpts)
@@ -8,29 +8,30 @@
; 0 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 17, 9.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118>
-; V01 loc0 [V01,T04] ( 4, 2.50) ubyte -> registers
+; V00 this [V00,T00] ( 16, 9 ) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118>
+; V01 loc0 [V01,T04] ( 4, 2.50) ubyte -> x2
; V02 loc1 [V02,T05] ( 3, 2.50) int -> x1 single-def
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
-; V04 loc3 [V04,T08] ( 3, 1.50) ref -> x19 class-hnd exact single-def <Microsoft.CodeAnalysis.SecurityWellKnownAttributeData>
+; V04 loc3 [V04,T08] ( 3, 1.50) ref -> x20 class-hnd exact single-def <Microsoft.CodeAnalysis.SecurityWellKnownAttributeData>
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <Microsoft.Cci.SecurityAttribute>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T06] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V08 tmp2 [V08,T09] ( 3, 1.25) long -> x4 "fgMakeTemp is creating a new local variable"
+; V08 tmp2 [V08,T10] ( 3, 1.25) long -> x4 "fgMakeTemp is creating a new local variable"
; V09 tmp3 [V09,T02] ( 5, 3.75) ref -> x2 class-hnd "spilling QMark2" <<unknown class>>
;* V10 tmp4 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <Microsoft.Cci.SecurityAttribute>
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V13 tmp7 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
; V14 tmp8 [V14,T01] ( 6, 6 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V15 tmp9 [V15,T10] ( 2, 1 ) ref -> x15 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP
-; V16 tmp10 [V16,T12] ( 2, 1 ) short -> x1 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP
-; V17 tmp11 [V17,T11] ( 2, 1 ) ref -> x20 single-def "field V10.array (fldOffset=0x0)" P-INDEP
+; V15 tmp9 [V15,T11] ( 2, 1 ) ref -> x15 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP
+; V16 tmp10 [V16,T13] ( 2, 1 ) short -> x1 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP
+; V17 tmp11 [V17,T12] ( 2, 1 ) ref -> x19 single-def "field V10.array (fldOffset=0x0)" P-INDEP
;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref "field V11.<Attribute>k__BackingField (fldOffset=0x0)" P-DEP
;* V19 tmp13 [V19 ] ( 0, 0 ) short -> zero-ref "field V11.<Action>k__BackingField (fldOffset=0x8)" P-DEP
-; V20 PSPSym [V20,T13] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
-; V21 cse0 [V21,T03] ( 5, 2.50) ref -> x0 multi-def "CSE - aggressive"
-; V22 cse1 [V22,T07] ( 4, 2 ) long -> x19 "CSE - aggressive"
+; V20 PSPSym [V20,T14] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
+; V21 cse0 [V21,T09] ( 3, 1.50) ref -> x19 "CSE - moderate"
+; V22 cse1 [V22,T03] ( 5, 2.50) ref -> x1 multi-def "CSE - aggressive"
+; V23 cse2 [V23,T07] ( 4, 2 ) long -> x19 "CSE - aggressive"
;
; Lcl frame size = 24
@@ -57,14 +58,15 @@ G_M21908_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
G_M21908_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
movn w1, #0
str w1, [x0, #0x20]
- ldr x1, [x0, #0x08]
+ ldr x19, [x0, #0x08]
+ ; gcrRegs +[x19]
+ ldr x1, [x19, #0x08]
; gcrRegs +[x1]
- ldr x1, [x1, #0x08]
mov x2, x1
; gcrRegs +[x2]
cbz x2, G_M21908_IG11
;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x3, [x2]
movz x4, #0xD1FFAB1E
@@ -73,7 +75,7 @@ G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}
cmp x3, x4
beq G_M21908_IG07
;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
mov x0, x4
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
@@ -82,23 +84,17 @@ G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, b
mov x2, x0
; gcrRegs +[x2]
;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x19, [x2, #0x70]
- ; gcrRegs +[x19]
- cbz x19, G_M21908_IG11
- ldr x0, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x0]
- ldr x1, [x0, #0x08]
- ; gcrRegs +[x1]
- ldr x20, [x1, #0x20]
+ ldr x20, [x2, #0x70]
; gcrRegs +[x20]
+ cbz x20, G_M21908_IG11
+ ldr x19, [x19, #0x20]
movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
- ; gcrRegs -[x1-x2] +[x0]
+ ; gcrRegs -[x2] +[x0]
; gcr arg pop 0
mov x21, x0
; gcrRegs +[x21]
@@ -110,18 +106,18 @@ G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b
str w0, [x21, #0x14]
add x14, x21, #8
; byrRegs +[x14]
- mov x15, x19
- ; gcrRegs +[x15]
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x19]
- ; byrRegs -[x14]
- add x14, x21, #56
- ; byrRegs +[x14]
mov x15, x20
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x20]
; byrRegs -[x14]
+ add x14, x21, #56
+ ; byrRegs +[x14]
+ mov x15, x19
+ ; gcrRegs +[x15]
+ bl CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[x15 x19]
+ ; byrRegs -[x14]
mov x0, x21
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -131,20 +127,20 @@ G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b
blr x1
; gcrRegs -[x21]
; gcr arg pop 0
- ldr x19, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x19]
- add x14, x19, #24
+ ldr x1, [fp, #0x18] // [V00 this]
+ ; gcrRegs +[x1]
+ add x14, x1, #24
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- mov x0, x19
+ mov x0, x1
; gcrRegs +[x0]
- ;; size=124 bbWeight=0.50 PerfScore 16.50
+ ;; size=116 bbWeight=0.50 PerfScore 14.00
G_M21908_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19]
+ ; gcrRegs -[x1]
movn w11, #2
str w11, [x0, #0x20]
ldr x0, [x0, #0x18]
@@ -157,50 +153,56 @@ G_M21908_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
; gcrRegs -[x0]
; gcr arg pop 0
cbz w0, G_M21908_IG09
- ldr x20, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x20]
- ldr x0, [x20, #0x18]
+ ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
+ ldr x1, [x0, #0x18]
+ ; gcrRegs +[x1]
+ mov x0, x1
add x11, x19, #8
ldr x1, [x11]
+ ; gcrRegs -[x1]
blr x1
; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
- add x14, x20, #40
+ ldr x0, [fp, #0x18] // [V00 this]
+ add x14, x0, #40
; byrRegs +[x14]
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15]
+ ; gcrRegs -[x15]
; byrRegs -[x14]
- strh w1, [x20, #0x30]
- mov w0, #1
- str w0, [x20, #0x20]
- mov w2, w0
+ strh w1, [x0, #0x30]
+ mov w11, #1
+ str w11, [x0, #0x20]
+ sxtw w2, w11
b G_M21908_IG12
- ;; size=92 bbWeight=0.50 PerfScore 13.50
+ ;; size=100 bbWeight=0.50 PerfScore 14.75
G_M21908_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x20]
- movn w0, #0
- ldr x20, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x20]
- str w0, [x20, #0x20]
- ldr x0, [x20, #0x18]
+ ; gcrRegs -[x0]
+ movn w11, #0
+ ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
- cbz x0, G_M21908_IG10
+ str w11, [x0, #0x20]
+ ldr x1, [x0, #0x18]
+ ; gcrRegs +[x1]
+ cbz x1, G_M21908_IG10
+ mov x0, x1
add x11, x19, #16
ldr x1, [x11]
+ ; gcrRegs -[x1]
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=32 bbWeight=0.50 PerfScore 6.00
-G_M21908_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- str xzr, [x20, #0x18]
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=36 bbWeight=0.50 PerfScore 6.25
+G_M21908_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x0, [fp, #0x18] // [V00 this]
+ ; gcrRegs +[x0]
+ str xzr, [x0, #0x18]
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M21908_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
- mov w1, wzr
- mov w2, w1
- ;; size=8 bbWeight=0.50 PerfScore 0.50
+ ; gcrRegs -[x0]
+ mov w2, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M21908_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V00}
mov w0, w2
@@ -238,7 +240,7 @@ G_M21908_IG16: ; bbWeight=0, funclet epilog, nogc, extend
ret lr
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 448, prolog size 24, PerfScore 59.25, instruction count 112, allocated bytes for code 448 (MethodHash=1a3daa6b) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 452, prolog size 24, PerfScore 59.00, instruction count 113, allocated bytes for code 452 (MethodHash=1a3daa6b) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -249,7 +251,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 98 (0x00062) Actual length = 392 (0x000188)
---- Epilog scopes ----
---- Scope 0
...
+16 (+1.32%) : 29810.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
@@ -11,16 +11,16 @@
; V00 arg0 [V00,T07] ( 22, 23 ) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[System.String]>
; V01 loc0 [V01,T20] ( 7, 3.50) ref -> x20 class-hnd exact single-def <System.String>
; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [fp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 39,149.08) int -> x22
+; V03 loc2 [V03,T00] ( 41,183.08) int -> x22
; V04 loc3 [V04,T23] ( 4, 2 ) int -> x0
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
-; V06 loc5 [V06,T06] ( 9, 25.50) int -> x21
+; V06 loc5 [V06,T06] ( 9, 25.50) int -> x23
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V09 tmp2 [V09,T04] ( 5, 28 ) ref -> x22 class-hnd exact "impAppendStmt" <System.String>
+; V09 tmp2 [V09,T04] ( 5, 28 ) ref -> x21 class-hnd exact "impAppendStmt" <System.String>
; V10 tmp3 [V10,T26] ( 2, 2 ) long -> x1 "Inlining Arg"
; V11 tmp4 [V11,T25] ( 2, 2 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String>
-; V12 tmp5 [V12,T05] ( 5, 28 ) ref -> x23 class-hnd "Inlining Arg" <System.__Canon>
+; V12 tmp5 [V12,T05] ( 5, 28 ) ref -> x22 class-hnd "Inlining Arg" <System.__Canon>
; V13 tmp6 [V13,T15] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
; V14 tmp7 [V14,T17] ( 2, 8 ) byref -> x0 "impAppendStmt"
; V15 tmp8 [V15,T27] ( 3, 1.50) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
@@ -38,12 +38,12 @@
; V27 cse0 [V27,T14] ( 3, 10 ) int -> x0 "CSE - aggressive"
; V28 cse1 [V28,T28] ( 3, 1.50) long -> x24 "CSE - moderate"
; V29 cse2 [V29,T31] ( 2, 1 ) int -> x12 "CSE - moderate"
-; V30 cse3 [V30,T01] ( 3, 48 ) long -> x1 "CSE - aggressive"
+; V30 cse3 [V30,T02] ( 3, 48 ) long -> x1 "CSE - aggressive"
; V31 cse4 [V31,T11] ( 3, 12 ) long -> x1 "CSE - aggressive"
; V32 cse5 [V32,T12] ( 3, 12 ) int -> x0 "CSE - aggressive"
; V33 cse6 [V33,T10] ( 3, 12 ) ref -> x1 "CSE - aggressive"
-; V34 cse7 [V34,T03] ( 15, 30.54) int -> x21 "CSE - aggressive"
-; V35 cse8 [V35,T02] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
+; V34 cse7 [V34,T01] ( 17, 64.54) int -> x21 "CSE - aggressive"
+; V35 cse8 [V35,T03] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
; V36 cse9 [V36,T16] ( 4, 8 ) int -> x24 "CSE - aggressive"
; V37 cse10 [V37,T18] ( 2, 8 ) int -> x3 "CSE - aggressive"
; V38 cse11 [V38,T13] ( 3, 11.88) int -> x0 "CSE - aggressive"
@@ -71,19 +71,19 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=56 bbWeight=1 PerfScore 10.50
G_M28069_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x10]
- cbz w0, G_M28069_IG27
+ cbz w0, G_M28069_IG26
;; size=8 bbWeight=1 PerfScore 4.00
G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w1, #0
- bls G_M28069_IG29
+ bls G_M28069_IG28
ldr x20, [x0, #0x10]
; gcrRegs +[x20]
ldr w21, [x20, #0x08]
cmp w21, #100
- bgt G_M28069_IG27
+ bgt G_M28069_IG26
add w0, w21, #2
; gcrRegs -[x0]
mov w1, #2
@@ -110,105 +110,103 @@ G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
mov x1, sp
;; size=8 bbWeight=0.50 PerfScore 0.50
G_M28069_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w0, #31, G_M28069_IG30
+ tbnz w0, #31, G_M28069_IG29
str x1, [fp, #-0x48] // [V17 tmp10]
str w0, [fp, #-0x40] // [V18 tmp11]
mov w22, wzr
cmp w21, #0
- ble G_M28069_IG15
+ ble G_M28069_IG14
add x23, x20, #12
; byrRegs +[x23]
;; size=28 bbWeight=0.50 PerfScore 2.75
G_M28069_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldrh w0, [x23, w22, UXTW #2]
cmp w0, #39
- bne G_M28069_IG11
+ bne G_M28069_IG10
;; size=12 bbWeight=4 PerfScore 18.00
G_M28069_IG08: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V18 tmp11]
cmp w22, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x0]
ubfiz x1, x22, #1, #32
add x0, x0, x1
+ cmp w22, w21
+ bhs G_M28069_IG28
ldrh w1, [x23, x1]
strh w1, [x0]
add w22, w22, #1
cmp w21, w22
- ble G_M28069_IG09
+ ble G_M28069_IG26
+ cmp w22, w21
+ bhs G_M28069_IG28
ldrh w0, [x23, w22, UXTW #2]
; byrRegs -[x0]
cmp w0, #39
bne G_M28069_IG08
- ;; size=56 bbWeight=16 PerfScore 280.00
-G_M28069_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
- cmp w21, w22
- bgt G_M28069_IG12
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19-x20]
- ; byrRegs -[x23]
- b G_M28069_IG27
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
- ; gcrRegs +[x19-x20]
- ; byrRegs +[x23]
+ ;; size=72 bbWeight=16 PerfScore 328.00
+G_M28069_IG09: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref
+ b G_M28069_IG11
+ ;; size=4 bbWeight=4 PerfScore 4.00
+G_M28069_IG10: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
cmp w0, #121
- beq G_M28069_IG14
+ beq G_M28069_IG13
;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V18 tmp11]
cmp w22, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x0]
ubfiz x1, x22, #1, #32
add x0, x0, x1
+ cmp w22, w21
+ bhs G_M28069_IG28
ldrh w1, [x23, x1]
strh w1, [x0]
add w22, w22, #1
cmp w21, w22
bgt G_M28069_IG07
- ;; size=44 bbWeight=4 PerfScore 52.00
-G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=52 bbWeight=4 PerfScore 58.00
+G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x23]
- b G_M28069_IG15
+ b G_M28069_IG14
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #-0x40] // [V18 tmp11]
cmp w22, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x0]
mov w1, #121
strh w1, [x0, w22, UXTW #2]
;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
sub w0, w21, #1
cmp w0, w22
- ble G_M28069_IG27
+ ble G_M28069_IG26
add w0, w22, #1
cmp w0, w21
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
add x23, x20, #12
; byrRegs +[x23]
add w0, w22, #1
ubfiz x24, x0, #1, #32
ldrh w0, [x23, x24]
cmp w0, #121
- bne G_M28069_IG27
+ bne G_M28069_IG26
add w25, w22, #2
cmp w21, w25
- ble G_M28069_IG16
+ ble G_M28069_IG15
cmp w25, w21
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldrh w0, [x23, w25, UXTW #2]
cmp w0, #121
- beq G_M28069_IG27
+ beq G_M28069_IG26
;; size=80 bbWeight=0.50 PerfScore 9.25
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w0, w22, #3
ldr w1, [fp, #-0x40] // [V18 tmp11]
cmp w0, w1
@@ -222,7 +220,7 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
add w0, w22, #1
ldr w1, [fp, #-0x40] // [V18 tmp11]
cmp w0, w1
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x0]
mov w1, #121
@@ -230,7 +228,7 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
ldr w0, [fp, #-0x40] // [V18 tmp11]
; byrRegs -[x0]
cmp w25, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x0]
strh w1, [x0, w25, UXTW #2]
@@ -238,7 +236,7 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
; byrRegs -[x0]
ldr w1, [fp, #-0x40] // [V18 tmp11]
cmp w0, w1
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x0]
add w1, w22, #3
@@ -246,15 +244,15 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
strh w2, [x0, w1, UXTW #2]
sxtw w22, w25
cmp w21, w22
- ble G_M28069_IG20
- tbnz w22, #31, G_M28069_IG19
+ ble G_M28069_IG19
+ tbnz w22, #31, G_M28069_IG18
;; size=132 bbWeight=0.50 PerfScore 17.00
-G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG16: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0]
add w0, w22, #2
ldr w1, [fp, #-0x40] // [V18 tmp11]
cmp w0, w1
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x1, [fp, #-0x48] // [V17 tmp10]
; byrRegs +[x1]
ubfiz x0, x0, #1, #32
@@ -265,32 +263,32 @@ G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800
strh w1, [x0]
add w22, w22, #1
cmp w21, w22
- bgt G_M28069_IG17
...
smoke_tests.nativeaot.windows.arm64.checked.mch
-20 (-8.20%) : 12502.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
@@ -8,16 +8,17 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V01 arg1 [V01,T07] ( 4, 3.50) int -> x2 single-def
-; V02 arg2 [V02,T08] ( 3, 2.50) int -> x3 single-def
-; V03 arg3 [V03,T02] ( 6, 18 ) ushort -> x4 single-def
-; V04 loc0 [V04,T00] ( 24, 79 ) int -> x6
-; V05 loc1 [V05,T06] ( 8, 10.50) int -> x5
+; V01 arg1 [V01,T08] ( 4, 3.50) int -> x2 single-def
+; V02 arg2 [V02,T09] ( 3, 2.50) int -> x3 single-def
+; V03 arg3 [V03,T06] ( 4, 10 ) ushort -> x4 single-def
+; V04 loc0 [V04,T00] ( 22, 77.50) int -> x6
+; V05 loc1 [V05,T07] ( 8, 10.50) int -> x5
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T04] ( 2, 16 ) int -> x6 "dup spill"
; V08 tmp2 [V08,T05] ( 2, 16 ) int -> x6 "dup spill"
; V09 tmp3 [V09,T03] ( 5, 17 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp4 [V10,T01] ( 8, 25.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V10 tmp4 [V10,T01] ( 7, 25 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V11 cse0 [V11,T02] ( 6, 24 ) int -> x8 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -35,104 +36,97 @@ G_M48691_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
sub w6, w6, #1
;; size=4 bbWeight=2 PerfScore 1.00
G_M48691_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- tbnz w6, #31, G_M48691_IG06
+ tbnz w6, #31, G_M48691_IG12
;; size=4 bbWeight=8 PerfScore 8.00
G_M48691_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w6, w1
- bhs G_M48691_IG22
+ bhs G_M48691_IG21
ldrh w7, [x0, w6, UXTW #2]
uxth w8, w4
cmp w7, w8
bne G_M48691_IG03
;; size=24 bbWeight=4 PerfScore 26.00
-G_M48691_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- tbnz w6, #31, G_M48691_IG13
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M48691_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- b G_M48691_IG09
+G_M48691_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+ b G_M48691_IG08
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M48691_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+G_M48691_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
add w5, w5, #1
;; size=4 bbWeight=2 PerfScore 1.00
-G_M48691_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+G_M48691_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
sub w6, w6, #1
- tbnz w6, #31, G_M48691_IG10
+ tbnz w6, #31, G_M48691_IG09
cmp w6, w1
- bhs G_M48691_IG22
+ bhs G_M48691_IG21
ldrh w7, [x0, w6, UXTW #2]
- uxth w8, w4
cmp w7, w8
- beq G_M48691_IG08
- ;; size=32 bbWeight=4 PerfScore 32.00
-G_M48691_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ beq G_M48691_IG07
+ ;; size=28 bbWeight=4 PerfScore 30.00
+G_M48691_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w5, #1
- bgt G_M48691_IG13
+ bgt G_M48691_IG12
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M48691_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M48691_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M48691_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M48691_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M48691_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref
+G_M48691_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref
; byrRegs +[x0]
add w6, w2, w3
- b G_M48691_IG15
+ b G_M48691_IG14
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M48691_IG14: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+G_M48691_IG13: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
add w6, w6, #1
;; size=4 bbWeight=2 PerfScore 1.00
-G_M48691_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- cmp w6, w1
- bge G_M48691_IG16
- cmp w6, w1
- bhs G_M48691_IG22
- ldrh w5, [x0, w6, UXTW #2]
- uxth w2, w4
- cmp w5, w2
- bne G_M48691_IG14
- ;; size=32 bbWeight=4 PerfScore 32.00
-G_M48691_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- cmp w6, w1
- bge G_M48691_IG20
- mov w5, wzr
- b G_M48691_IG18
- ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M48691_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- add w5, w5, #1
- ;; size=4 bbWeight=2 PerfScore 1.00
-G_M48691_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- add w6, w6, #1
+G_M48691_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w6, w1
bge G_M48691_IG19
cmp w6, w1
- bhs G_M48691_IG22
+ bhs G_M48691_IG21
+ ldrh w5, [x0, w6, UXTW #2]
+ uxth w8, w4
+ cmp w5, w8
+ bne G_M48691_IG13
+ ;; size=32 bbWeight=4 PerfScore 32.00
+G_M48691_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+ mov w5, wzr
+ b G_M48691_IG17
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M48691_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+ add w5, w5, #1
+ ;; size=4 bbWeight=2 PerfScore 1.00
+G_M48691_IG17: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ add w6, w6, #1
+ cmp w6, w1
+ bge G_M48691_IG18
+ cmp w6, w1
+ bhs G_M48691_IG21
ldrh w2, [x0, w6, UXTW #2]
- uxth w3, w4
- cmp w2, w3
- beq G_M48691_IG17
- ;; size=36 bbWeight=4 PerfScore 34.00
-G_M48691_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp w2, w8
+ beq G_M48691_IG16
+ ;; size=32 bbWeight=4 PerfScore 32.00
+G_M48691_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
cmp w5, #1
- ble G_M48691_IG11
+ ble G_M48691_IG10
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M48691_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M48691_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M48691_IG21: ; bbWeight=0.50, epilog, nogc, extend
+G_M48691_IG20: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M48691_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M48691_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 8, PerfScore 147.25, instruction count 61, allocated bytes for code 244 (MethodHash=af0b41cc) for method System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
+; Total bytes of code 224, prolog size 8, PerfScore 141.50, instruction count 56, allocated bytes for code 224 (MethodHash=af0b41cc) for method System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -143,7 +137,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
+ 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)
-20 (-8.20%) : 7336.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
@@ -9,16 +9,17 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V01 arg1 [V01,T07] ( 4, 3.50) int -> x2 single-def
-; V02 arg2 [V02,T08] ( 3, 2.50) int -> x3 single-def
-; V03 arg3 [V03,T02] ( 6, 18 ) ushort -> x4 single-def
-; V04 loc0 [V04,T00] ( 24, 79 ) int -> x6
-; V05 loc1 [V05,T06] ( 8, 10.50) int -> x5
+; V01 arg1 [V01,T08] ( 4, 3.50) int -> x2 single-def
+; V02 arg2 [V02,T09] ( 3, 2.50) int -> x3 single-def
+; V03 arg3 [V03,T06] ( 4, 10 ) ushort -> x4 single-def
+; V04 loc0 [V04,T00] ( 22, 77.50) int -> x6
+; V05 loc1 [V05,T07] ( 8, 10.50) int -> x5
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T04] ( 2, 16 ) int -> x6 "dup spill"
; V08 tmp2 [V08,T05] ( 2, 16 ) int -> x6 "dup spill"
; V09 tmp3 [V09,T03] ( 5, 17 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp4 [V10,T01] ( 8, 25.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V10 tmp4 [V10,T01] ( 7, 25 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V11 cse0 [V11,T02] ( 6, 24 ) int -> x8 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -36,104 +37,97 @@ G_M48691_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
sub w6, w6, #1
;; size=4 bbWeight=2 PerfScore 1.00
G_M48691_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- tbnz w6, #31, G_M48691_IG06
+ tbnz w6, #31, G_M48691_IG12
;; size=4 bbWeight=8 PerfScore 8.00
G_M48691_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w6, w1
- bhs G_M48691_IG22
+ bhs G_M48691_IG21
ldrh w7, [x0, w6, UXTW #2]
uxth w8, w4
cmp w7, w8
bne G_M48691_IG03
;; size=24 bbWeight=4 PerfScore 26.00
-G_M48691_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- tbnz w6, #31, G_M48691_IG13
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M48691_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- b G_M48691_IG09
+G_M48691_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+ b G_M48691_IG08
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M48691_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+G_M48691_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
add w5, w5, #1
;; size=4 bbWeight=2 PerfScore 1.00
-G_M48691_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+G_M48691_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
sub w6, w6, #1
- tbnz w6, #31, G_M48691_IG10
+ tbnz w6, #31, G_M48691_IG09
cmp w6, w1
- bhs G_M48691_IG22
+ bhs G_M48691_IG21
ldrh w7, [x0, w6, UXTW #2]
- uxth w8, w4
cmp w7, w8
- beq G_M48691_IG08
- ;; size=32 bbWeight=4 PerfScore 32.00
-G_M48691_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ beq G_M48691_IG07
+ ;; size=28 bbWeight=4 PerfScore 30.00
+G_M48691_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w5, #1
- bgt G_M48691_IG13
+ bgt G_M48691_IG12
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M48691_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M48691_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M48691_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M48691_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M48691_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref
+G_M48691_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref
; byrRegs +[x0]
add w6, w2, w3
- b G_M48691_IG15
+ b G_M48691_IG14
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M48691_IG14: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+G_M48691_IG13: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
add w6, w6, #1
;; size=4 bbWeight=2 PerfScore 1.00
-G_M48691_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- cmp w6, w1
- bge G_M48691_IG16
- cmp w6, w1
- bhs G_M48691_IG22
- ldrh w5, [x0, w6, UXTW #2]
- uxth w2, w4
- cmp w5, w2
- bne G_M48691_IG14
- ;; size=32 bbWeight=4 PerfScore 32.00
-G_M48691_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- cmp w6, w1
- bge G_M48691_IG20
- mov w5, wzr
- b G_M48691_IG18
- ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M48691_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- add w5, w5, #1
- ;; size=4 bbWeight=2 PerfScore 1.00
-G_M48691_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- add w6, w6, #1
+G_M48691_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w6, w1
bge G_M48691_IG19
cmp w6, w1
- bhs G_M48691_IG22
+ bhs G_M48691_IG21
+ ldrh w5, [x0, w6, UXTW #2]
+ uxth w8, w4
+ cmp w5, w8
+ bne G_M48691_IG13
+ ;; size=32 bbWeight=4 PerfScore 32.00
+G_M48691_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+ mov w5, wzr
+ b G_M48691_IG17
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M48691_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+ add w5, w5, #1
+ ;; size=4 bbWeight=2 PerfScore 1.00
+G_M48691_IG17: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ add w6, w6, #1
+ cmp w6, w1
+ bge G_M48691_IG18
+ cmp w6, w1
+ bhs G_M48691_IG21
ldrh w2, [x0, w6, UXTW #2]
- uxth w3, w4
- cmp w2, w3
- beq G_M48691_IG17
- ;; size=36 bbWeight=4 PerfScore 34.00
-G_M48691_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp w2, w8
+ beq G_M48691_IG16
+ ;; size=32 bbWeight=4 PerfScore 32.00
+G_M48691_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
cmp w5, #1
- ble G_M48691_IG11
+ ble G_M48691_IG10
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M48691_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M48691_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M48691_IG21: ; bbWeight=0.50, epilog, nogc, extend
+G_M48691_IG20: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M48691_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M48691_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 8, PerfScore 147.25, instruction count 61, allocated bytes for code 244 (MethodHash=af0b41cc) for method System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
+; Total bytes of code 224, prolog size 8, PerfScore 141.50, instruction count 56, allocated bytes for code 224 (MethodHash=af0b41cc) for method System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -144,7 +138,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
+ 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)
-16 (-6.45%) : 1406.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
@@ -7,21 +7,23 @@
; fully interruptible
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 9, 7 ) byref -> x0 single-def
+; V00 arg0 [V00,T05] ( 9, 7 ) byref -> x0 single-def
; V01 arg1 [V01,T02] ( 5, 11.50) int -> x1 single-def
-; V02 arg2 [V02,T05] ( 3, 2.50) ubyte -> x2 single-def
+; V02 arg2 [V02,T07] ( 3, 2.50) ubyte -> x2 single-def
; V03 loc0 [V03,T01] ( 8, 15.50) long -> x3
-; V04 loc1 [V04,T00] ( 19, 44 ) int -> x4
+; V04 loc1 [V04,T00] ( 16, 41 ) int -> x4
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T07] ( 3, 3 ) byref -> x4 single-def "dup spill"
-; V07 tmp2 [V07,T08] ( 3, 3 ) long -> x1 "dup spill"
+; V06 tmp1 [V06,T09] ( 3, 3 ) byref -> x4 single-def "dup spill"
+; V07 tmp2 [V07,T11] ( 2, 2 ) long -> x1 "dup spill"
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V09 tmp4 [V09,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V10 tmp5 [V10,T10] ( 3, 1.50) ubyte -> x1 "Inline stloc first use temp"
-; V11 tmp6 [V11,T09] ( 2, 2 ) byref -> x3 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+;* V09 tmp4 [V09,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V10 tmp5 [V10,T12] ( 3, 1.50) ubyte -> x1 "Inline stloc first use temp"
+; V11 tmp6 [V11,T10] ( 2, 2 ) byref -> x3 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-; V13 tmp8 [V13,T06] ( 2, 4 ) long -> x3 "Cast away GC"
-; V14 cse0 [V14,T03] ( 3, 10 ) int -> x1 "CSE - aggressive"
+; V13 tmp8 [V13,T08] ( 2, 4 ) long -> x3 "Cast away GC"
+; V14 cse0 [V14,T06] ( 3, 8.50) int -> x2 "CSE - aggressive"
+; V15 cse1 [V15,T03] ( 4, 10.50) int -> x1 "CSE - aggressive"
+; V16 cse2 [V16,T04] ( 3, 10 ) int -> x1 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -66,26 +68,22 @@ G_M4398_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
b G_M4398_IG10
;; size=4 bbWeight=1 PerfScore 1.00
G_M4398_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- sub w4, w4, #1
+ sxtw w4, w1
;; size=4 bbWeight=2 PerfScore 1.00
G_M4398_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- cmp w4, #0
- ble G_M4398_IG11
- sub w1, w4, #1
- ldrb w1, [x3, w1, SXTW #2]
- cmp w1, #57
- beq G_M4398_IG09
- ;; size=24 bbWeight=4 PerfScore 26.00
-G_M4398_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w4, #0
ble G_M4398_IG12
sub w1, w4, #1
+ ldrb w2, [x3, w1, SXTW #2]
+ cmp w2, #57
+ beq G_M4398_IG09
+ ;; size=24 bbWeight=4 PerfScore 26.00
+G_M4398_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
add x1, x3, w1, SXTW
- ldrb w2, [x1]
add w2, w2, #1
strb w2, [x1]
b G_M4398_IG15
- ;; size=32 bbWeight=0.50 PerfScore 4.25
+ ;; size=16 bbWeight=0.50 PerfScore 1.75
G_M4398_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
add x4, x0, #4
; byrRegs +[x4]
@@ -131,7 +129,7 @@ G_M4398_IG18: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 248, prolog size 8, PerfScore 112.25, instruction count 62, allocated bytes for code 248 (MethodHash=4357eed1) for method System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
+; Total bytes of code 232, prolog size 8, PerfScore 109.75, instruction count 58, allocated bytes for code 232 (MethodHash=4357eed1) for method System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
; ============================================================
Unwind Info:
@@ -142,7 +140,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 62 (0x0003e) Actual length = 248 (0x0000f8)
+ Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+1.61%) : 2566.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
@@ -10,10 +10,10 @@
; V00 arg0 [V00,T06] ( 18, 21 ) ref -> x19 class-hnd exact single-def <System.Collections.Generic.List`1[System.String]>
; V01 loc0 [V01,T16] ( 7, 3.50) ref -> x20 class-hnd exact single-def <System.String>
; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [fp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 39,149.08) int -> x22
+; V03 loc2 [V03,T00] ( 41,183.08) int -> x22
; V04 loc3 [V04,T20] ( 4, 2 ) int -> x0
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
-; V06 loc5 [V06,T04] ( 8, 25 ) int -> x21
+; V06 loc5 [V06,T04] ( 8, 25 ) int -> x23
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V09 tmp2 [V09,T07] ( 2, 16 ) ref -> x2 class-hnd exact "impAppendStmt" <System.String>
@@ -38,13 +38,13 @@
; V28 cse0 [V28,T14] ( 3, 10 ) int -> x0 "CSE - aggressive"
; V29 cse1 [V29,T25] ( 3, 1.50) long -> x24 "CSE - moderate"
; V30 cse2 [V30,T29] ( 2, 1 ) int -> x12 "CSE - moderate"
-; V31 cse3 [V31,T01] ( 3, 48 ) long -> x1 "CSE - aggressive"
+; V31 cse3 [V31,T02] ( 3, 48 ) long -> x1 "CSE - aggressive"
; V32 cse4 [V32,T11] ( 3, 12 ) long -> x1 "CSE - aggressive"
; V33 cse5 [V33,T12] ( 3, 12 ) int -> x1 "CSE - aggressive"
; V34 cse6 [V34,T10] ( 3, 12 ) ref -> x0 "CSE - aggressive"
; V35 cse7 [V35,T26] ( 3, 1.50) int -> x1 "CSE - moderate"
-; V36 cse8 [V36,T03] ( 15, 30.54) int -> x21 "CSE - aggressive"
-; V37 cse9 [V37,T02] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
+; V36 cse8 [V36,T01] ( 17, 64.54) int -> x21 "CSE - aggressive"
+; V37 cse9 [V37,T03] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
; V38 cse10 [V38,T15] ( 2, 8 ) int -> x3 "CSE - aggressive"
; V39 cse11 [V39,T13] ( 3, 11.88) int -> x0 "CSE - aggressive"
; V40 cse12 [V40,T17] ( 7, 3.50) int -> x25 "CSE - moderate"
@@ -69,19 +69,19 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=52 bbWeight=1 PerfScore 12.50
G_M28069_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x10]
- cbz w0, G_M28069_IG24
+ cbz w0, G_M28069_IG23
;; size=8 bbWeight=1 PerfScore 4.00
G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w1, #0
- bls G_M28069_IG28
+ bls G_M28069_IG27
ldr x20, [x0, #0x10]
; gcrRegs +[x20]
ldr w21, [x20, #0x08]
cmp w21, #100
- bgt G_M28069_IG24
+ bgt G_M28069_IG23
add w0, w21, #2
; gcrRegs -[x0]
mov w1, #2
@@ -108,109 +108,107 @@ G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
mov x1, sp
;; size=8 bbWeight=0.50 PerfScore 0.50
G_M28069_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w0, #31, G_M28069_IG29
+ tbnz w0, #31, G_M28069_IG28
str x1, [fp, #-0x48] // [V16 tmp9]
str w0, [fp, #-0x40] // [V17 tmp10]
mov w22, wzr
cmp w21, #0
- ble G_M28069_IG15
+ ble G_M28069_IG14
add x23, x20, #12
; byrRegs +[x23]
;; size=28 bbWeight=0.50 PerfScore 2.75
G_M28069_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldrh w0, [x23, w22, UXTW #2]
cmp w0, #39
- bne G_M28069_IG11
+ bne G_M28069_IG10
;; size=12 bbWeight=4 PerfScore 18.00
G_M28069_IG08: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V17 tmp10]
cmp w22, w0
- bhs G_M28069_IG28
+ bhs G_M28069_IG27
ldr x0, [fp, #-0x48] // [V16 tmp9]
; byrRegs +[x0]
ubfiz x1, x22, #1, #32
add x0, x0, x1
+ cmp w22, w21
+ bhs G_M28069_IG27
ldrh w1, [x23, x1]
strh w1, [x0]
add w22, w22, #1
cmp w21, w22
- ble G_M28069_IG09
+ ble G_M28069_IG23
+ cmp w22, w21
+ bhs G_M28069_IG27
ldrh w0, [x23, w22, UXTW #2]
; byrRegs -[x0]
cmp w0, #39
bne G_M28069_IG08
- ;; size=56 bbWeight=16 PerfScore 280.00
-G_M28069_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
- cmp w21, w22
- bgt G_M28069_IG12
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19-x20]
- ; byrRegs -[x23]
- b G_M28069_IG24
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
- ; gcrRegs +[x19-x20]
- ; byrRegs +[x23]
+ ;; size=72 bbWeight=16 PerfScore 328.00
+G_M28069_IG09: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref
+ b G_M28069_IG11
+ ;; size=4 bbWeight=4 PerfScore 4.00
+G_M28069_IG10: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
cmp w0, #121
- beq G_M28069_IG14
+ beq G_M28069_IG13
;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V17 tmp10]
cmp w22, w0
- bhs G_M28069_IG28
+ bhs G_M28069_IG27
ldr x0, [fp, #-0x48] // [V16 tmp9]
; byrRegs +[x0]
ubfiz x1, x22, #1, #32
add x0, x0, x1
+ cmp w22, w21
+ bhs G_M28069_IG27
ldrh w1, [x23, x1]
strh w1, [x0]
add w22, w22, #1
cmp w21, w22
bgt G_M28069_IG07
- ;; size=44 bbWeight=4 PerfScore 52.00
-G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=52 bbWeight=4 PerfScore 58.00
+G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x23]
- b G_M28069_IG15
+ b G_M28069_IG14
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #-0x40] // [V17 tmp10]
cmp w22, w0
- bhs G_M28069_IG28
+ bhs G_M28069_IG27
ldr x0, [fp, #-0x48] // [V16 tmp9]
; byrRegs +[x0]
mov w1, #121
strh w1, [x0, w22, UXTW #2]
;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
sub w0, w21, #1
cmp w0, w22
- ble G_M28069_IG24
+ ble G_M28069_IG23
add w0, w22, #1
cmp w0, w21
- bhs G_M28069_IG28
+ bhs G_M28069_IG27
add x23, x20, #12
; byrRegs +[x23]
add w0, w22, #1
ubfiz x24, x0, #1, #32
ldrh w0, [x23, x24]
cmp w0, #121
- bne G_M28069_IG24
+ bne G_M28069_IG23
add w25, w22, #2
cmp w21, w25
- ble G_M28069_IG16
+ ble G_M28069_IG15
cmp w25, w21
- bhs G_M28069_IG28
+ bhs G_M28069_IG27
ldrh w0, [x23, w25, UXTW #2]
cmp w0, #121
- beq G_M28069_IG24
+ beq G_M28069_IG23
;; size=80 bbWeight=0.50 PerfScore 9.25
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w0, w22, #3
ldr w1, [fp, #-0x40] // [V17 tmp10]
cmp w0, w1
- blt G_M28069_IG17
+ blt G_M28069_IG16
adrp x0, [HIGH RELOC #0xD1FFAB1E]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
; gcrRegs +[x0]
@@ -221,11 +219,11 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
; gcrRegs -[x0-x1]
; gcr arg pop 0
;; size=36 bbWeight=0.50 PerfScore 3.50
-G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w0, w22, #1
ldr w1, [fp, #-0x40] // [V17 tmp10]
cmp w0, w1
- bhs G_M28069_IG28
+ bhs G_M28069_IG27
ldr x0, [fp, #-0x48] // [V16 tmp9]
; byrRegs +[x0]
mov w1, #121
@@ -233,7 +231,7 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
ldr w0, [fp, #-0x40] // [V17 tmp10]
; byrRegs -[x0]
cmp w25, w0
- bhs G_M28069_IG28
+ bhs G_M28069_IG27
ldr x0, [fp, #-0x48] // [V16 tmp9]
; byrRegs +[x0]
strh w1, [x0, w25, UXTW #2]
@@ -241,7 +239,7 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
; byrRegs -[x0]
ldr w1, [fp, #-0x40] // [V17 tmp10]
cmp w0, w1
- bhs G_M28069_IG28
+ bhs G_M28069_IG27
ldr x0, [fp, #-0x48] // [V16 tmp9]
; byrRegs +[x0]
add w1, w22, #3
@@ -249,15 +247,15 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800
strh w2, [x0, w1, UXTW #2]
sxtw w22, w25
cmp w21, w22
- ble G_M28069_IG21
- tbnz w22, #31, G_M28069_IG20
+ ble G_M28069_IG20
+ tbnz w22, #31, G_M28069_IG19
;; size=96 bbWeight=0.50 PerfScore 12.50
-G_M28069_IG18: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0]
add w0, w22, #2
ldr w1, [fp, #-0x40] // [V17 tmp10]
cmp w0, w1
- bhs G_M28069_IG28
+ bhs G_M28069_IG27
ldr x1, [fp, #-0x48] // [V16 tmp9]
; byrRegs +[x1]
ubfiz x0, x0, #1, #32
@@ -268,32 +266,32 @@ G_M28069_IG18: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800
strh w1, [x0]
...
+8 (+2.50%) : 4217.dasm - System.Enum+<>c__641[uint]:<FormatNumberAsHex>b__64_0(System.Span
1[ushort],long):this (FullOpts)
@@ -10,32 +10,32 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd exact single-def <System.Enum+<>c__64`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ushort]>
-; V02 arg2 [V02,T02] ( 3, 2.50) long -> x3 single-def
+; V02 arg2 [V02,T01] ( 3, 2.50) long -> x3 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) ubyte -> zero-ref
;* V04 loc1 [V04,T17] ( 0, 0 ) int -> zero-ref ld-addr-op
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
; V08 tmp3 [V08,T08] ( 5, 2.50) int -> x0 "Inline stloc first use temp"
-; V09 tmp4 [V09,T04] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V09 tmp4 [V09,T03] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V10 tmp5 [V10,T09] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
; V11 tmp6 [V11,T10] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V13 tmp8 [V13,T05] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V13 tmp8 [V13,T04] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V14 tmp9 [V14,T11] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
; V15 tmp10 [V15,T12] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V17 tmp12 [V17,T06] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V17 tmp12 [V17,T05] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V18 tmp13 [V18,T13] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
; V19 tmp14 [V19,T14] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
;* V20 tmp15 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V21 tmp16 [V21,T07] ( 3, 3 ) ubyte -> x0 "Inlining Arg"
+; V21 tmp16 [V21,T06] ( 3, 3 ) ubyte -> x0 "Inlining Arg"
; V22 tmp17 [V22,T15] ( 3, 1.50) int -> x0 "Inline stloc first use temp"
; V23 tmp18 [V23,T16] ( 3, 1.50) int -> x0 "Inline stloc first use temp"
;* V24 tmp19 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V25 tmp20 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V26 tmp21 [V26,T00] ( 9, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp22 [V27,T03] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V27 tmp22 [V27,T02] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp24 [V29 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
@@ -46,14 +46,15 @@
;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
;* V36 tmp31 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
-; V38 cse0 [V38,T01] ( 6, 6 ) ref -> x1 multi-def "CSE - aggressive"
+; V38 cse0 [V38,T07] ( 5, 2.50) ref -> x19 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M28263_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M28263_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
cmp w2, #8
@@ -127,40 +128,42 @@ G_M28263_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, b
strh w0, [x1, #0x0C]
b G_M28263_IG05
;; size=264 bbWeight=0.50 PerfScore 23.75
-G_M28263_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28263_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x1]
- adrp x1, [HIGH RELOC #0xD1FFAB1E]
- add x1, x1, [LOW RELOC #0xD1FFAB1E]
- ; gcrRegs +[x1]
- mov x0, x1
+ adrp x19, [HIGH RELOC #0xD1FFAB1E]
+ add x19, x19, [LOW RELOC #0xD1FFAB1E]
+ ; gcrRegs +[x19]
+ mov x0, x19
; gcrRegs +[x0]
+ mov x1, x19
+ ; gcrRegs +[x1]
bl <unknown method>
; gcrRegs -[x0-x1]
- adrp x1, [HIGH RELOC #0xD1FFAB1E]
- add x1, x1, [LOW RELOC #0xD1FFAB1E]
- ; gcrRegs +[x1]
- mov x0, x1
+ mov x0, x19
; gcrRegs +[x0]
+ mov x1, x19
+ ; gcrRegs +[x1]
bl <unknown method>
- ; gcrRegs -[x0-x1]
- ;; size=32 bbWeight=1 PerfScore 5.00
+ ; gcrRegs -[x0-x1 x19]
+ ;; size=32 bbWeight=0.50 PerfScore 2.50
G_M28263_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 320, prolog size 8, PerfScore 33.75, instruction count 80, allocated bytes for code 320 (MethodHash=6ab79198) for method System.Enum+<>c__64`1[uint]:<FormatNumberAsHex>b__64_0(System.Span`1[ushort],long):this (FullOpts)
+; Total bytes of code 328, prolog size 12, PerfScore 34.25, instruction count 82, allocated bytes for code 328 (MethodHash=6ab79198) for method System.Enum+<>c__64`1[uint]:<FormatNumberAsHex>b__64_0(System.Span`1[ushort],long):this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 80 (0x00050) Actual length = 320 (0x000140)
+ Function Length : 82 (0x00052) Actual length = 328 (0x000148)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -168,7 +171,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
+8 (+2.50%) : 1000.dasm - System.Enum+<>c__641[uint]:<FormatNumberAsHex>b__64_0(System.Span
1[ushort],long):this (FullOpts)
@@ -9,32 +9,32 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd exact single-def <System.Enum+<>c__64`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ushort]>
-; V02 arg2 [V02,T02] ( 3, 2.50) long -> x3 single-def
+; V02 arg2 [V02,T01] ( 3, 2.50) long -> x3 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) ubyte -> zero-ref
;* V04 loc1 [V04,T17] ( 0, 0 ) int -> zero-ref ld-addr-op
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
; V08 tmp3 [V08,T08] ( 5, 2.50) int -> x0 "Inline stloc first use temp"
-; V09 tmp4 [V09,T04] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V09 tmp4 [V09,T03] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V10 tmp5 [V10,T09] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
; V11 tmp6 [V11,T10] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V13 tmp8 [V13,T05] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V13 tmp8 [V13,T04] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V14 tmp9 [V14,T11] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
; V15 tmp10 [V15,T12] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V17 tmp12 [V17,T06] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V17 tmp12 [V17,T05] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V18 tmp13 [V18,T13] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
; V19 tmp14 [V19,T14] ( 3, 1.50) int -> x2 "Inline stloc first use temp"
;* V20 tmp15 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V21 tmp16 [V21,T07] ( 3, 3 ) ubyte -> x0 "Inlining Arg"
+; V21 tmp16 [V21,T06] ( 3, 3 ) ubyte -> x0 "Inlining Arg"
; V22 tmp17 [V22,T15] ( 3, 1.50) int -> x0 "Inline stloc first use temp"
; V23 tmp18 [V23,T16] ( 3, 1.50) int -> x0 "Inline stloc first use temp"
;* V24 tmp19 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V25 tmp20 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V26 tmp21 [V26,T00] ( 9, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp22 [V27,T03] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V27 tmp22 [V27,T02] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp24 [V29 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
@@ -45,14 +45,15 @@
;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
;* V36 tmp31 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
-; V38 cse0 [V38,T01] ( 6, 6 ) ref -> x1 multi-def "CSE - aggressive"
+; V38 cse0 [V38,T07] ( 5, 2.50) ref -> x19 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M28263_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M28263_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
cmp w2, #8
@@ -126,40 +127,42 @@ G_M28263_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, b
strh w0, [x1, #0x0C]
b G_M28263_IG05
;; size=264 bbWeight=0.50 PerfScore 23.75
-G_M28263_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28263_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x1]
- adrp x1, [HIGH RELOC #0xD1FFAB1E]
- add x1, x1, [LOW RELOC #0xD1FFAB1E]
- ; gcrRegs +[x1]
- mov x0, x1
+ adrp x19, [HIGH RELOC #0xD1FFAB1E]
+ add x19, x19, [LOW RELOC #0xD1FFAB1E]
+ ; gcrRegs +[x19]
+ mov x0, x19
; gcrRegs +[x0]
+ mov x1, x19
+ ; gcrRegs +[x1]
bl <unknown method>
; gcrRegs -[x0-x1]
- adrp x1, [HIGH RELOC #0xD1FFAB1E]
- add x1, x1, [LOW RELOC #0xD1FFAB1E]
- ; gcrRegs +[x1]
- mov x0, x1
+ mov x0, x19
; gcrRegs +[x0]
+ mov x1, x19
+ ; gcrRegs +[x1]
bl <unknown method>
- ; gcrRegs -[x0-x1]
- ;; size=32 bbWeight=1 PerfScore 5.00
+ ; gcrRegs -[x0-x1 x19]
+ ;; size=32 bbWeight=0.50 PerfScore 2.50
G_M28263_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 320, prolog size 8, PerfScore 33.75, instruction count 80, allocated bytes for code 320 (MethodHash=6ab79198) for method System.Enum+<>c__64`1[uint]:<FormatNumberAsHex>b__64_0(System.Span`1[ushort],long):this (FullOpts)
+; Total bytes of code 328, prolog size 12, PerfScore 34.25, instruction count 82, allocated bytes for code 328 (MethodHash=6ab79198) for method System.Enum+<>c__64`1[uint]:<FormatNumberAsHex>b__64_0(System.Span`1[ushort],long):this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 80 (0x00050) Actual length = 320 (0x000140)
+ Function Length : 82 (0x00052) Actual length = 328 (0x000148)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -167,7 +170,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.windows.arm64.checked.mch |
62 |
47 |
5 |
10 |
-440 |
+32 |
benchmarks.run_pgo.windows.arm64.checked.mch |
162 |
69 |
73 |
20 |
-600 |
+856 |
benchmarks.run_tiered.windows.arm64.checked.mch |
23 |
16 |
2 |
5 |
-380 |
+20 |
coreclr_tests.run.windows.arm64.checked.mch |
389 |
238 |
26 |
125 |
-2,136 |
+180 |
libraries.crossgen2.windows.arm64.checked.mch |
185 |
130 |
21 |
34 |
-1,568 |
+224 |
libraries.pmi.windows.arm64.checked.mch |
335 |
214 |
58 |
63 |
-1,976 |
+504 |
libraries_tests.run.windows.arm64.Release.mch |
1,324 |
773 |
160 |
391 |
-8,240 |
+2,588 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
910 |
435 |
61 |
414 |
-3,408 |
+504 |
realworld.run.windows.arm64.checked.mch |
45 |
28 |
6 |
11 |
-256 |
+80 |
smoke_tests.nativeaot.windows.arm64.checked.mch |
42 |
27 |
6 |
9 |
-260 |
+56 |
|
3,477 |
1,977 |
418 |
1,082 |
-19,264 |
+5,044 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.windows.arm64.checked.mch |
24,446 |
4 |
24,442 |
0 (0.00%) |
0 (0.00%) |
benchmarks.run_pgo.windows.arm64.checked.mch |
96,117 |
48,079 |
48,038 |
4 (0.00%) |
4 (0.00%) |
benchmarks.run_tiered.windows.arm64.checked.mch |
49,359 |
36,713 |
12,646 |
1 (0.00%) |
1 (0.00%) |
coreclr_tests.run.windows.arm64.checked.mch |
595,401 |
362,592 |
232,809 |
3 (0.00%) |
3 (0.00%) |
libraries.crossgen2.windows.arm64.checked.mch |
244,152 |
15 |
244,137 |
0 (0.00%) |
0 (0.00%) |
libraries.pmi.windows.arm64.checked.mch |
305,576 |
6 |
305,570 |
0 (0.00%) |
2 (0.00%) |
libraries_tests.run.windows.arm64.Release.mch |
651,605 |
469,431 |
182,174 |
0 (0.00%) |
1 (0.00%) |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
317,075 |
21,598 |
295,477 |
0 (0.00%) |
2 (0.00%) |
realworld.run.windows.arm64.checked.mch |
33,211 |
3 |
33,208 |
0 (0.00%) |
0 (0.00%) |
smoke_tests.nativeaot.windows.arm64.checked.mch |
24,162 |
8 |
24,154 |
0 (0.00%) |
0 (0.00%) |
|
2,341,104 |
938,449 |
1,402,655 |
8 (0.00%) |
13 (0.00%) |
jit-analyze output
benchmarks.run.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 10965984 (overridden on cmd)
Total bytes of diff: 10965576 (overridden on cmd)
Total bytes of delta: -408 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
16 : 4099.dasm (1.32 % of base)
4 : 15942.dasm (1.11 % of base)
4 : 1773.dasm (0.63 % of base)
4 : 19535.dasm (0.89 % of base)
4 : 6388.dasm (1.22 % of base)
Top file improvements (bytes):
-48 : 16412.dasm (-7.64 % of base)
-36 : 7035.dasm (-21.95 % of base)
-28 : 24445.dasm (-6.36 % of base)
-20 : 11751.dasm (-6.33 % of base)
-20 : 21058.dasm (-7.04 % of base)
-16 : 15479.dasm (-4.49 % of base)
-16 : 6023.dasm (-0.35 % of base)
-16 : 670.dasm (-5.41 % of base)
-12 : 8743.dasm (-0.36 % of base)
-12 : 1790.dasm (-0.21 % of base)
-12 : 18044.dasm (-0.36 % of base)
-12 : 3496.dasm (-4.35 % of base)
-12 : 418.dasm (-3.90 % of base)
-12 : 4979.dasm (-0.78 % of base)
-8 : 8769.dasm (-1.75 % of base)
-8 : 9098.dasm (-0.06 % of base)
-8 : 17411.dasm (-0.26 % of base)
-8 : 18667.dasm (-0.12 % of base)
-8 : 22224.dasm (-1.64 % of base)
-8 : 2810.dasm (-1.08 % of base)
43 total files with Code Size differences (38 improved, 5 regressed), 10 unchanged.
Top method regressions (bytes):
16 (1.32 % of base) : 4099.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
4 (0.89 % of base) : 19535.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
4 (1.22 % of base) : 6388.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
4 (0.63 % of base) : 1773.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
4 (1.11 % of base) : 15942.dasm - System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
Top method improvements (bytes):
-48 (-7.64 % of base) : 16412.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-36 (-21.95 % of base) : 7035.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-28 (-6.36 % of base) : 24445.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
-20 (-7.04 % of base) : 21058.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
-20 (-6.33 % of base) : 11751.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
-16 (-5.41 % of base) : 670.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-16 (-4.49 % of base) : 15479.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
-16 (-0.35 % of base) : 6023.dasm - Utf8Json.Internal.Emit.MetaType:.ctor(System.Type,System.Func`2[System.String,System.String],ubyte):this (FullOpts)
-12 (-0.36 % of base) : 18044.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-12 (-0.36 % of base) : 8743.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (FullOpts)
-12 (-0.21 % of base) : 1790.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-12 (-3.90 % of base) : 418.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-12 (-4.35 % of base) : 3496.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-12 (-0.78 % of base) : 4979.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (FullOpts)
-8 (-0.06 % of base) : 9098.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (FullOpts)
-8 (-0.26 % of base) : 17411.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
-8 (-0.12 % of base) : 18667.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
-8 (-1.75 % of base) : 8769.dasm - Sigil.Impl.LinqStack`1[System.__Canon]:Peek(ubyte,int):Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack][]:this (FullOpts)
-8 (-3.23 % of base) : 4083.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-8 (-1.08 % of base) : 2810.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (FullOpts)
Top method regressions (percentages):
16 (1.32 % of base) : 4099.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
4 (1.22 % of base) : 6388.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
4 (1.11 % of base) : 15942.dasm - System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
4 (0.89 % of base) : 19535.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
4 (0.63 % of base) : 1773.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
Top method improvements (percentages):
-36 (-21.95 % of base) : 7035.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-48 (-7.64 % of base) : 16412.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-20 (-7.04 % of base) : 21058.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
-28 (-6.36 % of base) : 24445.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
-20 (-6.33 % of base) : 11751.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
-16 (-5.41 % of base) : 670.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-16 (-4.49 % of base) : 15479.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
-12 (-4.35 % of base) : 3496.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-12 (-3.90 % of base) : 418.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-4 (-3.85 % of base) : 10698.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
-8 (-3.23 % of base) : 4083.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-8 (-2.41 % of base) : 5723.dasm - System.Xml.Serialization.CodeGenerator:StoreMember(System.Reflection.MemberInfo):this (FullOpts)
-8 (-1.75 % of base) : 8769.dasm - Sigil.Impl.LinqStack`1[System.__Canon]:Peek(ubyte,int):Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack][]:this (FullOpts)
-4 (-1.64 % of base) : 10434.dasm - System.Text.Json.Tests.Perf_Reader:ReadMultiSpanSequenceEmptyLoop():this (FullOpts)
-4 (-1.64 % of base) : 3462.dasm - System.Text.Json.Tests.Perf_Reader:ReadSingleSpanSequenceEmptyLoop():this (FullOpts)
-4 (-1.64 % of base) : 23359.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (FullOpts)
-8 (-1.64 % of base) : 22224.dasm - System.Xml.Linq.XContainer+<GetDescendants>d__38:MoveNext():ubyte:this (FullOpts)
-4 (-1.35 % of base) : 3447.dasm - System.Text.Json.Tests.Perf_Reader:ReadSpanEmptyLoop():this (FullOpts)
-4 (-1.12 % of base) : 20253.dasm - System.Text.Json.Tests.Perf_Depth:ReadSpanEmptyLoop():this (FullOpts)
-4 (-1.11 % of base) : 14774.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequence(int):this (FullOpts)
benchmarks.run_pgo.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 45573612 (overridden on cmd)
Total bytes of diff: 45573868 (overridden on cmd)
Total bytes of delta: 256 (0.00 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
36 : 32416.dasm (8.11 % of base)
32 : 688.dasm (2.51 % of base)
28 : 32415.dasm (1.19 % of base)
24 : 11981.dasm (4.88 % of base)
24 : 49212.dasm (4.88 % of base)
24 : 66798.dasm (1.54 % of base)
24 : 71331.dasm (1.54 % of base)
20 : 64265.dasm (8.20 % of base)
20 : 7106.dasm (2.26 % of base)
20 : 27941.dasm (0.76 % of base)
20 : 40324.dasm (3.07 % of base)
20 : 64302.dasm (0.99 % of base)
20 : 80784.dasm (2.33 % of base)
20 : 81251.dasm (1.26 % of base)
20 : 86903.dasm (3.16 % of base)
20 : 88192.dasm (0.90 % of base)
16 : 4760.dasm (1.35 % of base)
16 : 75987.dasm (2.15 % of base)
16 : 16884.dasm (1.99 % of base)
16 : 63350.dasm (4.60 % of base)
Top file improvements (bytes):
-36 : 84779.dasm (-1.54 % of base)
-32 : 84780.dasm (-20.51 % of base)
-28 : 95179.dasm (-5.88 % of base)
-24 : 68655.dasm (-2.35 % of base)
-24 : 95172.dasm (-5.41 % of base)
-24 : 95178.dasm (-5.41 % of base)
-20 : 35941.dasm (-6.94 % of base)
-20 : 35947.dasm (-6.33 % of base)
-20 : 35948.dasm (-6.94 % of base)
-12 : 3095.dasm (-0.22 % of base)
-12 : 94987.dasm (-0.13 % of base)
-12 : 93333.dasm (-4.05 % of base)
-12 : 93362.dasm (-0.13 % of base)
-12 : 94960.dasm (-4.05 % of base)
-8 : 41471.dasm (-2.53 % of base)
-8 : 90657.dasm (-2.99 % of base)
-8 : 91914.dasm (-2.53 % of base)
-8 : 93057.dasm (-2.53 % of base)
-8 : 93249.dasm (-2.53 % of base)
-8 : 15043.dasm (-2.53 % of base)
66 total files with Code Size differences (35 improved, 31 regressed), 20 unchanged.
Top method regressions (bytes):
36 (8.11 % of base) : 32416.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
32 (2.51 % of base) : 688.dasm - System.IO.StreamReader:ReadLine():System.String:this (Tier0-FullOpts)
28 (1.19 % of base) : 32415.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1)
24 (1.54 % of base) : 66798.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.RuntimeType,System.RuntimeType,ubyte):System.Object[] (Tier1)
24 (1.54 % of base) : 71331.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.RuntimeType,System.RuntimeType,ubyte):System.Object[] (Tier1)
24 (4.88 % of base) : 11981.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
24 (4.88 % of base) : 49212.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
20 (0.99 % of base) : 64302.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (Tier1)
20 (8.20 % of base) : 64265.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
20 (0.90 % of base) : 88192.dasm - System.Net.IPEndPoint:Create(System.Net.SocketAddress):System.Net.EndPoint:this (Tier1)
20 (1.26 % of base) : 81251.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.RuntimeType,System.RuntimeType,ubyte):System.Object[] (Tier1)
20 (3.07 % of base) : 40324.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
20 (2.33 % of base) : 80784.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
20 (3.16 % of base) : 86903.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
20 (2.26 % of base) : 7106.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
20 (0.76 % of base) : 27941.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (Tier1)
16 (2.38 % of base) : 64308.dasm - Microsoft.CodeAnalysis.Compilation:get_HasStrongName():ubyte:this (Tier1)
16 (6.56 % of base) : 60155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
16 (4.60 % of base) : 63350.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
16 (1.99 % of base) : 16884.dasm - System.Environment:get_CurrentDirectoryCore():System.String (Tier0-FullOpts)
Top method improvements (bytes):
-36 (-1.54 % of base) : 84779.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
-32 (-20.51 % of base) : 84780.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-28 (-5.88 % of base) : 95179.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1)
-24 (-2.35 % of base) : 68655.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:WriteConsideredUse(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
-24 (-5.41 % of base) : 95172.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-24 (-5.41 % of base) : 95178.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-20 (-6.33 % of base) : 35947.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1)
-20 (-6.94 % of base) : 35941.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-20 (-6.94 % of base) : 35948.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-12 (-0.22 % of base) : 3095.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
-12 (-4.05 % of base) : 93333.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.05 % of base) : 94960.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-0.13 % of base) : 94987.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-12 (-0.13 % of base) : 93362.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-8 (-0.51 % of base) : 17409.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
-8 (-0.45 % of base) : 43265.dasm - System.Number:FormatDouble[ushort](byref,double,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo):System.String (Tier1)
-8 (-2.53 % of base) : 41471.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
-8 (-2.53 % of base) : 91914.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
-8 (-2.53 % of base) : 93057.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
-8 (-2.53 % of base) : 93249.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
Top method regressions (percentages):
20 (8.20 % of base) : 64265.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
36 (8.11 % of base) : 32416.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
16 (6.56 % of base) : 60155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
24 (4.88 % of base) : 11981.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
24 (4.88 % of base) : 49212.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
16 (4.60 % of base) : 63350.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
8 (3.85 % of base) : 29123.dasm - System.Runtime.CompilerServices.ConfiguredTaskAwaitable:.ctor(System.Threading.Tasks.Task,int):this (Tier1)
12 (3.26 % of base) : 70503.dasm - System.Net.Security.SslStream:HaveFullTlsFrame(byref):ubyte:this (Tier1)
20 (3.16 % of base) : 86903.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
20 (3.07 % of base) : 40324.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
12 (2.83 % of base) : 43263.dasm - System.Number:FormatDouble(double,System.String,System.Globalization.NumberFormatInfo):System.String (Tier1)
32 (2.51 % of base) : 688.dasm - System.IO.StreamReader:ReadLine():System.String:this (Tier0-FullOpts)
16 (2.38 % of base) : 64308.dasm - Microsoft.CodeAnalysis.Compilation:get_HasStrongName():ubyte:this (Tier1)
4 (2.38 % of base) : 82750.dasm - System.Threading.Tasks.Task:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable:this (Tier1)
4 (2.38 % of base) : 29122.dasm - System.Threading.Tasks.Task:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable:this (Tier1)
4 (2.33 % of base) : 43289.dasm - System.Collections.Generic.ValueListBuilder`1[ushort]:AsSpan():System.ReadOnlySpan`1[ushort]:this (Tier1)
4 (2.33 % of base) : 9333.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:get_Text():System.ReadOnlySpan`1[ushort]:this (Tier1)
20 (2.33 % of base) : 80784.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
4 (2.33 % of base) : 7841.dasm - System.Text.ValueStringBuilder:AsSpan():System.ReadOnlySpan`1[ushort]:this (Tier1)
4 (2.27 % of base) : 32399.dasm - System.Buffers.StringSearchValuesHelper:ValidateReadPosition(byref,int,byref,int) (Tier1)
Top method improvements (percentages):
-32 (-20.51 % of base) : 84780.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-20 (-6.94 % of base) : 35941.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-20 (-6.94 % of base) : 35948.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-20 (-6.33 % of base) : 35947.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1)
-28 (-5.88 % of base) : 95179.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1)
-24 (-5.41 % of base) : 95172.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-24 (-5.41 % of base) : 95178.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-12 (-4.05 % of base) : 93333.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.05 % of base) : 94960.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-8 (-2.99 % of base) : 90657.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-8 (-2.99 % of base) : 68834.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-8 (-2.94 % of base) : 92970.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-8 (-2.94 % of base) : 43284.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-4 (-2.70 % of base) : 48763.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequence(int):this (Tier1-OSR)
-4 (-2.70 % of base) : 50771.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequence(int):this (Tier1-OSR)
-4 (-2.70 % of base) : 89815.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (Tier1-OSR)
-8 (-2.53 % of base) : 41471.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
-8 (-2.53 % of base) : 91914.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
-8 (-2.53 % of base) : 93057.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
-8 (-2.53 % of base) : 93249.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
benchmarks.run_tiered.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15586996 (overridden on cmd)
Total bytes of diff: 15586636 (overridden on cmd)
Total bytes of delta: -360 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
16 : 6673.dasm (1.39 % of base)
4 : 19751.dasm (0.60 % of base)
Top file improvements (bytes):
-200 : 44192.dasm (-7.46 % of base)
-36 : 46977.dasm (-21.95 % of base)
-24 : 48999.dasm (-5.83 % of base)
-20 : 27419.dasm (-6.94 % of base)
-16 : 5483.dasm (-5.41 % of base)
-12 : 2643.dasm (-0.22 % of base)
-12 : 45460.dasm (-0.37 % of base)
-12 : 5143.dasm (-3.90 % of base)
-12 : 9776.dasm (-4.35 % of base)
-8 : 29335.dasm (-3.23 % of base)
-8 : 45472.dasm (-1.75 % of base)
-4 : 24845.dasm (-0.71 % of base)
-4 : 31795.dasm (-2.70 % of base)
-4 : 40159.dasm (-0.34 % of base)
-4 : 47978.dasm (-2.70 % of base)
-4 : 6434.dasm (-0.27 % of base)
18 total files with Code Size differences (16 improved, 2 regressed), 5 unchanged.
Top method regressions (bytes):
16 (1.39 % of base) : 6673.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
4 (0.60 % of base) : 19751.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
Top method improvements (bytes):
-200 (-7.46 % of base) : 44192.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
-36 (-21.95 % of base) : 46977.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-24 (-5.83 % of base) : 48999.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-20 (-6.94 % of base) : 27419.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-16 (-5.41 % of base) : 5483.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-12 (-0.37 % of base) : 45460.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (Tier1)
-12 (-0.22 % of base) : 2643.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
-12 (-3.90 % of base) : 5143.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
-12 (-4.35 % of base) : 9776.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-8 (-1.75 % of base) : 45472.dasm - Sigil.Impl.LinqStack`1[System.__Canon]:Peek(ubyte,int):Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack][]:this (Tier1)
-8 (-3.23 % of base) : 29335.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (Tier1)
-4 (-0.34 % of base) : 40159.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier1)
-4 (-0.27 % of base) : 6434.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier0-FullOpts)
-4 (-2.70 % of base) : 31795.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequence(int):this (Tier1-OSR)
-4 (-2.70 % of base) : 47978.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (Tier1-OSR)
-4 (-0.71 % of base) : 24845.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequenceByN(int):this (Tier1-OSR)
Top method regressions (percentages):
16 (1.39 % of base) : 6673.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
4 (0.60 % of base) : 19751.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
Top method improvements (percentages):
-36 (-21.95 % of base) : 46977.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-200 (-7.46 % of base) : 44192.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
-20 (-6.94 % of base) : 27419.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-24 (-5.83 % of base) : 48999.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-16 (-5.41 % of base) : 5483.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-12 (-4.35 % of base) : 9776.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-3.90 % of base) : 5143.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
-8 (-3.23 % of base) : 29335.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (Tier1)
-4 (-2.70 % of base) : 31795.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequence(int):this (Tier1-OSR)
-4 (-2.70 % of base) : 47978.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (Tier1-OSR)
-8 (-1.75 % of base) : 45472.dasm - Sigil.Impl.LinqStack`1[System.__Canon]:Peek(ubyte,int):Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack][]:this (Tier1)
-4 (-0.71 % of base) : 24845.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequenceByN(int):this (Tier1-OSR)
-12 (-0.37 % of base) : 45460.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (Tier1)
-4 (-0.34 % of base) : 40159.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier1)
-4 (-0.27 % of base) : 6434.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier0-FullOpts)
-12 (-0.22 % of base) : 2643.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
18 total methods with Code Size differences (16 improved, 2 regressed).
coreclr_tests.run.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 495271548 (overridden on cmd)
Total bytes of diff: 495269592 (overridden on cmd)
Total bytes of delta: -1956 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
16 : 562758.dasm (1.92 % of base)
8 : 181601.dasm (0.78 % of base)
8 : 319640.dasm (0.49 % of base)
8 : 319684.dasm (0.45 % of base)
8 : 324155.dasm (0.50 % of base)
8 : 336630.dasm (0.70 % of base)
8 : 342239.dasm (0.50 % of base)
8 : 403658.dasm (0.45 % of base)
8 : 448322.dasm (0.45 % of base)
8 : 451388.dasm (0.50 % of base)
8 : 461960.dasm (1.09 % of base)
8 : 476992.dasm (0.45 % of base)
8 : 482659.dasm (0.45 % of base)
8 : 503156.dasm (0.70 % of base)
8 : 503502.dasm (0.51 % of base)
8 : 181604.dasm (0.79 % of base)
8 : 592937.dasm (0.45 % of base)
4 : 247155.dasm (0.10 % of base)
4 : 322583.dasm (0.20 % of base)
4 : 448182.dasm (0.55 % of base)
Top file improvements (bytes):
-36 : 219927.dasm (-0.72 % of base)
-36 : 205411.dasm (-21.95 % of base)
-28 : 205980.dasm (-6.36 % of base)
-24 : 541644.dasm (-0.34 % of base)
-24 : 321369.dasm (-0.28 % of base)
-24 : 342544.dasm (-0.28 % of base)
-24 : 421492.dasm (-0.34 % of base)
-24 : 448550.dasm (-0.28 % of base)
-24 : 484756.dasm (-0.28 % of base)
-20 : 205429.dasm (-7.04 % of base)
-20 : 205986.dasm (-6.33 % of base)
-20 : 219929.dasm (-0.60 % of base)
-20 : 592840.dasm (-0.70 % of base)
-20 : 590493.dasm (-0.70 % of base)
-16 : 203737.dasm (-2.29 % of base)
-16 : 250716.dasm (-4.82 % of base)
-16 : 296769.dasm (-0.79 % of base)
-16 : 313676.dasm (-4.76 % of base)
-12 : 250662.dasm (-2.86 % of base)
-12 : 313660.dasm (-3.53 % of base)
59 total files with Code Size differences (36 improved, 23 regressed), 20 unchanged.
Top method regressions (bytes):
16 (1.92 % of base) : 562758.dasm - System.Environment:get_CurrentDirectoryCore():System.String (Tier0-FullOpts)
8 (0.78 % of base) : 181601.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,Microsoft.CSharp.RuntimeBinder.ComInterop.ComObject,System.Object):System.Object (FullOpts)
8 (0.79 % of base) : 181604.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,Microsoft.CSharp.RuntimeBinder.ComInterop.ComObject,System.Object):System.Object (FullOpts)
8 (0.49 % of base) : 319640.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Instrumented Tier1)
8 (0.45 % of base) : 319684.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
8 (0.50 % of base) : 324155.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
8 (0.50 % of base) : 342239.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
8 (0.45 % of base) : 403658.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
8 (0.45 % of base) : 448322.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
8 (0.50 % of base) : 451388.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
8 (0.45 % of base) : 476992.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
8 (0.45 % of base) : 482659.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
8 (0.51 % of base) : 503502.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
8 (0.45 % of base) : 592937.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
8 (0.70 % of base) : 336630.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
8 (0.70 % of base) : 503156.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
8 (1.09 % of base) : 461960.dasm - System.Reflection.TypeNameParser:GetType(System.String,ubyte,ubyte,System.Reflection.Assembly):System.Type (Instrumented Tier1)
4 (0.10 % of base) : 247155.dasm - IlasmPortablePdbTests.IlasmPortablePdbTester:TestPortablePdbMethodDebugInformation2():this (FullOpts)
4 (0.89 % of base) : 202907.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
4 (0.20 % of base) : 322583.dasm - System.Guid:TryParseExactD(System.ReadOnlySpan`1[ushort],byref):ubyte (Instrumented Tier1)
Top method improvements (bytes):
-36 (-0.72 % of base) : 219927.dasm - GenClass`1[int]:DoTest_Inner[System.__Canon,System.__Canon,System.__Canon](int,GenClass`1[System.__Canon],GenClass`1[System.__Canon],GenClass`1[System.__Canon]) (FullOpts)
-36 (-21.95 % of base) : 205411.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-28 (-6.36 % of base) : 205980.dasm - Span.SpanBench:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
-24 (-0.34 % of base) : 541644.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
-24 (-0.34 % of base) : 421492.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
-24 (-0.28 % of base) : 321369.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-24 (-0.28 % of base) : 342544.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-24 (-0.28 % of base) : 448550.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-24 (-0.28 % of base) : 484756.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-20 (-7.04 % of base) : 205429.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
-20 (-0.70 % of base) : 592840.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.AttributePresenceFilterNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1-OSR)
-20 (-0.70 % of base) : 590493.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.AttributePresenceFilterNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1-OSR)
-20 (-6.33 % of base) : 205986.dasm - Span.SpanBench:TestQuickSortArray(int[],int,int) (FullOpts)
-20 (-0.60 % of base) : 219929.dasm - Test_DictionaryExpansion:DoTest(int) (FullOpts)
-16 (-0.79 % of base) : 296769.dasm - Driver`2[System.__Canon,System.__Canon]:AddRemoveKeyValPair(System.__Canon[],System.__Canon[],int,int):this (FullOpts)
-16 (-2.29 % of base) : 203737.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:WriteConsideredUse(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (FullOpts)
-16 (-4.82 % of base) : 250716.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-16 (-4.76 % of base) : 313676.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-12 (-2.86 % of base) : 250662.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-12 (-3.53 % of base) : 313660.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
Top method regressions (percentages):
16 (1.92 % of base) : 562758.dasm - System.Environment:get_CurrentDirectoryCore():System.String (Tier0-FullOpts)
8 (1.09 % of base) : 461960.dasm - System.Reflection.TypeNameParser:GetType(System.String,ubyte,ubyte,System.Reflection.Assembly):System.Type (Instrumented Tier1)
4 (0.89 % of base) : 202907.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
8 (0.79 % of base) : 181604.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,Microsoft.CSharp.RuntimeBinder.ComInterop.ComObject,System.Object):System.Object (FullOpts)
8 (0.78 % of base) : 181601.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,Microsoft.CSharp.RuntimeBinder.ComInterop.ComObject,System.Object):System.Object (FullOpts)
8 (0.70 % of base) : 503156.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
8 (0.70 % of base) : 336630.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
4 (0.65 % of base) : 476076.dasm - System.Runtime.Serialization.CodeGenerator:LoadThis(System.Object,System.Reflection.MethodInfo):this (Tier1)
4 (0.60 % of base) : 461957.dasm - System.Reflection.RuntimeAssembly:GetType(System.String,ubyte,ubyte):System.Type:this (Instrumented Tier1)
4 (0.55 % of base) : 448182.dasm - System.Type:GetType(System.String):System.Type (Tier1)
8 (0.51 % of base) : 503502.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
8 (0.50 % of base) : 324155.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
8 (0.50 % of base) : 342239.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
8 (0.50 % of base) : 451388.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
8 (0.49 % of base) : 319640.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Instrumented Tier1)
8 (0.45 % of base) : 319684.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
8 (0.45 % of base) : 403658.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
8 (0.45 % of base) : 448322.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
8 (0.45 % of base) : 476992.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
8 (0.45 % of base) : 482659.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
Top method improvements (percentages):
-36 (-21.95 % of base) : 205411.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-20 (-7.04 % of base) : 205429.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
-28 (-6.36 % of base) : 205980.dasm - Span.SpanBench:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
-20 (-6.33 % of base) : 205986.dasm - Span.SpanBench:TestQuickSortArray(int[],int,int) (FullOpts)
-4 (-5.00 % of base) : 181878.dasm - System.Runtime.InteropServices.ComEventsMethod:Remove(System.Runtime.InteropServices.ComEventsMethod,System.Runtime.InteropServices.ComEventsMethod):System.Runtime.InteropServices.ComEventsMethod (FullOpts)
-16 (-4.82 % of base) : 250716.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-16 (-4.76 % of base) : 313676.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-12 (-4.41 % of base) : 321040.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.41 % of base) : 342467.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.41 % of base) : 448515.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.41 % of base) : 477116.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.41 % of base) : 484629.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-4.35 % of base) : 588.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-12 (-4.00 % of base) : 476681.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-12 (-3.53 % of base) : 313660.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-8 (-2.99 % of base) : 320729.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-8 (-2.99 % of base) : 321989.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-8 (-2.99 % of base) : 337357.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-8 (-2.99 % of base) : 343085.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-8 (-2.99 % of base) : 450429.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
libraries.crossgen2.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 59070348 (overridden on cmd)
Total bytes of diff: 59069004 (overridden on cmd)
Total bytes of delta: -1344 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
32 : 29860.dasm (8.25 % of base)
32 : 185188.dasm (1.75 % of base)
32 : 70834.dasm (0.61 % of base)
24 : 94795.dasm (1.75 % of base)
16 : 25763.dasm (1.42 % of base)
12 : 135596.dasm (0.48 % of base)
12 : 164499.dasm (0.48 % of base)
8 : 29845.dasm (2.15 % of base)
8 : 25872.dasm (4.35 % of base)
4 : 243940.dasm (0.48 % of base)
4 : 24595.dasm (0.53 % of base)
4 : 142399.dasm (0.19 % of base)
4 : 143717.dasm (0.65 % of base)
4 : 202770.dasm (0.56 % of base)
4 : 211823.dasm (1.11 % of base)
4 : 226485.dasm (0.07 % of base)
4 : 22936.dasm (0.13 % of base)
4 : 92450.dasm (0.56 % of base)
4 : 243935.dasm (0.55 % of base)
4 : 38037.dasm (0.12 % of base)
Top file improvements (bytes):
-72 : 125085.dasm (-1.76 % of base)
-68 : 125127.dasm (-1.71 % of base)
-56 : 143222.dasm (-3.49 % of base)
-48 : 124345.dasm (-2.71 % of base)
-48 : 185070.dasm (-5.43 % of base)
-48 : 224076.dasm (-5.83 % of base)
-48 : 120262.dasm (-26.09 % of base)
-44 : 243420.dasm (-6.75 % of base)
-44 : 206718.dasm (-6.75 % of base)
-36 : 206388.dasm (-4.52 % of base)
-36 : 225638.dasm (-20.45 % of base)
-28 : 124871.dasm (-9.86 % of base)
-24 : 134816.dasm (-3.59 % of base)
-24 : 163732.dasm (-3.59 % of base)
-24 : 225964.dasm (-0.54 % of base)
-24 : 94785.dasm (-5.56 % of base)
-20 : 124790.dasm (-4.24 % of base)
-20 : 126193.dasm (-2.50 % of base)
-20 : 127474.dasm (-6.49 % of base)
-20 : 156537.dasm (-6.49 % of base)
61 total files with Code Size differences (40 improved, 21 regressed), 20 unchanged.
Top method regressions (bytes):
32 (0.61 % of base) : 70834.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
32 (8.25 % of base) : 29860.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
32 (1.75 % of base) : 185188.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
24 (1.75 % of base) : 94795.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
16 (1.42 % of base) : 25763.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
12 (0.48 % of base) : 135596.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
12 (0.48 % of base) : 164499.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
8 (2.15 % of base) : 29845.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
8 (4.35 % of base) : 25872.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
4 (0.12 % of base) : 38037.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetMethodGroupOrLambdaDelegateType(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Nullable`1[System.Collections.Immutable.ImmutableArray`1[ubyte]],System.Nullable`1[System.Collections.Immutable.ImmutableArray`1[ubyte]],System.Nullable`1[ubyte],System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
4 (0.56 % of base) : 92450.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
4 (1.11 % of base) : 211823.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
4 (0.65 % of base) : 143717.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:LeastGenericProcedure(Microsoft.VisualBasic.CompilerServices.Symbols+Method,Microsoft.VisualBasic.CompilerServices.Symbols+Method,int,byref):Microsoft.VisualBasic.CompilerServices.Symbols+Method (FullOpts)
4 (0.19 % of base) : 142399.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeText(System.String,System.String):ubyte (FullOpts)
4 (0.53 % of base) : 24595.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
4 (0.13 % of base) : 22936.dasm - System.Globalization.IdnMapping:PunycodeEncode(System.String):System.String (FullOpts)
4 (0.07 % of base) : 226485.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
4 (0.21 % of base) : 243739.dasm - System.Xml.Linq.ElementWriter+<WriteElementAsync>d__4:MoveNext():this (FullOpts)
4 (0.55 % of base) : 243935.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
4 (0.48 % of base) : 243940.dasm - System.Xml.Linq.Extensions+<GetDescendants>d__23`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
Top method improvements (bytes):
-72 (-1.76 % of base) : 125085.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-68 (-1.71 % of base) : 125127.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-56 (-3.49 % of base) : 143222.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (FullOpts)
-48 (-2.71 % of base) : 124345.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
-48 (-5.83 % of base) : 224076.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-48 (-26.09 % of base) : 120262.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-48 (-5.43 % of base) : 185070.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-44 (-6.75 % of base) : 243420.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-44 (-6.75 % of base) : 206718.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-36 (-4.52 % of base) : 206388.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
-36 (-20.45 % of base) : 225638.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-28 (-9.86 % of base) : 124871.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-24 (-3.59 % of base) : 134816.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-24 (-3.59 % of base) : 163732.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-24 (-5.56 % of base) : 94785.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
-24 (-0.54 % of base) : 225964.dasm - System.Globalization.FormatProvider+Number:NumberToStringFormat(byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-20 (-6.49 % of base) : 127474.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
-20 (-6.49 % of base) : 156537.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
-20 (-0.54 % of base) : 166729.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyData[System.__Canon,System.__Canon]],int):this (FullOpts)
-20 (-2.50 % of base) : 126193.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
Top method regressions (percentages):
32 (8.25 % of base) : 29860.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
8 (4.35 % of base) : 25872.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
8 (2.15 % of base) : 29845.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
24 (1.75 % of base) : 94795.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
32 (1.75 % of base) : 185188.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
16 (1.42 % of base) : 25763.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
4 (1.11 % of base) : 211823.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
4 (0.65 % of base) : 143717.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:LeastGenericProcedure(Microsoft.VisualBasic.CompilerServices.Symbols+Method,Microsoft.VisualBasic.CompilerServices.Symbols+Method,int,byref):Microsoft.VisualBasic.CompilerServices.Symbols+Method (FullOpts)
32 (0.61 % of base) : 70834.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
4 (0.56 % of base) : 92450.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
4 (0.56 % of base) : 202770.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
4 (0.55 % of base) : 243935.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
4 (0.53 % of base) : 24595.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
12 (0.48 % of base) : 135596.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
12 (0.48 % of base) : 164499.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
4 (0.48 % of base) : 243940.dasm - System.Xml.Linq.Extensions+<GetDescendants>d__23`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
4 (0.21 % of base) : 243739.dasm - System.Xml.Linq.ElementWriter+<WriteElementAsync>d__4:MoveNext():this (FullOpts)
4 (0.19 % of base) : 142399.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeText(System.String,System.String):ubyte (FullOpts)
4 (0.13 % of base) : 22936.dasm - System.Globalization.IdnMapping:PunycodeEncode(System.String):System.String (FullOpts)
4 (0.12 % of base) : 38037.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetMethodGroupOrLambdaDelegateType(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Nullable`1[System.Collections.Immutable.ImmutableArray`1[ubyte]],System.Nullable`1[System.Collections.Immutable.ImmutableArray`1[ubyte]],System.Nullable`1[ubyte],System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
Top method improvements (percentages):
-48 (-26.09 % of base) : 120262.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-36 (-20.45 % of base) : 225638.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-28 (-9.86 % of base) : 124871.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-20 (-7.81 % of base) : 24370.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
-16 (-7.55 % of base) : 226004.dasm - System.Globalization.FormatProvider+Number:RoundNumber(byref,int) (FullOpts)
-44 (-6.75 % of base) : 243420.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-44 (-6.75 % of base) : 206718.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-20 (-6.49 % of base) : 127474.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
-20 (-6.49 % of base) : 156537.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
-16 (-6.15 % of base) : 24402.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-48 (-5.83 % of base) : 224076.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-12 (-5.77 % of base) : 212779.dasm - System.Transactions.CheapUnfairReaderWriterLock:EnterWriteLock():this (FullOpts)
-24 (-5.56 % of base) : 94785.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
-48 (-5.43 % of base) : 185070.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-36 (-4.52 % of base) : 206388.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
-4 (-4.35 % of base) : 169363.dasm - System.Runtime.InteropServices.ComEventsMethod:Remove(System.Runtime.InteropServices.ComEventsMethod,System.Runtime.InteropServices.ComEventsMethod):System.Runtime.InteropServices.ComEventsMethod (FullOpts)
-20 (-4.24 % of base) : 124790.dasm - System.Data.XmlDataLoader:GetValueForTextOnlyColumns(System.Xml.XmlNode):System.String (FullOpts)
-12 (-4.23 % of base) : 194820.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String) (FullOpts)
-20 (-4.03 % of base) : 123622.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
-12 (-3.95 % of base) : 22603.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
libraries.pmi.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 79841380 (overridden on cmd)
Total bytes of diff: 79839908 (overridden on cmd)
Total bytes of delta: -1472 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
40 : 94483.dasm (2.25 % of base)
32 : 185571.dasm (3.29 % of base)
28 : 265045.dasm (0.38 % of base)
24 : 50514.dasm (1.73 % of base)
24 : 257469.dasm (1.21 % of base)
24 : 258126.dasm (1.13 % of base)
16 : 184204.dasm (1.81 % of base)
12 : 100007.dasm (3.19 % of base)
12 : 188066.dasm (0.69 % of base)
12 : 188763.dasm (1.18 % of base)
12 : 254530.dasm (0.45 % of base)
12 : 50583.dasm (1.83 % of base)
12 : 50587.dasm (1.36 % of base)
12 : 50590.dasm (0.85 % of base)
12 : 184853.dasm (0.44 % of base)
12 : 197244.dasm (3.61 % of base)
12 : 50591.dasm (1.59 % of base)
8 : 196914.dasm (7.14 % of base)
8 : 243791.dasm (0.23 % of base)
8 : 254077.dasm (4.65 % of base)
Top file improvements (bytes):
-72 : 175889.dasm (-1.76 % of base)
-68 : 175950.dasm (-1.71 % of base)
-48 : 215343.dasm (-27.91 % of base)
-48 : 193308.dasm (-7.64 % of base)
-48 : 259953.dasm (-3.69 % of base)
-44 : 277459.dasm (-6.51 % of base)
-44 : 280498.dasm (-6.51 % of base)
-40 : 222584.dasm (-4.29 % of base)
-36 : 222577.dasm (-3.42 % of base)
-36 : 290235.dasm (-21.95 % of base)
-32 : 140521.dasm (-1.61 % of base)
-32 : 176121.dasm (-1.77 % of base)
-28 : 176389.dasm (-12.07 % of base)
-24 : 136465.dasm (-2.08 % of base)
-24 : 167718.dasm (-2.08 % of base)
-24 : 178261.dasm (-3.14 % of base)
-24 : 205004.dasm (-17.14 % of base)
-24 : 236432.dasm (-9.68 % of base)
-20 : 122130.dasm (-1.82 % of base)
-20 : 236433.dasm (-5.26 % of base)
72 total files with Code Size differences (43 improved, 29 regressed), 20 unchanged.
Top method regressions (bytes):
40 (2.25 % of base) : 94483.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
32 (3.29 % of base) : 185571.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
28 (0.38 % of base) : 265045.dasm - System.DirectoryServices.ActiveDirectory.ActiveDirectorySite:GetBridgeheadServers():System.DirectoryServices.ActiveDirectory.ReadOnlyDirectoryServerCollection:this (FullOpts)
24 (1.73 % of base) : 50514.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
24 (1.21 % of base) : 257469.dasm - System.Data.ProviderBase.DbConnectionFactory:TryGetConnection(System.Data.Common.DbConnection,System.Threading.Tasks.TaskCompletionSource`1[System.Data.ProviderBase.DbConnectionInternal],System.Data.Common.DbConnectionOptions,System.Data.ProviderBase.DbConnectionInternal,byref):ubyte:this (FullOpts)
24 (1.13 % of base) : 258126.dasm - System.Data.ProviderBase.DbConnectionFactory:TryGetConnection(System.Data.Common.DbConnection,System.Threading.Tasks.TaskCompletionSource`1[System.Data.ProviderBase.DbConnectionInternal],System.Data.Common.DbConnectionOptions,System.Data.ProviderBase.DbConnectionInternal,byref):ubyte:this (FullOpts)
16 (1.81 % of base) : 184204.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextValue(System.String,int,ubyte,byref):System.String (FullOpts)
12 (1.36 % of base) : 50587.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getCloseQuote|428_5(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
12 (1.83 % of base) : 50583.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
12 (0.85 % of base) : 50590.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
12 (1.59 % of base) : 50591.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getInterpolationCloseToken|434_2(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
12 (3.19 % of base) : 100007.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:GetSymbolInfo(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax,System.Threading.CancellationToken):Microsoft.CodeAnalysis.SymbolInfo:this (FullOpts)
12 (0.45 % of base) : 254530.dasm - System.ComponentModel.TypeDescriptor:PipelineMerge(int,System.Collections.ICollection,System.Collections.ICollection,System.Collections.IDictionary):System.Collections.ICollection (FullOpts)
12 (0.44 % of base) : 184853.dasm - System.Net.Http.Http3RequestStream+<ReadHeadersAsync>d__46:MoveNext():this (FullOpts)
12 (1.18 % of base) : 188763.dasm - System.Runtime.Serialization.SchemaHelper:AddSchemaImport(System.String,System.Xml.Schema.XmlSchema) (FullOpts)
12 (0.69 % of base) : 188066.dasm - System.Xml.EncodingStreamWrapper:CheckUTF8DeclarationEncoding(ubyte[],int,int,int,int) (FullOpts)
12 (3.61 % of base) : 197244.dasm - System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
8 (0.23 % of base) : 243791.dasm - Microsoft.CSharp.CSharpCodeGenerator:GenerateProperty(System.CodeDom.CodeMemberProperty):this (FullOpts)
8 (0.28 % of base) : 243656.dasm - Microsoft.VisualBasic.VBCodeGenerator:GenerateMethod(System.CodeDom.CodeMemberMethod,System.CodeDom.CodeTypeDeclaration):this (FullOpts)
8 (0.26 % of base) : 243659.dasm - Microsoft.VisualBasic.VBCodeGenerator:GenerateProperty(System.CodeDom.CodeMemberProperty,System.CodeDom.CodeTypeDeclaration):this (FullOpts)
Top method improvements (bytes):
-72 (-1.76 % of base) : 175889.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-68 (-1.71 % of base) : 175950.dasm - System.Data.RBTree`1[ubyte]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-48 (-3.69 % of base) : 259953.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-48 (-27.91 % of base) : 215343.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-48 (-7.64 % of base) : 193308.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-44 (-6.51 % of base) : 277459.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-44 (-6.51 % of base) : 280498.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-40 (-4.29 % of base) : 222584.dasm - ILCompiler.LazyGenericsSupport+Graph`1[ubyte]:FindCyclesWorker(ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte],System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte]],byref,System.Diagnostics.Stopwatch) (FullOpts)
-36 (-3.42 % of base) : 222577.dasm - ILCompiler.LazyGenericsSupport+Graph`1[System.__Canon]:FindCyclesWorker(ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon],System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]],byref,System.Diagnostics.Stopwatch) (FullOpts)
-36 (-21.95 % of base) : 290235.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-32 (-1.61 % of base) : 140521.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (FullOpts)
-32 (-1.77 % of base) : 176121.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
-28 (-12.07 % of base) : 176389.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-24 (-2.08 % of base) : 136465.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-24 (-2.08 % of base) : 167718.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-24 (-9.68 % of base) : 236432.dasm - R2RDump.Disassembler:TryParseAbsoluteAddress(System.String,byref,byref,byref):ubyte:this (FullOpts)
-24 (-3.14 % of base) : 178261.dasm - System.Data.Common.DbConnectionStringBuilder:GetProperties(System.Attribute[]):System.ComponentModel.PropertyDescriptorCollection:this (FullOpts)
-24 (-17.14 % of base) : 205004.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-20 (-4.67 % of base) : 124619.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
-20 (-4.67 % of base) : 155955.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
Top method regressions (percentages):
8 (7.14 % of base) : 196914.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
8 (4.65 % of base) : 254077.dasm - System.ComponentModel.TypeConverter+SimplePropertyDescriptor:ResetValue(System.Object):this (FullOpts)
12 (3.61 % of base) : 197244.dasm - System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
32 (3.29 % of base) : 185571.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
12 (3.19 % of base) : 100007.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:GetSymbolInfo(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax,System.Threading.CancellationToken):Microsoft.CodeAnalysis.SymbolInfo:this (FullOpts)
8 (2.70 % of base) : 144017.dasm - Newtonsoft.Json.Linq.JProperty:SetItem(int,Newtonsoft.Json.Linq.JToken):this (FullOpts)
8 (2.35 % of base) : 173330.dasm - System.Xml.XmlBoundElement:CloneNode(ubyte):System.Xml.XmlNode:this (FullOpts)
40 (2.25 % of base) : 94483.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
4 (1.96 % of base) : 112294.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:VisitEventStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
4 (1.96 % of base) : 112295.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:VisitPropertyStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
12 (1.83 % of base) : 50583.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
16 (1.81 % of base) : 184204.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextValue(System.String,int,ubyte,byref):System.String (FullOpts)
24 (1.73 % of base) : 50514.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
4 (1.72 % of base) : 2795.dasm - System.Enum+<>c__63`1[short]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
12 (1.59 % of base) : 50591.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getInterpolationCloseToken|434_2(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
4 (1.43 % of base) : 112290.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:VisitMethodStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
12 (1.36 % of base) : 50587.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getCloseQuote|428_5(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
4 (1.22 % of base) : 229965.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
24 (1.21 % of base) : 257469.dasm - System.Data.ProviderBase.DbConnectionFactory:TryGetConnection(System.Data.Common.DbConnection,System.Threading.Tasks.TaskCompletionSource`1[System.Data.ProviderBase.DbConnectionInternal],System.Data.Common.DbConnectionOptions,System.Data.ProviderBase.DbConnectionInternal,byref):ubyte:this (FullOpts)
12 (1.18 % of base) : 188763.dasm - System.Runtime.Serialization.SchemaHelper:AddSchemaImport(System.String,System.Xml.Schema.XmlSchema) (FullOpts)
Top method improvements (percentages):
-48 (-27.91 % of base) : 215343.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-36 (-21.95 % of base) : 290235.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-24 (-17.14 % of base) : 205004.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-28 (-12.07 % of base) : 176389.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-24 (-9.68 % of base) : 236432.dasm - R2RDump.Disassembler:TryParseAbsoluteAddress(System.String,byref,byref,byref):ubyte:this (FullOpts)
-48 (-7.64 % of base) : 193308.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-16 (-7.55 % of base) : 290174.dasm - System.Globalization.FormatProvider+Number:RoundNumber(byref,int) (FullOpts)
-44 (-6.51 % of base) : 277459.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-44 (-6.51 % of base) : 280498.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-12 (-5.56 % of base) : 300884.dasm - System.Transactions.CheapUnfairReaderWriterLock:EnterWriteLock():this (FullOpts)
-16 (-5.56 % of base) : 201837.dasm - System.Xml.Xsl.XsltOld.ProcessingInstructionAction:IsProcessingInstructionName(System.String):ubyte (FullOpts)
-20 (-5.26 % of base) : 236433.dasm - R2RDump.Disassembler:TryParseRipRelative(System.String,byref,byref,byref):ubyte:this (FullOpts)
-4 (-5.00 % of base) : 226386.dasm - System.Runtime.InteropServices.ComEventsMethod:Remove(System.Runtime.InteropServices.ComEventsMethod,System.Runtime.InteropServices.ComEventsMethod):System.Runtime.InteropServices.ComEventsMethod (FullOpts)
-20 (-4.67 % of base) : 124619.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
-20 (-4.67 % of base) : 155955.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
-16 (-4.49 % of base) : 197330.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
-12 (-4.35 % of base) : 94473.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
-12 (-4.35 % of base) : 295905.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-40 (-4.29 % of base) : 222584.dasm - ILCompiler.LazyGenericsSupport+Graph`1[ubyte]:FindCyclesWorker(ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte],System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte]],byref,System.Diagnostics.Stopwatch) (FullOpts)
-12 (-4.00 % of base) : 63781.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
libraries_tests.run.windows.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 330789420 (overridden on cmd)
Total bytes of diff: 330783768 (overridden on cmd)
Total bytes of delta: -5652 (-0.00 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
236 : 158087.dasm (5.88 % of base)
224 : 161688.dasm (3.65 % of base)
196 : 161684.dasm (1.66 % of base)
188 : 618389.dasm (1.59 % of base)
116 : 601883.dasm (1.23 % of base)
68 : 407355.dasm (0.73 % of base)
44 : 289737.dasm (0.24 % of base)
40 : 618494.dasm (0.40 % of base)
36 : 618417.dasm (1.10 % of base)
36 : 604806.dasm (4.15 % of base)
32 : 601816.dasm (0.29 % of base)
28 : 612567.dasm (4.29 % of base)
28 : 598908.dasm (0.26 % of base)
24 : 411754.dasm (1.18 % of base)
24 : 613260.dasm (0.34 % of base)
24 : 117041.dasm (0.54 % of base)
24 : 245410.dasm (2.11 % of base)
24 : 617361.dasm (3.45 % of base)
20 : 618434.dasm (1.11 % of base)
20 : 368819.dasm (0.76 % of base)
Top file improvements (bytes):
-148 : 606436.dasm (-0.73 % of base)
-120 : 596274.dasm (-1.85 % of base)
-104 : 415045.dasm (-14.61 % of base)
-104 : 58938.dasm (-0.98 % of base)
-76 : 91551.dasm (-1.08 % of base)
-76 : 91556.dasm (-3.02 % of base)
-72 : 117324.dasm (-1.53 % of base)
-72 : 523145.dasm (-1.44 % of base)
-64 : 575463.dasm (-0.50 % of base)
-60 : 158256.dasm (-0.75 % of base)
-48 : 411946.dasm (-27.91 % of base)
-48 : 636489.dasm (-5.48 % of base)
-48 : 91718.dasm (-0.42 % of base)
-44 : 599271.dasm (-0.97 % of base)
-40 : 601391.dasm (-3.45 % of base)
-36 : 495086.dasm (-22.50 % of base)
-36 : 511950.dasm (-22.50 % of base)
-36 : 495082.dasm (-1.69 % of base)
-36 : 580203.dasm (-1.07 % of base)
-36 : 613951.dasm (-0.43 % of base)
74 total files with Code Size differences (38 improved, 36 regressed), 20 unchanged.
Top method regressions (bytes):
236 (5.88 % of base) : 158087.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:EqualsComplicatedCases(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,int):ubyte:this (Tier1)
224 (3.65 % of base) : 161688.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:HaveSameParameterTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,int,int):ubyte (Tier1)
196 (1.66 % of base) : 161684.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:Equals(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):ubyte:this (Tier1)
188 (1.59 % of base) : 618389.dasm - Microsoft.Cci.MetadataWriter:SerializeMethodBodies(System.Reflection.Metadata.BlobBuilder,Microsoft.Cci.PdbWriter,byref):int[]:this (Tier1)
116 (1.23 % of base) : 601883.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodTableRows(int[]):this (Tier1-OSR)
68 (0.73 % of base) : 407355.dasm - MS.Internal.Xml.XPath.PreSiblingQuery:Evaluate(System.Xml.XPath.XPathNodeIterator):System.Object:this (Tier1)
44 (0.24 % of base) : 289737.dasm - System.IO.Tests.StreamConformanceTests+<ValidateMisuseExceptionsAsync>d__50:MoveNext():this (Tier1)
40 (0.40 % of base) : 618494.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodTableRows(int[]):this (Tier1)
36 (1.10 % of base) : 618417.dasm - Microsoft.Cci.MetadataWriter:PopulateAssemblyTableRows():this (Tier1)
36 (4.15 % of base) : 604806.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMethodSymbolWithAttributes:get_AreLocalsZeroed():ubyte:this (Tier1)
32 (0.29 % of base) : 601816.dasm - Microsoft.Cci.MetadataWriter:SerializeMethodBodies(System.Reflection.Metadata.BlobBuilder,Microsoft.Cci.PdbWriter,byref):int[]:this (Tier1-OSR)
28 (4.29 % of base) : 612567.dasm - Microsoft.CodeAnalysis.Compilation:get_HasStrongName():ubyte:this (Tier1)
28 (0.26 % of base) : 598908.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInvocationExpression(Microsoft.CodeAnalysis.CSharp.Syntax.InvocationExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
24 (3.45 % of base) : 617361.dasm - Microsoft.CodeAnalysis.Compilation:get_IsRealSigned():ubyte:this (Tier1)
24 (0.34 % of base) : 613260.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindClassCreationExpression(Microsoft.CodeAnalysis.CSharp.Syntax.ObjectCreationExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.String,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
24 (0.54 % of base) : 117041.dasm - Microsoft.Extensions.DependencyInjection.ServiceDescriptor:ToString():System.String:this (Tier1)
24 (2.11 % of base) : 245410.dasm - System.RuntimeType:FilterApplyBase(System.Reflection.MemberInfo,int,ubyte,ubyte,ubyte,System.String,ubyte):ubyte (Tier1)
24 (1.18 % of base) : 411754.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext:GetXPathType(System.Type):int (Tier1)
20 (1.11 % of base) : 618434.dasm - Microsoft.Cci.MetadataWriter:PopulateFieldLayoutTableRows():this (Tier1)
20 (0.76 % of base) : 368819.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (Tier1)
Top method improvements (bytes):
-148 (-0.73 % of base) : 606436.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitBinaryLogicalOperatorChildren(Microsoft.CodeAnalysis.CSharp.BoundExpression):this (Tier1)
-120 (-1.85 % of base) : 596274.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArgumentsEvaluate(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]:this (Tier1)
-104 (-0.98 % of base) : 58938.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInvocationExpression(Microsoft.CodeAnalysis.CSharp.Syntax.InvocationExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
-104 (-14.61 % of base) : 415045.dasm - System.Text.EncodingTable:InternalGetCodePageFromName(System.String):int (Tier1)
-76 (-3.02 % of base) : 91556.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckValidScopedOverride[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInParameterType`1[System.__Canon],System.__Canon,ubyte,ubyte):ubyte (Tier1)
-76 (-1.08 % of base) : 91551.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:PartialMethodChecks(Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (Tier1)
-72 (-1.53 % of base) : 117324.dasm - System.Linq.Expressions.Expression:ValidateLambdaArgs(System.Type,byref,System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression],System.String) (Tier1)
-72 (-1.44 % of base) : 523145.dasm - System.Linq.Expressions.Expression:ValidateLambdaArgs(System.Type,byref,System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression],System.String) (Tier1)
-64 (-0.50 % of base) : 575463.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestPartialJsonReader(ubyte,int,System.String) (Tier1-OSR)
-60 (-0.75 % of base) : 158256.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:ValidateAttributeUsageAndDecodeWellKnownAttributes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Binder],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,short):Microsoft.CodeAnalysis.WellKnownAttributeData:this (Tier1)
-48 (-0.42 % of base) : 91718.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInvocationExpression(Microsoft.CodeAnalysis.CSharp.Syntax.InvocationExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
-48 (-27.91 % of base) : 411946.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
-48 (-5.48 % of base) : 636489.dasm - System.Threading.Tasks.Tests.TaskRtTests_Core:RunTaskStatusTests() (Tier1-OSR)
-44 (-0.97 % of base) : 599271.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitStatementsWithLocalFunctions(Microsoft.CodeAnalysis.CSharp.BoundBlock):this (Tier1)
-40 (-3.45 % of base) : 601391.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitReceiverRef(Microsoft.CodeAnalysis.CSharp.BoundExpression,int):Microsoft.CodeAnalysis.CodeGen.LocalDefinition:this (Tier1)
-36 (-0.43 % of base) : 613951.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitCollectionExpression(Microsoft.CodeAnalysis.CSharp.BoundCollectionExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
-36 (-22.50 % of base) : 495086.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-36 (-22.50 % of base) : 511950.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-36 (-1.69 % of base) : 495082.dasm - System.Numerics.BigIntegerCalculator+FastReducer:Reduce(System.Span`1[uint]):int:this (Tier1)
-36 (-5.06 % of base) : 495084.dasm - System.Numerics.BigIntegerCalculator+FastReducer:SubMod(System.Span`1[uint],System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint],int):int (Tier1)
Top method regressions (percentages):
16 (8.00 % of base) : 333362.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
16 (6.56 % of base) : 599318.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
16 (6.56 % of base) : 159968.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
16 (6.56 % of base) : 56485.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
16 (6.56 % of base) : 85813.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
16 (6.56 % of base) : 86708.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
16 (6.56 % of base) : 610543.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
16 (6.56 % of base) : 56537.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
16 (6.56 % of base) : 86703.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
16 (6.56 % of base) : 613308.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
16 (6.56 % of base) : 56532.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
16 (6.45 % of base) : 614148.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyAlgorithmIdAttributeSetting():System.Nullable`1[int]:this (Tier1)
236 (5.88 % of base) : 158087.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:EqualsComplicatedCases(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,int):ubyte:this (Tier1)
16 (4.60 % of base) : 56541.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
16 (4.60 % of base) : 599317.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
16 (4.60 % of base) : 86717.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
28 (4.29 % of base) : 612567.dasm - Microsoft.CodeAnalysis.Compilation:get_HasStrongName():ubyte:this (Tier1)
36 (4.15 % of base) : 604806.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMethodSymbolWithAttributes:get_AreLocalsZeroed():ubyte:this (Tier1)
224 (3.65 % of base) : 161688.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:HaveSameParameterTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,int,int):ubyte (Tier1)
24 (3.45 % of base) : 617361.dasm - Microsoft.CodeAnalysis.Compilation:get_IsRealSigned():ubyte:this (Tier1)
Top method improvements (percentages):
-48 (-27.91 % of base) : 411946.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
-36 (-22.50 % of base) : 495086.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-36 (-22.50 % of base) : 511950.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-28 (-15.91 % of base) : 458020.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1-OSR)
-24 (-15.79 % of base) : 86312.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedIf():ubyte:this (Tier1)
-24 (-15.38 % of base) : 159004.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedIf():ubyte:this (Tier1)
-24 (-15.38 % of base) : 86313.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedRegion():ubyte:this (Tier1)
-24 (-15.38 % of base) : 159005.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedRegion():ubyte:this (Tier1)
-24 (-15.00 % of base) : 458943.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-104 (-14.61 % of base) : 415045.dasm - System.Text.EncodingTable:InternalGetCodePageFromName(System.String):int (Tier1)
-20 (-13.51 % of base) : 53469.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedIf():ubyte:this (Tier1)
-20 (-13.51 % of base) : 595457.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedIf():ubyte:this (Tier1)
-20 (-13.51 % of base) : 595458.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedRegion():ubyte:this (Tier1)
-20 (-13.51 % of base) : 53470.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedRegion():ubyte:this (Tier1)
-48 (-5.48 % of base) : 636489.dasm - System.Threading.Tasks.Tests.TaskRtTests_Core:RunTaskStatusTests() (Tier1-OSR)
-36 (-5.06 % of base) : 495084.dasm - System.Numerics.BigIntegerCalculator+FastReducer:SubMod(System.Span`1[uint],System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint],int):int (Tier1)
-16 (-4.94 % of base) : 220657.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String) (Tier1)
-12 (-4.92 % of base) : 275521.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (Tier1)
-12 (-4.48 % of base) : 274967.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-12 (-4.48 % of base) : 219139.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 171576132 (overridden on cmd)
Total bytes of diff: 171573228 (overridden on cmd)
Total bytes of delta: -2904 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
32 : 151078.dasm (3.33 % of base)
32 : 154172.dasm (3.29 % of base)
28 : 259640.dasm (0.46 % of base)
28 : 268835.dasm (0.46 % of base)
20 : 22318.dasm (4.42 % of base)
16 : 278084.dasm (0.58 % of base)
16 : 81105.dasm (0.65 % of base)
16 : 152490.dasm (1.81 % of base)
16 : 304956.dasm (0.57 % of base)
12 : 178904.dasm (6.00 % of base)
12 : 188714.dasm (0.27 % of base)
12 : 205739.dasm (1.18 % of base)
12 : 23292.dasm (1.05 % of base)
12 : 207270.dasm (0.71 % of base)
8 : 174016.dasm (7.14 % of base)
8 : 64628.dasm (0.32 % of base)
8 : 65312.dasm (0.23 % of base)
8 : 82704.dasm (0.25 % of base)
8 : 129993.dasm (1.14 % of base)
8 : 149976.dasm (1.75 % of base)
Top file improvements (bytes):
-72 : 92076.dasm (-1.76 % of base)
-72 : 39848.dasm (-4.09 % of base)
-68 : 92009.dasm (-1.71 % of base)
-48 : 98866.dasm (-4.29 % of base)
-48 : 172442.dasm (-7.64 % of base)
-48 : 97037.dasm (-27.91 % of base)
-44 : 154216.dasm (-6.51 % of base)
-44 : 159378.dasm (-6.51 % of base)
-44 : 156087.dasm (-6.51 % of base)
-36 : 126222.dasm (-1.22 % of base)
-36 : 31969.dasm (-21.95 % of base)
-36 : 35245.dasm (-1.92 % of base)
-32 : 60234.dasm (-1.61 % of base)
-32 : 93852.dasm (-1.77 % of base)
-28 : 94908.dasm (-12.07 % of base)
-24 : 31898.dasm (-2.11 % of base)
-20 : 87391.dasm (-1.25 % of base)
-20 : 212130.dasm (-0.82 % of base)
-20 : 240439.dasm (-3.25 % of base)
-20 : 59737.dasm (-0.07 % of base)
69 total files with Code Size differences (39 improved, 30 regressed), 20 unchanged.
Top method regressions (bytes):
32 (3.33 % of base) : 151078.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
32 (3.29 % of base) : 154172.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
28 (0.46 % of base) : 259640.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<<FloatingPointConstants_Pass>g__PerformFloatingPointSerialization|38_0>d:MoveNext():this (FullOpts)
28 (0.46 % of base) : 268835.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<<FloatingPointConstants_Pass>g__PerformFloatingPointSerialization|38_0>d:MoveNext():this (FullOpts)
20 (4.42 % of base) : 22318.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
16 (0.65 % of base) : 81105.dasm - System.ComponentModel.TypeDescriptor:PipelineMerge(int,System.Collections.ICollection,System.Collections.ICollection,System.Collections.IDictionary):System.Collections.ICollection (FullOpts)
16 (1.81 % of base) : 152490.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextValue(System.String,int,ubyte,byref):System.String (FullOpts)
16 (0.58 % of base) : 278084.dasm - System.Text.RegularExpressions.RegexCharClass:DescribeSet(System.String):System.String (FullOpts)
16 (0.57 % of base) : 304956.dasm - System.Text.RegularExpressions.RegexCharClass:DescribeSet(System.String):System.String (FullOpts)
12 (1.05 % of base) : 23292.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|433_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
12 (0.27 % of base) : 188714.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeDefTableMod():this (FullOpts)
12 (1.18 % of base) : 205739.dasm - System.Runtime.Serialization.SchemaHelper:AddSchemaImport(System.String,System.Xml.Schema.XmlSchema) (FullOpts)
12 (0.71 % of base) : 207270.dasm - System.Xml.EncodingStreamWrapper:CheckUTF8DeclarationEncoding(ubyte[],int,int,int,int) (FullOpts)
12 (6.00 % of base) : 178904.dasm - System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
8 (1.11 % of base) : 36702.dasm - LamarCodeGeneration.Util.ImHashMap:UpdateEntry[System.__Canon,System.__Canon](LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon],LamarCodeGeneration.Util.ImHashMapEntry`2[System.__Canon,System.__Canon]):LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon] (FullOpts)
8 (0.32 % of base) : 64628.dasm - Microsoft.CSharp.CSharpCodeGenerator:GenerateMethod(System.CodeDom.CodeMemberMethod):this (FullOpts)
8 (0.23 % of base) : 65312.dasm - Microsoft.CSharp.CSharpCodeGenerator:GenerateProperty(System.CodeDom.CodeMemberProperty):this (FullOpts)
8 (0.29 % of base) : 64300.dasm - Microsoft.VisualBasic.VBCodeGenerator:GenerateMethod(System.CodeDom.CodeMemberMethod,System.CodeDom.CodeTypeDeclaration):this (FullOpts)
8 (1.75 % of base) : 149976.dasm - System.Buffers.Text.Tests.Base64TestHelper:VerifyDecodingCorrectness(int,int,System.Span`1[ubyte],System.Span`1[ubyte]):ubyte (FullOpts)
8 (0.25 % of base) : 82704.dasm - System.ComponentModel.Composition.CompositionContainerTests:ComposeExportedValueOfT_ValidContractName_ValidExportedValue_VerifyCanPullOnValue():this (FullOpts)
Top method improvements (bytes):
-72 (-1.76 % of base) : 92076.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-72 (-4.09 % of base) : 39848.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryParser:Run():this (FullOpts)
-68 (-1.71 % of base) : 92009.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-48 (-4.29 % of base) : 98866.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-48 (-27.91 % of base) : 97037.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-48 (-7.64 % of base) : 172442.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-44 (-6.51 % of base) : 154216.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-44 (-6.51 % of base) : 159378.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-44 (-6.51 % of base) : 156087.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-36 (-1.92 % of base) : 35245.dasm - FastExpressionCompiler.LightExpression.ExpressionCompiler+EmittingVisitor:TryEmitNestedLambda(FastExpressionCompiler.LightExpression.LambdaExpression,System.Collections.Generic.IReadOnlyList`1[FastExpressionCompiler.LightExpression.ParameterExpression],System.Reflection.Emit.ILGenerator,byref):ubyte (FullOpts)
-36 (-1.22 % of base) : 126222.dasm - System.IO.Compression.Tests.zip_UpdateTests:Update_Comment_EntryName_Encoding_Internal(System.String,System.String,System.String,System.Text.Encoding,System.String,System.String) (FullOpts)
-36 (-21.95 % of base) : 31969.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-32 (-1.61 % of base) : 60234.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (FullOpts)
-32 (-1.77 % of base) : 93852.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
-28 (-12.07 % of base) : 94908.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-24 (-2.11 % of base) : 31898.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-20 (-0.07 % of base) : 59737.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-20 (-1.25 % of base) : 87391.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:GetExtenders(System.Collections.ICollection,System.Object,System.Collections.IDictionary):System.ComponentModel.IExtenderProvider[] (FullOpts)
-20 (-3.25 % of base) : 240439.dasm - System.Speech.Internal.SrgsParser.XmlParser:ParseText(System.Speech.Internal.SrgsParser.IElement,System.String,System.String,System.String,float,System.Speech.Internal.SrgsParser.CreateTokenCallback) (FullOpts)
-20 (-0.82 % of base) : 212130.dasm - System.Tests.DoubleTests:ParsePatterns() (FullOpts)
Top method regressions (percentages):
8 (7.14 % of base) : 174016.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
12 (6.00 % of base) : 178904.dasm - System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
20 (4.42 % of base) : 22318.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
32 (3.33 % of base) : 151078.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
32 (3.29 % of base) : 154172.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
16 (1.81 % of base) : 152490.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextValue(System.String,int,ubyte,byref):System.String (FullOpts)
4 (1.75 % of base) : 181600.dasm - OLEDB.Test.ModuleCore.CVariation:Execute():int:this (FullOpts)
8 (1.75 % of base) : 149976.dasm - System.Buffers.Text.Tests.Base64TestHelper:VerifyDecodingCorrectness(int,int,System.Span`1[ubyte],System.Span`1[ubyte]):ubyte (FullOpts)
4 (1.22 % of base) : 34847.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
12 (1.18 % of base) : 205739.dasm - System.Runtime.Serialization.SchemaHelper:AddSchemaImport(System.String,System.Xml.Schema.XmlSchema) (FullOpts)
8 (1.14 % of base) : 129993.dasm - System.IO.Hashing.Tests.NonCryptoHashTestDriver:StaticVerifyTryOneShotDriver(System.IO.Hashing.Tests.NonCryptoHashTestDriver+TestCase):this (FullOpts)
8 (1.11 % of base) : 36702.dasm - LamarCodeGeneration.Util.ImHashMap:UpdateEntry[System.__Canon,System.__Canon](LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon],LamarCodeGeneration.Util.ImHashMapEntry`2[System.__Canon,System.__Canon]):LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon] (FullOpts)
12 (1.05 % of base) : 23292.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|433_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
4 (1.04 % of base) : 183733.dasm - OLEDB.Test.ModuleCore.CError:Compare(System.Object,System.Object,System.Object,System.String):ubyte (FullOpts)
8 (0.94 % of base) : 274235.dasm - System.Text.Json.Serialization.Tests.SpanTests:ParseUntyped() (FullOpts)
4 (0.89 % of base) : 47320.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__115:MoveNext():ubyte:this (FullOpts)
4 (0.89 % of base) : 53270.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__115:MoveNext():ubyte:this (FullOpts)
4 (0.89 % of base) : 55534.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__122:MoveNext():ubyte:this (FullOpts)
4 (0.85 % of base) : 64469.dasm - Microsoft.VisualBasic.VBCodeGenerator:GenerateTypeConstructor(System.CodeDom.CodeTypeConstructor):this (FullOpts)
12 (0.71 % of base) : 207270.dasm - System.Xml.EncodingStreamWrapper:CheckUTF8DeclarationEncoding(ubyte[],int,int,int,int) (FullOpts)
Top method improvements (percentages):
-48 (-27.91 % of base) : 97037.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-36 (-21.95 % of base) : 31969.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-28 (-12.07 % of base) : 94908.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-48 (-7.64 % of base) : 172442.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-16 (-7.55 % of base) : 149131.dasm - System.Globalization.FormatProvider+Number:RoundNumber(byref,int) (FullOpts)
-44 (-6.51 % of base) : 154216.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-44 (-6.51 % of base) : 159378.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-44 (-6.51 % of base) : 156087.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-16 (-4.49 % of base) : 34349.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
-12 (-4.35 % of base) : 173.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-12 (-4.35 % of base) : 277971.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-48 (-4.29 % of base) : 98866.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-72 (-4.09 % of base) : 39848.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryParser:Run():this (FullOpts)
-12 (-4.00 % of base) : 45525.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-4 (-3.85 % of base) : 16830.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
-4 (-3.57 % of base) : 785.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (FullOpts)
-12 (-3.33 % of base) : 304856.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-4 (-3.33 % of base) : 171295.dasm - System.Xml.Linq.XObject:get_BaseUri():System.String:this (FullOpts)
-20 (-3.25 % of base) : 240439.dasm - System.Speech.Internal.SrgsParser.XmlParser:ParseText(System.Speech.Internal.SrgsParser.IElement,System.String,System.String,System.String,float,System.Speech.Internal.SrgsParser.CreateTokenCallback) (FullOpts)
-16 (-3.12 % of base) : 34723.dasm - Stashbox.Registration.DecoratorRepository:GetRegistrationsForType(System.Type):System.Collections.Generic.IEnumerable`1[Stashbox.Registration.ServiceRegistrations.ServiceRegistration]:this (FullOpts)
realworld.run.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15904740 (overridden on cmd)
Total bytes of diff: 15904564 (overridden on cmd)
Total bytes of delta: -176 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
36 : 21698.dasm (0.61 % of base)
16 : 29810.dasm (1.32 % of base)
12 : 16619.dasm (0.82 % of base)
8 : 16592.dasm (0.58 % of base)
4 : 27943.dasm (0.89 % of base)
4 : 4758.dasm (0.63 % of base)
Top file improvements (bytes):
-24 : 16802.dasm (-2.03 % of base)
-20 : 15199.dasm (-1.82 % of base)
-16 : 667.dasm (-5.41 % of base)
-12 : 823.dasm (-0.22 % of base)
-12 : 12757.dasm (-0.35 % of base)
-12 : 1709.dasm (-0.78 % of base)
-12 : 17893.dasm (-4.35 % of base)
-12 : 19211.dasm (-4.00 % of base)
-12 : 19397.dasm (-0.36 % of base)
-12 : 415.dasm (-3.90 % of base)
-8 : 8708.dasm (-1.64 % of base)
-8 : 25247.dasm (-1.01 % of base)
-8 : 31955.dasm (-0.47 % of base)
-8 : 14398.dasm (-3.23 % of base)
-8 : 15852.dasm (-0.67 % of base)
-8 : 17602.dasm (-0.26 % of base)
-8 : 18448.dasm (-0.12 % of base)
-8 : 18450.dasm (-0.40 % of base)
-8 : 20357.dasm (-0.29 % of base)
-8 : 22850.dasm (-0.92 % of base)
34 total files with Code Size differences (28 improved, 6 regressed), 11 unchanged.
Top method regressions (bytes):
36 (0.61 % of base) : 21698.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
16 (1.32 % of base) : 29810.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
12 (0.82 % of base) : 16619.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
8 (0.58 % of base) : 16592.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
4 (0.89 % of base) : 27943.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
4 (0.63 % of base) : 4758.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
Top method improvements (bytes):
-24 (-2.03 % of base) : 16802.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-20 (-1.82 % of base) : 15199.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
-16 (-5.41 % of base) : 667.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-12 (-4.00 % of base) : 19211.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-12 (-0.36 % of base) : 19397.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-12 (-0.35 % of base) : 12757.dasm - Microsoft.ML.Data.SchemaDefinition:Create(System.Type,int):Microsoft.ML.Data.SchemaDefinition (FullOpts)
-12 (-0.22 % of base) : 823.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-12 (-3.90 % of base) : 415.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-12 (-4.35 % of base) : 17893.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-12 (-0.78 % of base) : 1709.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (FullOpts)
-8 (-0.26 % of base) : 17602.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
-8 (-0.40 % of base) : 18450.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
-8 (-0.12 % of base) : 18448.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
-8 (-0.92 % of base) : 22850.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromEqualsMethod>g__isWellKnownEqualityMethodOrImplementation|213_1(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,int):ubyte (FullOpts)
-8 (-0.29 % of base) : 20357.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-8 (-0.67 % of base) : 15852.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
-8 (-1.01 % of base) : 25247.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+NumericValueSet`2[int,Microsoft.CodeAnalysis.CSharp.ValueSetFactory+IntTC]:Union(Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]):Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]:this (FullOpts)
-8 (-3.23 % of base) : 14398.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-8 (-0.47 % of base) : 31955.dasm - System.Management.Automation.PowerShell:CoreInvoke[System.__Canon,System.__Canon](System.Management.Automation.PSDataCollection`1[System.__Canon],System.Management.Automation.PSDataCollection`1[System.__Canon],System.Management.Automation.PSInvocationSettings):this (FullOpts)
-8 (-1.64 % of base) : 8708.dasm - System.Xml.Linq.XContainer+<GetDescendants>d__38:MoveNext():ubyte:this (FullOpts)
Top method regressions (percentages):
16 (1.32 % of base) : 29810.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
4 (0.89 % of base) : 27943.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
12 (0.82 % of base) : 16619.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
4 (0.63 % of base) : 4758.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
36 (0.61 % of base) : 21698.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
8 (0.58 % of base) : 16592.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
Top method improvements (percentages):
-16 (-5.41 % of base) : 667.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-12 (-4.35 % of base) : 17893.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-12 (-4.00 % of base) : 19211.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-12 (-3.90 % of base) : 415.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-8 (-3.23 % of base) : 14398.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-24 (-2.03 % of base) : 16802.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-20 (-1.82 % of base) : 15199.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
-8 (-1.64 % of base) : 8708.dasm - System.Xml.Linq.XContainer+<GetDescendants>d__38:MoveNext():ubyte:this (FullOpts)
-4 (-1.49 % of base) : 24122.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsFixedStatementExpression(Microsoft.CodeAnalysis.SyntaxNode):ubyte (FullOpts)
-8 (-1.01 % of base) : 25247.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+NumericValueSet`2[int,Microsoft.CodeAnalysis.CSharp.ValueSetFactory+IntTC]:Union(Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]):Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]:this (FullOpts)
-8 (-0.92 % of base) : 22850.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromEqualsMethod>g__isWellKnownEqualityMethodOrImplementation|213_1(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,int):ubyte (FullOpts)
-12 (-0.78 % of base) : 1709.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (FullOpts)
-4 (-0.73 % of base) : 24593.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ResetStack():this (FullOpts)
-8 (-0.67 % of base) : 15852.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
-4 (-0.62 % of base) : 23040.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:FindLocalFunction(Microsoft.CodeAnalysis.CSharp.Syntax.LocalFunctionStatementSyntax,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Symbols.LocalFunctionSymbol (FullOpts)
-8 (-0.47 % of base) : 31955.dasm - System.Management.Automation.PowerShell:CoreInvoke[System.__Canon,System.__Canon](System.Management.Automation.PSDataCollection`1[System.__Canon],System.Management.Automation.PSDataCollection`1[System.__Canon],System.Management.Automation.PSInvocationSettings):this (FullOpts)
-8 (-0.40 % of base) : 18450.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
-12 (-0.36 % of base) : 19397.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-12 (-0.35 % of base) : 12757.dasm - Microsoft.ML.Data.SchemaDefinition:Create(System.Type,int):Microsoft.ML.Data.SchemaDefinition (FullOpts)
-4 (-0.34 % of base) : 17667.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
34 total methods with Code Size differences (28 improved, 6 regressed).
smoke_tests.nativeaot.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 3970716 (overridden on cmd)
Total bytes of diff: 3970512 (overridden on cmd)
Total bytes of delta: -204 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
16 : 2566.dasm (1.61 % of base)
16 : 8313.dasm (1.61 % of base)
8 : 1000.dasm (2.50 % of base)
8 : 4217.dasm (2.50 % of base)
4 : 2125.dasm (0.78 % of base)
4 : 6712.dasm (0.78 % of base)
Top file improvements (bytes):
-20 : 12502.dasm (-8.20 % of base)
-20 : 7336.dasm (-8.20 % of base)
-16 : 1406.dasm (-6.45 % of base)
-16 : 14863.dasm (-3.12 % of base)
-16 : 2008.dasm (-3.10 % of base)
-16 : 4879.dasm (-6.45 % of base)
-16 : 6421.dasm (-3.10 % of base)
-12 : 4479.dasm (-4.11 % of base)
-12 : 4482.dasm (-0.26 % of base)
-12 : 7126.dasm (-0.63 % of base)
-12 : 1122.dasm (-0.26 % of base)
-12 : 1139.dasm (-4.11 % of base)
-12 : 12809.dasm (-0.69 % of base)
-8 : 2013.dasm (-4.08 % of base)
-8 : 23592.dasm (-4.76 % of base)
-8 : 6395.dasm (-4.08 % of base)
-4 : 11975.dasm (-1.33 % of base)
-4 : 14318.dasm (-0.30 % of base)
-4 : 4271.dasm (-0.56 % of base)
-4 : 4314.dasm (-0.46 % of base)
33 total files with Code Size differences (27 improved, 6 regressed), 9 unchanged.
Top method regressions (bytes):
16 (1.61 % of base) : 2566.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
16 (1.61 % of base) : 8313.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
8 (2.50 % of base) : 1000.dasm - System.Enum+<>c__64`1[uint]:<FormatNumberAsHex>b__64_0(System.Span`1[ushort],long):this (FullOpts)
8 (2.50 % of base) : 4217.dasm - System.Enum+<>c__64`1[uint]:<FormatNumberAsHex>b__64_0(System.Span`1[ushort],long):this (FullOpts)
4 (0.78 % of base) : 2125.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
4 (0.78 % of base) : 6712.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
Top method improvements (bytes):
-20 (-8.20 % of base) : 12502.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
-20 (-8.20 % of base) : 7336.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
-16 (-3.12 % of base) : 14863.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
-16 (-3.10 % of base) : 2008.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
-16 (-3.10 % of base) : 6421.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
-16 (-6.45 % of base) : 1406.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-16 (-6.45 % of base) : 4879.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-12 (-0.63 % of base) : 7126.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:FindMatchingInterfaceSlot(Internal.Runtime.TypeLoader.NativeFormatModuleInfo,Internal.NativeFormat.NativeReader,byref,byref,Internal.TypeSystem.InstantiatedMethod,Internal.TypeSystem.DefType,ubyte,ubyte):Internal.TypeSystem.InstantiatedMethod (FullOpts)
-12 (-0.69 % of base) : 12809.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:FindMatchingInterfaceSlot(Internal.Runtime.TypeLoader.NativeFormatModuleInfo,Internal.NativeFormat.NativeReader,byref,byref,Internal.TypeSystem.InstantiatedMethod,Internal.TypeSystem.DefType,ubyte,ubyte):Internal.TypeSystem.InstantiatedMethod (FullOpts)
-12 (-0.26 % of base) : 4482.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-12 (-0.26 % of base) : 1122.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-12 (-4.11 % of base) : 4479.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-12 (-4.11 % of base) : 1139.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-8 (-4.76 % of base) : 23592.dasm - FinalizeTest:Run():int (FullOpts)
-8 (-4.08 % of base) : 2013.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-8 (-4.08 % of base) : 6395.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-4 (-1.89 % of base) : 6471.dasm - System.Diagnostics.NtProcessManager:GetProcessInfos(System.Diagnostics.PerformanceCounterLib):System.Diagnostics.ProcessInfo[] (FullOpts)
-4 (-1.33 % of base) : 11975.dasm - System.Globalization.DateTimeFormatInfo:get_DateTimeOffsetPattern():System.String:this (FullOpts)
-4 (-1.33 % of base) : 6156.dasm - System.Globalization.DateTimeFormatInfo:get_DateTimeOffsetPattern():System.String:this (FullOpts)
-4 (-0.30 % of base) : 14318.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
Top method regressions (percentages):
8 (2.50 % of base) : 1000.dasm - System.Enum+<>c__64`1[uint]:<FormatNumberAsHex>b__64_0(System.Span`1[ushort],long):this (FullOpts)
8 (2.50 % of base) : 4217.dasm - System.Enum+<>c__64`1[uint]:<FormatNumberAsHex>b__64_0(System.Span`1[ushort],long):this (FullOpts)
16 (1.61 % of base) : 2566.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
16 (1.61 % of base) : 8313.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
4 (0.78 % of base) : 2125.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
4 (0.78 % of base) : 6712.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
Top method improvements (percentages):
-20 (-8.20 % of base) : 12502.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
-20 (-8.20 % of base) : 7336.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
-16 (-6.45 % of base) : 1406.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-16 (-6.45 % of base) : 4879.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-8 (-4.76 % of base) : 23592.dasm - FinalizeTest:Run():int (FullOpts)
-12 (-4.11 % of base) : 4479.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-12 (-4.11 % of base) : 1139.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-8 (-4.08 % of base) : 2013.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-8 (-4.08 % of base) : 6395.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-16 (-3.12 % of base) : 14863.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
-16 (-3.10 % of base) : 2008.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
-16 (-3.10 % of base) : 6421.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
-4 (-1.89 % of base) : 6471.dasm - System.Diagnostics.NtProcessManager:GetProcessInfos(System.Diagnostics.PerformanceCounterLib):System.Diagnostics.ProcessInfo[] (FullOpts)
-4 (-1.33 % of base) : 11975.dasm - System.Globalization.DateTimeFormatInfo:get_DateTimeOffsetPattern():System.String:this (FullOpts)
-4 (-1.33 % of base) : 6156.dasm - System.Globalization.DateTimeFormatInfo:get_DateTimeOffsetPattern():System.String:this (FullOpts)
-12 (-0.69 % of base) : 12809.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:FindMatchingInterfaceSlot(Internal.Runtime.TypeLoader.NativeFormatModuleInfo,Internal.NativeFormat.NativeReader,byref,byref,Internal.TypeSystem.InstantiatedMethod,Internal.TypeSystem.DefType,ubyte,ubyte):Internal.TypeSystem.InstantiatedMethod (FullOpts)
-12 (-0.63 % of base) : 7126.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:FindMatchingInterfaceSlot(Internal.Runtime.TypeLoader.NativeFormatModuleInfo,Internal.NativeFormat.NativeReader,byref,byref,Internal.TypeSystem.InstantiatedMethod,Internal.TypeSystem.DefType,ubyte,ubyte):Internal.TypeSystem.InstantiatedMethod (FullOpts)
-4 (-0.57 % of base) : 9711.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (FullOpts)
-4 (-0.56 % of base) : 4271.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (FullOpts)
-4 (-0.47 % of base) : 9749.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:GetPropertyImpl(System.String,int,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
33 total methods with Code Size differences (27 improved, 6 regressed).
windows x64
Diffs are based on 2,512,204 contexts (997,391 MinOpts, 1,514,813 FullOpts).
MISSED contexts: 8 (0.00%)
Overall (-17,431 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
aspnet.run.windows.x64.checked.mch |
47,041,738 |
-1,923 |
benchmarks.run.windows.x64.checked.mch |
8,742,508 |
-518 |
benchmarks.run_pgo.windows.x64.checked.mch |
36,236,407 |
+401 |
benchmarks.run_tiered.windows.x64.checked.mch |
12,416,111 |
-139 |
coreclr_tests.run.windows.x64.checked.mch |
393,193,439 |
-1,158 |
libraries.crossgen2.windows.x64.checked.mch |
39,486,202 |
-1,301 |
libraries.pmi.windows.x64.checked.mch |
61,662,273 |
-1,989 |
libraries_tests.run.windows.x64.Release.mch |
282,113,061 |
-9,627 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
137,067,068 |
-904 |
realworld.run.windows.x64.checked.mch |
14,130,922 |
-215 |
smoke_tests.nativeaot.windows.x64.checked.mch |
5,083,011 |
-58 |
FullOpts (-17,431 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
aspnet.run.windows.x64.checked.mch |
28,550,689 |
-1,923 |
benchmarks.run.windows.x64.checked.mch |
8,742,145 |
-518 |
benchmarks.run_pgo.windows.x64.checked.mch |
22,065,751 |
+401 |
benchmarks.run_tiered.windows.x64.checked.mch |
3,316,872 |
-139 |
coreclr_tests.run.windows.x64.checked.mch |
120,404,585 |
-1,158 |
libraries.crossgen2.windows.x64.checked.mch |
39,485,015 |
-1,301 |
libraries.pmi.windows.x64.checked.mch |
61,548,752 |
-1,989 |
libraries_tests.run.windows.x64.Release.mch |
106,254,743 |
-9,627 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
126,447,962 |
-904 |
realworld.run.windows.x64.checked.mch |
13,744,313 |
-215 |
smoke_tests.nativeaot.windows.x64.checked.mch |
5,082,064 |
-58 |
Example diffs
aspnet.run.windows.x64.checked.mch
-31 (-16.15%) : 66877.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.PathNormalizer:ContainsDotSegments(ulong,ulong):ubyte (Tier1)
@@ -9,12 +9,12 @@
; Final local variable assignments
;
; V00 arg0 [V00,T06] ( 3, 3 ) long -> rcx single-def
-; V01 arg1 [V01,T03] ( 6, 25 ) long -> rdx single-def
-; V02 loc0 [V02,T00] ( 15, 83 ) long -> rcx
+; V01 arg1 [V01,T03] ( 5, 22 ) long -> rdx single-def
+; V02 loc0 [V02,T00] ( 14, 80 ) long -> rcx
; V03 loc1 [V03,T02] ( 2, 31 ) ubyte -> rax
-; V04 loc2 [V04,T05] ( 7, 9 ) ubyte -> r10
-; V05 loc3 [V05,T07] ( 6, 3 ) ubyte -> r9
-; V06 loc4 [V06,T08] ( 2, 2 ) ubyte -> r11
+; V04 loc2 [V04,T05] ( 4, 6 ) ubyte -> rax
+; V05 loc3 [V05,T07] ( 6, 3 ) ubyte -> r10
+; V06 loc4 [V06,T08] ( 2, 2 ) ubyte -> r9
;* V07 loc5 [V07 ] ( 0, 0 ) long -> zero-ref
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V09 tmp1 [V09,T04] ( 5, 14 ) long -> r8 "dup spill"
@@ -38,72 +38,65 @@ G_M7601_IG03: ; bbWeight=3, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
jbe SHORT G_M7601_IG10
;; size=17 bbWeight=3 PerfScore 15.00
G_M7601_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movzx r10, byte ptr [rcx+0x01]
- movzx r9, byte ptr [rcx+0x02]
- movzx r11, byte ptr [rcx+0x03]
- cmp r10d, 46
- je SHORT G_M7601_IG14
- cmp r10d, 46
- je SHORT G_M7601_IG15
- ;; size=27 bbWeight=2 PerfScore 17.00
+ movzx rax, byte ptr [rcx+0x01]
+ movzx r10, byte ptr [rcx+0x02]
+ movzx r9, byte ptr [rcx+0x03]
+ cmp eax, 46
+ je SHORT G_M7601_IG13
+ ;; size=19 bbWeight=2 PerfScore 14.50
G_M7601_IG05: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
inc rcx
movzx rax, byte ptr [rcx]
cmp rcx, rdx
- jae SHORT G_M7601_IG07
+ jae SHORT G_M7601_IG08
;; size=11 bbWeight=16 PerfScore 56.00
G_M7601_IG06: ; bbWeight=15, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp eax, 47
jne SHORT G_M7601_IG05
;; size=5 bbWeight=15 PerfScore 18.75
G_M7601_IG07: ; bbWeight=3, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp rcx, rdx
- jb SHORT G_M7601_IG03
- ;; size=5 bbWeight=3 PerfScore 3.75
-G_M7601_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M7601_IG03
+ ;; size=2 bbWeight=3 PerfScore 6.00
+G_M7601_IG08: ; bbWeight=3, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M7601_IG09: ; bbWeight=1, epilog, nogc, extend
+ ;; size=2 bbWeight=3 PerfScore 0.75
+G_M7601_IG09: ; bbWeight=3, epilog, nogc, extend
ret
- ;; size=1 bbWeight=1 PerfScore 1.00
+ ;; size=1 bbWeight=3 PerfScore 3.00
G_M7601_IG10: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp r8d, 2
- jne SHORT G_M7601_IG18
+ jne SHORT G_M7601_IG17
;; size=6 bbWeight=1 PerfScore 1.25
G_M7601_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movzx r10, byte ptr [rcx+0x01]
- movzx r9, byte ptr [rcx+0x02]
- cmp r10d, 46
- je SHORT G_M7601_IG20
- ;; size=16 bbWeight=1 PerfScore 5.25
-G_M7601_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp r10d, 46
+ movzx rax, byte ptr [rcx+0x01]
+ movzx r10, byte ptr [rcx+0x02]
+ cmp eax, 46
jne SHORT G_M7601_IG05
- ;; size=6 bbWeight=1 PerfScore 1.25
+ ;; size=14 bbWeight=1 PerfScore 5.25
+G_M7601_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp r10d, 46
+ je SHORT G_M7601_IG15
+ cmp r10d, 47
+ jne SHORT G_M7601_IG05
+ jmp SHORT G_M7601_IG15
+ ;; size=14 bbWeight=0 PerfScore 0.00
G_M7601_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp r9d, 47
- jne SHORT G_M7601_IG05
- jmp SHORT G_M7601_IG16
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M7601_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp r9d, 46
- jne SHORT G_M7601_IG15
- cmp r11d, 47
- je SHORT G_M7601_IG16
cmp r10d, 46
- jne SHORT G_M7601_IG05
- ;; size=18 bbWeight=0 PerfScore 0.00
-G_M7601_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M7601_IG14
cmp r9d, 47
+ je SHORT G_M7601_IG15
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M7601_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp r10d, 47
jne SHORT G_M7601_IG05
;; size=6 bbWeight=0 PerfScore 0.00
-G_M7601_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M7601_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=0 PerfScore 0.00
-G_M7601_IG17: ; bbWeight=0, epilog, nogc, extend
+G_M7601_IG16: ; bbWeight=0, epilog, nogc, extend
ret
;; size=1 bbWeight=0 PerfScore 0.00
-G_M7601_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M7601_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp r8d, 2
ja SHORT G_M7601_IG04
mov eax, r8d
@@ -113,22 +106,17 @@ G_M7601_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
add r8, r10
jmp r8
;; size=33 bbWeight=0 PerfScore 0.00
-G_M7601_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M7601_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rcx+0x01], 46
- jne G_M7601_IG05
- jmp SHORT G_M7601_IG16
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M7601_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp r9d, 46
- je SHORT G_M7601_IG16
- jmp SHORT G_M7601_IG12
+ jne SHORT G_M7601_IG05
+ jmp SHORT G_M7601_IG15
;; size=8 bbWeight=0 PerfScore 0.00
RWD00 dd G_M7601_IG05 - G_M7601_IG02
- dd G_M7601_IG19 - G_M7601_IG02
+ dd G_M7601_IG18 - G_M7601_IG02
dd G_M7601_IG11 - G_M7601_IG02
-; Total bytes of code 192, prolog size 0, PerfScore 120.75, instruction count 60, allocated bytes for code 192 (MethodHash=9760e24e) for method Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.PathNormalizer:ContainsDotSegments(ulong,ulong):ubyte (Tier1)
+; Total bytes of code 161, prolog size 0, PerfScore 121.75, instruction count 52, allocated bytes for code 161 (MethodHash=9760e24e) for method Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.PathNormalizer:ContainsDotSegments(ulong,ulong):ubyte (Tier1)
; ============================================================
Unwind Info:
-33 (-14.86%) : 57488.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.PathNormalizer:ContainsDotSegments(ulong,ulong):ubyte (Tier1-OSR)
@@ -6,14 +6,14 @@
; optimized using Dynamic PGO
; rsp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 0.14
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 0.14
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) long -> zero-ref single-def
-; V01 arg1 [V01,T03] ( 5,130.57) long -> rdx single-def
-; V02 loc0 [V02,T00] ( 13,485.71) long -> rax
+; V01 arg1 [V01,T03] ( 4,116.29) long -> rdx single-def
+; V02 loc0 [V02,T00] ( 12,471.43) long -> rax
; V03 loc1 [V03,T02] ( 2,192.86) ubyte -> rcx
-; V04 loc2 [V04,T05] ( 7, 42.86) ubyte -> r8
+; V04 loc2 [V04,T05] ( 4, 28.57) ubyte -> r8
; V05 loc3 [V05,T06] ( 6, 14.29) ubyte -> r10
; V06 loc4 [V06,T07] ( 2, 14.29) ubyte -> r9
;* V07 loc5 [V07 ] ( 0, 0 ) long -> zero-ref
@@ -39,37 +39,34 @@ G_M7601_IG03: ; bbWeight=14.29, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
cmp rcx, 2
jbe SHORT G_M7601_IG12
;; size=17 bbWeight=14.29 PerfScore 71.43
-G_M7601_IG04: ; bbWeight=14.29, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M7601_IG04: ; bbWeight=14.29, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movzx r8, byte ptr [rax+0x01]
movzx r10, byte ptr [rax+0x02]
movzx r9, byte ptr [rax+0x03]
cmp r8d, 46
- je G_M7601_IG16
- cmp r8d, 46
- je G_M7601_IG17
- ;; size=35 bbWeight=14.29 PerfScore 121.43
+ je SHORT G_M7601_IG15
+ ;; size=21 bbWeight=14.29 PerfScore 103.57
G_M7601_IG05: ; bbWeight=100.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
inc rax
movzx rcx, byte ptr [rax]
cmp rax, rdx
- jae SHORT G_M7601_IG07
+ jae SHORT G_M7601_IG08
;; size=11 bbWeight=100.00 PerfScore 350.00
G_M7601_IG06: ; bbWeight=92.86, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp ecx, 47
jne SHORT G_M7601_IG05
;; size=5 bbWeight=92.86 PerfScore 116.07
G_M7601_IG07: ; bbWeight=14.29, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp rax, rdx
- jb SHORT G_M7601_IG03
- ;; size=5 bbWeight=14.29 PerfScore 17.86
-G_M7601_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M7601_IG03
+ ;; size=2 bbWeight=14.29 PerfScore 28.57
+G_M7601_IG08: ; bbWeight=14.29, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M7601_IG09: ; bbWeight=0, epilog, nogc, extend
+ ;; size=2 bbWeight=14.29 PerfScore 3.57
+G_M7601_IG09: ; bbWeight=14.29, epilog, nogc, extend
add rsp, 152
pop rbp
ret
- ;; size=9 bbWeight=0 PerfScore 0.00
+ ;; size=9 bbWeight=14.29 PerfScore 25.00
G_M7601_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, 1
;; size=5 bbWeight=0 PerfScore 0.00
@@ -97,26 +94,20 @@ G_M7601_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movzx r8, byte ptr [rax+0x01]
movzx r10, byte ptr [rax+0x02]
cmp r8d, 46
- jne SHORT G_M7601_IG15
+ jne SHORT G_M7601_IG05
cmp r10d, 46
je SHORT G_M7601_IG10
- ;; size=22 bbWeight=0 PerfScore 0.00
-G_M7601_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp r8d, 46
- jne SHORT G_M7601_IG05
cmp r10d, 47
jne SHORT G_M7601_IG05
jmp SHORT G_M7601_IG10
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M7601_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=30 bbWeight=0 PerfScore 0.00
+G_M7601_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp r10d, 46
- jne SHORT G_M7601_IG17
+ jne SHORT G_M7601_IG16
cmp r9d, 47
je SHORT G_M7601_IG10
- cmp r8d, 46
- jne G_M7601_IG05
- ;; size=22 bbWeight=0 PerfScore 0.00
-G_M7601_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M7601_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp r10d, 47
je SHORT G_M7601_IG10
jmp G_M7601_IG05
@@ -126,7 +117,7 @@ RWD00 dd G_M7601_IG05 - G_M7601_IG02
dd G_M7601_IG14 - G_M7601_IG02
-; Total bytes of code 222, prolog size 13, PerfScore 682.79, instruction count 63, allocated bytes for code 222 (MethodHash=9760e24e) for method Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.PathNormalizer:ContainsDotSegments(ulong,ulong):ubyte (Tier1-OSR)
+; Total bytes of code 189, prolog size 13, PerfScore 704.21, instruction count 56, allocated bytes for code 189 (MethodHash=9760e24e) for method Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.PathNormalizer:ContainsDotSegments(ulong,ulong):ubyte (Tier1-OSR)
; ============================================================
Unwind Info:
-33 (-14.67%) : 36831.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.PathNormalizer:ContainsDotSegments(ulong,ulong):ubyte (Tier1-OSR)
@@ -6,14 +6,14 @@
; optimized using Dynamic PGO
; rsp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 0.03
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 0.03
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) long -> zero-ref single-def
-; V01 arg1 [V01,T03] ( 6, 602 ) long -> rdx single-def
-; V02 loc0 [V02,T00] ( 14,2166.67) long -> rax
+; V01 arg1 [V01,T03] ( 5, 535.33) long -> rdx single-def
+; V02 loc0 [V02,T00] ( 13,2100.00) long -> rax
; V03 loc1 [V03,T02] ( 2, 866.67) ubyte -> rcx
-; V04 loc2 [V04,T05] ( 7, 200 ) ubyte -> r8
+; V04 loc2 [V04,T05] ( 4, 133.33) ubyte -> r8
; V05 loc3 [V05,T06] ( 6, 66.67) ubyte -> r10
; V06 loc4 [V06,T07] ( 2, 66.67) ubyte -> r9
;* V07 loc5 [V07 ] ( 0, 0 ) long -> zero-ref
@@ -40,35 +40,32 @@ G_M7601_IG03: ; bbWeight=66.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
cmp rcx, 2
jbe SHORT G_M7601_IG11
;; size=17 bbWeight=66.67 PerfScore 333.33
-G_M7601_IG04: ; bbWeight=66.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M7601_IG04: ; bbWeight=66.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movzx r8, byte ptr [rax+0x01]
movzx r10, byte ptr [rax+0x02]
movzx r9, byte ptr [rax+0x03]
cmp r8d, 46
- je G_M7601_IG15
- cmp r8d, 46
- je G_M7601_IG16
- ;; size=35 bbWeight=66.67 PerfScore 566.67
+ je SHORT G_M7601_IG14
+ ;; size=21 bbWeight=66.67 PerfScore 483.33
G_M7601_IG05: ; bbWeight=433.33, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
inc rax
movzx rcx, byte ptr [rax]
cmp rax, rdx
- jae SHORT G_M7601_IG06
+ jae SHORT G_M7601_IG07
cmp ecx, 47
jne SHORT G_M7601_IG05
;; size=16 bbWeight=433.33 PerfScore 2058.33
G_M7601_IG06: ; bbWeight=66.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp rax, rdx
- jb SHORT G_M7601_IG03
- ;; size=5 bbWeight=66.67 PerfScore 83.33
-G_M7601_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M7601_IG03
+ ;; size=2 bbWeight=66.67 PerfScore 133.33
+G_M7601_IG07: ; bbWeight=66.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M7601_IG08: ; bbWeight=0, epilog, nogc, extend
+ ;; size=2 bbWeight=66.67 PerfScore 16.67
+G_M7601_IG08: ; bbWeight=66.67, epilog, nogc, extend
add rsp, 152
pop rbp
ret
- ;; size=9 bbWeight=0 PerfScore 0.00
+ ;; size=9 bbWeight=66.67 PerfScore 116.67
G_M7601_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, 1
;; size=5 bbWeight=0 PerfScore 0.00
@@ -96,26 +93,20 @@ G_M7601_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movzx r8, byte ptr [rax+0x01]
movzx r10, byte ptr [rax+0x02]
cmp r8d, 46
- jne SHORT G_M7601_IG14
+ jne SHORT G_M7601_IG05
cmp r10d, 46
je SHORT G_M7601_IG09
- ;; size=22 bbWeight=0 PerfScore 0.00
-G_M7601_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp r8d, 46
- jne SHORT G_M7601_IG05
cmp r10d, 47
jne SHORT G_M7601_IG05
jmp SHORT G_M7601_IG09
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M7601_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=30 bbWeight=0 PerfScore 0.00
+G_M7601_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp r10d, 46
- jne SHORT G_M7601_IG16
+ jne SHORT G_M7601_IG15
cmp r9d, 47
je SHORT G_M7601_IG09
- cmp r8d, 46
- jne G_M7601_IG05
- ;; size=22 bbWeight=0 PerfScore 0.00
-G_M7601_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M7601_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp r10d, 47
je SHORT G_M7601_IG09
jmp G_M7601_IG05
@@ -125,7 +116,7 @@ RWD00 dd G_M7601_IG05 - G_M7601_IG02
dd G_M7601_IG13 - G_M7601_IG02
-; Total bytes of code 225, prolog size 13, PerfScore 3216.67, instruction count 64, allocated bytes for code 225 (MethodHash=9760e24e) for method Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.PathNormalizer:ContainsDotSegments(ulong,ulong):ubyte (Tier1-OSR)
+; Total bytes of code 192, prolog size 13, PerfScore 3316.67, instruction count 57, allocated bytes for code 192 (MethodHash=9760e24e) for method Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.PathNormalizer:ContainsDotSegments(ulong,ulong):ubyte (Tier1-OSR)
; ============================================================
Unwind Info:
+19 (+4.09%) : 56158.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
@@ -108,7 +108,7 @@ G_M62513_IG08: ; bbWeight=0.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {},
; gcrRegs +[rcx]
sub esi, dword ptr [rcx+0x18]
cmp esi, r14d
- jg SHORT G_M62513_IG11
+ jg SHORT G_M62513_IG12
jmp G_M62513_IG18
;; size=13 bbWeight=0.02 PerfScore 0.13
G_M62513_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -120,40 +120,46 @@ G_M62513_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_OVERFLOW
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M62513_IG11: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M62513_IG11: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
+ cmp dword ptr [rcx+0x14], 0
+ jg G_M62513_IG16
+ xor eax, eax
+ jmp G_M62513_IG17
+ ;; size=17 bbWeight=0 PerfScore 0.00
+G_M62513_IG12: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
mov rax, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rax]
; gcrRegs +[rsi]
mov r15d, 1
cmp ebx, 1
- je SHORT G_M62513_IG12
+ je SHORT G_M62513_IG13
cmp ebx, 2
- jne G_M62513_IG14
+ jne G_M62513_IG15
mov r15d, 32
mov eax, 33
cmp dword ptr [rbp+0x30], 0x4000
cmovg r15d, eax
cmp dword ptr [rcx+0x10], 16
- jle G_M62513_IG14
+ jle G_M62513_IG15
inc r15d
cmp dword ptr [rcx+0x10], 32
- jle SHORT G_M62513_IG14
+ jle SHORT G_M62513_IG15
inc r15d
- jmp SHORT G_M62513_IG14
+ jmp SHORT G_M62513_IG15
;; size=79 bbWeight=0 PerfScore 0.00
-G_M62513_IG12: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
- mov r15d, 2
- jmp SHORT G_M62513_IG14
- ;; size=8 bbWeight=0 PerfScore 0.00
G_M62513_IG13: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
+ mov r15d, 2
+ jmp SHORT G_M62513_IG15
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M62513_IG14: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rcx+0x08]
; gcrRegs +[rax]
mov edx, dword ptr [rcx+0x14]
dec edx
mov dword ptr [rcx+0x14], edx
cmp edx, dword ptr [rax+0x08]
- jae SHORT G_M62513_IG09
+ jae G_M62513_IG09
mov rbx, gword ptr [rax+8*rdx+0x10]
; gcrRegs +[rbx]
mov rax, gword ptr [rcx+0x08]
@@ -164,7 +170,7 @@ G_M62513_IG13: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {},
; gcrRegs +[r8]
mov gword ptr [rax+8*rdx+0x10], r8
cmp byte ptr [rsi+0x9D], 0
- je SHORT G_M62513_IG14
+ je SHORT G_M62513_IG15
mov rcx, rbx
mov rax, qword ptr [rbx]
; gcrRegs -[rax]
@@ -184,25 +190,19 @@ G_M62513_IG13: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {},
call [<unknown method>]
; gcrRegs -[rcx rbx]
; gcr arg pop 0
- ;; size=103 bbWeight=0 PerfScore 0.00
-G_M62513_IG14: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=107 bbWeight=0 PerfScore 0.00
+G_M62513_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
cmp dword ptr [rcx+0x14], 0
- jle SHORT G_M62513_IG15
+ jle G_M62513_IG11
mov eax, r15d
lea r15d, [rax-0x01]
test eax, eax
- jg SHORT G_M62513_IG13
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M62513_IG15: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rsi]
- cmp dword ptr [rcx+0x14], 0
- jg SHORT G_M62513_IG16
- xor eax, eax
- jmp SHORT G_M62513_IG17
- ;; size=10 bbWeight=0 PerfScore 0.00
+ jg G_M62513_IG14
+ ;; size=29 bbWeight=0 PerfScore 0.00
G_M62513_IG16: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi]
mov eax, r14d
sar eax, 31
and eax, 3
@@ -259,7 +259,7 @@ G_M62513_IG22: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 464, prolog size 33, PerfScore 18.67, instruction count 141, allocated bytes for code 464 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
+; Total bytes of code 483, prolog size 33, PerfScore 18.67, instruction count 141, allocated bytes for code 483 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
; ============================================================
Unwind Info:
+19 (+4.09%) : 57424.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
@@ -110,7 +110,7 @@ G_M62513_IG08: ; bbWeight=0.03, gcrefRegs=0002 {rcx}, byrefRegs=0000 {},
; gcrRegs +[rcx]
sub esi, eax
cmp esi, r14d
- jg SHORT G_M62513_IG11
+ jg SHORT G_M62513_IG12
jmp G_M62513_IG18
;; size=12 bbWeight=0.03 PerfScore 0.10
G_M62513_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -122,40 +122,46 @@ G_M62513_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_OVERFLOW
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M62513_IG11: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M62513_IG11: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
+ cmp dword ptr [rcx+0x14], 0
+ jg G_M62513_IG16
+ xor eax, eax
+ jmp G_M62513_IG17
+ ;; size=17 bbWeight=0 PerfScore 0.00
+G_M62513_IG12: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
mov rax, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rax]
; gcrRegs +[rsi]
mov r15d, 1
cmp ebx, 1
- je SHORT G_M62513_IG12
+ je SHORT G_M62513_IG13
cmp ebx, 2
- jne G_M62513_IG14
+ jne G_M62513_IG15
mov r15d, 32
mov eax, 33
cmp dword ptr [rbp+0x30], 0x4000
cmovg r15d, eax
cmp dword ptr [rcx+0x10], 16
- jle G_M62513_IG14
+ jle G_M62513_IG15
inc r15d
cmp dword ptr [rcx+0x10], 32
- jle SHORT G_M62513_IG14
+ jle SHORT G_M62513_IG15
inc r15d
- jmp SHORT G_M62513_IG14
+ jmp SHORT G_M62513_IG15
;; size=79 bbWeight=0 PerfScore 0.00
-G_M62513_IG12: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
- mov r15d, 2
- jmp SHORT G_M62513_IG14
- ;; size=8 bbWeight=0 PerfScore 0.00
G_M62513_IG13: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
+ mov r15d, 2
+ jmp SHORT G_M62513_IG15
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M62513_IG14: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rcx+0x08]
; gcrRegs +[rax]
mov edx, dword ptr [rcx+0x14]
dec edx
mov dword ptr [rcx+0x14], edx
cmp edx, dword ptr [rax+0x08]
- jae SHORT G_M62513_IG09
+ jae G_M62513_IG09
mov rbx, gword ptr [rax+8*rdx+0x10]
; gcrRegs +[rbx]
mov rax, gword ptr [rcx+0x08]
@@ -166,7 +172,7 @@ G_M62513_IG13: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {},
; gcrRegs +[r8]
mov gword ptr [rax+8*rdx+0x10], r8
cmp byte ptr [rsi+0x9D], 0
- je SHORT G_M62513_IG14
+ je SHORT G_M62513_IG15
mov rcx, rbx
mov rax, qword ptr [rbx]
; gcrRegs -[rax]
@@ -186,25 +192,19 @@ G_M62513_IG13: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {},
call [<unknown method>]
; gcrRegs -[rcx rbx]
; gcr arg pop 0
- ;; size=103 bbWeight=0 PerfScore 0.00
-G_M62513_IG14: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=107 bbWeight=0 PerfScore 0.00
+G_M62513_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
cmp dword ptr [rcx+0x14], 0
- jle SHORT G_M62513_IG15
+ jle G_M62513_IG11
mov eax, r15d
lea r15d, [rax-0x01]
test eax, eax
- jg SHORT G_M62513_IG13
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M62513_IG15: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rsi]
- cmp dword ptr [rcx+0x14], 0
- jg SHORT G_M62513_IG16
- xor eax, eax
- jmp SHORT G_M62513_IG17
- ;; size=10 bbWeight=0 PerfScore 0.00
+ jg G_M62513_IG14
+ ;; size=29 bbWeight=0 PerfScore 0.00
G_M62513_IG16: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi]
mov eax, r14d
sar eax, 31
and eax, 3
@@ -261,7 +261,7 @@ G_M62513_IG22: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 464, prolog size 33, PerfScore 18.68, instruction count 142, allocated bytes for code 464 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
+; Total bytes of code 483, prolog size 33, PerfScore 18.68, instruction count 142, allocated bytes for code 483 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
; ============================================================
Unwind Info:
+19 (+4.09%) : 71072.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
@@ -108,7 +108,7 @@ G_M62513_IG08: ; bbWeight=0.03, gcrefRegs=0002 {rcx}, byrefRegs=0000 {},
; gcrRegs +[rcx]
sub esi, dword ptr [rcx+0x18]
cmp esi, r14d
- jg SHORT G_M62513_IG11
+ jg SHORT G_M62513_IG12
jmp G_M62513_IG18
;; size=13 bbWeight=0.03 PerfScore 0.17
G_M62513_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -120,40 +120,46 @@ G_M62513_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_OVERFLOW
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M62513_IG11: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M62513_IG11: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
+ cmp dword ptr [rcx+0x14], 0
+ jg G_M62513_IG16
+ xor eax, eax
+ jmp G_M62513_IG17
+ ;; size=17 bbWeight=0 PerfScore 0.00
+G_M62513_IG12: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
mov rax, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rax]
; gcrRegs +[rsi]
mov r15d, 1
cmp ebx, 1
- je SHORT G_M62513_IG12
+ je SHORT G_M62513_IG13
cmp ebx, 2
- jne G_M62513_IG14
+ jne G_M62513_IG15
mov r15d, 32
mov eax, 33
cmp dword ptr [rbp+0x30], 0x4000
cmovg r15d, eax
cmp dword ptr [rcx+0x10], 16
- jle G_M62513_IG14
+ jle G_M62513_IG15
inc r15d
cmp dword ptr [rcx+0x10], 32
- jle SHORT G_M62513_IG14
+ jle SHORT G_M62513_IG15
inc r15d
- jmp SHORT G_M62513_IG14
+ jmp SHORT G_M62513_IG15
;; size=79 bbWeight=0 PerfScore 0.00
-G_M62513_IG12: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
- mov r15d, 2
- jmp SHORT G_M62513_IG14
- ;; size=8 bbWeight=0 PerfScore 0.00
G_M62513_IG13: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
+ mov r15d, 2
+ jmp SHORT G_M62513_IG15
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M62513_IG14: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rcx+0x08]
; gcrRegs +[rax]
mov edx, dword ptr [rcx+0x14]
dec edx
mov dword ptr [rcx+0x14], edx
cmp edx, dword ptr [rax+0x08]
- jae SHORT G_M62513_IG09
+ jae G_M62513_IG09
mov rbx, gword ptr [rax+8*rdx+0x10]
; gcrRegs +[rbx]
mov rax, gword ptr [rcx+0x08]
@@ -164,7 +170,7 @@ G_M62513_IG13: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {},
; gcrRegs +[r8]
mov gword ptr [rax+8*rdx+0x10], r8
cmp byte ptr [rsi+0x9D], 0
- je SHORT G_M62513_IG14
+ je SHORT G_M62513_IG15
mov rcx, rbx
mov rax, qword ptr [rbx]
; gcrRegs -[rax]
@@ -184,25 +190,19 @@ G_M62513_IG13: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {},
call [<unknown method>]
; gcrRegs -[rcx rbx]
; gcr arg pop 0
- ;; size=103 bbWeight=0 PerfScore 0.00
-G_M62513_IG14: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=107 bbWeight=0 PerfScore 0.00
+G_M62513_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
cmp dword ptr [rcx+0x14], 0
- jle SHORT G_M62513_IG15
+ jle G_M62513_IG11
mov eax, r15d
lea r15d, [rax-0x01]
test eax, eax
- jg SHORT G_M62513_IG13
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M62513_IG15: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rsi]
- cmp dword ptr [rcx+0x14], 0
- jg SHORT G_M62513_IG16
- xor eax, eax
- jmp SHORT G_M62513_IG17
- ;; size=10 bbWeight=0 PerfScore 0.00
+ jg G_M62513_IG14
+ ;; size=29 bbWeight=0 PerfScore 0.00
G_M62513_IG16: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi]
mov eax, r14d
sar eax, 31
and eax, 3
@@ -259,7 +259,7 @@ G_M62513_IG22: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 464, prolog size 33, PerfScore 18.98, instruction count 141, allocated bytes for code 464 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
+; Total bytes of code 483, prolog size 33, PerfScore 18.98, instruction count 141, allocated bytes for code 483 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
; ============================================================
Unwind Info:
benchmarks.run.windows.x64.checked.mch
-32 (-24.62%) : 2319.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -9,108 +9,93 @@
;
; V00 arg0 [V00,T03] ( 4, 8 ) byref -> rcx ld-addr-op single-def
; V01 arg1 [V01,T04] ( 4, 8 ) byref -> rdx ld-addr-op single-def
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> registers
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> r10
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r9 "dup spill"
-; V05 tmp2 [V05,T07] ( 3, 5.50) byref -> r10 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T06] ( 5, 7 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T08] ( 3, 5.50) byref -> r8 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T05] ( 6, 7.50) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> r10 "dup spill"
+; V05 tmp2 [V05,T09] ( 2, 5 ) byref -> r8 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T08] ( 4, 6.50) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T10] ( 2, 5 ) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T07] ( 5, 7 ) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[uint]>
;* V10 tmp7 [V10 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[uint]>
-; V11 cse0 [V11,T02] ( 6, 13.50) long -> r11 multi-def "CSE - aggressive"
+; V11 cse0 [V11,T05] ( 3, 8.50) int -> r11 "CSE - aggressive"
+; V12 cse1 [V12,T06] ( 3, 8.50) int -> r9 "CSE - aggressive"
+; V13 cse2 [V13,T02] ( 3, 12 ) long -> r9 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbx
- sub rsp, 32
- ;; size=5 bbWeight=1 PerfScore 1.25
+ sub rsp, 40
+ ;; size=4 bbWeight=1 PerfScore 0.25
G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, byref, isz
; byrRegs +[rcx rdx]
- mov r8, bword ptr [rdx]
- ; byrRegs +[r8]
+ mov rax, bword ptr [rdx]
+ ; byrRegs +[rax]
mov edx, dword ptr [rdx+0x08]
; byrRegs -[rdx]
- mov r10, bword ptr [rcx]
- ; byrRegs +[r10]
+ mov r8, bword ptr [rcx]
+ ; byrRegs +[r8]
mov ecx, dword ptr [rcx+0x08]
; byrRegs -[rcx]
cmp ecx, edx
je SHORT G_M264_IG04
;; size=16 bbWeight=1 PerfScore 9.25
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r8 r10]
+ ; byrRegs -[rax r8]
cmp ecx, edx
- jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jl SHORT G_M264_IG11
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
-G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref
- ; byrRegs +[r8 r10]
- mov r9d, edx
+G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0101 {rax r8}, byref
+ ; byrRegs +[rax r8]
+ mov r10d, edx
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz
- dec r9d
- mov eax, r9d
- test eax, eax
- jl SHORT G_M264_IG06
- cmp eax, ecx
- jae SHORT G_M264_IG14
- mov r11d, eax
- mov ebx, dword ptr [r10+4*r11]
- cmp eax, edx
- jae SHORT G_M264_IG14
- cmp ebx, dword ptr [r8+4*r11]
- je SHORT G_M264_IG08
- ;; size=31 bbWeight=4 PerfScore 42.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz
- test r9d, r9d
- jge SHORT G_M264_IG09
- xor eax, eax
- ;; size=7 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
- ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M264_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, gcvars, byref, isz
- mov r9d, eax
- jmp SHORT G_M264_IG05
- ;; size=5 bbWeight=2 PerfScore 4.50
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz
- cmp r9d, ecx
- jae SHORT G_M264_IG14
- mov r11d, r9d
- mov eax, dword ptr [r10+4*r11]
- cmp r9d, edx
- jae SHORT G_M264_IG14
- cmp eax, dword ptr [r8+4*r11]
- jb SHORT G_M264_IG12
- ;; size=23 bbWeight=0.50 PerfScore 4.38
-G_M264_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r8 r10]
+G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0101 {rax r8}, byref, isz
+ dec r10d
+ js SHORT G_M264_IG09
+ cmp r10d, ecx
+ jae SHORT G_M264_IG13
+ mov r9d, r10d
+ mov r11d, dword ptr [r8+4*r9]
+ cmp r10d, edx
+ jae SHORT G_M264_IG13
+ mov r9d, dword ptr [rax+4*r9]
+ cmp r11d, r9d
+ je SHORT G_M264_IG05
+ ;; size=31 bbWeight=4 PerfScore 37.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rax r8]
+ cmp r9d, r11d
+ ja SHORT G_M264_IG11
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M264_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
+ ret
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG13: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
+G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 130, prolog size 5, PerfScore 66.75, instruction count 50, allocated bytes for code 130 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 98, prolog size 4, PerfScore 51.12, instruction count 35, allocated bytes for code 98 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -118,10 +103,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
-18 (-8.82%) : 23168.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
@@ -7,19 +7,20 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T05] ( 6, 22 ) int -> rcx
-; V01 arg1 [V01,T06] ( 6, 19 ) int -> rsi single-def
-; V02 arg2 [V02,T02] ( 14, 60 ) ref -> rbx class-hnd single-def <int[]>
-; V03 loc0 [V03,T00] ( 17,112 ) int -> rbp
-; V04 loc1 [V04,T01] ( 13,100 ) int -> rdx
+; V00 arg0 [V00,T06] ( 6, 22 ) int -> rcx
+; V01 arg1 [V01,T07] ( 6, 19 ) int -> rsi single-def
+; V02 arg2 [V02,T02] ( 13, 58 ) ref -> rbx class-hnd single-def <int[]>
+; V03 loc0 [V03,T00] ( 16,110 ) int -> rbp
+; V04 loc1 [V04,T01] ( 10, 94 ) int -> rdx
; V05 loc2 [V05,T04] ( 4, 38 ) int -> rax
-; V06 loc3 [V06,T08] ( 4, 8 ) int -> r10
+; V06 loc3 [V06,T09] ( 4, 8 ) int -> r9
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T09] ( 2, 8 ) int -> r9 "Strict ordering of exceptions for Array store"
-; V09 tmp2 [V09,T07] ( 2, 16 ) int -> rcx "arg temp"
-; V10 cse0 [V10,T03] ( 7, 46 ) int -> r8 "CSE - aggressive"
-; V11 cse1 [V11,T10] ( 3, 7 ) long -> rdi hoist "CSE - aggressive"
-; V12 cse2 [V12,T11] ( 3, 6 ) long -> rdx "CSE - aggressive"
+; V08 tmp1 [V08,T10] ( 2, 8 ) int -> r10 "Strict ordering of exceptions for Array store"
+; V09 tmp2 [V09,T08] ( 2, 16 ) int -> rcx "arg temp"
+; V10 cse0 [V10,T05] ( 3, 34 ) int -> r10 "CSE - aggressive"
+; V11 cse1 [V11,T03] ( 6, 44 ) int -> r8 "CSE - aggressive"
+; V12 cse2 [V12,T11] ( 3, 7 ) long -> rdi hoist "CSE - aggressive"
+; V13 cse3 [V13,T12] ( 3, 6 ) long -> rdx "CSE - aggressive"
;
; Lcl frame size = 40
@@ -56,11 +57,11 @@ G_M36260_IG06: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, by
cmp ebp, edx
jge SHORT G_M36260_IG09
cmp ebp, r8d
- jae G_M36260_IG15
+ jae SHORT G_M36260_IG15
mov r10d, ebp
cmp dword ptr [rbx+4*r10+0x10], eax
jle SHORT G_M36260_IG05
- ;; size=23 bbWeight=16 PerfScore 108.00
+ ;; size=19 bbWeight=16 PerfScore 108.00
G_M36260_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M36260_IG09
;; size=2 bbWeight=4 PerfScore 8.00
@@ -69,29 +70,24 @@ G_M36260_IG08: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=2 bbWeight=8 PerfScore 2.00
G_M36260_IG09: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edx, ebp
- jle SHORT G_M36260_IG10
+ jle SHORT G_M36260_IG11
cmp edx, r8d
jae SHORT G_M36260_IG15
mov r10d, edx
- cmp dword ptr [rbx+4*r10+0x10], eax
+ mov r10d, dword ptr [rbx+4*r10+0x10]
+ cmp r10d, eax
jge SHORT G_M36260_IG08
- ;; size=19 bbWeight=16 PerfScore 108.00
+ ;; size=22 bbWeight=16 PerfScore 96.00
G_M36260_IG10: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- cmp ebp, edx
- jge SHORT G_M36260_IG11
cmp ebp, r8d
jae SHORT G_M36260_IG15
- mov r10d, ebp
- mov r10d, dword ptr [rbx+4*r10+0x10]
- cmp edx, r8d
- jae SHORT G_M36260_IG15
- mov r9d, edx
+ mov r9d, ebp
mov r9d, dword ptr [rbx+4*r9+0x10]
mov r11d, ebp
- mov dword ptr [rbx+4*r11+0x10], r9d
- mov r9d, edx
- mov dword ptr [rbx+4*r9+0x10], r10d
- ;; size=46 bbWeight=2 PerfScore 21.50
+ mov dword ptr [rbx+4*r11+0x10], r10d
+ mov r10d, edx
+ mov dword ptr [rbx+4*r10+0x10], r9d
+ ;; size=29 bbWeight=2 PerfScore 12.00
G_M36260_IG11: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp ebp, edx
jl SHORT G_M36260_IG06
@@ -102,9 +98,9 @@ G_M36260_IG12: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
cmp ebp, r8d
jae SHORT G_M36260_IG15
mov edx, ebp
- mov r10d, dword ptr [rbx+4*rdx+0x10]
+ mov r9d, dword ptr [rbx+4*rdx+0x10]
mov dword ptr [rbx+4*rdx+0x10], eax
- mov dword ptr [rbx+4*rdi+0x10], r10d
+ mov dword ptr [rbx+4*rdi+0x10], r9d
;; size=21 bbWeight=2 PerfScore 11.00
G_M36260_IG13: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
lea edx, [rbp-0x01]
@@ -131,7 +127,7 @@ G_M36260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 13, PerfScore 344.75, instruction count 71, allocated bytes for code 204 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
+; Total bytes of code 186, prolog size 13, PerfScore 323.25, instruction count 66, allocated bytes for code 186 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
; ============================================================
Unwind Info:
-19 (-8.23%) : 14991.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
@@ -7,16 +7,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 15, 15.50) ref -> rbx class-hnd single-def <int[]>
-; V01 arg1 [V01,T06] ( 5, 4 ) int -> rdx single-def
-; V02 arg2 [V02,T05] ( 7, 5 ) int -> rsi single-def
-; V03 loc0 [V03,T00] ( 18, 26 ) int -> rdi
-; V04 loc1 [V04,T01] ( 14, 24 ) int -> r8
+; V00 arg0 [V00,T02] ( 14, 15 ) ref -> rbx class-hnd single-def <int[]>
+; V01 arg1 [V01,T07] ( 5, 4 ) int -> rdx single-def
+; V02 arg2 [V02,T06] ( 7, 5 ) int -> rsi single-def
+; V03 loc0 [V03,T00] ( 17, 25.50) int -> rdi
+; V04 loc1 [V04,T01] ( 11, 22.50) int -> r8
; V05 loc2 [V05,T04] ( 4, 9 ) int -> rax single-def
-; V06 loc3 [V06,T07] ( 4, 2 ) int -> r10
+; V06 loc3 [V06,T08] ( 4, 2 ) int -> r9
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T08] ( 2, 2 ) int -> r9 "Strict ordering of exceptions for Array store"
-; V09 cse0 [V09,T03] ( 7, 10.50) int -> rcx "CSE - aggressive"
+; V08 tmp1 [V08,T09] ( 2, 2 ) int -> r10 "Strict ordering of exceptions for Array store"
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> r10 "CSE - aggressive"
+; V10 cse1 [V10,T03] ( 6, 10 ) int -> rcx "CSE - aggressive"
;
; Lcl frame size = 32
@@ -72,29 +73,24 @@ G_M63260_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=3 bbWeight=2 PerfScore 0.50
G_M63260_IG09: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r8d, edi
- jle SHORT G_M63260_IG10
+ jle SHORT G_M63260_IG11
cmp r8d, ecx
- jae G_M63260_IG14
+ jae SHORT G_M63260_IG14
mov r10d, r8d
- cmp dword ptr [rbx+4*r10+0x10], eax
+ mov r10d, dword ptr [rbx+4*r10+0x10]
+ cmp r10d, eax
jge SHORT G_M63260_IG08
- ;; size=24 bbWeight=4 PerfScore 27.00
+ ;; size=23 bbWeight=4 PerfScore 24.00
G_M63260_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- cmp edi, r8d
- jge SHORT G_M63260_IG11
cmp edi, ecx
jae SHORT G_M63260_IG14
- mov r10d, edi
- mov r10d, dword ptr [rbx+4*r10+0x10]
- cmp r8d, ecx
- jae SHORT G_M63260_IG14
- mov r9d, r8d
+ mov r9d, edi
mov r9d, dword ptr [rbx+4*r9+0x10]
mov r11d, edi
- mov dword ptr [rbx+4*r11+0x10], r9d
- mov r9d, r8d
- mov dword ptr [rbx+4*r9+0x10], r10d
- ;; size=46 bbWeight=0.50 PerfScore 5.38
+ mov dword ptr [rbx+4*r11+0x10], r10d
+ mov r10d, r8d
+ mov dword ptr [rbx+4*r10+0x10], r9d
+ ;; size=28 bbWeight=0.50 PerfScore 3.00
G_M63260_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, r8d
jl SHORT G_M63260_IG06
@@ -102,12 +98,12 @@ G_M63260_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
je SHORT G_M63260_IG12
cmp edi, ecx
jae SHORT G_M63260_IG14
- mov r10d, edi
- mov r10d, dword ptr [rbx+4*r10+0x10]
+ mov r9d, edi
+ mov r9d, dword ptr [rbx+4*r9+0x10]
mov r8d, edi
mov dword ptr [rbx+4*r8+0x10], eax
mov r8d, esi
- mov dword ptr [rbx+4*r8+0x10], r10d
+ mov dword ptr [rbx+4*r8+0x10], r9d
;; size=37 bbWeight=0.50 PerfScore 4.25
G_M63260_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
lea r8d, [rdi-0x01]
@@ -138,7 +134,7 @@ G_M63260_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 231, prolog size 13, PerfScore 82.38, instruction count 79, allocated bytes for code 231 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
+; Total bytes of code 212, prolog size 13, PerfScore 77.00, instruction count 74, allocated bytes for code 212 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
; ============================================================
Unwind Info:
+1 (+0.41%) : 7149.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
@@ -8,43 +8,45 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T09] ( 5, 15 ) ref -> rsi class-hnd single-def <System.Reflection.ParameterInfo[]>
-; V01 arg1 [V01,T10] ( 5, 11 ) ref -> rdi class-hnd single-def <System.Type[]>
-; V02 arg2 [V02,T05] ( 5, 23 ) byref -> rbx single-def
+; V00 arg0 [V00,T09] ( 4, 11 ) ref -> rsi class-hnd single-def <System.Reflection.ParameterInfo[]>
+; V01 arg1 [V01,T11] ( 4, 7 ) ref -> rdi class-hnd single-def <System.Type[]>
+; V02 arg2 [V02,T04] ( 5, 23 ) byref -> rbx single-def
; V03 loc0 [V03,T08] ( 6, 21 ) int -> r14
;* V04 loc1 [V04,T12] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc2 [V05,T11] ( 2, 12 ) ref -> r15 class-hnd <System.Type>
-; V06 loc3 [V06,T00] ( 9,100 ) int -> r13
+; V05 loc2 [V05,T10] ( 2, 12 ) ref -> r13 class-hnd <System.Type>
+; V06 loc3 [V06,T00] ( 9,100 ) int -> r12
; 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" <System.Nullable`1[int]>
-; V09 tmp2 [V09,T06] ( 3, 24 ) ref -> rax class-hnd "impAppendStmt" <<unknown class>>
+; V09 tmp2 [V09,T05] ( 3, 24 ) ref -> rax class-hnd "impAppendStmt" <<unknown class>>
;* V10 tmp3 [V10 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V11 tmp4 [V11,T14] ( 0, 0 ) ubyte -> zero-ref "field V08.hasValue (fldOffset=0x0)" P-INDEP
+;* V11 tmp4 [V11,T15] ( 0, 0 ) ubyte -> zero-ref "field V08.hasValue (fldOffset=0x0)" P-INDEP
; V12 tmp5 [V12,T13] ( 2, 8 ) int -> rcx "field V08.value (fldOffset=0x4)" P-INDEP
; V13 tmp6 [V13,T01] ( 3, 96 ) ref -> rcx "arr expr"
; V14 tmp7 [V14,T02] ( 3, 48 ) ref -> rcx "argument with side effect"
; V15 tmp8 [V15,T03] ( 3, 48 ) ref -> rax "argument with side effect"
-; V16 tmp9 [V16,T07] ( 3, 24 ) byref -> rax "BlockOp address local"
-; V17 cse0 [V17,T04] ( 5, 26 ) int -> rbp multi-def "CSE - aggressive"
+; V16 tmp9 [V16,T06] ( 3, 24 ) byref -> rax "BlockOp address local"
+; V17 cse0 [V17,T07] ( 4, 22 ) int -> rbp "CSE - aggressive"
+; V18 cse1 [V18,T14] ( 3, 6 ) int -> r15 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M59545_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
push rbx
- sub rsp, 32
+ sub rsp, 40
mov rsi, rcx
; gcrRegs +[rsi]
mov rdi, rdx
; gcrRegs +[rdi]
mov rbx, r8
; byrRegs +[rbx]
- ;; size=23 bbWeight=1 PerfScore 8.00
+ ;; size=25 bbWeight=1 PerfScore 9.00
G_M59545_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
mov ebp, dword ptr [rsi+0x08]
mov edx, ebp
@@ -60,30 +62,30 @@ G_M59545_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rb
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
xor r14d, r14d
- cmp dword ptr [rdi+0x08], 0
+ mov r15d, dword ptr [rdi+0x08]
+ test r15d, r15d
jle G_M59545_IG09
- ;; size=44 bbWeight=1 PerfScore 9.25
+ ;; size=47 bbWeight=1 PerfScore 8.50
G_M59545_IG03: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
mov ecx, r14d
- mov r15, gword ptr [rdi+8*rcx+0x10]
- ; gcrRegs +[r15]
- xor r13d, r13d
- mov ebp, dword ptr [rsi+0x08]
+ mov r13, gword ptr [rdi+8*rcx+0x10]
+ ; gcrRegs +[r13]
+ xor r12d, r12d
test ebp, ebp
jle G_M59545_IG11
- ;; size=22 bbWeight=4 PerfScore 23.00
-G_M59545_IG04: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
+ ;; size=19 bbWeight=4 PerfScore 15.00
+G_M59545_IG04: ; bbWeight=16, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0008 {rbx}, byref, isz
mov rcx, gword ptr [rbx]
; gcrRegs +[rcx]
- cmp r13d, dword ptr [rcx+0x08]
+ cmp r12d, dword ptr [rcx+0x08]
jae G_M59545_IG13
- mov eax, r13d
+ mov eax, r12d
cmp byte ptr [rcx+8*rax+0x10], 0
jne SHORT G_M59545_IG06
;; size=23 bbWeight=16 PerfScore 164.00
-G_M59545_IG05: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
+G_M59545_IG05: ; bbWeight=8, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rcx]
- mov ecx, r13d
+ mov ecx, r12d
mov rcx, gword ptr [rsi+8*rcx+0x10]
; gcrRegs +[rcx]
mov rax, qword ptr [rcx]
@@ -93,7 +95,7 @@ G_M59545_IG05: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
- mov rdx, r15
+ mov rdx, r13
; gcrRegs +[rdx]
mov rax, qword ptr [rax]
; gcrRegs -[rax]
@@ -104,13 +106,13 @@ G_M59545_IG05: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008
test eax, eax
jne SHORT G_M59545_IG08
;; size=41 bbWeight=8 PerfScore 144.00
-G_M59545_IG06: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
- inc r13d
- cmp ebp, r13d
+G_M59545_IG06: ; bbWeight=16, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0008 {rbx}, byref, isz
+ inc r12d
+ cmp ebp, r12d
jg SHORT G_M59545_IG04
;; size=8 bbWeight=16 PerfScore 24.00
G_M59545_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rsi rdi r15]
+ ; gcrRegs -[rsi rdi r13]
; byrRegs -[rbx]
jmp SHORT G_M59545_IG11
;; size=2 bbWeight=0.50 PerfScore 1.00
@@ -120,55 +122,57 @@ G_M59545_IG08: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rb
mov rax, gword ptr [rbx]
; gcrRegs +[rax]
mov ecx, r14d
- cmp r13d, dword ptr [rax+0x08]
+ cmp r12d, dword ptr [rax+0x08]
jae SHORT G_M59545_IG13
- mov edx, r13d
+ mov edx, r12d
lea rax, bword ptr [rax+8*rdx+0x10]
; gcrRegs -[rax]
; byrRegs +[rax]
mov byte ptr [rax], 1
mov dword ptr [rax+0x04], ecx
inc r14d
- cmp dword ptr [rdi+0x08], r14d
- jg G_M59545_IG03
- ;; size=39 bbWeight=4 PerfScore 55.00
+ cmp r15d, r14d
+ jg SHORT G_M59545_IG03
+ ;; size=34 bbWeight=4 PerfScore 44.00
G_M59545_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi rdi]
; byrRegs -[rax rbx]
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M59545_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
+ pop r12
pop r13
pop r14
pop r15
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.38
+ ;; size=17 bbWeight=0.50 PerfScore 2.62
G_M59545_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M59545_IG12: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
+ pop r12
pop r13
pop r14
pop r15
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.38
+ ;; size=17 bbWeight=0.50 PerfScore 2.62
G_M59545_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 245, prolog size 23, PerfScore 433.25, instruction count 82, allocated bytes for code 245 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
+; Total bytes of code 246, prolog size 25, PerfScore 415.00, instruction count 85, allocated bytes for code 246 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -176,16 +180,17 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0E
- CountOfUnwindCodes: 8
+ SizeOfProlog : 0x10
+ CountOfUnwindCodes: 9
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+30 (+0.79%) : 11955.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
@@ -21,8 +21,8 @@
;* V10 loc9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Runtime.Serialization.DataMemberAttribute>
; V11 loc10 [V11,T13] ( 8, 16 ) ref -> [rsp+0xB0] class-hnd spill-single-def <System.Reflection.MethodInfo>
; V12 loc11 [V12,T14] ( 6, 12 ) ref -> [rsp+0xA8] class-hnd spill-single-def <System.Reflection.MethodInfo>
-; V13 loc12 [V13,T27] ( 5, 10 ) ref -> r12 class-hnd <System.Reflection.FieldInfo>
-; V14 loc13 [V14,T15] ( 6, 12 ) ref -> [rsp+0xA0] class-hnd spill-single-def <System.Reflection.PropertyInfo>
+; V13 loc12 [V13,T30] ( 4, 8 ) ref -> r12 class-hnd <System.Reflection.FieldInfo>
+; V14 loc13 [V14,T15] ( 6, 12 ) ref -> [rsp+0xA0] class-hnd <System.Reflection.PropertyInfo>
; V15 loc14 [V15,T31] ( 4, 8 ) ref -> rax class-hnd <System.Object[]>
;* V16 loc15 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Runtime.Serialization.DataContracts.DataMember>
; V17 loc16 [V17,T16] ( 6, 12 ) ref -> [rsp+0x98] class-hnd spill-single-def <System.Reflection.MethodInfo>
@@ -129,7 +129,7 @@
;* V118 tmp96 [V118,T70] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V119 tmp97 [V119 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
; V120 tmp98 [V120,T20] ( 5, 18 ) ref -> rax "spilling varStr"
-; V121 tmp99 [V121,T30] ( 2, 8 ) int -> rcx "spilling unroll qmark"
+; V121 tmp99 [V121,T29] ( 2, 8 ) int -> rcx "spilling unroll qmark"
; V122 tmp100 [V122,T39] ( 2, 8 ) ref -> rax class-hnd exact "Inlining Arg" <System.String>
;* V123 tmp101 [V123 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Runtime.Serialization.DataContracts.DataMember+CriticalHelper>
; V124 tmp102 [V124,T48] ( 2, 8 ) ubyte -> rax "Inlining Arg"
@@ -192,9 +192,9 @@
; V181 cse2 [V181,T19] ( 6, 12 ) long -> [rsp+0xD8] multi-def "CSE - moderate"
; V182 cse3 [V182,T60] ( 3, 6 ) long -> [rsp+0xD0] spill-single-def "CSE - conservative"
; V183 cse4 [V183,T51] ( 9, 6 ) long -> [rsp+0xC8] multi-def "CSE - conservative"
-; V184 cse5 [V184,T29] ( 5, 10 ) long -> [rsp+0xC0] multi-def "CSE - moderate"
+; V184 cse5 [V184,T28] ( 5, 10 ) long -> [rsp+0xC0] multi-def "CSE - moderate"
; V185 cse6 [V185,T61] ( 3, 6 ) int -> rdx "CSE - conservative"
-; V186 cse7 [V186,T28] ( 5, 10 ) ref -> rcx "CSE - moderate"
+; V186 cse7 [V186,T27] ( 5, 10 ) ref -> rcx "CSE - moderate"
; V187 cse8 [V187,T55] ( 3, 6 ) ref -> rdx "CSE - conservative"
; V188 cse9 [V188,T56] ( 3, 6 ) ref -> [rsp+0x38] spill-single-def "CSE - conservative"
; V189 cse10 [V189,T57] ( 3, 6 ) ref -> r13 "CSE - conservative"
@@ -330,7 +330,7 @@ G_M8979_IG07: ; bbWeight=2, gcrefRegs=60E8 {rbx rbp rsi rdi r13 r14}, byr
cmp dword ptr [r12+0x08], 0
je G_M8979_IG24
cmp dword ptr [r12+0x08], 1
- jg G_M8979_IG53
+ jg G_M8979_IG54
mov rcx, 0xD1FFAB1E ; System.Runtime.Serialization.DataContracts.DataMember
call CORINFO_HELP_NEWSFAST
; gcr arg pop 0
@@ -350,7 +350,7 @@ G_M8979_IG07: ; bbWeight=2, gcrefRegs=60E8 {rbx rbp rsi rdi r13 r14}, byr
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
test byte ptr [(reloc)], 1 ; global ptr
- je G_M8979_IG49
+ je G_M8979_IG50
;; size=154 bbWeight=2 PerfScore 64.00
G_M8979_IG08: ; bbWeight=2, gcrefRegs=70E8 {rbx rbp rsi rdi r12 r13 r14}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
@@ -448,7 +448,7 @@ G_M8979_IG09: ; bbWeight=2, gcrefRegs=70E8 {rbx rbp rsi rdi r12 r13 r14},
;; size=99 bbWeight=2 PerfScore 48.00
G_M8979_IG10: ; bbWeight=2, gcrefRegs=70E9 {rax rbx rbp rsi rdi r12 r13 r14}, byrefRegs=0000 {}, byref, isz
cmp gword ptr [rsp+0xB0], 0
- je G_M8979_IG54
+ je G_M8979_IG55
mov rdx, gword ptr [rsp+0xB0]
; gcrRegs +[rdx]
test rax, rax
@@ -613,7 +613,7 @@ G_M8979_IG18: ; bbWeight=2, gcrefRegs=70EC {rdx rbx rbp rsi rdi r12 r13 r
; gcrRegs -[rcx rdx] +[rax]
; gcr arg pop 0
cmp dword ptr [rax+0x08], 0
- jne G_M8979_IG55
+ jne G_M8979_IG56
;; size=23 bbWeight=2 PerfScore 22.50
G_M8979_IG19: ; bbWeight=2, gcVars=00000000000000000000000000000002 {V34}, gcrefRegs=70E8 {rbx rbp rsi rdi r12 r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
@@ -627,7 +627,7 @@ G_M8979_IG19: ; bbWeight=2, gcVars=00000000000000000000000000000002 {V34}
G_M8979_IG20: ; bbWeight=1, gcrefRegs=70EC {rdx rbx rbp rsi rdi r12 r13 r14}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; System.Runtime.Serialization.DataMemberAttribute
cmp qword ptr [r12], rcx
- jne G_M8979_IG57
+ jne G_M8979_IG58
;; size=20 bbWeight=1 PerfScore 4.25
G_M8979_IG21: ; bbWeight=2, gcrefRegs=70E8 {rbx rbp rsi rdi r12 r13 r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
@@ -638,9 +638,9 @@ G_M8979_IG21: ; bbWeight=2, gcrefRegs=70E8 {rbx rbp rsi rdi r12 r13 r14},
mov rcx, rdx
; gcrRegs +[rcx]
test rcx, rcx
- je G_M8979_IG58
+ je G_M8979_IG59
cmp dword ptr [rcx+0x08], 0
- je G_M8979_IG58
+ je G_M8979_IG59
mov rax, gword ptr [rsp+0x80]
; gcrRegs +[rax]
mov rcx, gword ptr [rax+0x08]
@@ -694,7 +694,7 @@ G_M8979_IG22: ; bbWeight=2, gcrefRegs=70E8 {rbx rbp rsi rdi r12 r13 r14},
test edx, edx
je SHORT G_M8979_IG23
cmp byte ptr [rbx+0x4A], 0
- jne G_M8979_IG59
+ jne G_M8979_IG60
;; size=109 bbWeight=2 PerfScore 66.50
G_M8979_IG23: ; bbWeight=2, gcrefRegs=54EA {rcx rbx rbp rsi rdi r10 r12 r14}, byrefRegs=0000 {}, byref
; gcrRegs -[r13]
@@ -724,7 +724,7 @@ G_M8979_IG25: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {},
;; size=6 bbWeight=1 PerfScore 4.00
G_M8979_IG26: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
test byte ptr [(reloc)], 1 ; global ptr
- je G_M8979_IG52
+ je G_M8979_IG53
;; size=13 bbWeight=0.50 PerfScore 2.00
G_M8979_IG27: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
mov r8, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
@@ -779,7 +779,7 @@ G_M8979_IG30: ; bbWeight=2, gcVars=00000000000000000000000000000002 {V34}
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
test rax, rax
- je G_M8979_IG56
+ je G_M8979_IG57
jmp G_M8979_IG19
;; size=32 bbWeight=2 PerfScore 9.50
G_M8979_IG31: ; bbWeight=2, gcrefRegs=70E8 {rbx rbp rsi rdi r12 r13 r14}, byrefRegs=0000 {}, byref
@@ -809,7 +809,7 @@ G_M8979_IG32: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g
; gcrRegs -[r12]
; GC ptr vars -{V01 V34}
cmp byte ptr [rbx+0x4E], 0
- je G_M8979_IG45
+ je G_M8979_IG46
mov rdx, r13
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; System.Reflection.FieldInfo
@@ -824,15 +824,20 @@ G_M8979_IG32: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[rdx]
; gcr arg pop 0
+ test r12, r12
+ jne SHORT G_M8979_IG33
mov gword ptr [rsp+0xA0], rax
; GC ptr vars +{V14}
- mov rcx, r12
- ; gcrRegs +[rcx]
- or rcx, rax
- ; gcrRegs -[rcx]
+ test rax, rax
je G_M8979_IG24
- test r12, r12
- je SHORT G_M8979_IG33
+ mov r12, gword ptr [rsp+0xA0]
+ mov gword ptr [rsp+0xA0], r12
+ jmp SHORT G_M8979_IG34
+ ;; size=89 bbWeight=2 PerfScore 29.50
+G_M8979_IG33: ; bbWeight=2, gcrefRegs=70E9 {rax rbx rbp rsi rdi r12 r13 r14}, byrefRegs=0000 {}, byref
+ ; GC ptr vars -{V14}
+ mov gword ptr [rsp+0xA0], rax
+ ; GC ptr vars +{V14}
mov rcx, r12
; gcrRegs +[rcx]
mov rdx, qword ptr [r12]
@@ -842,16 +847,16 @@ G_M8979_IG32: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g
; gcr arg pop 0
test al, 32
jne G_M8979_IG24
- ;; size=96 bbWeight=2 PerfScore 39.00
-G_M8979_IG33: ; bbWeight=2, gcrefRegs=60E8 {rbx rbp rsi rdi r13 r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=30 bbWeight=2 PerfScore 19.00
+G_M8979_IG34: ; bbWeight=2, gcrefRegs=60E8 {rbx rbp rsi rdi r13 r14}, byrefRegs=0000 {}, byref, isz
mov rcx, r13
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
xor r8d, r8d
- mov r10, qword ptr [r13]
- mov r10, qword ptr [r10+0x50]
- call [r10+0x28]<unknown method>
+ mov rax, qword ptr [r13]
+ mov rax, qword ptr [rax+0x50]
+ call [rax+0x28]<unknown method>
; gcrRegs -[rcx rdx] +[rax]
; gcr arg pop 0
mov rdx, rax
@@ -861,14 +866,14 @@ G_M8979_IG33: ; bbWeight=2, gcrefRegs=60E8 {rbx rbp rsi rdi r13 r14}, byr
; gcrRegs -[rdx]
; gcr arg pop 0
test rax, rax
- je SHORT G_M8979_IG34
+ je SHORT G_M8979_IG35
cmp dword ptr [rax+0x08], 0
- je SHORT G_M8979_IG34
+ je SHORT G_M8979_IG35
cmp dword ptr [rax+0x08], 1
- jg G_M8979_IG60
+ jg G_M8979_IG61
jmp G_M8979_IG24
- ;; size=73 bbWeight=2 PerfScore 45.00
-G_M8979_IG34: ; bbWeight=2, gcrefRegs=60E8 {rbx rbp rsi rdi r13 r14}, byrefRegs=0000 {}, byref
+ ;; size=72 bbWeight=2 PerfScore 45.00
+G_M8979_IG35: ; bbWeight=2, gcrefRegs=60E8 {rbx rbp rsi rdi r13 r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rcx, 0xD1FFAB1E ; System.Runtime.Serialization.DataContracts.DataMember
call CORINFO_HELP_NEWSFAST
@@ -890,9 +895,9 @@ G_M8979_IG34: ; bbWeight=2, gcrefRegs=60E8 {rbx rbp rsi rdi r13 r14}, byr
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
test byte ptr [(reloc)], 1 ; global ptr
- je G_M8979_IG50
+ je G_M8979_IG51
;; size=67 bbWeight=2 PerfScore 21.00
-G_M8979_IG35: ; bbWeight=2, gcrefRegs=70E8 {rbx rbp rsi rdi r12 r13 r14}, byrefRegs=0000 {}, byref, isz
+G_M8979_IG36: ; bbWeight=2, gcrefRegs=70E8 {rbx rbp rsi rdi r12 r13 r14}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rdx, gword ptr [rcx]
; gcrRegs +[rdx]
@@ -914,10 +919,11 @@ G_M8979_IG35: ; bbWeight=2, gcrefRegs=70E8 {rbx rbp rsi rdi r12 r13 r14},
mov rax, gword ptr [rsp+0xA0]
; gcrRegs +[rax]
test rax, rax
- je G_M8979_IG44
+ je G_M8979_IG45
mov rcx, rax
; gcrRegs +[rcx]
xor edx, edx
+ mov gword ptr [rsp+0xA0], rax
mov r8, qword ptr [rax]
mov r8, qword ptr [r8+0x60]
mov qword ptr [rsp+0xD8], r8
@@ -937,7 +943,7 @@ G_M8979_IG35: ; bbWeight=2, gcrefRegs=70E8 {rbx rbp rsi rdi r12 r13 r14},
; gcrRegs -[rax rcx]
; gcr arg pop 0
test al, 64
- je SHORT G_M8979_IG36
+ je SHORT G_M8979_IG37
mov rcx, gword ptr [rsp+0x98]
; gcrRegs +[rcx]
mov rax, qword ptr [rsp+0xE8]
@@ -946,8 +952,8 @@ G_M8979_IG35: ; bbWeight=2, gcrefRegs=70E8 {rbx rbp rsi rdi r12 r13 r14},
; gcr arg pop 0
test eax, 256
je G_M8979_IG24
- ;; size=155 bbWeight=2 PerfScore 72.00
-G_M8979_IG36: ; bbWeight=2, gcrefRegs=70E8 {rbx rbp rsi rdi r12 r13 r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=163 bbWeight=2 PerfScore 74.00
+G_M8979_IG37: ; bbWeight=2, gcrefRegs=70E8 {rbx rbp rsi rdi r12 r13 r14}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rsp+0x98]
; gcrRegs +[rcx]
mov rax, qword ptr [rsp+0xE8]
@@ -967,7 +973,7 @@ G_M8979_IG36: ; bbWeight=2, gcrefRegs=70E8 {rbx rbp rsi rdi r12 r13 r14},
mov gword ptr [rsp+0x90], rax
; GC ptr vars +{V18}
test rax, rax
- jne G_M8979_IG40
+ jne G_M8979_IG41
mov rcx, gword ptr [r12+0x08]
; gcrRegs +[rcx]
cmp dword ptr [rcx], ecx
@@ -985,14 +991,14 @@ G_M8979_IG36: ; bbWeight=2, gcrefRegs=70E8 {rbx rbp rsi rdi r12 r13 r14},
; gcrRegs -[rax rcx]
...
+5 (+2.28%) : 12728.dasm - System.Xml.Serialization.CodeGenerator:StoreMember(System.Reflection.MemberInfo):this (FullOpts)
@@ -8,31 +8,33 @@
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 5, 3.50) ref -> rsi this class-hnd single-def <System.Xml.Serialization.CodeGenerator>
-; V01 arg1 [V01,T02] ( 5, 3.62) ref -> rbx class-hnd single-def <System.Reflection.MemberInfo>
+; V00 this [V00,T02] ( 5, 3.50) ref -> rsi this class-hnd single-def <System.Xml.Serialization.CodeGenerator>
+; V01 arg1 [V01,T01] ( 5, 3.62) ref -> rbx class-hnd single-def <System.Reflection.MemberInfo>
; V02 loc0 [V02,T04] ( 6, 4 ) ref -> rdi class-hnd single-def <System.Reflection.FieldInfo>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Reflection.PropertyInfo>
;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Reflection.MethodInfo>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T07] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V07 tmp2 [V07,T01] ( 7, 5.75) ref -> rdi class-hnd "spilling QMark2" <System.Reflection.PropertyInfo>
+; V07 tmp2 [V07,T03] ( 6, 4.75) ref -> rdi class-hnd "spilling QMark2" <System.Reflection.PropertyInfo>
; V08 tmp3 [V08,T06] ( 2, 2 ) ref -> rdx class-hnd single-def "dup spill" <System.Reflection.MethodInfo>
; V09 tmp4 [V09,T05] ( 4, 2 ) ref -> rdx
;* V10 tmp5 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 rat0 [V11,T00] ( 6, 6 ) ref -> rcx "virtual vtable call"
+; V11 cse0 [V11,T08] ( 3, 1 ) long -> rbp "CSE - moderate"
+; V12 rat0 [V12,T00] ( 6, 6 ) ref -> rcx "virtual vtable call"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M32748_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rdi
push rsi
+ push rbp
push rbx
- sub rsp, 32
+ sub rsp, 40
mov rsi, rcx
; gcrRegs +[rsi]
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=13 bbWeight=1 PerfScore 3.75
+ ;; size=14 bbWeight=1 PerfScore 4.75
G_M32748_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, rbx
; gcrRegs +[rdx]
@@ -65,12 +67,13 @@ G_M32748_IG03: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000
mov rax, qword ptr [rax+0x58]
;; size=41 bbWeight=0.50 PerfScore 7.50
G_M32748_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx
+ pop rbp
pop rsi
pop rdi
tail.jmp [rax+0x20]<unknown method>
- ;; size=11 bbWeight=0.50 PerfScore 1.88
+ ;; size=12 bbWeight=0.50 PerfScore 2.12
G_M32748_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx r8]
mov rcx, gword ptr [rsi+0x18]
@@ -82,12 +85,13 @@ G_M32748_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00C
mov rax, qword ptr [rax+0x58]
;; size=24 bbWeight=0.50 PerfScore 3.25
G_M32748_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx
+ pop rbp
pop rsi
pop rdi
tail.jmp [rax+0x20]<unknown method>
- ;; size=11 bbWeight=0.50 PerfScore 1.88
+ ;; size=12 bbWeight=0.50 PerfScore 2.12
G_M32748_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx rdi r8] +[rbx]
mov rdi, rbx
@@ -96,10 +100,11 @@ G_M32748_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=004
je SHORT G_M32748_IG13
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M32748_IG08: ; bbWeight=0.25, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ mov rbp, qword ptr [rdi]
mov rcx, 0xD1FFAB1E ; System.Reflection.PropertyInfo
- cmp qword ptr [rdi], rcx
+ cmp rbp, rcx
je SHORT G_M32748_IG10
- ;; size=15 bbWeight=0.25 PerfScore 1.06
+ ;; size=18 bbWeight=0.25 PerfScore 0.88
G_M32748_IG09: ; bbWeight=0.12, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
mov rdx, rbx
@@ -114,8 +119,7 @@ G_M32748_IG10: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000
; gcrRegs -[rax]
mov rcx, rdi
; gcrRegs +[rcx]
- mov rax, qword ptr [rdi]
- mov rax, qword ptr [rax+0x60]
+ mov rax, qword ptr [rbp+0x60]
call [rax+0x10]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
@@ -132,30 +136,32 @@ G_M32748_IG10: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- ;; size=35 bbWeight=0.50 PerfScore 6.25
+ ;; size=32 bbWeight=0.50 PerfScore 5.25
G_M32748_IG11: ; bbWeight=0.50, gcrefRegs=0044 {rdx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rcx, rsi
; gcrRegs +[rcx]
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M32748_IG12: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx
+ pop rbp
pop rsi
pop rdi
tail.jmp [System.Xml.Serialization.CodeGenerator:Call(System.Reflection.MethodInfo):this]
; gcr arg pop 0
- ;; size=13 bbWeight=0.50 PerfScore 1.88
+ ;; size=14 bbWeight=0.50 PerfScore 2.12
G_M32748_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx rdx rsi]
- add rsp, 32
+ add rsp, 40
pop rbx
+ pop rbp
pop rsi
pop rdi
ret
- ;; size=8 bbWeight=0.50 PerfScore 1.38
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
-; Total bytes of code 219, prolog size 7, PerfScore 32.88, instruction count 69, allocated bytes for code 219 (MethodHash=70ea8013) for method System.Xml.Serialization.CodeGenerator:StoreMember(System.Reflection.MemberInfo):this (FullOpts)
+; Total bytes of code 224, prolog size 8, PerfScore 33.69, instruction count 74, allocated bytes for code 224 (MethodHash=70ea8013) for method System.Xml.Serialization.CodeGenerator:StoreMember(System.Reflection.MemberInfo):this (FullOpts)
; ============================================================
Unwind Info:
@@ -163,12 +169,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
benchmarks.run_pgo.windows.x64.checked.mch
-34 (-26.15%) : 91947.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (Tier1)
@@ -5,28 +5,29 @@
; optimized using Dynamic PGO
; rsp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 3806
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 3806
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-; V01 arg1 [V01,T02] ( 4, 8 ) byref -> rdx ld-addr-op single-def
-; V02 loc0 [V02,T03] ( 7, 6.94) int -> registers
+; V00 arg0 [V00,T00] ( 4, 8 ) byref -> rcx ld-addr-op single-def
+; V01 arg1 [V01,T01] ( 4, 8 ) byref -> rdx ld-addr-op single-def
+; V02 loc0 [V02,T02] ( 7, 6.94) int -> r10
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 6, 11.73) int -> r10 "dup spill"
-; V05 tmp2 [V05,T07] ( 3, 2.96) byref -> r8 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T06] ( 5, 4.00) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T08] ( 3, 2.96) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T05] ( 6, 4.96) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
+; V04 tmp1 [V04,T04] ( 2, 3.98) int -> r10 "dup spill"
+; V05 tmp2 [V05,T09] ( 2, 2.00) byref -> r8 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T05] ( 4, 3.03) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T10] ( 2, 2.00) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 4.00) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[uint]>
;* V10 tmp7 [V10 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[uint]>
-; V11 cse0 [V11,T04] ( 6, 5.89) long -> r11 multi-def "CSE - aggressive"
+; V11 cse0 [V11,T07] ( 3, 2.96) int -> r11 "CSE - aggressive"
+; V12 cse1 [V12,T08] ( 3, 2.96) int -> r9 "CSE - aggressive"
+; V13 cse2 [V13,T06] ( 3, 2.99) long -> r9 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbx
- sub rsp, 32
- ;; size=5 bbWeight=1 PerfScore 1.25
+ sub rsp, 40
+ ;; size=4 bbWeight=1 PerfScore 0.25
G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, byref, isz
; byrRegs +[rcx rdx]
mov rax, bword ptr [rdx]
@@ -38,78 +39,61 @@ G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, b
mov ecx, dword ptr [rcx+0x08]
; byrRegs -[rcx]
cmp ecx, edx
- jne SHORT G_M264_IG09
+ jne SHORT G_M264_IG10
;; size=16 bbWeight=1 PerfScore 9.25
G_M264_IG03: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0101 {rax r8}, byref
mov r10d, edx
;; size=3 bbWeight=0.97 PerfScore 0.24
G_M264_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0101 {rax r8}, byref, isz
dec r10d
- mov r9d, r10d
- test r9d, r9d
- jl SHORT G_M264_IG05
- cmp r9d, ecx
- jae SHORT G_M264_IG12
- mov r11d, r9d
- mov ebx, dword ptr [r8+4*r11]
- cmp r9d, edx
- jae SHORT G_M264_IG12
- cmp ebx, dword ptr [rax+4*r11]
- je SHORT G_M264_IG08
- ;; size=34 bbWeight=1.00 PerfScore 10.46
-G_M264_IG05: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0101 {rax r8}, byref, isz
- test r10d, r10d
- jl SHORT G_M264_IG13
+ js SHORT G_M264_IG08
cmp r10d, ecx
- jae SHORT G_M264_IG12
- mov r11d, r10d
- mov ecx, dword ptr [r8+4*r11]
+ jae SHORT G_M264_IG13
+ mov r9d, r10d
+ mov r11d, dword ptr [r8+4*r9]
cmp r10d, edx
- jae SHORT G_M264_IG12
- cmp ecx, dword ptr [rax+4*r11]
- jb SHORT G_M264_IG10
- ;; size=28 bbWeight=0.97 PerfScore 9.68
-G_M264_IG06: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jae SHORT G_M264_IG13
+ mov r9d, dword ptr [rax+4*r9]
+ cmp r11d, r9d
+ je SHORT G_M264_IG04
+ ;; size=31 bbWeight=1.00 PerfScore 9.21
+G_M264_IG05: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax r8]
+ cmp r9d, r11d
+ ja SHORT G_M264_IG11
+ ;; size=5 bbWeight=0.97 PerfScore 1.21
+G_M264_IG06: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=0.74 PerfScore 0.18
G_M264_IG07: ; bbWeight=0.74, epilog, nogc, extend
- add rsp, 32
- pop rbx
+ add rsp, 40
ret
- ;; size=6 bbWeight=0.74 PerfScore 1.29
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0101 {rax r8}, gcvars, byref, isz
- ; byrRegs +[rax r8]
- mov r10d, r9d
- jmp SHORT G_M264_IG04
- ;; size=5 bbWeight=0.50 PerfScore 1.12
-G_M264_IG09: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rax r8]
+ ;; size=5 bbWeight=0.74 PerfScore 0.92
+G_M264_IG08: ; bbWeight=0.97, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.97 PerfScore 0.24
+G_M264_IG09: ; bbWeight=0.97, epilog, nogc, extend
+ add rsp, 40
+ ret
+ ;; size=5 bbWeight=0.97 PerfScore 1.21
+G_M264_IG10: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp ecx, edx
jge SHORT G_M264_IG06
;; size=4 bbWeight=0.03 PerfScore 0.04
-G_M264_IG10: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M264_IG11: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, -1
;; size=5 bbWeight=0.26 PerfScore 0.07
-G_M264_IG11: ; bbWeight=0.26, epilog, nogc, extend
- add rsp, 32
- pop rbx
+G_M264_IG12: ; bbWeight=0.26, epilog, nogc, extend
+ add rsp, 40
ret
- ;; size=6 bbWeight=0.26 PerfScore 0.46
-G_M264_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=0.26 PerfScore 0.33
+G_M264_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_M264_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- xor eax, eax
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M264_IG14: ; bbWeight=0, epilog, nogc, extend
- add rsp, 32
- pop rbx
- ret
+ int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 130, prolog size 5, PerfScore 34.04, instruction count 48, allocated bytes for code 130 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 96, prolog size 4, PerfScore 23.16, instruction count 34, allocated bytes for code 96 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================
Unwind Info:
@@ -117,10 +101,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
-19 (-8.09%) : 42233.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1)
@@ -5,19 +5,20 @@
; optimized using Dynamic PGO
; rsp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 876672
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 876672
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 15, 19.71) ref -> rbx class-hnd single-def <int[]>
-; V01 arg1 [V01,T06] ( 5, 4.00) int -> rdx single-def
-; V02 arg2 [V02,T05] ( 7, 4.89) int -> rsi single-def
-; V03 loc0 [V03,T00] ( 18, 37.70) int -> rdi
-; V04 loc1 [V04,T01] ( 14, 37.38) int -> r8
-; V05 loc2 [V05,T04] ( 4, 10.79) int -> rax single-def
-; V06 loc3 [V06,T08] ( 4, 3.10) int -> r10
+; V00 arg0 [V00,T02] ( 14, 18.55) ref -> rbx class-hnd single-def <int[]>
+; V01 arg1 [V01,T07] ( 5, 4.00) int -> rdx single-def
+; V02 arg2 [V02,T06] ( 7, 4.89) int -> rsi single-def
+; V03 loc0 [V03,T00] ( 17, 36.04) int -> rdi
+; V04 loc1 [V04,T01] ( 11, 33.40) int -> r8
+; V05 loc2 [V05,T05] ( 4, 10.79) int -> rax single-def
+; V06 loc3 [V06,T09] ( 4, 3.10) int -> r9
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T07] ( 2, 4.64) int -> r9 "Strict ordering of exceptions for Array store"
-; V09 cse0 [V09,T03] ( 7, 13.61) int -> rcx "CSE - aggressive"
+; V08 tmp1 [V08,T08] ( 2, 4.64) int -> r10 "Strict ordering of exceptions for Array store"
+; V09 cse0 [V09,T04] ( 3, 11.27) int -> r10 "CSE - aggressive"
+; V10 cse1 [V10,T03] ( 6, 12.45) int -> rcx "CSE - aggressive"
;
; Lcl frame size = 32
@@ -32,7 +33,7 @@ G_M63260_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=13 bbWeight=1 PerfScore 3.75
G_M63260_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp edx, esi
- jl G_M63260_IG17
+ jl G_M63260_IG16
;; size=8 bbWeight=1 PerfScore 1.25
G_M63260_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx]
@@ -48,67 +49,60 @@ G_M63260_IG04: ; bbWeight=3.90, gcVars=0000000000000000 {}, gcrefRegs=000
;; size=3 bbWeight=3.90 PerfScore 0.98
G_M63260_IG05: ; bbWeight=5.56, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r8d, edi
- jle SHORT G_M63260_IG07
+ jle SHORT G_M63260_IG08
;; size=5 bbWeight=5.56 PerfScore 6.95
G_M63260_IG06: ; bbWeight=5.06, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r8d, ecx
- jae G_M63260_IG18
+ jae G_M63260_IG17
mov r10d, r8d
- cmp dword ptr [rbx+4*r10+0x10], eax
- jge SHORT G_M63260_IG04
- ;; size=19 bbWeight=5.06 PerfScore 27.80
-G_M63260_IG07: ; bbWeight=1.66, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- cmp edi, r8d
- jge SHORT G_M63260_IG09
- ;; size=5 bbWeight=1.66 PerfScore 2.08
-G_M63260_IG08: ; bbWeight=1.16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- cmp edi, ecx
- jae G_M63260_IG18
- mov r10d, edi
mov r10d, dword ptr [rbx+4*r10+0x10]
- cmp r8d, ecx
- jae G_M63260_IG18
- mov r9d, r8d
+ cmp r10d, eax
+ jge SHORT G_M63260_IG04
+ ;; size=22 bbWeight=5.06 PerfScore 24.01
+G_M63260_IG07: ; bbWeight=1.16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ cmp edi, ecx
+ jae G_M63260_IG17
+ mov r9d, edi
mov r9d, dword ptr [rbx+4*r9+0x10]
mov r11d, edi
- mov dword ptr [rbx+4*r11+0x10], r9d
- mov r9d, r8d
- mov dword ptr [rbx+4*r9+0x10], r10d
- ;; size=49 bbWeight=1.16 PerfScore 11.02
-G_M63260_IG09: ; bbWeight=2.16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov dword ptr [rbx+4*r11+0x10], r10d
+ mov r10d, r8d
+ mov dword ptr [rbx+4*r10+0x10], r9d
+ ;; size=32 bbWeight=1.16 PerfScore 6.96
+G_M63260_IG08: ; bbWeight=2.16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, r8d
- jge SHORT G_M63260_IG13
+ jge SHORT G_M63260_IG12
;; size=5 bbWeight=2.16 PerfScore 2.70
-G_M63260_IG10: ; bbWeight=5.10, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M63260_IG09: ; bbWeight=5.10, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, r8d
jge SHORT G_M63260_IG05
;; size=5 bbWeight=5.10 PerfScore 6.37
-G_M63260_IG11: ; bbWeight=4.85, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M63260_IG10: ; bbWeight=4.85, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, ecx
- jae SHORT G_M63260_IG18
+ jae SHORT G_M63260_IG17
mov r10d, edi
cmp dword ptr [rbx+4*r10+0x10], eax
jg SHORT G_M63260_IG05
;; size=14 bbWeight=4.85 PerfScore 26.66
-G_M63260_IG12: ; bbWeight=3.44, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M63260_IG11: ; bbWeight=3.44, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
inc edi
- jmp SHORT G_M63260_IG10
+ jmp SHORT G_M63260_IG09
;; size=4 bbWeight=3.44 PerfScore 7.73
-G_M63260_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M63260_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, esi
- je SHORT G_M63260_IG15
+ je SHORT G_M63260_IG14
;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M63260_IG14: ; bbWeight=0.39, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M63260_IG13: ; bbWeight=0.39, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, ecx
- jae SHORT G_M63260_IG18
- mov r10d, edi
- mov r10d, dword ptr [rbx+4*r10+0x10]
+ jae SHORT G_M63260_IG17
+ mov r9d, edi
+ mov r9d, dword ptr [rbx+4*r9+0x10]
mov r8d, edi
mov dword ptr [rbx+4*r8+0x10], eax
mov r8d, esi
- mov dword ptr [rbx+4*r8+0x10], r10d
+ mov dword ptr [rbx+4*r8+0x10], r9d
;; size=28 bbWeight=0.39 PerfScore 2.34
-G_M63260_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M63260_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
lea r8d, [rdi-0x01]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -124,32 +118,32 @@ G_M63260_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcr arg pop 0
nop
;; size=29 bbWeight=0.50 PerfScore 4.00
-G_M63260_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M63260_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=0.50 PerfScore 1.37
-G_M63260_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M63260_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx]
mov edi, edx
mov r8d, esi
mov ecx, dword ptr [rbx+0x08]
cmp r8d, ecx
- jae SHORT G_M63260_IG18
+ jae SHORT G_M63260_IG17
mov eax, r8d
mov eax, dword ptr [rbx+4*rax+0x10]
- jmp SHORT G_M63260_IG09
+ jmp SHORT G_M63260_IG08
;; size=22 bbWeight=0.50 PerfScore 4.00
-G_M63260_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M63260_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 235, prolog size 13, PerfScore 111.01, instruction count 79, allocated bytes for code 235 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1)
+; Total bytes of code 216, prolog size 13, PerfScore 101.08, instruction count 74, allocated bytes for code 216 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1)
; ============================================================
Unwind Info:
-19 (-7.51%) : 42228.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
@@ -9,17 +9,18 @@
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 298.53
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 14,349.89) ref -> rbx class-hnd single-def <int[]>
-; V01 arg1 [V01,T09] ( 3, 12.13) int -> rdx single-def
-; V02 arg2 [V02,T07] ( 6, 72.21) int -> rsi single-def
-; V03 loc0 [V03,T00] ( 14,725.63) int -> rdi
-; V04 loc1 [V04,T01] ( 10,706.80) int -> r8
-; V05 loc2 [V05,T04] ( 3,214.58) int -> rcx
-; V06 loc3 [V06,T08] ( 4, 63.89) int -> r9
+; V00 arg0 [V00,T02] ( 13,325.81) ref -> rbx class-hnd single-def <int[]>
+; V01 arg1 [V01,T10] ( 3, 12.13) int -> rdx single-def
+; V02 arg2 [V02,T08] ( 6, 72.21) int -> rsi single-def
+; V03 loc0 [V03,T00] ( 13,691.42) int -> rdi
+; V04 loc1 [V04,T01] ( 7,624.44) int -> r8
+; V05 loc2 [V05,T05] ( 3,214.58) int -> rcx
+; V06 loc3 [V06,T09] ( 4, 63.89) int -> r11
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T05] ( 2, 96.31) int -> r11 "Strict ordering of exceptions for Array store"
-; V09 cse0 [V09,T03] ( 7,271.60) int -> rax hoist "CSE - aggressive"
-; V10 cse1 [V10,T06] ( 6, 95.84) long -> r10 multi-def "CSE - aggressive"
+; V08 tmp1 [V08,T06] ( 2, 96.31) int -> r10 "Strict ordering of exceptions for Array store"
+; V09 cse0 [V09,T04] ( 3,237.50) int -> r10 "CSE - aggressive"
+; V10 cse1 [V10,T03] ( 6,247.52) int -> rax hoist "CSE - aggressive"
+; V11 cse2 [V11,T07] ( 6, 95.84) long -> r9 multi-def "CSE - aggressive"
;
; Lcl frame size = 32
@@ -49,7 +50,7 @@ G_M63260_IG04: ; bbWeight=104.84, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}
;; size=5 bbWeight=104.84 PerfScore 131.05
G_M63260_IG05: ; bbWeight=100.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, eax
- jae G_M63260_IG16
+ jae G_M63260_IG15
mov r10d, edi
cmp dword ptr [rbx+4*r10+0x10], ecx
jle SHORT G_M63260_IG03
@@ -62,49 +63,42 @@ G_M63260_IG07: ; bbWeight=82.63, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
;; size=3 bbWeight=82.63 PerfScore 20.66
G_M63260_IG08: ; bbWeight=116.84, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r8d, edi
- jle SHORT G_M63260_IG10
+ jle SHORT G_M63260_IG11
;; size=5 bbWeight=116.84 PerfScore 146.05
G_M63260_IG09: ; bbWeight=106.71, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r8d, eax
- jae G_M63260_IG16
+ jae SHORT G_M63260_IG15
mov r10d, r8d
- cmp dword ptr [rbx+4*r10+0x10], ecx
+ mov r10d, dword ptr [rbx+4*r10+0x10]
+ cmp r10d, ecx
jge SHORT G_M63260_IG07
- ;; size=19 bbWeight=106.71 PerfScore 586.90
-G_M63260_IG10: ; bbWeight=34.21, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- cmp edi, r8d
- jge SHORT G_M63260_IG12
- ;; size=5 bbWeight=34.21 PerfScore 42.76
-G_M63260_IG11: ; bbWeight=24.08, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=18 bbWeight=106.71 PerfScore 506.87
+G_M63260_IG10: ; bbWeight=24.08, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, eax
- jae SHORT G_M63260_IG16
- mov r10d, edi
- mov r9d, dword ptr [rbx+4*r10+0x10]
- cmp r8d, eax
- jae SHORT G_M63260_IG16
- mov r11d, r8d
- mov r11d, dword ptr [rbx+4*r11+0x10]
- mov dword ptr [rbx+4*r10+0x10], r11d
- mov r10d, r8d
- mov dword ptr [rbx+4*r10+0x10], r9d
+ jae SHORT G_M63260_IG15
+ mov r9d, edi
+ mov r11d, dword ptr [rbx+4*r9+0x10]
+ mov dword ptr [rbx+4*r9+0x10], r10d
+ mov r9d, r8d
+ mov dword ptr [rbx+4*r9+0x10], r11d
jmp SHORT G_M63260_IG04
- ;; size=40 bbWeight=24.08 PerfScore 270.88
-G_M63260_IG12: ; bbWeight=44.34, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=27 bbWeight=24.08 PerfScore 186.60
+G_M63260_IG11: ; bbWeight=44.34, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, esi
- je SHORT G_M63260_IG14
+ je SHORT G_M63260_IG13
;; size=4 bbWeight=44.34 PerfScore 55.43
-G_M63260_IG13: ; bbWeight=7.87, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M63260_IG12: ; bbWeight=7.87, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, eax
- jae SHORT G_M63260_IG16
- mov r10d, edi
- mov r9d, dword ptr [rbx+4*r10+0x10]
- mov dword ptr [rbx+4*r10+0x10], ecx
+ jae SHORT G_M63260_IG15
+ mov r9d, edi
+ mov r11d, dword ptr [rbx+4*r9+0x10]
+ mov dword ptr [rbx+4*r9+0x10], ecx
cmp esi, eax
- jae SHORT G_M63260_IG16
+ jae SHORT G_M63260_IG15
mov r8d, esi
- mov dword ptr [rbx+4*r8+0x10], r9d
+ mov dword ptr [rbx+4*r8+0x10], r11d
;; size=29 bbWeight=7.87 PerfScore 55.08
-G_M63260_IG14: ; bbWeight=10.13, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M63260_IG13: ; bbWeight=10.13, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
lea r8d, [rdi-0x01]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -120,7 +114,7 @@ G_M63260_IG14: ; bbWeight=10.13, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcr arg pop 0
nop
;; size=29 bbWeight=10.13 PerfScore 81.04
-G_M63260_IG15: ; bbWeight=10.13, epilog, nogc, extend
+G_M63260_IG14: ; bbWeight=10.13, epilog, nogc, extend
add rsp, 168
pop rbx
pop rsi
@@ -128,13 +122,13 @@ G_M63260_IG15: ; bbWeight=10.13, epilog, nogc, extend
pop rbp
ret
;; size=12 bbWeight=10.13 PerfScore 32.92
-G_M63260_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M63260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 253, prolog size 69, PerfScore 2068.40, instruction count 70, allocated bytes for code 253 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
+; Total bytes of code 234, prolog size 69, PerfScore 1861.34, instruction count 65, allocated bytes for code 234 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
; ============================================================
Unwind Info:
+25 (+8.59%) : 68340.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
@@ -20,16 +20,16 @@
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions>
;* V09 tmp7 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V10 tmp8 [V10,T10] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-; V11 tmp9 [V11,T03] ( 5, 5 ) ubyte -> rdi "Inline stloc first use temp"
+; V11 tmp9 [V11,T06] ( 5, 3 ) ubyte -> rdi "Inline stloc first use temp"
;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V14 tmp12 [V14,T06] ( 5, 4 ) ref -> rbp class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
-; V15 tmp13 [V15,T04] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1"
+; V14 tmp12 [V14,T05] ( 5, 4 ) ref -> rbp class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
+; V15 tmp13 [V15,T03] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1"
; V16 tmp14 [V16,T08] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable"
-; V17 tmp15 [V17,T01] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V18 tmp16 [V18,T05] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1"
+; V17 tmp15 [V17,T01] ( 5, 5.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V18 tmp16 [V18,T04] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1"
; V19 tmp17 [V19,T09] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable"
-; V20 tmp18 [V20,T02] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V20 tmp18 [V20,T02] ( 5, 5.50) ref -> r8 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V21 tmp19 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
; V22 tmp20 [V22 ] ( 4, 2 ) ubyte -> [rsp+0x20] do-not-enreg[X] addr-exposed "field V01.hasValue (fldOffset=0x0)" P-DEP
; V23 tmp21 [V23 ] ( 3, 1 ) ubyte -> [rsp+0x21] do-not-enreg[X] addr-exposed "field V01.value (fldOffset=0x1)" P-DEP
@@ -55,16 +55,16 @@ G_M43884_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rcx]
mov word ptr [rsp+0x20], cx
cmp byte ptr [rsp+0x20], 0
- jne G_M43884_IG14
+ jne G_M43884_IG12
cmp byte ptr [rsi+0x88], 0
- jne G_M43884_IG16
+ jne G_M43884_IG14
xor edi, edi
mov rbp, gword ptr [rbx+0x80]
; gcrRegs +[rbp]
test rbp, rbp
- je G_M43884_IG18
+ je G_M43884_IG16
test byte ptr [rbp+0x18], 2
- je G_M43884_IG18
+ je G_M43884_IG16
;; size=72 bbWeight=1 PerfScore 21.50
G_M43884_IG03: ; bbWeight=1, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
@@ -73,62 +73,60 @@ G_M43884_IG03: ; bbWeight=1, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {},
mov rax, rdx
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M43884_IG07
+ je SHORT G_M43884_IG06
;; size=12 bbWeight=1 PerfScore 3.50
-G_M43884_IG04: ; bbWeight=0.50, gcrefRegs=000D {rax rdx rbx}, byrefRegs=0000 {}, byref, isz
+G_M43884_IG04: ; bbWeight=0.50, gcrefRegs=000D {rax rdx rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp]
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]
cmp qword ptr [rax], rcx
- je SHORT G_M43884_IG06
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ je G_M43884_IG17
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
G_M43884_IG05: ; bbWeight=0.25, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M43884_IG06: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
- movzx rdi, byte ptr [rax+0x84]
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M43884_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M43884_IG17
+ ;; size=10 bbWeight=0.25 PerfScore 0.75
+G_M43884_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
test edi, edi
- jne SHORT G_M43884_IG12
+ jne SHORT G_M43884_IG10
cmp gword ptr [rbx+0x88], 0
- je G_M43884_IG19
+ je G_M43884_IG18
;; size=18 bbWeight=1 PerfScore 5.25
-G_M43884_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M43884_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x88]
; gcrRegs +[rcx]
mov rdx, gword ptr [rcx+0x08]
; gcrRegs +[rdx]
- mov rax, rdx
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M43884_IG12
+ mov r8, rdx
+ ; gcrRegs +[r8]
+ test r8, r8
+ je SHORT G_M43884_IG10
;; size=19 bbWeight=1 PerfScore 5.50
-G_M43884_IG09: ; bbWeight=0.50, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
+G_M43884_IG08: ; bbWeight=0.50, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rbx]
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]
- cmp qword ptr [rax], rcx
- je SHORT G_M43884_IG11
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M43884_IG10: ; bbWeight=0.25, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+ cmp qword ptr [r8], rcx
+ je G_M43884_IG19
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M43884_IG09: ; bbWeight=0.25, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r8]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M43884_IG11: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- movzx rdi, byte ptr [rax+0x84]
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M43884_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+ mov r8, rax
+ ; gcrRegs +[r8]
+ jmp SHORT G_M43884_IG19
+ ;; size=10 bbWeight=0.25 PerfScore 0.81
+G_M43884_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax r8]
xor eax, eax
cmp edi, 2
sete al
;; size=8 bbWeight=1 PerfScore 1.50
-G_M43884_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M43884_IG11: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -136,7 +134,7 @@ G_M43884_IG13: ; bbWeight=1, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=1 PerfScore 3.25
-G_M43884_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M43884_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rsi]
mov cx, word ptr [rsi+0x98]
mov word ptr [rsp+0x20], cx
@@ -146,6 +144,17 @@ G_M43884_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {
; gcr arg pop 0
nop
;; size=24 bbWeight=0 PerfScore 0.00
+G_M43884_IG13: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ ret
+ ;; size=9 bbWeight=0 PerfScore 0.00
+G_M43884_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0 PerfScore 0.00
G_M43884_IG15: ; bbWeight=0, epilog, nogc, extend
add rsp, 40
pop rbx
@@ -154,18 +163,7 @@ G_M43884_IG15: ; bbWeight=0, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=0 PerfScore 0.00
-G_M43884_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- xor eax, eax
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M43884_IG17: ; bbWeight=0, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- ret
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M43884_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M43884_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -176,8 +174,13 @@ G_M43884_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {
; gcrRegs +[rbp]
jmp G_M43884_IG03
;; size=21 bbWeight=0 PerfScore 0.00
-G_M43884_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbp]
+G_M43884_IG17: ; bbWeight=0, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbp] +[rax]
+ movzx rdi, byte ptr [rax+0x84]
+ jmp G_M43884_IG06
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M43884_IG18: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
lea rdx, bword ptr [rbx+0x88]
; byrRegs +[rdx]
mov rcx, rbx
@@ -186,10 +189,15 @@ G_M43884_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rcx]
; byrRegs -[rdx]
; gcr arg pop 0
- jmp G_M43884_IG08
+ jmp G_M43884_IG07
;; size=21 bbWeight=0 PerfScore 0.00
+G_M43884_IG19: ; bbWeight=0, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx] +[r8]
+ movzx rdi, byte ptr [r8+0x84]
+ jmp SHORT G_M43884_IG10
+ ;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 291, prolog size 8, PerfScore 53.75, instruction count 78, allocated bytes for code 291 (MethodHash=8b225493) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
+; Total bytes of code 316, prolog size 8, PerfScore 50.81, instruction count 83, allocated bytes for code 316 (MethodHash=8b225493) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
; ============================================================
Unwind Info:
+37 (+10.69%) : 27089.dasm - System.Text.Ascii:ChangeCaseushort,ushort,System.Text.Ascii+ToUpperConversion:int (Tier1)
@@ -12,8 +12,8 @@
; V00 arg0 [V00,T00] ( 4, 8 ) byref -> rcx ld-addr-op single-def
; V01 arg1 [V01,T01] ( 4, 8 ) byref -> rdx ld-addr-op single-def
; V02 arg2 [V02,T04] ( 3, 3 ) byref -> rbx single-def
-; V03 loc0 [V03,T05] ( 5, 4 ) long -> r13
-; V04 loc1 [V04,T15] ( 3, 2 ) int -> r12
+; V03 loc0 [V03,T05] ( 5, 4 ) long -> r12
+; V04 loc1 [V04,T15] ( 3, 2 ) int -> r14
;* V05 loc2 [V05 ] ( 0, 0 ) long -> zero-ref
; V06 loc3 [V06 ] ( 1, 1 ) byref -> [rsp+0x30] must-init pinned single-def
;* V07 loc4 [V07 ] ( 0, 0 ) long -> zero-ref
@@ -26,14 +26,14 @@
;* V14 tmp4 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp5 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp6 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp7 [V17,T02] ( 4, 8 ) int -> r15 "Inlining Arg"
+; V17 tmp7 [V17,T03] ( 5, 8 ) int -> r15 "Inlining Arg"
;* V18 tmp8 [V18 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V19 tmp9 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp10 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp11 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V22 tmp12 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V23 tmp13 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V24 tmp14 [V24,T03] ( 4, 8 ) int -> r13 "Inlining Arg"
+; V24 tmp14 [V24,T02] ( 6, 8 ) int -> r13 "Inlining Arg"
;* V25 tmp15 [V25 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V26 tmp16 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V27 tmp17 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -57,7 +57,7 @@
; V45 tmp35 [V45,T07] ( 4, 4 ) byref -> rbp single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V46 tmp36 [V46,T06] ( 5, 4 ) int -> r14 "field V00._length (fldOffset=0x8)" P-INDEP
; V47 tmp37 [V47,T08] ( 4, 4 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V48 tmp38 [V48,T13] ( 5, 3 ) int -> rdi "field V01._length (fldOffset=0x8)" P-INDEP
+; V48 tmp38 [V48,T13] ( 6, 3 ) int -> rdi "field V01._length (fldOffset=0x8)" P-INDEP
;* V49 tmp39 [V49 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP
;* V50 tmp40 [V50 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
;* V51 tmp41 [V51 ] ( 0, 0 ) byref -> zero-ref "field V12._reference (fldOffset=0x0)" P-INDEP
@@ -128,33 +128,19 @@ G_M47258_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=000E {rcx rdx r
jo G_M47258_IG10
test r15d, r15d
jl G_M47258_IG11
- ;; size=32 bbWeight=1 PerfScore 12.25
-G_M47258_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref, isz
- ; byrRegs -[rcx rdx]
imul r13d, edi, 2
jo G_M47258_IG10
test r13d, r13d
- jge SHORT G_M47258_IG04
- mov rcx, 0xD1FFAB1E
- ; gcrRegs +[rcx]
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx]
- ; gcr arg pop 0
- mov rcx, 0xD1FFAB1E
- ; gcrRegs +[rcx]
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx]
- ; gcr arg pop 0
- ;; size=67 bbWeight=1 PerfScore 11.25
-G_M47258_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref, isz
+ jl G_M47258_IG12
+ ;; size=51 bbWeight=1 PerfScore 16.50
+G_M47258_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref
+ ; byrRegs -[rcx rdx]
test r15d, r15d
- je G_M47258_IG12
+ je G_M47258_IG13
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M47258_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref, isz
test r13d, r13d
- je G_M47258_IG12
+ je G_M47258_IG13
mov rdx, rsi
; byrRegs +[rdx]
sub rdx, rbp
@@ -167,9 +153,9 @@ G_M47258_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp r
cmp rcx, rdx
jb SHORT G_M47258_IG05
cmp r14d, edi
- jg G_M47258_IG13
+ jg G_M47258_IG14
jmp SHORT G_M47258_IG06
- ;; size=54 bbWeight=1 PerfScore 9.50
+ ;; size=45 bbWeight=1 PerfScore 8.25
G_M47258_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx rbp rsi]
mov ecx, 72
@@ -179,27 +165,27 @@ G_M47258_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
;; size=12 bbWeight=0 PerfScore 0.00
G_M47258_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref
; byrRegs +[rbx rbp rsi]
- mov r13d, r14d
- xor r12d, r12d
+ mov r12d, r14d
+ xor r14d, r14d
;; size=6 bbWeight=1 PerfScore 0.50
-G_M47258_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref, isz
+G_M47258_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref
mov bword ptr [rsp+0x30], rbp
mov rcx, rbp
mov bword ptr [rsp+0x28], rsi
mov rdx, rsi
- mov r8, r13
+ mov r8, r12
call [<unknown method>]
; byrRegs -[rbp rsi]
; gcr arg pop 0
mov rsi, rax
- cmp rsi, r13
- ja SHORT G_M47258_IG14
- ;; size=33 bbWeight=1 PerfScore 7.25
+ cmp rsi, r12
+ ja G_M47258_IG15
+ ;; size=37 bbWeight=1 PerfScore 7.25
G_M47258_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov dword ptr [rbx], esi
mov eax, 3
- cmp r13, rsi
- cmove eax, r12d
+ cmp r12, rsi
+ cmove eax, r14d
;; size=14 bbWeight=1 PerfScore 1.75
G_M47258_IG09: ; bbWeight=1, epilog, nogc, extend
add rsp, 56
@@ -218,7 +204,7 @@ G_M47258_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
call CORINFO_HELP_OVERFLOW
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M47258_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref
+G_M47258_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref, isz
; byrRegs +[rbx rbp rsi]
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
@@ -227,18 +213,39 @@ G_M47258_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp r
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- jmp G_M47258_IG03
- ;; size=31 bbWeight=0 PerfScore 0.00
-G_M47258_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref, isz
+ imul r13d, edi, 2
+ jo SHORT G_M47258_IG10
+ test r13d, r13d
+ jge G_M47258_IG03
+ ;; size=41 bbWeight=0 PerfScore 0.00
+G_M47258_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ test r15d, r15d
+ jne G_M47258_IG04
+ ;; size=61 bbWeight=0 PerfScore 0.00
+G_M47258_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref
cmp r14d, edi
- jle SHORT G_M47258_IG06
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M47258_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref, isz
- mov r13d, edi
- mov r12d, 1
- jmp SHORT G_M47258_IG07
- ;; size=11 bbWeight=0 PerfScore 0.00
-G_M47258_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ jle G_M47258_IG06
+ ;; size=9 bbWeight=0 PerfScore 0.00
+G_M47258_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref
+ mov r12d, edi
+ mov r14d, 1
+ jmp G_M47258_IG07
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M47258_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
; byrRegs -[rbp rsi]
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
@@ -247,10 +254,10 @@ G_M47258_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- jmp SHORT G_M47258_IG08
- ;; size=28 bbWeight=0 PerfScore 0.00
+ jmp G_M47258_IG08
+ ;; size=31 bbWeight=0 PerfScore 0.00
-; Total bytes of code 346, prolog size 28, PerfScore 58.50, instruction count 89, allocated bytes for code 346 (MethodHash=ad1d4765) for method System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
+; Total bytes of code 383, prolog size 28, PerfScore 51.50, instruction count 94, allocated bytes for code 383 (MethodHash=ad1d4765) for method System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
; ============================================================
Unwind Info:
+20 (+11.83%) : 69696.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
@@ -9,18 +9,18 @@
; 3 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 9, 5 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
-; V01 loc0 [V01,T03] ( 5, 5 ) int -> rsi
+; V00 this [V00,T00] ( 10, 5 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V01 loc0 [V01,T08] ( 5, 2 ) int -> rsi
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V05 tmp2 [V05,T06] ( 5, 4 ) ref -> rdi class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
-; V06 tmp3 [V06,T04] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1"
-; V07 tmp4 [V07,T07] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable"
-; V08 tmp5 [V08,T00] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V09 tmp6 [V09,T05] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1"
-; V10 tmp7 [V10,T08] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable"
-; V11 tmp8 [V11,T01] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V05 tmp2 [V05,T05] ( 5, 4 ) ref -> rdi class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
+; V06 tmp3 [V06,T03] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1"
+; V07 tmp4 [V07,T06] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable"
+; V08 tmp5 [V08,T01] ( 5, 5.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V09 tmp6 [V09,T04] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1"
+; V10 tmp7 [V10,T07] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable"
+; V11 tmp8 [V11,T02] ( 5, 5.50) ref -> r8 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;
; Lcl frame size = 32
@@ -38,9 +38,9 @@ G_M4380_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre
mov rdi, gword ptr [rbx+0x80]
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M4380_IG14
+ je SHORT G_M4380_IG12
test byte ptr [rdi+0x18], 2
- je SHORT G_M4380_IG14
+ je SHORT G_M4380_IG12
;; size=20 bbWeight=1 PerfScore 7.50
G_M4380_IG03: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [rdi+0x08]
@@ -48,65 +48,63 @@ G_M4380_IG03: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {},
mov rax, rdx
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M4380_IG07
+ je SHORT G_M4380_IG06
;; size=12 bbWeight=1 PerfScore 3.50
G_M4380_IG04: ; bbWeight=0.50, gcrefRegs=000D {rax rdx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]
cmp qword ptr [rax], rcx
- je SHORT G_M4380_IG06
+ je SHORT G_M4380_IG13
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M4380_IG05: ; bbWeight=0.25, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
+G_M4380_IG05: ; bbWeight=0.25, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M4380_IG06: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
- mov esi, dword ptr [rax+0x80]
- ;; size=6 bbWeight=1 PerfScore 2.00
-G_M4380_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M4380_IG13
+ ;; size=7 bbWeight=0.25 PerfScore 0.75
+G_M4380_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
cmp gword ptr [rbx+0x88], 0
- je SHORT G_M4380_IG15
+ je SHORT G_M4380_IG14
;; size=10 bbWeight=1 PerfScore 4.00
-G_M4380_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x88]
; gcrRegs +[rcx]
mov rdx, gword ptr [rcx+0x08]
; gcrRegs +[rdx]
- mov rax, rdx
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M4380_IG12
+ mov r8, rdx
+ ; gcrRegs +[r8]
+ test r8, r8
+ je SHORT G_M4380_IG10
;; size=19 bbWeight=1 PerfScore 5.50
-G_M4380_IG09: ; bbWeight=0.50, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG08: ; bbWeight=0.50, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx rbx]
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]
- cmp qword ptr [rax], rcx
- je SHORT G_M4380_IG11
+ cmp qword ptr [r8], rcx
+ je SHORT G_M4380_IG15
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M4380_IG10: ; bbWeight=0.25, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+G_M4380_IG09: ; bbWeight=0.25, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r8]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M4380_IG11: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- or esi, dword ptr [rax+0x80]
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M4380_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+ mov r8, rax
+ ; gcrRegs +[r8]
+ jmp SHORT G_M4380_IG15
+ ;; size=10 bbWeight=0.25 PerfScore 0.81
+G_M4380_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax r8]
mov eax, esi
;; size=2 bbWeight=1 PerfScore 0.25
-G_M4380_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M4380_IG11: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=1 PerfScore 2.75
-G_M4380_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M4380_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -117,8 +115,14 @@ G_M4380_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {r
; gcrRegs +[rdi]
jmp SHORT G_M4380_IG03
;; size=18 bbWeight=0 PerfScore 0.00
-G_M4380_IG15: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
+G_M4380_IG13: ; bbWeight=0, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi] +[rax]
+ mov esi, dword ptr [rax+0x80]
+ cmp gword ptr [rbx+0x88], 0
+ jne SHORT G_M4380_IG07
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M4380_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
lea rdx, bword ptr [rbx+0x88]
; byrRegs +[rdx]
mov rcx, rbx
@@ -127,10 +131,15 @@ G_M4380_IG15: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre
; gcrRegs -[rcx]
; byrRegs -[rdx]
; gcr arg pop 0
- jmp SHORT G_M4380_IG08
+ jmp SHORT G_M4380_IG07
;; size=18 bbWeight=0 PerfScore 0.00
+G_M4380_IG15: ; bbWeight=0, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx] +[r8]
+ or esi, dword ptr [r8+0x80]
+ jmp SHORT G_M4380_IG10
+ ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 169, prolog size 7, PerfScore 36.75, instruction count 46, allocated bytes for code 169 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
+; Total bytes of code 189, prolog size 7, PerfScore 32.81, instruction count 52, allocated bytes for code 189 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
; ============================================================
Unwind Info:
benchmarks.run_tiered.windows.x64.checked.mch
-32 (-24.62%) : 50772.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (Tier1)
@@ -9,108 +9,93 @@
;
; V00 arg0 [V00,T03] ( 4, 8 ) byref -> rcx ld-addr-op single-def
; V01 arg1 [V01,T04] ( 4, 8 ) byref -> rdx ld-addr-op single-def
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> registers
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> r10
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r9 "dup spill"
-; V05 tmp2 [V05,T07] ( 3, 5.50) byref -> r10 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T06] ( 5, 7 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T08] ( 3, 5.50) byref -> r8 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T05] ( 6, 7.50) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> r10 "dup spill"
+; V05 tmp2 [V05,T09] ( 2, 5 ) byref -> r8 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T08] ( 4, 6.50) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T10] ( 2, 5 ) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T07] ( 5, 7 ) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[uint]>
;* V10 tmp7 [V10 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[uint]>
-; V11 cse0 [V11,T02] ( 6, 13.50) long -> r11 multi-def "CSE - aggressive"
+; V11 cse0 [V11,T05] ( 3, 8.50) int -> r11 "CSE - aggressive"
+; V12 cse1 [V12,T06] ( 3, 8.50) int -> r9 "CSE - aggressive"
+; V13 cse2 [V13,T02] ( 3, 12 ) long -> r9 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbx
- sub rsp, 32
- ;; size=5 bbWeight=1 PerfScore 1.25
+ sub rsp, 40
+ ;; size=4 bbWeight=1 PerfScore 0.25
G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, byref, isz
; byrRegs +[rcx rdx]
- mov r8, bword ptr [rdx]
- ; byrRegs +[r8]
+ mov rax, bword ptr [rdx]
+ ; byrRegs +[rax]
mov edx, dword ptr [rdx+0x08]
; byrRegs -[rdx]
- mov r10, bword ptr [rcx]
- ; byrRegs +[r10]
+ mov r8, bword ptr [rcx]
+ ; byrRegs +[r8]
mov ecx, dword ptr [rcx+0x08]
; byrRegs -[rcx]
cmp ecx, edx
je SHORT G_M264_IG04
;; size=16 bbWeight=1 PerfScore 9.25
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r8 r10]
+ ; byrRegs -[rax r8]
cmp ecx, edx
- jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jl SHORT G_M264_IG11
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
-G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref
- ; byrRegs +[r8 r10]
- mov r9d, edx
+G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0101 {rax r8}, byref
+ ; byrRegs +[rax r8]
+ mov r10d, edx
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz
- dec r9d
- mov eax, r9d
- test eax, eax
- jl SHORT G_M264_IG06
- cmp eax, ecx
- jae SHORT G_M264_IG14
- mov r11d, eax
- mov ebx, dword ptr [r10+4*r11]
- cmp eax, edx
- jae SHORT G_M264_IG14
- cmp ebx, dword ptr [r8+4*r11]
- je SHORT G_M264_IG08
- ;; size=31 bbWeight=4 PerfScore 42.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz
- test r9d, r9d
- jge SHORT G_M264_IG09
- xor eax, eax
- ;; size=7 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
- ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M264_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, gcvars, byref, isz
- mov r9d, eax
- jmp SHORT G_M264_IG05
- ;; size=5 bbWeight=2 PerfScore 4.50
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz
- cmp r9d, ecx
- jae SHORT G_M264_IG14
- mov r11d, r9d
- mov eax, dword ptr [r10+4*r11]
- cmp r9d, edx
- jae SHORT G_M264_IG14
- cmp eax, dword ptr [r8+4*r11]
- jb SHORT G_M264_IG12
- ;; size=23 bbWeight=0.50 PerfScore 4.38
-G_M264_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r8 r10]
+G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0101 {rax r8}, byref, isz
+ dec r10d
+ js SHORT G_M264_IG09
+ cmp r10d, ecx
+ jae SHORT G_M264_IG13
+ mov r9d, r10d
+ mov r11d, dword ptr [r8+4*r9]
+ cmp r10d, edx
+ jae SHORT G_M264_IG13
+ mov r9d, dword ptr [rax+4*r9]
+ cmp r11d, r9d
+ je SHORT G_M264_IG05
+ ;; size=31 bbWeight=4 PerfScore 37.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rax r8]
+ cmp r9d, r11d
+ ja SHORT G_M264_IG11
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M264_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
+ ret
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG13: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
+G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 130, prolog size 5, PerfScore 66.75, instruction count 50, allocated bytes for code 130 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 98, prolog size 4, PerfScore 51.12, instruction count 35, allocated bytes for code 98 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================
Unwind Info:
@@ -118,10 +103,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
-19 (-7.51%) : 28532.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
@@ -8,17 +8,18 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 14, 93.51) ref -> rbx class-hnd single-def <int[]>
-; V01 arg1 [V01,T09] ( 3, 3 ) int -> rdx single-def
-; V02 arg2 [V02,T05] ( 6, 12 ) int -> rsi single-def
-; V03 loc0 [V03,T00] ( 14,227 ) int -> rdi
-; V04 loc1 [V04,T01] ( 10,134 ) int -> r8
+; V00 arg0 [V00,T02] ( 13, 91.51) ref -> rbx class-hnd single-def <int[]>
+; V01 arg1 [V01,T10] ( 3, 3 ) int -> rdx single-def
+; V02 arg2 [V02,T06] ( 6, 12 ) int -> rsi single-def
+; V03 loc0 [V03,T00] ( 13,219 ) int -> rdi
+; V04 loc1 [V04,T01] ( 7,122 ) int -> r8
; V05 loc2 [V05,T04] ( 3, 80.50) int -> rcx
-; V06 loc3 [V06,T08] ( 4, 5 ) int -> r9
+; V06 loc3 [V06,T09] ( 4, 5 ) int -> r11
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T06] ( 2, 8 ) int -> r11 "Strict ordering of exceptions for Array store"
-; V09 cse0 [V09,T03] ( 7, 85.01) int -> rax hoist "CSE - aggressive"
-; V10 cse1 [V10,T07] ( 6, 7.50) long -> r10 multi-def "CSE - aggressive"
+; V08 tmp1 [V08,T07] ( 2, 8 ) int -> r10 "Strict ordering of exceptions for Array store"
+; V09 cse0 [V09,T05] ( 3, 34 ) int -> r10 "CSE - aggressive"
+; V10 cse1 [V10,T03] ( 6, 83.01) int -> rax hoist "CSE - aggressive"
+; V11 cse2 [V11,T08] ( 6, 7.50) long -> r9 multi-def "CSE - aggressive"
;
; Lcl frame size = 32
@@ -48,7 +49,7 @@ G_M63260_IG04: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=5 bbWeight=8 PerfScore 10.00
G_M63260_IG05: ; bbWeight=64, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, eax
- jae G_M63260_IG16
+ jae G_M63260_IG15
mov r10d, edi
cmp dword ptr [rbx+4*r10+0x10], ecx
jle SHORT G_M63260_IG03
@@ -61,49 +62,42 @@ G_M63260_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=3 bbWeight=8 PerfScore 2.00
G_M63260_IG08: ; bbWeight=64, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r8d, edi
- jle SHORT G_M63260_IG10
+ jle SHORT G_M63260_IG11
;; size=5 bbWeight=64 PerfScore 80.00
G_M63260_IG09: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r8d, eax
- jae G_M63260_IG16
+ jae SHORT G_M63260_IG15
mov r10d, r8d
- cmp dword ptr [rbx+4*r10+0x10], ecx
+ mov r10d, dword ptr [rbx+4*r10+0x10]
+ cmp r10d, ecx
jge SHORT G_M63260_IG07
- ;; size=19 bbWeight=16 PerfScore 88.00
-G_M63260_IG10: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- cmp edi, r8d
- jge SHORT G_M63260_IG12
- ;; size=5 bbWeight=8 PerfScore 10.00
-G_M63260_IG11: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=18 bbWeight=16 PerfScore 76.00
+G_M63260_IG10: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, eax
- jae SHORT G_M63260_IG16
- mov r10d, edi
- mov r9d, dword ptr [rbx+4*r10+0x10]
- cmp r8d, eax
- jae SHORT G_M63260_IG16
- mov r11d, r8d
- mov r11d, dword ptr [rbx+4*r11+0x10]
- mov dword ptr [rbx+4*r10+0x10], r11d
- mov r10d, r8d
- mov dword ptr [rbx+4*r10+0x10], r9d
+ jae SHORT G_M63260_IG15
+ mov r9d, edi
+ mov r11d, dword ptr [rbx+4*r9+0x10]
+ mov dword ptr [rbx+4*r9+0x10], r10d
+ mov r9d, r8d
+ mov dword ptr [rbx+4*r9+0x10], r11d
jmp SHORT G_M63260_IG04
- ;; size=40 bbWeight=2 PerfScore 22.50
-G_M63260_IG12: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=27 bbWeight=2 PerfScore 15.50
+G_M63260_IG11: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, esi
- je SHORT G_M63260_IG14
+ je SHORT G_M63260_IG13
;; size=4 bbWeight=8 PerfScore 10.00
-G_M63260_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M63260_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, eax
- jae SHORT G_M63260_IG16
- mov r10d, edi
- mov r9d, dword ptr [rbx+4*r10+0x10]
- mov dword ptr [rbx+4*r10+0x10], ecx
+ jae SHORT G_M63260_IG15
+ mov r9d, edi
+ mov r11d, dword ptr [rbx+4*r9+0x10]
+ mov dword ptr [rbx+4*r9+0x10], ecx
cmp esi, eax
- jae SHORT G_M63260_IG16
+ jae SHORT G_M63260_IG15
mov r8d, esi
- mov dword ptr [rbx+4*r8+0x10], r9d
+ mov dword ptr [rbx+4*r8+0x10], r11d
;; size=29 bbWeight=0.50 PerfScore 3.50
-G_M63260_IG14: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M63260_IG13: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
lea r8d, [rdi-0x01]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -119,7 +113,7 @@ G_M63260_IG14: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcr arg pop 0
nop
;; size=29 bbWeight=1 PerfScore 8.00
-G_M63260_IG15: ; bbWeight=1, epilog, nogc, extend
+G_M63260_IG14: ; bbWeight=1, epilog, nogc, extend
add rsp, 168
pop rbx
pop rsi
@@ -127,13 +121,13 @@ G_M63260_IG15: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=12 bbWeight=1 PerfScore 3.25
-G_M63260_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M63260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 253, prolog size 69, PerfScore 593.94, instruction count 70, allocated bytes for code 253 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
+; Total bytes of code 234, prolog size 69, PerfScore 564.94, instruction count 65, allocated bytes for code 234 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
; ============================================================
Unwind Info:
-13 (-4.96%) : 5092.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
@@ -12,7 +12,7 @@
; V01 arg1 [V01,T07] ( 7, 4.50) byref -> rdx single-def
; V02 loc0 [V02,T08] ( 5, 3 ) ushort -> r8
; V03 loc1 [V03,T06] ( 5, 7 ) int -> r10
-; V04 loc2 [V04,T00] ( 7, 13.50) int -> r9
+; V04 loc2 [V04,T00] ( 5, 12.50) int -> r9
; V05 loc3 [V05,T10] ( 3, 1.50) int -> r10
; V06 loc4 [V06,T11] ( 3, 1.50) int -> r10
; V07 loc5 [V07,T12] ( 3, 1.50) int -> r9
@@ -20,10 +20,10 @@
; V09 tmp1 [V09,T04] ( 2, 8 ) int -> r9 "impSpillLclRefs"
;* V10 tmp2 [V10 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
; V11 tmp3 [V11,T09] ( 2, 2 ) int -> r8 "Single return block return value"
-; V12 tmp4 [V12,T05] ( 7, 7.50) byref -> rax single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp5 [V13,T03] ( 8, 8.50) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
+; V12 tmp4 [V12,T05] ( 6, 7 ) byref -> rax single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp5 [V13,T03] ( 7, 8 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
;* V14 tmp6 [V14 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V15 cse0 [V15,T01] ( 5, 11 ) int -> r11 multi-def "CSE - aggressive"
+; V15 cse0 [V15,T01] ( 4, 10.50) int -> r11 "CSE - aggressive"
;
; Lcl frame size = 32
@@ -94,23 +94,19 @@ G_M3969_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0005 {rax rdx},
;; size=21 bbWeight=2 PerfScore 6.00
G_M3969_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {rax rdx}, byref, isz
cmp r9d, ecx
- jae SHORT G_M3969_IG09
+ jae SHORT G_M3969_IG10
mov r11d, r9d
movzx r11, word ptr [rax+2*r11]
lea ebx, [r11-0x30]
cmp ebx, 9
jbe SHORT G_M3969_IG07
;; size=22 bbWeight=4 PerfScore 21.00
-G_M3969_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {rax rdx}, byref, isz
- cmp r9d, ecx
- jae SHORT G_M3969_IG10
- mov r11d, r9d
- movzx r11, word ptr [rax+2*r11]
+G_M3969_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref, isz
+ ; byrRegs -[rax]
test r11d, r11d
jne SHORT G_M3969_IG13
- ;; size=18 bbWeight=0.50 PerfScore 2.38
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
G_M3969_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref
- ; byrRegs -[rax]
mov dword ptr [rdx], r10d
;; size=3 bbWeight=0.50 PerfScore 0.50
G_M3969_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -151,7 +147,7 @@ G_M3969_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 262, prolog size 5, PerfScore 56.75, instruction count 81, allocated bytes for code 262 (MethodHash=db41f07e) for method System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
+; Total bytes of code 249, prolog size 5, PerfScore 55.00, instruction count 77, allocated bytes for code 249 (MethodHash=db41f07e) for method System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
; ============================================================
Unwind Info:
+0 (0.00%) : 47240.dasm - System.Net.IPAddress:Equals(System.Net.IPAddress):ubyte:this (Tier1)
+2 (+0.36%) : 16969.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
@@ -107,12 +107,12 @@ G_M62513_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
cmp dword ptr [rcx+0x14], 0
- je G_M62513_IG18
+ je G_M62513_IG19
mov edx, dword ptr [rcx+0x18]
test edx, edx
jne SHORT G_M62513_IG10
mov dword ptr [rcx+0x18], edi
- jmp G_M62513_IG18
+ jmp G_M62513_IG19
;; size=29 bbWeight=0.50 PerfScore 5.62
G_M62513_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
@@ -132,7 +132,7 @@ G_M62513_IG10: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {},
; gcrRegs +[rcx]
sub edi, edx
cmp edi, r14d
- jle G_M62513_IG18
+ jle G_M62513_IG19
mov rdx, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdx]
; gcrRegs +[rdi]
@@ -214,7 +214,7 @@ G_M62513_IG14: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
; gcrRegs +[rcx]
mov esi, dword ptr [rcx+0x14]
test esi, esi
- jle SHORT G_M62513_IG15
+ jle SHORT G_M62513_IG16
mov edx, r15d
lea r15d, [rdx-0x01]
test edx, edx
@@ -222,12 +222,15 @@ G_M62513_IG14: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
;; size=26 bbWeight=4 PerfScore 25.00
G_M62513_IG15: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
- test esi, esi
- jg SHORT G_M62513_IG16
- xor eax, eax
jmp SHORT G_M62513_IG17
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M62513_IG16: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ test esi, esi
+ jg SHORT G_M62513_IG17
+ xor eax, eax
+ jmp SHORT G_M62513_IG18
;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M62513_IG16: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M62513_IG17: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
mov eax, r14d
sar eax, 31
and eax, 3
@@ -235,10 +238,10 @@ G_M62513_IG16: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {},
sar eax, 2
add eax, dword ptr [rcx+0x18]
;; size=18 bbWeight=0.50 PerfScore 2.38
-G_M62513_IG17: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
mov dword ptr [rcx+0x18], eax
;; size=3 bbWeight=0.50 PerfScore 0.50
-G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M62513_IG19: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
cmp byte ptr [rbp-0x30], 0
je G_M62513_IG03
; GC ptr vars -{V00 V01}
@@ -247,7 +250,7 @@ G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {},
; gcr arg pop 0
jmp G_M62513_IG03
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M62513_IG19: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M62513_IG20: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01}
push rbp
push r15
@@ -260,9 +263,9 @@ G_M62513_IG19: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=000
mov qword ptr [rsp+0x28], rbp
lea rbp, [rbp+0x60]
;; size=25 bbWeight=0 PerfScore 0.00
-G_M62513_IG20: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M62513_IG21: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp byte ptr [rbp-0x30], 0
- je SHORT G_M62513_IG21
+ je SHORT G_M62513_IG22
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
; GC ptr vars -{V00 V01}
@@ -270,10 +273,10 @@ G_M62513_IG20: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=000
; gcrRegs -[rcx]
; gcr arg pop 0
;; size=15 bbWeight=0 PerfScore 0.00
-G_M62513_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M62513_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0 PerfScore 0.00
-G_M62513_IG22: ; bbWeight=0, funclet epilog, nogc, extend
+G_M62513_IG23: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 56
pop rbx
pop rsi
@@ -284,7 +287,7 @@ G_M62513_IG22: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 548, prolog size 33, PerfScore 160.38, instruction count 155, allocated bytes for code 548 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
+; Total bytes of code 550, prolog size 33, PerfScore 161.38, instruction count 156, allocated bytes for code 550 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
; ============================================================
Unwind Info:
@@ -323,4 +326,4 @@ Unwind Info:
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
*************** EH table for System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M62513_IG05..G_M62513_IG18) handled by [G_M62513_IG19..END) (fault)
+EH#0: try [G_M62513_IG05..G_M62513_IG19) handled by [G_M62513_IG20..END) (fault)
+23 (+0.89%) : 45122.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
@@ -90,19 +90,19 @@
;* V78 tmp64 [V78 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V79 tmp65 [V79 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V80 tmp66 [V80,T01] ( 3, 80 ) int -> rax
-; V81 tmp67 [V81,T00] ( 3,192 ) ubyte -> rax "Inline stloc first use temp"
+; V81 tmp67 [V81,T00] ( 2,128 ) ubyte -> rax "Inline stloc first use temp"
;* V82 tmp68 [V82 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ubyte]>
-; V83 tmp69 [V83,T03] ( 2, 32 ) long -> rcx "impAppendStmt"
-; V84 tmp70 [V84,T04] ( 2, 32 ) long -> rdx "impAppendStmt"
-; V85 tmp71 [V85,T05] ( 2, 32 ) int -> rax "impAppendStmt"
-; V86 tmp72 [V86,T06] ( 2, 32 ) int -> r8 "impAppendStmt"
+; V83 tmp69 [V83,T03] ( 2, 32 ) long -> rax "impAppendStmt"
+; V84 tmp70 [V84,T04] ( 2, 32 ) long -> r15 "impAppendStmt"
+; V85 tmp71 [V85,T05] ( 2, 32 ) int -> r14 "impAppendStmt"
+; V86 tmp72 [V86,T06] ( 2, 32 ) int -> r12 "impAppendStmt"
;* V87 tmp73 [V87 ] ( 0, 0 ) struct (56) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonReaderState>
;* V88 tmp74 [V88 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V89 tmp75 [V89 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V90 tmp76 [V90,T07] ( 2, 32 ) ubyte -> r10 "Inlining Arg"
-; V91 tmp77 [V91,T08] ( 2, 32 ) ubyte -> r9 "Inlining Arg"
-; V92 tmp78 [V92,T09] ( 2, 32 ) ubyte -> r11 "Inlining Arg"
-; V93 tmp79 [V93,T10] ( 2, 32 ) ubyte -> r15 "Inlining Arg"
+; V90 tmp76 [V90,T07] ( 2, 32 ) ubyte -> rcx "Inlining Arg"
+; V91 tmp77 [V91,T08] ( 2, 32 ) ubyte -> rbp "Inlining Arg"
+; V92 tmp78 [V92,T09] ( 2, 32 ) ubyte -> rdi "Inlining Arg"
+; V93 tmp79 [V93,T10] ( 2, 32 ) ubyte -> r9 "Inlining Arg"
;* V94 tmp80 [V94 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Text.Json.JsonReaderOptions>
;* V95 tmp81 [V95 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <System.Text.Json.BitStack>
; V96 tmp82 [V96,T21] ( 4, 16 ) int -> rcx "Inlining Arg"
@@ -121,7 +121,7 @@
;* V109 tmp95 [V109 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V110 tmp96 [V110 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V111 tmp97 [V111 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V112 tmp98 [V112,T58] ( 2, 8 ) long -> r8 "Inlining Arg"
+; V112 tmp98 [V112,T58] ( 2, 8 ) long -> rax "Inlining Arg"
; V113 tmp99 [V113,T39] ( 3, 12 ) ubyte -> registers "Inline return value spill temp"
;* V114 tmp100 [V114 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.SequencePosition>
;* V115 tmp101 [V115 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
@@ -139,7 +139,7 @@
; V127 tmp113 [V127,T45] ( 3, 10 ) ref -> rcx class-hnd "spilling QMark2" <ubyte[]>
;* V128 tmp114 [V128 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
; V129 tmp115 [V129,T49] ( 3, 9 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V130 tmp116 [V130,T11] ( 8, 29 ) ref -> r8 class-hnd "spilling QMark2" <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
+; V130 tmp116 [V130,T11] ( 8, 29 ) ref -> r10 class-hnd "spilling QMark2" <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
;* V131 tmp117 [V131 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
;* V132 tmp118 [V132 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlyMemory`1[ubyte]>
; V133 tmp119 [V133,T65] ( 3, 6 ) ref -> rbp class-hnd "Inline stloc first use temp" <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
@@ -200,12 +200,12 @@
;* V188 tmp174 [V188,T95] ( 0, 0 ) int -> zero-ref "field V75._length (fldOffset=0x8)" P-INDEP
; V189 tmp175 [V189,T103] ( 2, 0 ) byref -> r9 "field V82._reference (fldOffset=0x0)" P-INDEP
;* V190 tmp176 [V190,T104] ( 0, 0 ) int -> zero-ref "field V82._length (fldOffset=0x8)" P-INDEP
-; V191 tmp177 [V191,T24] ( 2, 16 ) int -> r14 "field V94._maxDepth (fldOffset=0x0)" P-INDEP
-; V192 tmp178 [V192,T25] ( 2, 16 ) ubyte -> r12 "field V94._commentHandling (fldOffset=0x4)" P-INDEP
-; V193 tmp179 [V193,T26] ( 2, 16 ) ubyte -> rbp "field V94.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
-; V194 tmp180 [V194,T23] ( 2, 16 ) ref -> rdi "field V95._array (fldOffset=0x0)" P-INDEP
+; V191 tmp177 [V191,T24] ( 2, 16 ) int -> [rsp+0xA0] spill-single-def "field V94._maxDepth (fldOffset=0x0)" P-INDEP
+; V192 tmp178 [V192,T25] ( 2, 16 ) ubyte -> rbx "field V94._commentHandling (fldOffset=0x4)" P-INDEP
+; V193 tmp179 [V193,T26] ( 2, 16 ) ubyte -> rdx "field V94.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
+; V194 tmp180 [V194,T23] ( 2, 16 ) ref -> [rsp+0x48] spill-single-def "field V95._array (fldOffset=0x0)" P-INDEP
; V195 tmp181 [V195,T27] ( 2, 16 ) long -> [rsp+0x98] spill-single-def "field V95._allocationFreeContainer (fldOffset=0x8)" P-INDEP
-; V196 tmp182 [V196,T28] ( 2, 16 ) int -> rbx "field V95._currentDepth (fldOffset=0x10)" P-INDEP
+; V196 tmp182 [V196,T28] ( 2, 16 ) int -> r11 "field V95._currentDepth (fldOffset=0x10)" P-INDEP
;* V197 tmp183 [V197 ] ( 0, 0 ) byref -> zero-ref "field V97._reference (fldOffset=0x0)" P-INDEP
;* V198 tmp184 [V198 ] ( 0, 0 ) int -> zero-ref "field V97._length (fldOffset=0x8)" P-INDEP
;* V199 tmp185 [V199 ] ( 0, 0 ) byref -> zero-ref "field V102._reference (fldOffset=0x0)" P-INDEP
@@ -244,17 +244,17 @@
;* V232 tmp218 [V232 ] ( 0, 0 ) ref -> zero-ref "field V158._object (fldOffset=0x0)" P-INDEP
;* V233 tmp219 [V233 ] ( 0, 0 ) int -> zero-ref "field V158._index (fldOffset=0x8)" P-INDEP
;* V234 tmp220 [V234 ] ( 0, 0 ) int -> zero-ref "field V158._length (fldOffset=0xc)" P-INDEP
-; V235 tmp221 [V235,T63] ( 5, 6.51) ref -> [rsp+0x48] spill-single-def "V02.[000..008)"
-; V236 tmp222 [V236,T64] ( 5, 6.51) ref -> [rsp+0x40] spill-single-def "V02.[008..016)"
+; V235 tmp221 [V235,T63] ( 5, 6.51) ref -> [rsp+0x40] spill-single-def "V02.[000..008)"
+; V236 tmp222 [V236,T64] ( 5, 6.51) ref -> [rsp+0x38] spill-single-def "V02.[008..016)"
; V237 tmp223 [V237,T90] ( 2, 2.01) int -> [rsp+0x94] spill-single-def "V02.[016..020)"
; V238 tmp224 [V238,T91] ( 2, 2.01) int -> [rsp+0x90] spill-single-def "V02.[020..024)"
;* V239 tmp225 [V239 ] ( 0, 0 ) ref -> zero-ref "V07.[000..008)"
; V240 tmp226 [V240,T13] ( 15, 25.01) ref -> r13 single-def "V07.[008..016)"
; V241 tmp227 [V241,T92] ( 2, 2.01) int -> [rsp+0x8C] spill-single-def "V07.[016..020)"
; V242 tmp228 [V242,T84] ( 3, 4.01) int -> [rsp+0x88] spill-single-def "V07.[020..024)"
-; V243 tmp229 [V243,T33] ( 6, 14.51) ref -> [rsp+0x38] "V07.[024..032)"
+; V243 tmp229 [V243,T33] ( 6, 14.51) ref -> [rsp+0x30] "V07.[024..032)"
; V244 tmp230 [V244,T12] ( 15, 28.01) int -> [rsp+0x84] "V07.[032..036)"
-; V245 tmp231 [V245,T14] ( 13, 24.01) ref -> [rsp+0x30] "V07.[040..048)"
+; V245 tmp231 [V245,T14] ( 13, 24.01) ref -> [rsp+0x28] "V07.[040..048)"
; V246 tmp232 [V246,T46] ( 6, 10.01) int -> [rsp+0x80] "V07.[048..052)"
; V247 tmp233 [V247,T35] ( 7, 12.01) int -> [rsp+0x7C] "V07.[052..056)"
;* V248 tmp234 [V248 ] ( 0, 0 ) ref -> zero-ref "V08.[000..008)"
@@ -262,21 +262,21 @@
;* V250 tmp236 [V250 ] ( 0, 0 ) int -> zero-ref "V08.[012..016)"
;* V251 tmp237 [V251 ] ( 0, 0 ) byref -> zero-ref "V09.[000..008)"
;* V252 tmp238 [V252 ] ( 0, 0 ) int -> zero-ref "V09.[008..012)"
-; V253 tmp239 [V253,T50] ( 4, 6.01) byref -> [rsp+0x28] "V10.[000..008)"
+; V253 tmp239 [V253,T50] ( 4, 6.01) byref -> [rsp+0x20] "V10.[000..008)"
; V254 tmp240 [V254,T15] ( 7, 18.01) int -> rsi "V10.[008..012)"
;* V255 tmp241 [V255 ] ( 0, 0 ) byref -> zero-ref "V13.[000..008)"
;* V256 tmp242 [V256 ] ( 0, 0 ) int -> zero-ref "V13.[008..012)"
;* V257 tmp243 [V257 ] ( 0, 0 ) long -> zero-ref "V87.[000..008)"
;* V258 tmp244 [V258 ] ( 0, 0 ) long -> zero-ref "V87.[008..016)"
-; V259 tmp245 [V259,T29] ( 2, 16 ) ubyte -> rax "V87.[016..017)"
-; V260 tmp246 [V260,T30] ( 2, 16 ) ubyte -> r8 "V87.[017..018)"
+; V259 tmp245 [V259,T29] ( 2, 16 ) ubyte -> r14 "V87.[016..017)"
+; V260 tmp246 [V260,T30] ( 2, 16 ) ubyte -> r12 "V87.[017..018)"
;* V261 tmp247 [V261 ] ( 0, 0 ) ubyte -> zero-ref "V87.[018..019)"
;* V262 tmp248 [V262 ] ( 0, 0 ) ubyte -> zero-ref "V87.[019..020)"
;* V263 tmp249 [V263 ] ( 0, 0 ) ubyte -> zero-ref "V87.[020..021)"
;* V264 tmp250 [V264 ] ( 0, 0 ) ubyte -> zero-ref "V87.[021..022)"
;* V265 tmp251 [V265 ] ( 0, 0 ) int -> zero-ref "V87.[024..028)"
-; V266 tmp252 [V266,T31] ( 2, 16 ) ubyte -> r12 "V87.[028..029)"
-; V267 tmp253 [V267,T32] ( 2, 16 ) ubyte -> rbp "V87.[029..030)"
+; V266 tmp252 [V266,T31] ( 2, 16 ) ubyte -> rbx "V87.[028..029)"
+; V267 tmp253 [V267,T32] ( 2, 16 ) ubyte -> rdx "V87.[029..030)"
;* V268 tmp254 [V268 ] ( 0, 0 ) ref -> zero-ref "V87.[032..040)"
;* V269 tmp255 [V269 ] ( 0, 0 ) long -> zero-ref "V87.[040..048)"
;* V270 tmp256 [V270 ] ( 0, 0 ) int -> zero-ref "V87.[048..052)"
@@ -323,11 +323,11 @@ G_M49915_IG02: ; bbWeight=0.01, gcVars=00000000000000000000000400000000 {
; GC ptr vars +{V03}
mov rdi, gword ptr [rsp+0x3C0]
; gcrRegs +[rdi]
- mov gword ptr [rsp+0x48], rdi
+ mov gword ptr [rsp+0x40], rdi
; GC ptr vars +{V235}
mov rbp, gword ptr [rsp+0x3C8]
; gcrRegs +[rbp]
- mov gword ptr [rsp+0x40], rbp
+ mov gword ptr [rsp+0x38], rbp
; GC ptr vars +{V236}
mov r14d, dword ptr [rsp+0x3D0]
mov dword ptr [rsp+0x94], r14d
@@ -341,13 +341,13 @@ G_M49915_IG02: ; bbWeight=0.01, gcVars=00000000000000000000000400000000 {
mov dword ptr [rsp+0x88], eax
mov rdx, gword ptr [rsp+0x358]
; gcrRegs +[rdx]
- mov gword ptr [rsp+0x38], rdx
+ mov gword ptr [rsp+0x30], rdx
; GC ptr vars +{V243}
mov r8d, dword ptr [rsp+0x360]
mov dword ptr [rsp+0x84], r8d
mov r10, gword ptr [rsp+0x368]
; gcrRegs +[r10]
- mov gword ptr [rsp+0x30], r10
+ mov gword ptr [rsp+0x28], r10
; GC ptr vars +{V245}
mov r9d, dword ptr [rsp+0x370]
mov dword ptr [rsp+0x80], r9d
@@ -355,7 +355,7 @@ G_M49915_IG02: ; bbWeight=0.01, gcVars=00000000000000000000000400000000 {
mov dword ptr [rsp+0x7C], r11d
mov rcx, bword ptr [rsp+0x310]
; byrRegs +[rcx]
- mov bword ptr [rsp+0x28], rcx
+ mov bword ptr [rsp+0x20], rcx
; GC ptr vars +{V253}
mov esi, dword ptr [rsp+0x318]
jmp G_M49915_IG25
@@ -366,20 +366,20 @@ G_M49915_IG03: ; bbWeight=2, gcVars=00000000000000018000000000004000 {V23
; GC ptr vars -{V03 V243 V253}
xor rbp, rbp
; byrRegs +[rbp]
- xor r10d, r10d
- mov r9, gword ptr [rsp+0x30]
- ; gcrRegs +[r9]
- test r9, r9
+ xor r9d, r9d
+ mov r10, gword ptr [rsp+0x28]
+ ; gcrRegs +[r10]
+ test r10, r10
je G_M49915_IG08
- mov rdx, qword ptr [r9]
+ mov rdx, qword ptr [r10]
test dword ptr [rdx], 0xD1FFAB1E
je SHORT G_M49915_IG05
- mov gword ptr [rsp+0x30], r9
- mov rdx, r9
+ mov gword ptr [rsp+0x28], r10
+ mov rdx, r10
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; ubyte[]
call [CORINFO_HELP_ISINSTANCEOFARRAY]
- ; gcrRegs -[rdx r9] +[rax]
+ ; gcrRegs -[rdx r10] +[rax]
; byrRegs -[rbp]
; gcr arg pop 0
test rax, rax
@@ -396,27 +396,27 @@ G_M49915_IG03: ; bbWeight=2, gcVars=00000000000000018000000000004000 {V23
; gcr arg pop 0
;; size=84 bbWeight=2 PerfScore 37.00
G_M49915_IG04: ; bbWeight=2, gcrefRegs=2088 {rbx rdi r13}, byrefRegs=0000 {}, byref, isz
- mov rbp, gword ptr [rsp+0x30]
+ mov rbp, gword ptr [rsp+0x28]
; gcrRegs +[rbp]
lea rdx, bword ptr [rbp+0x10]
; byrRegs +[rdx]
mov rax, rdx
; byrRegs +[rax]
- mov r10d, dword ptr [rbp+0x08]
- mov r8d, r10d
+ mov r9d, dword ptr [rbp+0x08]
+ mov r8d, r9d
jmp SHORT G_M49915_IG07
;; size=21 bbWeight=2 PerfScore 12.00
-G_M49915_IG05: ; bbWeight=2, gcVars=00000000000000018000000000000000 {V235 V236}, gcrefRegs=2288 {rbx rdi r9 r13}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rbp] +[r9]
+G_M49915_IG05: ; bbWeight=2, gcVars=00000000000000018000000000000000 {V235 V236}, gcrefRegs=2488 {rbx rdi r10 r13}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rbp] +[r10]
; byrRegs -[rax rdx]
; GC ptr vars -{V245}
- mov gword ptr [rsp+0x30], r9
+ mov gword ptr [rsp+0x28], r10
; GC ptr vars +{V245}
- mov rdx, r9
+ mov rdx, r10
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[rdx r9] +[rax]
+ ; gcrRegs -[rdx r10] +[rax]
; gcr arg pop 0
test rax, rax
jne SHORT G_M49915_IG06
@@ -432,9 +432,9 @@ G_M49915_IG05: ; bbWeight=2, gcVars=00000000000000018000000000000000 {V23
;; size=50 bbWeight=2 PerfScore 15.00
G_M49915_IG06: ; bbWeight=2, gcrefRegs=2088 {rbx rdi r13}, byrefRegs=0000 {}, byref
lea rdx, [rsp+0xD0]
- mov rcx, gword ptr [rsp+0x30]
+ mov rcx, gword ptr [rsp+0x28]
; gcrRegs +[rcx]
- mov gword ptr [rsp+0x30], rcx
+ mov gword ptr [rsp+0x28], rcx
mov rax, qword ptr [rcx]
mov rax, qword ptr [rax+0x48]
call [rax+0x28]<unknown method>
@@ -450,7 +450,7 @@ G_M49915_IG06: ; bbWeight=2, gcrefRegs=2088 {rbx rdi r13}, byrefRegs=0000
mov r8d, eax
mov rax, rbp
; byrRegs +[rax]
- mov rbp, gword ptr [rsp+0x30]
+ mov rbp, gword ptr [rsp+0x28]
; gcrRegs +[rbp]
; byrRegs -[rbp]
;; size=61 bbWeight=2 PerfScore 27.00
@@ -464,24 +464,24 @@ G_M49915_IG07: ; bbWeight=2, gcVars=00000000000000018000000000000000 {V23
add rdx, rcx
mov r8d, r8d
cmp rdx, r8
- ja G_M49915_IG67
+ ja G_M49915_IG66
add rax, rcx
mov dword ptr [rsp+0x7C], r10d
mov r8d, r10d
mov dword ptr [rsp+0x80], r15d
- mov r9, rbp
...
coreclr_tests.run.windows.x64.checked.mch
-32 (-24.62%) : 480902.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -9,108 +9,93 @@
;
; V00 arg0 [V00,T03] ( 4, 8 ) byref -> rcx ld-addr-op single-def
; V01 arg1 [V01,T04] ( 4, 8 ) byref -> rdx ld-addr-op single-def
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> registers
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> r10
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r9 "dup spill"
-; V05 tmp2 [V05,T07] ( 3, 5.50) byref -> r10 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T06] ( 5, 7 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T08] ( 3, 5.50) byref -> r8 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T05] ( 6, 7.50) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> r10 "dup spill"
+; V05 tmp2 [V05,T09] ( 2, 5 ) byref -> r8 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T08] ( 4, 6.50) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T10] ( 2, 5 ) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T07] ( 5, 7 ) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[uint]>
;* V10 tmp7 [V10 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[uint]>
-; V11 cse0 [V11,T02] ( 6, 13.50) long -> r11 multi-def "CSE - aggressive"
+; V11 cse0 [V11,T05] ( 3, 8.50) int -> r11 "CSE - aggressive"
+; V12 cse1 [V12,T06] ( 3, 8.50) int -> r9 "CSE - aggressive"
+; V13 cse2 [V13,T02] ( 3, 12 ) long -> r9 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbx
- sub rsp, 32
- ;; size=5 bbWeight=1 PerfScore 1.25
+ sub rsp, 40
+ ;; size=4 bbWeight=1 PerfScore 0.25
G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, byref, isz
; byrRegs +[rcx rdx]
- mov r8, bword ptr [rdx]
- ; byrRegs +[r8]
+ mov rax, bword ptr [rdx]
+ ; byrRegs +[rax]
mov edx, dword ptr [rdx+0x08]
; byrRegs -[rdx]
- mov r10, bword ptr [rcx]
- ; byrRegs +[r10]
+ mov r8, bword ptr [rcx]
+ ; byrRegs +[r8]
mov ecx, dword ptr [rcx+0x08]
; byrRegs -[rcx]
cmp ecx, edx
je SHORT G_M264_IG04
;; size=16 bbWeight=1 PerfScore 9.25
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r8 r10]
+ ; byrRegs -[rax r8]
cmp ecx, edx
- jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jl SHORT G_M264_IG11
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
-G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref
- ; byrRegs +[r8 r10]
- mov r9d, edx
+G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0101 {rax r8}, byref
+ ; byrRegs +[rax r8]
+ mov r10d, edx
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz
- dec r9d
- mov eax, r9d
- test eax, eax
- jl SHORT G_M264_IG06
- cmp eax, ecx
- jae SHORT G_M264_IG14
- mov r11d, eax
- mov ebx, dword ptr [r10+4*r11]
- cmp eax, edx
- jae SHORT G_M264_IG14
- cmp ebx, dword ptr [r8+4*r11]
- je SHORT G_M264_IG08
- ;; size=31 bbWeight=4 PerfScore 42.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz
- test r9d, r9d
- jge SHORT G_M264_IG09
- xor eax, eax
- ;; size=7 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
- ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M264_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, gcvars, byref, isz
- mov r9d, eax
- jmp SHORT G_M264_IG05
- ;; size=5 bbWeight=2 PerfScore 4.50
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz
- cmp r9d, ecx
- jae SHORT G_M264_IG14
- mov r11d, r9d
- mov eax, dword ptr [r10+4*r11]
- cmp r9d, edx
- jae SHORT G_M264_IG14
- cmp eax, dword ptr [r8+4*r11]
- jb SHORT G_M264_IG12
- ;; size=23 bbWeight=0.50 PerfScore 4.38
-G_M264_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r8 r10]
+G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0101 {rax r8}, byref, isz
+ dec r10d
+ js SHORT G_M264_IG09
+ cmp r10d, ecx
+ jae SHORT G_M264_IG13
+ mov r9d, r10d
+ mov r11d, dword ptr [r8+4*r9]
+ cmp r10d, edx
+ jae SHORT G_M264_IG13
+ mov r9d, dword ptr [rax+4*r9]
+ cmp r11d, r9d
+ je SHORT G_M264_IG05
+ ;; size=31 bbWeight=4 PerfScore 37.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rax r8]
+ cmp r9d, r11d
+ ja SHORT G_M264_IG11
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M264_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
+ ret
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG13: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
+G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 130, prolog size 5, PerfScore 66.75, instruction count 50, allocated bytes for code 130 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 98, prolog size 4, PerfScore 51.12, instruction count 35, allocated bytes for code 98 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -118,10 +103,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
-18 (-8.82%) : 480920.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
@@ -7,19 +7,20 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T05] ( 6, 22 ) int -> rcx
-; V01 arg1 [V01,T06] ( 6, 19 ) int -> rsi single-def
-; V02 arg2 [V02,T02] ( 14, 60 ) ref -> rbx class-hnd single-def <int[]>
-; V03 loc0 [V03,T00] ( 17,112 ) int -> rbp
-; V04 loc1 [V04,T01] ( 13,100 ) int -> rdx
+; V00 arg0 [V00,T06] ( 6, 22 ) int -> rcx
+; V01 arg1 [V01,T07] ( 6, 19 ) int -> rsi single-def
+; V02 arg2 [V02,T02] ( 13, 58 ) ref -> rbx class-hnd single-def <int[]>
+; V03 loc0 [V03,T00] ( 16,110 ) int -> rbp
+; V04 loc1 [V04,T01] ( 10, 94 ) int -> rdx
; V05 loc2 [V05,T04] ( 4, 38 ) int -> rax
-; V06 loc3 [V06,T08] ( 4, 8 ) int -> r10
+; V06 loc3 [V06,T09] ( 4, 8 ) int -> r9
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T09] ( 2, 8 ) int -> r9 "Strict ordering of exceptions for Array store"
-; V09 tmp2 [V09,T07] ( 2, 16 ) int -> rcx "arg temp"
-; V10 cse0 [V10,T03] ( 7, 46 ) int -> r8 "CSE - aggressive"
-; V11 cse1 [V11,T10] ( 3, 7 ) long -> rdi hoist "CSE - aggressive"
-; V12 cse2 [V12,T11] ( 3, 6 ) long -> rdx "CSE - aggressive"
+; V08 tmp1 [V08,T10] ( 2, 8 ) int -> r10 "Strict ordering of exceptions for Array store"
+; V09 tmp2 [V09,T08] ( 2, 16 ) int -> rcx "arg temp"
+; V10 cse0 [V10,T05] ( 3, 34 ) int -> r10 "CSE - aggressive"
+; V11 cse1 [V11,T03] ( 6, 44 ) int -> r8 "CSE - aggressive"
+; V12 cse2 [V12,T11] ( 3, 7 ) long -> rdi hoist "CSE - aggressive"
+; V13 cse3 [V13,T12] ( 3, 6 ) long -> rdx "CSE - aggressive"
;
; Lcl frame size = 40
@@ -56,11 +57,11 @@ G_M36260_IG06: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, by
cmp ebp, edx
jge SHORT G_M36260_IG09
cmp ebp, r8d
- jae G_M36260_IG15
+ jae SHORT G_M36260_IG15
mov r10d, ebp
cmp dword ptr [rbx+4*r10+0x10], eax
jle SHORT G_M36260_IG05
- ;; size=23 bbWeight=16 PerfScore 108.00
+ ;; size=19 bbWeight=16 PerfScore 108.00
G_M36260_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M36260_IG09
;; size=2 bbWeight=4 PerfScore 8.00
@@ -69,29 +70,24 @@ G_M36260_IG08: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=2 bbWeight=8 PerfScore 2.00
G_M36260_IG09: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edx, ebp
- jle SHORT G_M36260_IG10
+ jle SHORT G_M36260_IG11
cmp edx, r8d
jae SHORT G_M36260_IG15
mov r10d, edx
- cmp dword ptr [rbx+4*r10+0x10], eax
+ mov r10d, dword ptr [rbx+4*r10+0x10]
+ cmp r10d, eax
jge SHORT G_M36260_IG08
- ;; size=19 bbWeight=16 PerfScore 108.00
+ ;; size=22 bbWeight=16 PerfScore 96.00
G_M36260_IG10: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- cmp ebp, edx
- jge SHORT G_M36260_IG11
cmp ebp, r8d
jae SHORT G_M36260_IG15
- mov r10d, ebp
- mov r10d, dword ptr [rbx+4*r10+0x10]
- cmp edx, r8d
- jae SHORT G_M36260_IG15
- mov r9d, edx
+ mov r9d, ebp
mov r9d, dword ptr [rbx+4*r9+0x10]
mov r11d, ebp
- mov dword ptr [rbx+4*r11+0x10], r9d
- mov r9d, edx
- mov dword ptr [rbx+4*r9+0x10], r10d
- ;; size=46 bbWeight=2 PerfScore 21.50
+ mov dword ptr [rbx+4*r11+0x10], r10d
+ mov r10d, edx
+ mov dword ptr [rbx+4*r10+0x10], r9d
+ ;; size=29 bbWeight=2 PerfScore 12.00
G_M36260_IG11: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp ebp, edx
jl SHORT G_M36260_IG06
@@ -102,9 +98,9 @@ G_M36260_IG12: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
cmp ebp, r8d
jae SHORT G_M36260_IG15
mov edx, ebp
- mov r10d, dword ptr [rbx+4*rdx+0x10]
+ mov r9d, dword ptr [rbx+4*rdx+0x10]
mov dword ptr [rbx+4*rdx+0x10], eax
- mov dword ptr [rbx+4*rdi+0x10], r10d
+ mov dword ptr [rbx+4*rdi+0x10], r9d
;; size=21 bbWeight=2 PerfScore 11.00
G_M36260_IG13: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
lea edx, [rbp-0x01]
@@ -131,7 +127,7 @@ G_M36260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 13, PerfScore 344.75, instruction count 71, allocated bytes for code 204 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
+; Total bytes of code 186, prolog size 13, PerfScore 323.25, instruction count 66, allocated bytes for code 186 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
; ============================================================
Unwind Info:
-5 (-8.33%) : 464458.dasm - System.Runtime.InteropServices.ComEventsMethod:Remove(System.Runtime.InteropServices.ComEventsMethod,System.Runtime.InteropServices.ComEventsMethod):System.Runtime.InteropServices.ComEventsMethod (FullOpts)
@@ -9,7 +9,7 @@
;
; V00 arg0 [V00,T03] ( 5, 4 ) ref -> rbx class-hnd single-def <System.Runtime.InteropServices.ComEventsMethod>
; V01 arg1 [V01,T01] ( 6, 8 ) ref -> rdx class-hnd single-def <System.Runtime.InteropServices.ComEventsMethod>
-; V02 loc0 [V02,T00] ( 6, 11.50) ref -> rcx class-hnd <System.Runtime.InteropServices.ComEventsMethod>
+; V02 loc0 [V02,T00] ( 5, 11 ) ref -> rcx class-hnd <System.Runtime.InteropServices.ComEventsMethod>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 cse0 [V04,T02] ( 3, 10 ) ref -> rax "CSE - aggressive"
;
@@ -48,16 +48,14 @@ G_M64017_IG06: ; bbWeight=2, gcrefRegs=000D {rax rdx rbx}, byrefRegs=0000
G_M64017_IG07: ; bbWeight=4, gcrefRegs=000E {rcx rdx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
test rcx, rcx
- je SHORT G_M64017_IG08
+ je SHORT G_M64017_IG09
mov rax, gword ptr [rcx+0x10]
; gcrRegs +[rax]
cmp rax, rdx
jne SHORT G_M64017_IG06
;; size=14 bbWeight=4 PerfScore 18.00
-G_M64017_IG08: ; bbWeight=0.50, gcrefRegs=000E {rcx rdx rbx}, byrefRegs=0000 {}, byref, isz
+G_M64017_IG08: ; bbWeight=0.50, gcrefRegs=000E {rcx rdx rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- test rcx, rcx
- je SHORT G_M64017_IG09
mov rdx, gword ptr [rdx+0x10]
lea rcx, bword ptr [rcx+0x10]
; gcrRegs -[rcx]
@@ -65,7 +63,7 @@ G_M64017_IG08: ; bbWeight=0.50, gcrefRegs=000E {rcx rdx rbx}, byrefRegs=0
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rdx]
; byrRegs -[rcx]
- ;; size=18 bbWeight=0.50 PerfScore 2.38
+ ;; size=13 bbWeight=0.50 PerfScore 1.75
G_M64017_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rax, rbx
; gcrRegs +[rax]
@@ -75,7 +73,7 @@ G_M64017_IG10: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 60, prolog size 4, PerfScore 27.12, instruction count 23, allocated bytes for code 60 (MethodHash=f10a05ee) for method System.Runtime.InteropServices.ComEventsMethod:Remove(System.Runtime.InteropServices.ComEventsMethod,System.Runtime.InteropServices.ComEventsMethod):System.Runtime.InteropServices.ComEventsMethod (FullOpts)
+; Total bytes of code 55, prolog size 4, PerfScore 26.50, instruction count 21, allocated bytes for code 55 (MethodHash=f10a05ee) for method System.Runtime.InteropServices.ComEventsMethod:Remove(System.Runtime.InteropServices.ComEventsMethod,System.Runtime.InteropServices.ComEventsMethod):System.Runtime.InteropServices.ComEventsMethod (FullOpts)
; ============================================================
Unwind Info:
+14 (+2.89%) : 277830.dasm - System.Text.UTF8Encoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
@@ -8,25 +8,25 @@
; 0 inlinees with PGO data; 6 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 4, 2 ) ref -> rsi this class-hnd single-def <System.Text.UTF8Encoding>
+; V00 this [V00,T04] ( 4, 2 ) ref -> rsi this class-hnd single-def <System.Text.UTF8Encoding>
; V01 arg1 [V01,T02] ( 5, 227 ) ref -> rdx class-hnd single-def <System.String>
; V02 arg2 [V02,T01] ( 6,2026 ) int -> r8 single-def
; V03 arg3 [V03,T00] ( 9,2026 ) int -> rbx single-def
; V04 arg4 [V04,T03] ( 6, 130 ) ref -> rax class-hnd single-def <ubyte[]>
-; V05 arg5 [V05,T09] ( 3, 0 ) int -> [rbp+0x38] single-def
+; V05 arg5 [V05,T08] ( 3, 0 ) int -> [rbp+0x38] single-def
;* V06 loc0 [V06 ] ( 0, 0 ) long -> zero-ref
; V07 loc1 [V07 ] ( 2, 0 ) byref -> [rbp-0x38] must-init pinned single-def
-; V08 loc2 [V08,T10] ( 3, 0 ) long -> r14
+; V08 loc2 [V08,T09] ( 3, 0 ) long -> r14
; V09 loc3 [V09 ] ( 1, 0 ) ref -> [rbp-0x40] must-init pinned class-hnd single-def <ubyte[]>
; V10 OutArgs [V10 ] ( 1, 1 ) struct (64) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T04] ( 3, 12 ) int -> rcx
+; V11 tmp1 [V11,T10] ( 3, 0 ) int -> rcx
; V12 tmp2 [V12,T17] ( 2, 0 ) long -> rcx
; V13 tmp3 [V13,T18] ( 2, 0 ) int -> rcx
; V14 tmp4 [V14,T11] ( 3, 0 ) int -> rax "Inline return value spill temp"
-; V15 tmp5 [V15,T06] ( 5, 0 ) long -> r15 "Inlining Arg"
+; V15 tmp5 [V15,T05] ( 5, 0 ) long -> r15 "Inlining Arg"
; V16 tmp6 [V16,T12] ( 2, 0 ) int -> rcx
-; V17 tmp7 [V17,T07] ( 5, 0 ) int -> r13 "Inlining Arg"
-; V18 tmp8 [V18,T08] ( 5, 0 ) long -> r14 "Inlining Arg"
+; V17 tmp7 [V17,T06] ( 5, 0 ) int -> r13 "Inlining Arg"
+; V18 tmp8 [V18,T07] ( 5, 0 ) long -> r14 "Inlining Arg"
; V19 tmp9 [V19,T13] ( 2, 0 ) int -> rcx
; V20 tmp10 [V20,T14] ( 3, 0 ) int -> rcx ld-addr-op "Inline ldloca(s) first use temp"
; V21 tmp11 [V21,T15] ( 3, 0 ) int -> rax "Inline stloc first use temp"
@@ -65,62 +65,30 @@ G_M14667_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rax, gword ptr [rbp+0x30]
; gcrRegs +[rax]
;; size=42 bbWeight=1 PerfScore 11.50
-G_M14667_IG02: ; bbWeight=1, gcrefRegs=0045 {rax rdx rsi}, byrefRegs=0000 {}, byref, isz
+G_M14667_IG02: ; bbWeight=1, gcrefRegs=0045 {rax rdx rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
test rdx, rdx
- je SHORT G_M14667_IG09
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M14667_IG03: ; bbWeight=130, gcrefRegs=0045 {rax rdx rsi}, byrefRegs=0000 {}, byref, isz
+ je G_M14667_IG18
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M14667_IG03: ; bbWeight=130, gcrefRegs=0045 {rax rdx rsi}, byrefRegs=0000 {}, byref
test rax, rax
- je SHORT G_M14667_IG08
- ;; size=5 bbWeight=130 PerfScore 162.50
-G_M14667_IG04: ; bbWeight=1800, gcrefRegs=0045 {rax rdx rsi}, byrefRegs=0000 {}, byref, isz
+ je G_M14667_IG17
+ ;; size=9 bbWeight=130 PerfScore 162.50
+G_M14667_IG04: ; bbWeight=1800, gcrefRegs=0045 {rax rdx rsi}, byrefRegs=0000 {}, byref
mov ecx, r8d
or ecx, ebx
- jl SHORT G_M14667_IG07
- ;; size=7 bbWeight=1800 PerfScore 2700.00
-G_M14667_IG05: ; bbWeight=224, gcrefRegs=0045 {rax rdx rsi}, byrefRegs=0000 {}, byref, isz
+ jl G_M14667_IG20
+ ;; size=11 bbWeight=1800 PerfScore 2700.00
+G_M14667_IG05: ; bbWeight=224, gcrefRegs=0045 {rax rdx rsi}, byrefRegs=0000 {}, byref
mov ecx, dword ptr [rdx+0x08]
sub ecx, r8d
- cmp ebx, ecx
- jle SHORT G_M14667_IG12
- ;; size=10 bbWeight=224 PerfScore 784.00
-G_M14667_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax rdx rsi]
- jmp SHORT G_M14667_IG11
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M14667_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov ecx, 15
- mov edx, 16
- test r8d, r8d
- cmovge ecx, edx
- mov edx, 13
- call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int,int)]
- int3
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M14667_IG08: ; bbWeight=12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov ecx, 10
- jmp SHORT G_M14667_IG10
- ;; size=7 bbWeight=12 PerfScore 27.00
-G_M14667_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov ecx, 17
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M14667_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov edx, 49
- call [System.ThrowHelper:ThrowArgumentNullException(int,int)]
- int3
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M14667_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov ecx, 17
- mov edx, 2
- call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int,int)]
- int3
- ;; size=17 bbWeight=0 PerfScore 0.00
-G_M14667_IG12: ; bbWeight=0, gcrefRegs=0045 {rax rdx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rax rdx rsi]
+ cmp ecx, ebx
+ jl G_M14667_IG21
+ ;; size=14 bbWeight=224 PerfScore 784.00
+G_M14667_IG06: ; bbWeight=0, gcrefRegs=0045 {rax rdx rsi}, byrefRegs=0000 {}, byref, isz
mov edi, dword ptr [rbp+0x38]
cmp dword ptr [rax+0x08], edi
- jae SHORT G_M14667_IG13
+ jae SHORT G_M14667_IG07
mov ecx, 11
xor edx, edx
; gcrRegs -[rdx]
@@ -128,7 +96,7 @@ G_M14667_IG12: ; bbWeight=0, gcrefRegs=0045 {rax rdx rsi}, byrefRegs=0000
; gcrRegs -[rax rsi]
int3
;; size=22 bbWeight=0 PerfScore 0.00
-G_M14667_IG13: ; bbWeight=0, gcrefRegs=0045 {rax rdx rsi}, byrefRegs=0000 {}, byref, isz
+G_M14667_IG07: ; bbWeight=0, gcrefRegs=0045 {rax rdx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rax rdx rsi]
add rdx, 12
; gcrRegs -[rdx]
@@ -138,16 +106,16 @@ G_M14667_IG13: ; bbWeight=0, gcrefRegs=0045 {rax rdx rsi}, byrefRegs=0000
; byrRegs +[rcx]
mov gword ptr [rbp-0x40], rax
cmp dword ptr [rax+0x08], 0
- jne SHORT G_M14667_IG14
+ jne SHORT G_M14667_IG08
xor r14d, r14d
- jmp SHORT G_M14667_IG15
+ jmp SHORT G_M14667_IG09
;; size=27 bbWeight=0 PerfScore 0.00
-G_M14667_IG14: ; bbWeight=0, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref
+G_M14667_IG08: ; bbWeight=0, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref
; byrRegs -[rcx rdx]
lea r14, bword ptr [rax+0x10]
; byrRegs +[r14]
;; size=4 bbWeight=0 PerfScore 0.00
-G_M14667_IG15: ; bbWeight=0, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
+G_M14667_IG09: ; bbWeight=0, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r14]
movsxd rdx, r8d
lea r15, [rcx+2*rdx]
@@ -156,7 +124,7 @@ G_M14667_IG15: ; bbWeight=0, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {},
mov r13d, dword ptr [rax+0x08]
sub r13d, edi
test ebx, ebx
- jge SHORT G_M14667_IG16
+ jge SHORT G_M14667_IG10
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
@@ -164,14 +132,14 @@ G_M14667_IG15: ; bbWeight=0, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {},
call [<unknown method>]
; gcrRegs -[rax rcx rdx]
;; size=50 bbWeight=0 PerfScore 0.00
-G_M14667_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M14667_IG10: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
test r15, r15
- jne SHORT G_M14667_IG17
+ jne SHORT G_M14667_IG11
xor ecx, ecx
test ebx, ebx
sete cl
test cl, cl
- jne SHORT G_M14667_IG17
+ jne SHORT G_M14667_IG11
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
@@ -179,9 +147,9 @@ G_M14667_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
call [<unknown method>]
; gcrRegs -[rcx rdx]
;; size=42 bbWeight=0 PerfScore 0.00
-G_M14667_IG17: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M14667_IG11: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
test r13d, r13d
- jge SHORT G_M14667_IG18
+ jge SHORT G_M14667_IG12
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
@@ -189,14 +157,14 @@ G_M14667_IG17: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
call [<unknown method>]
; gcrRegs -[rcx rdx]
;; size=31 bbWeight=0 PerfScore 0.00
-G_M14667_IG18: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M14667_IG12: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
test r14, r14
- jne SHORT G_M14667_IG19
+ jne SHORT G_M14667_IG13
xor ecx, ecx
test r13d, r13d
sete cl
test cl, cl
- jne SHORT G_M14667_IG19
+ jne SHORT G_M14667_IG13
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
@@ -204,7 +172,7 @@ G_M14667_IG18: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
call [<unknown method>]
; gcrRegs -[rcx rdx]
;; size=43 bbWeight=0 PerfScore 0.00
-G_M14667_IG19: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M14667_IG13: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rsi], sil
lea rcx, [rbp-0x48]
mov qword ptr [rsp+0x20], rcx
@@ -224,10 +192,10 @@ G_M14667_IG19: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
mov rax, qword ptr [rbp-0x50]
sub rax, r14
cmp ebx, ecx
- jne SHORT G_M14667_IG20
- jmp SHORT G_M14667_IG21
+ jne SHORT G_M14667_IG14
+ jmp SHORT G_M14667_IG15
;; size=71 bbWeight=0 PerfScore 0.00
-G_M14667_IG20: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M14667_IG14: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov dword ptr [rsp+0x20], r13d
mov dword ptr [rsp+0x28], ecx
mov dword ptr [rsp+0x30], eax
@@ -240,10 +208,10 @@ G_M14667_IG20: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
call [<unknown method>]
; gcrRegs -[rcx rsi]
;; size=39 bbWeight=0 PerfScore 0.00
-G_M14667_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M14667_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0 PerfScore 0.00
-G_M14667_IG22: ; bbWeight=0, epilog, nogc, extend
+G_M14667_IG16: ; bbWeight=0, epilog, nogc, extend
add rsp, 96
pop rbx
pop rsi
@@ -254,8 +222,35 @@ G_M14667_IG22: ; bbWeight=0, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0 PerfScore 0.00
+G_M14667_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov ecx, 10
+ jmp SHORT G_M14667_IG19
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M14667_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov ecx, 17
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M14667_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov edx, 49
+ call [System.ThrowHelper:ThrowArgumentNullException(int,int)]
+ int3
+ ;; size=12 bbWeight=0 PerfScore 0.00
...
+22 (+4.00%) : 335397.dasm - System.Environment:get_CurrentDirectoryCore():System.String (Tier0-FullOpts)
@@ -8,7 +8,7 @@
; 8 inlinees with PGO data; 27 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
-; V00 loc0 [V00 ] ( 22, 40 ) struct (32) [rbp+0x10] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder>
+; V00 loc0 [V00 ] ( 22, 40 ) struct (32) [rbp+0x08] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder>
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref
;* V02 loc2 [V02 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
; V03 loc3 [V03,T12] ( 2, 1 ) ref -> rbx class-hnd exact single-def <System.String>
@@ -27,7 +27,7 @@
;* V16 tmp12 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V17 tmp13 [V17,T03] ( 6, 8 ) int -> rsi "Inlining Arg"
;* V18 tmp14 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V19 tmp15 [V19,T04] ( 2, 4 ) byref -> rbx single-def "Inlining Arg"
+; V19 tmp15 [V19,T04] ( 2, 4 ) byref -> rdi single-def "Inlining Arg"
;* V20 tmp16 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp17 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp18 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
@@ -46,7 +46,7 @@
;* V35 tmp31 [V35 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V36 tmp32 [V36 ] ( 0, 0 ) short -> zero-ref ld-addr-op "Inlining Arg"
;* V37 tmp33 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V38 tmp34 [V38,T11] ( 3, 1.50) ref -> rsi class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V38 tmp34 [V38,T11] ( 3, 1.50) ref -> rdi class-hnd single-def "Inline stloc first use temp" <<unknown class>>
;* V39 tmp35 [V39 ] ( 0, 0 ) byref -> zero-ref single-def "field V02._reference (fldOffset=0x0)" P-INDEP
;* V40 tmp36 [V40 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
; V41 tmp37 [V41,T06] ( 2, 2 ) byref -> rcx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
@@ -70,30 +70,34 @@
;* V59 tmp55 [V59 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-INDEP
;* V60 tmp56 [V60 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
; V61 tmp57 [V61,T07] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V62 GsCookie [V62 ] ( 1, 1 ) long -> [rbp+0x08] do-not-enreg[X] addr-exposed "GSSecurityCookie"
+; V62 GsCookie [V62 ] ( 1, 1 ) long -> [rbp+0x00] do-not-enreg[X] addr-exposed "GSSecurityCookie"
;
-; Lcl frame size = 80
+; Lcl frame size = 72
G_M20617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
+ push rdi
push rsi
push rbx
- sub rsp, 80
+ sub rsp, 72
vzeroupper
lea rbp, [rsp+0x20]
- vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rbp+0x10], ymm4
- mov rax, 0xD1FFAB1E
+ xor eax, eax
mov qword ptr [rbp+0x08], rax
- ;; size=38 bbWeight=1 PerfScore 8.33
+ vxorps xmm4, xmm4, xmm4
+ vmovdqa xmmword ptr [rbp+0x10], xmm4
+ mov qword ptr [rbp+0x20], rax
+ mov rax, 0xD1FFAB1E
+ mov qword ptr [rbp], rax
+ ;; size=49 bbWeight=1 PerfScore 11.58
G_M20617_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
test dword ptr [rsp], esp
sub rsp, 528
lea rcx, [rsp+0x20]
- mov bword ptr [rbp+0x20], rcx
- mov dword ptr [rbp+0x28], 260
+ mov bword ptr [rbp+0x18], rcx
+ mov dword ptr [rbp+0x20], 260
xor ecx, ecx
- mov dword ptr [rbp+0x18], ecx
+ mov dword ptr [rbp+0x10], ecx
jmp SHORT G_M20617_IG05
;; size=33 bbWeight=1 PerfScore 9.00
G_M20617_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -101,22 +105,22 @@ G_M20617_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
jl G_M20617_IG17
;; size=8 bbWeight=2 PerfScore 2.50
G_M20617_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp ebx, dword ptr [rbp+0x28]
+ cmp ebx, dword ptr [rbp+0x20]
jbe SHORT G_M20617_IG05
mov edx, ebx
- sub edx, dword ptr [rbp+0x18]
- lea rcx, [rbp+0x10]
+ sub edx, dword ptr [rbp+0x10]
+ lea rcx, [rbp+0x08]
call [<unknown method>]
;; size=20 bbWeight=2 PerfScore 17.50
G_M20617_IG05: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov ecx, dword ptr [rbp+0x28]
- mov rdx, bword ptr [rbp+0x20]
+ mov ecx, dword ptr [rbp+0x20]
+ mov rdx, bword ptr [rbp+0x18]
; byrRegs +[rdx]
call [Interop+Kernel32:GetCurrentDirectory(uint,byref):uint]
; byrRegs -[rdx]
mov ebx, eax
mov edx, ebx
- movsxd rcx, dword ptr [rbp+0x28]
+ movsxd rcx, dword ptr [rbp+0x20]
cmp rdx, rcx
jg SHORT G_M20617_IG03
;; size=26 bbWeight=8 PerfScore 78.00
@@ -125,56 +129,44 @@ G_M20617_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
je G_M20617_IG18
test ebx, ebx
jl G_M20617_IG19
- cmp ebx, dword ptr [rbp+0x28]
+ cmp ebx, dword ptr [rbp+0x20]
jg G_M20617_IG20
;; size=25 bbWeight=1 PerfScore 5.50
G_M20617_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov dword ptr [rbp+0x18], ebx
- mov esi, dword ptr [rbp+0x18]
- cmp esi, dword ptr [rbp+0x28]
+ mov dword ptr [rbp+0x10], ebx
+ mov esi, dword ptr [rbp+0x10]
+ cmp esi, dword ptr [rbp+0x20]
ja G_M20617_IG21
;; size=15 bbWeight=1 PerfScore 5.00
-G_M20617_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rbx, bword ptr [rbp+0x20]
- ; byrRegs +[rbx]
+G_M20617_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rdi, bword ptr [rbp+0x18]
+ ; byrRegs +[rdi]
test esi, esi
- jge SHORT G_M20617_IG09
- mov rcx, 0xD1FFAB1E
- ; gcrRegs +[rcx]
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx]
- mov rcx, 0xD1FFAB1E
- ; gcrRegs +[rcx]
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx]
- ;; size=60 bbWeight=1 PerfScore 9.25
-G_M20617_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- mov rcx, rbx
+ jl G_M20617_IG22
+ ;; size=12 bbWeight=1 PerfScore 2.25
+G_M20617_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+ mov rcx, rdi
; byrRegs +[rcx]
mov edx, 126
mov r8d, esi
call [<unknown method>]
- ; byrRegs -[rcx rbx]
+ ; byrRegs -[rcx rdi]
test eax, eax
je SHORT G_M20617_IG14
;; size=21 bbWeight=1 PerfScore 5.00
G_M20617_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- lea rcx, [rbp+0x10]
+ lea rcx, [rbp+0x08]
xor rdx, rdx
; gcrRegs +[rdx]
call [<unknown method>]
; gcrRegs -[rdx] +[rax]
mov rbx, rax
; gcrRegs +[rbx]
- mov rsi, gword ptr [rbp+0x10]
- ; gcrRegs +[rsi]
+ mov rdi, gword ptr [rbp+0x08]
+ ; gcrRegs +[rdi]
vxorps ymm0, ymm0, ymm0
- vmovdqu ymmword ptr [rbp+0x10], ymm0
- test rsi, rsi
+ vmovdqu ymmword ptr [rbp+0x08], ymm0
+ test rdi, rdi
je SHORT G_M20617_IG11
mov rcx, 0xD1FFAB1E
mov edx, 9
@@ -183,18 +175,18 @@ G_M20617_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rcx, gword ptr [rcx]
; gcrRegs +[rcx]
- mov rdx, rsi
+ mov rdx, rdi
; gcrRegs +[rdx]
xor r8d, r8d
cmp dword ptr [rcx], ecx
call [<unknown method>]
- ; gcrRegs -[rcx rdx rsi]
+ ; gcrRegs -[rcx rdx rdi]
;; size=80 bbWeight=0.50 PerfScore 8.92
G_M20617_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rax, rbx
; gcrRegs +[rax]
mov rcx, 0xD1FFAB1E
- cmp qword ptr [rbp+0x08], rcx
+ cmp qword ptr [rbp], rcx
je SHORT G_M20617_IG12
call CORINFO_HELP_FAIL_FAST
; gcrRegs -[rax rbx]
@@ -204,19 +196,20 @@ G_M20617_IG12: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {},
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
G_M20617_IG13: ; bbWeight=0.50, epilog, nogc, extend
- lea rsp, [rbp+0x30]
+ lea rsp, [rbp+0x28]
pop rbx
pop rsi
+ pop rdi
pop rbp
ret
- ;; size=8 bbWeight=0.50 PerfScore 1.50
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M20617_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
- lea rcx, [rbp+0x10]
+ lea rcx, [rbp+0x08]
call [System.Text.ValueStringBuilder:ToString():System.String:this]
; gcrRegs +[rax]
mov rcx, 0xD1FFAB1E
- cmp qword ptr [rbp+0x08], rcx
+ cmp qword ptr [rbp], rcx
je SHORT G_M20617_IG15
call CORINFO_HELP_FAIL_FAST
; gcrRegs -[rax]
@@ -226,12 +219,13 @@ G_M20617_IG15: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {},
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
G_M20617_IG16: ; bbWeight=0.50, epilog, nogc, extend
- lea rsp, [rbp+0x30]
+ lea rsp, [rbp+0x28]
pop rbx
pop rsi
+ pop rdi
pop rbp
ret
- ;; size=8 bbWeight=0.50 PerfScore 1.50
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M20617_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
mov rcx, 0xD1FFAB1E
@@ -263,7 +257,7 @@ G_M20617_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
call [<unknown method>]
; gcrRegs -[rcx rdx]
- cmp ebx, dword ptr [rbp+0x28]
+ cmp ebx, dword ptr [rbp+0x20]
jle G_M20617_IG07
;; size=35 bbWeight=0 PerfScore 0.00
G_M20617_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -273,17 +267,33 @@ G_M20617_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
call [<unknown method>]
...
+20 (+4.31%) : 218733.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)
@@ -10,20 +10,20 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 28, 16.41) byref -> rbx this single-def
-; V01 loc0 [V01,T03] ( 6, 4 ) ref -> rsi class-hnd single-def <System.Reflection.TypeNameParser+TypeName>
+; V01 loc0 [V01,T03] ( 7, 4 ) ref -> rsi class-hnd single-def <System.Reflection.TypeNameParser+TypeName>
; V02 loc1 [V02,T14] ( 5, 2 ) ref -> rdi class-hnd <System.String>
;* V03 loc2 [V03 ] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T15] ( 3, 2 ) ref -> rax "guarded devirt return temp"
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.TypeNameParser+NamespaceTypeName>
;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V08 tmp4 [V08,T04] ( 4, 4 ) int -> rbp "Inline stloc first use temp"
+; V08 tmp4 [V08,T10] ( 4, 3 ) int -> rbp "Inline stloc first use temp"
; V09 tmp5 [V09,T22] ( 3, 0.28) int -> rcx "Span.get_Item index"
; V10 tmp6 [V10,T21] ( 3, 0.28) byref -> rax single-def "Span.get_Item ptrToSpan"
; V11 tmp7 [V11,T16] ( 3, 2.00) int -> rcx
;* V12 tmp8 [V12 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp"
-; V13 tmp9 [V13,T09] ( 3, 3.96) int -> rcx "Span.get_Item index"
-; V14 tmp10 [V14,T07] ( 3, 3.96) byref -> rax "Span.get_Item ptrToSpan"
+; V13 tmp9 [V13,T08] ( 3, 3.96) int -> rcx "Span.get_Item index"
+; V14 tmp10 [V14,T06] ( 3, 3.96) byref -> rax "Span.get_Item ptrToSpan"
; V15 tmp11 [V15,T18] ( 2, 1.32) ubyte -> rax "Inline return value spill temp"
; V16 tmp12 [V16,T01] ( 4, 5.28) ushort -> rcx "Inlining Arg"
;* V17 tmp13 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -33,8 +33,8 @@
;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V22 tmp18 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp19 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V24 tmp20 [V24,T10] ( 3, 3.96) int -> rcx "Span.get_Item index"
-; V25 tmp21 [V25,T08] ( 3, 3.96) byref -> rax "Span.get_Item ptrToSpan"
+; V24 tmp20 [V24,T09] ( 3, 3.96) int -> rcx "Span.get_Item index"
+; V25 tmp21 [V25,T07] ( 3, 3.96) byref -> rax "Span.get_Item ptrToSpan"
; V26 tmp22 [V26,T19] ( 2, 1.32) ubyte -> rax "Inline return value spill temp"
; V27 tmp23 [V27,T02] ( 4, 5.28) ushort -> rcx "Inlining Arg"
;* V28 tmp24 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -45,8 +45,8 @@
;* V33 tmp29 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V34 tmp30 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V35 tmp31 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[System.String]>
-; V36 tmp32 [V36,T05] ( 2, 4 ) ref -> rdx class-hnd exact single-def "impAppendStmt" <System.String>
-; V37 tmp33 [V37,T06] ( 2, 4 ) ref -> rax single-def "Single return block return value"
+; V36 tmp32 [V36,T04] ( 2, 4 ) ref -> rdx class-hnd exact single-def "impAppendStmt" <System.String>
+; V37 tmp33 [V37,T05] ( 2, 4 ) ref -> rax single-def "Single return block return value"
;* V38 tmp34 [V38 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
;* V39 tmp35 [V39 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
;* V40 tmp36 [V40 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP
@@ -74,7 +74,7 @@
; V62 tmp58 [V62,T17] ( 2, 2 ) byref -> r8 single-def "field V35._reference (fldOffset=0x0)" P-INDEP
;* V63 tmp59 [V63,T20] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP
; V64 tmp60 [V64 ] ( 3, 6 ) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[System.String]>
-; V65 cse0 [V65,T11] ( 3, 3 ) int -> r8 "CSE - moderate"
+; V65 cse0 [V65,T11] ( 3, 3 ) int -> rcx "CSE - moderate"
; V66 cse1 [V66,T12] ( 3, 2.66) int -> rcx "CSE - moderate"
; V67 cse2 [V67,T13] ( 3, 2.66) int -> rcx "CSE - moderate"
;
@@ -101,7 +101,7 @@ G_M8635_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byre
mov rsi, rax
; gcrRegs +[rsi]
test rsi, rsi
- je G_M8635_IG18
+ je G_M8635_IG24
xor rdi, rdi
; gcrRegs +[rdi]
mov ecx, dword ptr [rbx+0x20]
@@ -117,7 +117,7 @@ G_M8635_IG04: ; bbWeight=0.66, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {
lea rax, bword ptr [rbx+0x30]
; byrRegs +[rax]
cmp ecx, dword ptr [rax+0x08]
- jae G_M8635_IG24
+ jae G_M8635_IG19
mov rax, bword ptr [rax]
mov ecx, ecx
movzx rcx, word ptr [rax+2*rcx]
@@ -127,7 +127,7 @@ G_M8635_IG04: ; bbWeight=0.66, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {
; byrRegs -[rax]
; gcr arg pop 0
test eax, eax
- jne G_M8635_IG25
+ jne G_M8635_IG20
;; size=44 bbWeight=0.66 PerfScore 9.40
G_M8635_IG05: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
jmp SHORT G_M8635_IG07
@@ -136,12 +136,12 @@ G_M8635_IG06: ; bbWeight=0.66, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {
mov ecx, ecx
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rcx+rax], 128
- jne G_M8635_IG25
+ jne G_M8635_IG20
;; size=22 bbWeight=0.66 PerfScore 2.97
G_M8635_IG07: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
mov ecx, dword ptr [rbx+0x20]
cmp ecx, dword ptr [rbx+0x38]
- jl SHORT G_M8635_IG10
+ jl SHORT G_M8635_IG13
;; size=8 bbWeight=1 PerfScore 6.00
G_M8635_IG08: ; bbWeight=0.95, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
xor ecx, ecx
@@ -152,115 +152,58 @@ G_M8635_IG09: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx
; gcr arg pop 0
mov ebp, eax
test ebp, ebp
- je G_M8635_IG21
+ je SHORT G_M8635_IG14
cmp ebp, 7
- jne SHORT G_M8635_IG11
- jmp SHORT G_M8635_IG16
- ;; size=26 bbWeight=1 PerfScore 8.00
-G_M8635_IG10: ; bbWeight=0.05, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
- mov ecx, dword ptr [rbx+0x20]
- lea rax, bword ptr [rbx+0x30]
- ; byrRegs +[rax]
- cmp ecx, dword ptr [rax+0x08]
- jae G_M8635_IG24
- mov rax, bword ptr [rax]
- movzx rcx, word ptr [rax+2*rcx]
- jmp SHORT G_M8635_IG09
- ;; size=25 bbWeight=0.05 PerfScore 0.59
-G_M8635_IG11: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+ je G_M8635_IG22
+ ;; size=24 bbWeight=1 PerfScore 6.00
+G_M8635_IG10: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rdi]
- ; byrRegs -[rax]
mov ecx, dword ptr [rbx+0x20]
cmp ecx, dword ptr [rbx+0x38]
- jge SHORT G_M8635_IG15
+ jge SHORT G_M8635_IG12
;; size=8 bbWeight=1 PerfScore 6.00
-G_M8635_IG12: ; bbWeight=0.66, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+G_M8635_IG11: ; bbWeight=0.66, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
lea rax, bword ptr [rbx+0x30]
; byrRegs +[rax]
cmp ecx, dword ptr [rax+0x08]
- jae G_M8635_IG24
+ jae G_M8635_IG19
mov rax, bword ptr [rax]
mov ecx, ecx
movzx rcx, word ptr [rax+2*rcx]
cmp ecx, 256
- jb SHORT G_M8635_IG14
+ jb SHORT G_M8635_IG18
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
; byrRegs -[rax]
; gcr arg pop 0
test eax, eax
- jne G_M8635_IG26
+ jne G_M8635_IG21
;; size=44 bbWeight=0.66 PerfScore 9.40
-G_M8635_IG13: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- jmp SHORT G_M8635_IG15
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M8635_IG14: ; bbWeight=0.66, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
- mov ecx, ecx
- mov rax, 0xD1FFAB1E ; static handle
- test byte ptr [rcx+rax], 128
- jne G_M8635_IG26
- ;; size=22 bbWeight=0.66 PerfScore 2.97
-G_M8635_IG15: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- mov r8d, dword ptr [rbx+0x20]
- cmp r8d, dword ptr [rbx+0x38]
- jge SHORT G_M8635_IG16
- inc r8d
- mov dword ptr [rbx+0x20], r8d
- ;; size=17 bbWeight=1 PerfScore 7.25
-G_M8635_IG16: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
- cmp ebp, 3
- jne G_M8635_IG27
- ;; size=9 bbWeight=1 PerfScore 1.25
-G_M8635_IG17: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- mov rcx, rbx
- ; byrRegs +[rcx]
- call [System.Reflection.TypeNameParser:CheckTopLevelAssemblyQualifiedName():ubyte:this]
- ; byrRegs -[rcx]
- ; gcr arg pop 0
- test eax, eax
- je SHORT G_M8635_IG18
- mov rcx, rbx
- ; byrRegs +[rcx]
- call [System.Reflection.TypeNameParser:GetNextAssemblyName():System.String:this]
- ; gcrRegs +[rax]
- ; byrRegs -[rcx]
- ; gcr arg pop 0
- mov rdi, rax
+G_M8635_IG12: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ mov ecx, dword ptr [rbx+0x20]
+ cmp ecx, dword ptr [rbx+0x38]
+ jge G_M8635_IG22
+ inc ecx
+ mov dword ptr [rbx+0x20], ecx
+ jmp G_M8635_IG22
+ ;; size=22 bbWeight=1 PerfScore 9.25
+G_M8635_IG13: ; bbWeight=0.05, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[rdi]
- test rdi, rdi
- jne SHORT G_M8635_IG20
- ;; size=30 bbWeight=0 PerfScore 0.00
-G_M8635_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rsi rdi]
- ; byrRegs -[rbx]
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M8635_IG19: ; bbWeight=0, epilog, nogc, extend
- add rsp, 56
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- ret
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M8635_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, gcvars, byref
- ; gcrRegs -[rax] +[rsi rdi]
- ; byrRegs +[rbx]
- mov rcx, rbx
- ; byrRegs +[rcx]
- call [System.Reflection.TypeNameParser:get_Peek():int:this]
- ; byrRegs -[rcx]
- ; gcr arg pop 0
- xor ecx, ecx
- test eax, eax
- sete cl
- call [System.Diagnostics.Debug:Assert(ubyte)]
- ; gcr arg pop 0
- ;; size=22 bbWeight=0 PerfScore 0.00
-G_M8635_IG21: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
+ mov ecx, dword ptr [rbx+0x20]
+ lea rax, bword ptr [rbx+0x30]
+ ; byrRegs +[rax]
+ cmp ecx, dword ptr [rax+0x08]
+ jae SHORT G_M8635_IG19
+ mov rax, bword ptr [rax]
+ movzx rcx, word ptr [rax+2*rcx]
+ jmp SHORT G_M8635_IG09
+ ;; size=21 bbWeight=0.05 PerfScore 0.59
+G_M8635_IG14: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
+ ; byrRegs -[rax]
mov r8, 0xD1FFAB1E ; System.Reflection.TypeNameParser+NamespaceTypeName
cmp qword ptr [rsi], r8
- jne SHORT G_M8635_IG28
+ jne G_M8635_IG27
+ ;; size=19 bbWeight=1 PerfScore 4.25
+G_M8635_IG15: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
mov rdx, gword ptr [rsi+0x08]
; gcrRegs +[rdx]
xor r8, r8
@@ -278,11 +221,11 @@ G_M8635_IG21: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx
; gcrRegs -[rdx rsi rdi r9] +[rax]
; byrRegs -[rcx rbx]
; gcr arg pop 0
...
libraries.crossgen2.windows.x64.checked.mch
-32 (-26.02%) : 127433.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
@@ -8,15 +8,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> rcx class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 6, 11 ) ref -> rdx class-hnd single-def <System.String>
-; V02 arg2 [V02,T05] ( 4, 6.50) int -> r8 single-def
-; V03 arg3 [V03,T07] ( 5, 4.50) int -> r9 single-def
-; V04 loc0 [V04,T03] ( 6, 13 ) int -> r10
-; V05 loc1 [V05,T00] ( 11, 27.50) int -> r11
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String>
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rdx class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 3, 6 ) int -> r8 single-def
+; V03 arg3 [V03,T08] ( 5, 4.50) int -> r9 single-def
+; V04 loc0 [V04,T01] ( 5, 12 ) int -> r10
+; V05 loc1 [V05,T00] ( 7, 25 ) int -> r11
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> rax "CSE - aggressive"
-; V08 cse1 [V08,T01] ( 6, 13.50) int -> rsi multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> rsi "CSE - aggressive"
+; V08 cse1 [V08,T06] ( 3, 8.50) int -> rbx "CSE - aggressive"
+; V09 cse2 [V09,T09] ( 4, 6.50) int -> rax "CSE - aggressive"
+; V10 cse3 [V10,T03] ( 3, 12 ) int -> rsi "CSE - aggressive"
;
; Lcl frame size = 40
@@ -39,59 +41,47 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {},
;; size=3 bbWeight=2 PerfScore 0.50
G_M6389_IG04: ; bbWeight=8, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
cmp r11d, r10d
- jge SHORT G_M6389_IG06
+ jge SHORT G_M6389_IG08
;; size=5 bbWeight=8 PerfScore 10.00
G_M6389_IG05: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
cmp r11d, eax
- jae SHORT G_M6389_IG11
+ jae SHORT G_M6389_IG10
mov ebx, r11d
movzx rbx, word ptr [rcx+2*rbx+0x0C]
lea esi, [r8+r11]
cmp esi, dword ptr [rdx+0x08]
- jae SHORT G_M6389_IG11
- cmp bx, word ptr [rdx+2*rsi+0x0C]
+ jae SHORT G_M6389_IG10
+ movzx rsi, word ptr [rdx+2*rsi+0x0C]
+ cmp ebx, esi
je SHORT G_M6389_IG03
- ;; size=29 bbWeight=4 PerfScore 48.00
-G_M6389_IG06: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
- cmp r11d, r10d
- jge SHORT G_M6389_IG09
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
- cmp r11d, eax
- jae SHORT G_M6389_IG11
- mov eax, r11d
- movzx rax, word ptr [rcx+2*rax+0x0C]
- lea esi, [r8+r11]
- cmp esi, dword ptr [rdx+0x08]
- jae SHORT G_M6389_IG11
- mov r9d, esi
- movzx rcx, word ptr [rdx+2*r9+0x0C]
- ; gcrRegs -[rcx]
- sub eax, ecx
- ;; size=33 bbWeight=0.50 PerfScore 5.25
-G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=31 bbWeight=4 PerfScore 45.00
+G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx rdx]
+ mov eax, ebx
+ sub eax, esi
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rdx]
+G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub eax, r9d
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [CORINFO_HELP_RNGCHKFAIL]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 123, prolog size 6, PerfScore 74.62, instruction count 44, allocated bytes for code 123 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 91, prolog size 6, PerfScore 65.38, instruction count 35, allocated bytes for code 91 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================
Unwind Info:
-32 (-24.43%) : 241359.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -10,108 +10,93 @@
;
; V00 arg0 [V00,T03] ( 4, 8 ) byref -> rcx ld-addr-op single-def
; V01 arg1 [V01,T04] ( 4, 8 ) byref -> rdx ld-addr-op single-def
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> registers
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> r10
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r9 "dup spill"
-; V05 tmp2 [V05,T07] ( 3, 5.50) byref -> r10 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T06] ( 5, 7 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T08] ( 3, 5.50) byref -> r8 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T05] ( 6, 7.50) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> r10 "dup spill"
+; V05 tmp2 [V05,T09] ( 2, 5 ) byref -> r8 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T08] ( 4, 6.50) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T10] ( 2, 5 ) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T07] ( 5, 7 ) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[uint]>
;* V10 tmp7 [V10 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[uint]>
-; V11 cse0 [V11,T02] ( 6, 13.50) long -> r11 multi-def "CSE - aggressive"
+; V11 cse0 [V11,T05] ( 3, 8.50) int -> r11 "CSE - aggressive"
+; V12 cse1 [V12,T06] ( 3, 8.50) int -> r9 "CSE - aggressive"
+; V13 cse2 [V13,T02] ( 3, 12 ) long -> r9 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbx
- sub rsp, 32
- ;; size=5 bbWeight=1 PerfScore 1.25
+ sub rsp, 40
+ ;; size=4 bbWeight=1 PerfScore 0.25
G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, byref, isz
; byrRegs +[rcx rdx]
- mov r8, bword ptr [rdx]
- ; byrRegs +[r8]
+ mov rax, bword ptr [rdx]
+ ; byrRegs +[rax]
mov edx, dword ptr [rdx+0x08]
; byrRegs -[rdx]
- mov r10, bword ptr [rcx]
- ; byrRegs +[r10]
+ mov r8, bword ptr [rcx]
+ ; byrRegs +[r8]
mov ecx, dword ptr [rcx+0x08]
; byrRegs -[rcx]
cmp ecx, edx
je SHORT G_M264_IG04
;; size=16 bbWeight=1 PerfScore 9.25
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r8 r10]
+ ; byrRegs -[rax r8]
cmp ecx, edx
- jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jl SHORT G_M264_IG11
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
-G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref
- ; byrRegs +[r8 r10]
- mov r9d, edx
+G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0101 {rax r8}, byref
+ ; byrRegs +[rax r8]
+ mov r10d, edx
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz
- dec r9d
- mov eax, r9d
- test eax, eax
- jl SHORT G_M264_IG06
- cmp eax, ecx
- jae SHORT G_M264_IG14
- mov r11d, eax
- mov ebx, dword ptr [r10+4*r11]
- cmp eax, edx
- jae SHORT G_M264_IG14
- cmp ebx, dword ptr [r8+4*r11]
- je SHORT G_M264_IG08
- ;; size=31 bbWeight=4 PerfScore 42.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz
- test r9d, r9d
- jge SHORT G_M264_IG09
- xor eax, eax
- ;; size=7 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
- ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M264_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, gcvars, byref, isz
- mov r9d, eax
- jmp SHORT G_M264_IG05
- ;; size=5 bbWeight=2 PerfScore 4.50
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz
- cmp r9d, ecx
- jae SHORT G_M264_IG14
- mov r11d, r9d
- mov eax, dword ptr [r10+4*r11]
- cmp r9d, edx
- jae SHORT G_M264_IG14
- cmp eax, dword ptr [r8+4*r11]
- jb SHORT G_M264_IG12
- ;; size=23 bbWeight=0.50 PerfScore 4.38
-G_M264_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r8 r10]
+G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0101 {rax r8}, byref, isz
+ dec r10d
+ js SHORT G_M264_IG09
+ cmp r10d, ecx
+ jae SHORT G_M264_IG13
+ mov r9d, r10d
+ mov r11d, dword ptr [r8+4*r9]
+ cmp r10d, edx
+ jae SHORT G_M264_IG13
+ mov r9d, dword ptr [rax+4*r9]
+ cmp r11d, r9d
+ je SHORT G_M264_IG05
+ ;; size=31 bbWeight=4 PerfScore 37.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rax r8]
+ cmp r9d, r11d
+ ja SHORT G_M264_IG11
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M264_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
+ ret
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG13: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
+G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [CORINFO_HELP_RNGCHKFAIL]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 131, prolog size 5, PerfScore 66.75, instruction count 50, allocated bytes for code 131 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 99, prolog size 4, PerfScore 51.12, instruction count 35, allocated bytes for code 99 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -119,10 +104,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
-18 (-9.73%) : 179166.dasm - Microsoft.CodeAnalysis.CommandLineParser:g_processSlashes|430(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
@@ -13,12 +13,13 @@
; V02 arg2 [V02,T03] ( 6, 13 ) byref -> rbx single-def
; V03 loc0 [V03,T00] ( 11, 26 ) int -> rdi
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T08] ( 3, 3 ) int -> rdx "Span.get_Item index"
+;* V05 tmp1 [V05,T09] ( 0, 0 ) int -> zero-ref "Span.get_Item index"
; V06 tmp2 [V06,T01] ( 3, 24 ) int -> rax "Span.get_Item index"
-; V07 tmp3 [V07,T07] ( 3, 5.50) byref -> rcx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp4 [V08,T04] ( 5, 14.50) int -> r11 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V07 tmp3 [V07,T08] ( 2, 5 ) byref -> rcx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp4 [V08,T04] ( 3, 13 ) int -> r11 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V10 cse0 [V10,T02] ( 6, 23.50) int -> rdx "CSE - aggressive"
+; V10 cse0 [V10,T07] ( 3, 8.50) int -> rax "CSE - aggressive"
+; V11 cse1 [V11,T02] ( 4, 22 ) int -> rdx "CSE - aggressive"
;
; Lcl frame size = 32
@@ -49,30 +50,24 @@ G_M39664_IG03: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=000A {rcx rb
G_M39664_IG04: ; bbWeight=8, gcrefRegs=0040 {rsi}, byrefRegs=000A {rcx rbx}, byref, isz
mov edx, dword ptr [rbx]
cmp edx, r11d
- jge SHORT G_M39664_IG06
+ jge SHORT G_M39664_IG12
;; size=7 bbWeight=8 PerfScore 26.00
G_M39664_IG05: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=000A {rcx rbx}, byref, isz
mov eax, edx
cmp eax, r11d
- jae G_M39664_IG15
- cmp word ptr [rcx+2*rax], 92
+ jae SHORT G_M39664_IG14
+ movzx rax, word ptr [rcx+2*rax]
+ cmp eax, 92
je SHORT G_M39664_IG03
- ;; size=18 bbWeight=4 PerfScore 22.00
-G_M39664_IG06: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=000A {rcx rbx}, byref, isz
- cmp edx, r11d
- jge SHORT G_M39664_IG13
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M39664_IG07: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=000A {rcx rbx}, byref, isz
- cmp edx, r11d
- jae SHORT G_M39664_IG15
- mov r11d, edx
- cmp word ptr [rcx+2*r11], 34
- jne SHORT G_M39664_IG13
- cmp edi, 2
- jl SHORT G_M39664_IG09
- ;; size=21 bbWeight=0.50 PerfScore 3.38
-G_M39664_IG08: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+ ;; size=16 bbWeight=4 PerfScore 19.00
+G_M39664_IG06: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
; byrRegs -[rcx]
+ cmp eax, 34
+ jne SHORT G_M39664_IG12
+ cmp edi, 2
+ jl SHORT G_M39664_IG08
+ ;; size=10 bbWeight=0.50 PerfScore 1.25
+G_M39664_IG07: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
mov rcx, rsi
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
@@ -83,12 +78,12 @@ G_M39664_IG08: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx},
; gcr arg pop 0
add edi, -2
cmp edi, 2
- jge SHORT G_M39664_IG08
+ jge SHORT G_M39664_IG07
;; size=28 bbWeight=4 PerfScore 34.00
-G_M39664_IG09: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+G_M39664_IG08: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rax]
cmp edi, 1
- jne SHORT G_M39664_IG10
+ jne SHORT G_M39664_IG09
mov rcx, rsi
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
@@ -98,18 +93,18 @@ G_M39664_IG09: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx
; gcrRegs -[rcx rsi] +[rax]
; gcr arg pop 0
;; size=25 bbWeight=0.50 PerfScore 4.12
-G_M39664_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M39664_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rax]
inc dword ptr [rbx]
;; size=2 bbWeight=0.50 PerfScore 1.50
-G_M39664_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M39664_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=0.50 PerfScore 1.38
-G_M39664_IG12: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M39664_IG11: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rsi]
; byrRegs -[rbx]
mov rcx, rsi
@@ -122,12 +117,12 @@ G_M39664_IG12: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0040 {
; gcr arg pop 0
dec edi
;; size=22 bbWeight=2 PerfScore 14.50
-G_M39664_IG13: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M39664_IG12: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
test edi, edi
- jg SHORT G_M39664_IG12
+ jg SHORT G_M39664_IG11
;; size=4 bbWeight=4 PerfScore 5.00
-G_M39664_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M39664_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rsi]
add rsp, 32
pop rbx
@@ -135,13 +130,13 @@ G_M39664_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
pop rdi
ret
;; size=8 bbWeight=0.50 PerfScore 1.38
-G_M39664_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M39664_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [CORINFO_HELP_RNGCHKFAIL]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 185, prolog size 13, PerfScore 127.50, instruction count 66, allocated bytes for code 185 (MethodHash=95cd650f) for method Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
+; Total bytes of code 167, prolog size 13, PerfScore 121.12, instruction count 62, allocated bytes for code 167 (MethodHash=95cd650f) for method Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
; ============================================================
Unwind Info:
+6 (+5.45%) : 37489.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
@@ -11,8 +11,8 @@
;
; V00 this [V00,T03] ( 4, 3.50) ref -> rcx this class-hnd single-def <System.Threading.PortableThreadPool>
; V01 arg1 [V01,T01] ( 4, 7 ) ref -> rdx class-hnd single-def <System.Threading.PortableThreadPool+WaitThread>
-; V02 loc0 [V02,T00] ( 9, 19.50) ref -> registers class-hnd <System.Threading.PortableThreadPool+WaitThreadNode>
-; V03 loc1 [V03,T02] ( 3, 8.50) ref -> rbx class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
+; V02 loc0 [V02,T00] ( 8, 19 ) ref -> registers class-hnd <System.Threading.PortableThreadPool+WaitThreadNode>
+; V03 loc1 [V03,T02] ( 3, 8.50) ref -> registers class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V06 tmp2 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -53,53 +53,58 @@ G_M1296_IG05: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=000C {r
mov rcx, gword ptr [rbx+0x10]
; gcrRegs +[rcx]
test rcx, rcx
- je SHORT G_M1296_IG06
+ je SHORT G_M1296_IG08
cmp gword ptr [rcx+0x08], rdx
jne SHORT G_M1296_IG07
;; size=15 bbWeight=4 PerfScore 29.00
G_M1296_IG06: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx]
- test rcx, rcx
- jne SHORT G_M1296_IG08
+ mov rax, rcx
+ ; gcrRegs +[rax]
+ mov rcx, rbx
+ mov rbx, rax
+ jmp SHORT G_M1296_IG09
+ ;; size=11 bbWeight=0.50 PerfScore 1.38
+G_M1296_IG07: ; bbWeight=2, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax rbx] +[rdx]
+ mov rbx, rcx
+ ; gcrRegs +[rbx]
+ jmp SHORT G_M1296_IG05
+ ;; size=5 bbWeight=2 PerfScore 4.50
+G_M1296_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx rdx rbx]
mov rcx, qword ptr [(reloc)] ; const ptr
- ; gcrRegs -[rcx]
mov rcx, gword ptr [rcx]
; gcrRegs +[rcx]
mov rdx, qword ptr [(reloc)] ; const ptr
mov rdx, gword ptr [rdx]
; gcrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rcx rdx rbx]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0
- jmp SHORT G_M1296_IG09
- ;; size=33 bbWeight=0.50 PerfScore 7.12
-G_M1296_IG07: ; bbWeight=2, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rcx rdx]
- mov rbx, rcx
- ; gcrRegs +[rbx]
- jmp SHORT G_M1296_IG05
- ;; size=5 bbWeight=2 PerfScore 4.50
-G_M1296_IG08: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdx]
- mov rdx, gword ptr [rcx+0x10]
+ jmp SHORT G_M1296_IG10
+ ;; size=28 bbWeight=0.50 PerfScore 6.50
+G_M1296_IG09: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rcx rbx]
+ mov rdx, gword ptr [rbx+0x10]
; gcrRegs +[rdx]
- lea rcx, bword ptr [rbx+0x10]
+ lea rcx, bword ptr [rcx+0x10]
; gcrRegs -[rcx]
; byrRegs +[rcx]
call [CORINFO_HELP_ASSIGN_REF]
; gcrRegs -[rdx rbx]
; byrRegs -[rcx]
;; size=14 bbWeight=0.50 PerfScore 2.75
-G_M1296_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M1296_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
-G_M1296_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M1296_IG11: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32
pop rbx
ret
;; size=6 bbWeight=0.50 PerfScore 0.88
-; Total bytes of code 110, prolog size 5, PerfScore 55.38, instruction count 34, allocated bytes for code 110 (MethodHash=2a35faef) for method System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
+; Total bytes of code 116, prolog size 5, PerfScore 56.12, instruction count 36, allocated bytes for code 116 (MethodHash=2a35faef) for method System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
; ============================================================
Unwind Info:
+16 (+6.67%) : 8949.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
@@ -8,56 +8,59 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 7, 4.50) ref -> rbx this class-hnd single-def <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 8, 4.38) ref -> rsi class-hnd single-def <System.Object>
+; V00 this [V00,T01] ( 6, 4 ) ref -> rsi this class-hnd single-def <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
+; V01 arg1 [V01,T00] ( 8, 4.38) ref -> rbx class-hnd single-def <System.Object>
; V02 arg2 [V02,T03] ( 3, 2.50) ref -> rdi class-hnd single-def <System.Collections.IComparer>
;* V03 loc0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
-; V04 loc1 [V04,T10] ( 2, 1 ) ref -> rsi class-hnd single-def <System.__Canon>
-; V05 loc2 [V05,T11] ( 2, 1 ) ref -> rbp class-hnd single-def <System.__Canon>
+; V04 loc1 [V04,T11] ( 2, 1 ) ref -> rbx class-hnd single-def <System.__Canon>
+; V05 loc2 [V05,T12] ( 2, 1 ) ref -> rbp class-hnd single-def <System.__Canon>
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T07] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
+; V07 tmp1 [V07,T08] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
; V08 tmp2 [V08,T02] ( 5, 5.75) ref -> rbp class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
-; V09 tmp3 [V09,T08] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
+; V09 tmp3 [V09,T09] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
; V10 tmp4 [V10,T04] ( 3, 2.50) ref -> rcx class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
-; V11 tmp5 [V11,T09] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
+; V11 tmp5 [V11,T10] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
; V12 tmp6 [V12,T05] ( 3, 2.50) ref -> rcx class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]>
; V13 tmp7 [V13,T06] ( 2, 2 ) long -> rcx "argument with side effect"
+; V14 cse0 [V14,T07] ( 5, 1.50) long -> r15 multi-def "CSE - moderate"
;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M49351_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+ push r15
push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 48
- mov qword ptr [rsp+0x28], rcx
- mov rbx, rcx
- ; gcrRegs +[rbx]
- mov rsi, rdx
+ sub rsp, 40
+ mov qword ptr [rsp+0x20], rcx
+ mov rsi, rcx
; gcrRegs +[rsi]
+ mov rbx, rdx
+ ; gcrRegs +[rbx]
mov rdi, r8
; gcrRegs +[rdi]
- ;; size=24 bbWeight=1 PerfScore 7.00
+ ;; size=26 bbWeight=1 PerfScore 8.00
G_M49351_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- mov rbp, rsi
+ mov rbp, rbx
; gcrRegs +[rbp]
test rbp, rbp
je SHORT G_M49351_IG05
;; size=8 bbWeight=1 PerfScore 1.50
G_M49351_IG03: ; bbWeight=0.25, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
mov r14, qword ptr [rbp]
- mov rcx, qword ptr [rbx]
+ mov r15, qword ptr [rsi]
+ mov rcx, r15
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcr arg pop 0
cmp r14, rax
je SHORT G_M49351_IG05
- ;; size=18 bbWeight=0.25 PerfScore 2.06
+ ;; size=21 bbWeight=0.25 PerfScore 2.12
G_M49351_IG04: ; bbWeight=0.12, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp]
mov rcx, rax
- mov rdx, rsi
+ mov rdx, rbx
; gcrRegs +[rdx]
call [CORINFO_HELP_CHKCASTANY]
; gcrRegs -[rdx] +[rax]
@@ -67,38 +70,39 @@ G_M49351_IG04: ; bbWeight=0.12, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
;; size=15 bbWeight=0.12 PerfScore 0.47
G_M49351_IG05: ; bbWeight=1, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- test rbx, rbx
+ test rsi, rsi
je SHORT G_M49351_IG13
;; size=5 bbWeight=1 PerfScore 1.25
G_M49351_IG06: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
- mov rcx, rsi
+ mov rcx, rbx
; gcrRegs +[rcx]
test rcx, rcx
je SHORT G_M49351_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M49351_IG07: ; bbWeight=0.25, gcrefRegs=00EA {rcx rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
mov r14, qword ptr [rcx]
- mov rcx, qword ptr [rbx]
+ mov r15, qword ptr [rsi]
+ mov rcx, r15
; gcrRegs -[rcx]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcr arg pop 0
cmp r14, rax
je SHORT G_M49351_IG09
- ;; size=17 bbWeight=0.25 PerfScore 2.06
+ ;; size=20 bbWeight=0.25 PerfScore 2.12
G_M49351_IG08: ; bbWeight=0.12, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, rax
- mov rdx, rsi
+ mov rdx, rbx
; gcrRegs +[rdx]
call [CORINFO_HELP_CHKCASTANY]
- ; gcrRegs -[rdx rsi] +[rax]
+ ; gcrRegs -[rdx rbx] +[rax]
; gcr arg pop 0
;; size=12 bbWeight=0.12 PerfScore 0.44
-G_M49351_IG09: ; bbWeight=0.50, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref
+G_M49351_IG09: ; bbWeight=0.50, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- mov rsi, gword ptr [rbx+0x08]
- ; gcrRegs +[rsi]
+ mov rbx, gword ptr [rsi+0x08]
+ ; gcrRegs +[rbx]
mov rbp, gword ptr [rbp+0x08]
- mov rcx, qword ptr [rbx]
+ mov rcx, r15
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcr arg pop 0
mov rcx, rax
@@ -106,35 +110,37 @@ G_M49351_IG09: ; bbWeight=0.50, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0
; gcrRegs +[r9]
mov rdx, rdi
; gcrRegs +[rdx]
- mov r8, rsi
+ mov r8, rbx
; gcrRegs +[r8]
lea rax, [(reloc)] ; function address
- ;; size=36 bbWeight=0.50 PerfScore 5.25
+ ;; size=36 bbWeight=0.50 PerfScore 4.38
G_M49351_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 48
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
+ pop r15
tail.jmp [rax]<unknown method>
- ;; size=13 bbWeight=0.50 PerfScore 2.38
-G_M49351_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rdx rbp rsi rdi r8-r9]
+ ;; size=15 bbWeight=0.50 PerfScore 2.62
+G_M49351_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rdx rbx rbp rdi r8-r9]
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M49351_IG12: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 48
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
+ pop r15
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
G_M49351_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rsi]
- mov rcx, rsi
+ ; gcrRegs +[rbx]
+ mov rcx, rbx
; gcrRegs +[rcx]
test rcx, rcx
je SHORT G_M49351_IG18
@@ -151,39 +157,41 @@ G_M49351_IG14: ; bbWeight=0.25, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0
;; size=19 bbWeight=0.25 PerfScore 2.12
G_M49351_IG15: ; bbWeight=0.12, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rcx, rax
- mov rdx, rsi
+ mov rdx, rbx
; gcrRegs +[rdx]
call [CORINFO_HELP_CHKCASTANY]
- ; gcrRegs -[rdx rsi] +[rax]
+ ; gcrRegs -[rdx rbx] +[rax]
; gcr arg pop 0
;; size=12 bbWeight=0.12 PerfScore 0.44
-G_M49351_IG16: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M49351_IG16: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M49351_IG17: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 48
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
+ pop r15
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M49351_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
+G_M49351_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M49351_IG19: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 48
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
+ pop r15
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
-; Total bytes of code 240, prolog size 24, PerfScore 32.47, instruction count 87, allocated bytes for code 240 (MethodHash=56213f38) for method Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
+; Total bytes of code 256, prolog size 26, PerfScore 33.72, instruction count 94, allocated bytes for code 256 (MethodHash=56213f38) for method Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -191,14 +199,15 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0A
- CountOfUnwindCodes: 6
+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
...
+18 (+7.00%) : 8964.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
@@ -8,7 +8,7 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 7, 4.50) ref -> rsi this class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
+; V00 this [V00,T01] ( 6, 4 ) ref -> rsi this class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
; V01 arg1 [V01,T00] ( 7, 4.75) ref -> rbx class-hnd single-def <System.Object>
; V02 arg2 [V02,T03] ( 3, 2.50) ref -> rdi class-hnd single-def <System.Collections.IComparer>
; V03 loc0 [V03,T04] ( 5, 2.38) ref -> rbp class-hnd exact single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
@@ -16,36 +16,38 @@
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
;* V06 loc3 [V06 ] ( 0, 0 ) int -> zero-ref single-def
;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
-; V08 loc5 [V08,T13] ( 2, 1 ) ref -> rbx class-hnd single-def <System.__Canon>
-; V09 loc6 [V09,T14] ( 2, 1 ) ref -> rbp class-hnd single-def <System.__Canon>
+; V08 loc5 [V08,T14] ( 2, 1 ) ref -> rbx class-hnd single-def <System.__Canon>
+; V09 loc6 [V09,T15] ( 2, 1 ) ref -> rbp class-hnd single-def <System.__Canon>
; V10 OutArgs [V10 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T09] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
+; V11 tmp1 [V11,T10] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
; V12 tmp2 [V12,T02] ( 3, 4.50) ref -> rcx class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
-; V13 tmp3 [V13,T10] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
+; V13 tmp3 [V13,T11] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
; V14 tmp4 [V14,T05] ( 3, 2.50) ref -> rcx class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
-; V15 tmp5 [V15,T11] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
-;* V16 tmp6 [V16,T12] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
-;* V17 tmp7 [V17,T15] ( 0, 0 ) int -> zero-ref single-def
-; V18 tmp8 [V18,T08] ( 3, 1.50) int -> rax
+; V15 tmp5 [V15,T12] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
+;* V16 tmp6 [V16,T13] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
+;* V17 tmp7 [V17,T16] ( 0, 0 ) int -> zero-ref single-def
+; V18 tmp8 [V18,T09] ( 3, 1.50) int -> rax
; V19 tmp9 [V19,T06] ( 2, 2 ) int -> rcx "Single return block return value"
; V20 tmp10 [V20,T07] ( 2, 2 ) long -> rcx "argument with side effect"
+; V21 cse0 [V21,T08] ( 5, 1.50) long -> r14 multi-def "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 48
G_M56277_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+ push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 40
- mov qword ptr [rsp+0x20], rcx
+ sub rsp, 48
+ mov qword ptr [rsp+0x28], rcx
mov rsi, rcx
; gcrRegs +[rsi]
mov rbx, rdx
; gcrRegs +[rbx]
mov rdi, r8
; gcrRegs +[rdi]
- ;; size=22 bbWeight=1 PerfScore 6.00
+ ;; size=24 bbWeight=1 PerfScore 7.00
G_M56277_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rbx
; gcrRegs +[rcx]
@@ -54,13 +56,14 @@ G_M56277_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
;; size=8 bbWeight=1 PerfScore 1.50
G_M56277_IG03: ; bbWeight=0.25, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rbp, qword ptr [rcx]
- mov rcx, qword ptr [rsi]
+ mov r14, qword ptr [rsi]
+ mov rcx, r14
; gcrRegs -[rcx]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcr arg pop 0
cmp rbp, rax
je SHORT G_M56277_IG05
- ;; size=17 bbWeight=0.25 PerfScore 2.06
+ ;; size=20 bbWeight=0.25 PerfScore 2.12
G_M56277_IG04: ; bbWeight=0.12, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, rax
mov rdx, rbx
@@ -83,12 +86,13 @@ G_M56277_IG06: ; bbWeight=0.50, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0
;; size=5 bbWeight=0.50 PerfScore 0.62
G_M56277_IG07: ; bbWeight=0.25, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rbx, qword ptr [rbp]
- mov rcx, qword ptr [rsi]
+ mov r14, qword ptr [rsi]
+ mov rcx, r14
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcr arg pop 0
cmp rbx, rax
je SHORT G_M56277_IG09
- ;; size=18 bbWeight=0.25 PerfScore 2.06
+ ;; size=21 bbWeight=0.25 PerfScore 2.12
G_M56277_IG08: ; bbWeight=0.12, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, rax
mov rdx, rbp
@@ -105,7 +109,7 @@ G_M56277_IG09: ; bbWeight=0.50, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0
mov rbx, gword ptr [rsi+0x08]
; gcrRegs +[rbx]
mov rbp, gword ptr [rbp+0x08]
- mov rcx, qword ptr [rsi]
+ mov rcx, r14
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcr arg pop 0
mov rcx, rax
@@ -116,15 +120,16 @@ G_M56277_IG09: ; bbWeight=0.50, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0
mov r8, rbx
; gcrRegs +[r8]
lea rax, [(reloc)] ; function address
- ;; size=46 bbWeight=0.50 PerfScore 6.00
+ ;; size=46 bbWeight=0.50 PerfScore 5.12
G_M56277_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 48
pop rbx
pop rbp
pop rsi
pop rdi
+ pop r14
tail.jmp [rax]<unknown method>
- ;; size=11 bbWeight=0.50 PerfScore 2.12
+ ;; size=13 bbWeight=0.50 PerfScore 2.38
G_M56277_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rdx rbx rbp rdi r8-r9]
mov ecx, 1
@@ -135,13 +140,14 @@ G_M56277_IG12: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M56277_IG13: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 48
pop rbx
pop rbp
pop rsi
pop rdi
+ pop r14
ret
- ;; size=9 bbWeight=0.50 PerfScore 1.62
+ ;; size=11 bbWeight=0.50 PerfScore 1.88
G_M56277_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx]
mov rcx, rbx
@@ -172,37 +178,40 @@ G_M56277_IG17: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M56277_IG18: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 48
pop rbx
pop rbp
pop rsi
pop rdi
+ pop r14
ret
- ;; size=9 bbWeight=0.50 PerfScore 1.62
+ ;; size=11 bbWeight=0.50 PerfScore 1.88
G_M56277_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M56277_IG20: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 48
pop rbx
pop rbp
pop rsi
pop rdi
+ pop r14
ret
- ;; size=9 bbWeight=0.50 PerfScore 1.62
+ ;; size=11 bbWeight=0.50 PerfScore 1.88
G_M56277_IG21: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
mov eax, ecx
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M56277_IG22: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 48
pop rbx
pop rbp
pop rsi
pop rdi
+ pop r14
ret
- ;; size=9 bbWeight=0.50 PerfScore 1.62
+ ;; size=11 bbWeight=0.50 PerfScore 1.88
-; Total bytes of code 257, prolog size 22, PerfScore 34.31, instruction count 94, allocated bytes for code 257 (MethodHash=ba80242a) for method Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
+; Total bytes of code 275, prolog size 24, PerfScore 35.81, instruction count 102, allocated bytes for code 275 (MethodHash=ba80242a) for method Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -210,13 +219,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x0A
+ CountOfUnwindCodes: 6
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
libraries.pmi.windows.x64.checked.mch
-32 (-26.23%) : 230348.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
@@ -7,15 +7,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> rcx class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 6, 11 ) ref -> rdx class-hnd single-def <System.String>
-; V02 arg2 [V02,T05] ( 4, 6.50) int -> r8 single-def
-; V03 arg3 [V03,T07] ( 5, 4.50) int -> r9 single-def
-; V04 loc0 [V04,T03] ( 6, 13 ) int -> r10
-; V05 loc1 [V05,T00] ( 11, 27.50) int -> r11
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String>
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rdx class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 3, 6 ) int -> r8 single-def
+; V03 arg3 [V03,T08] ( 5, 4.50) int -> r9 single-def
+; V04 loc0 [V04,T01] ( 5, 12 ) int -> r10
+; V05 loc1 [V05,T00] ( 7, 25 ) int -> r11
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> rax "CSE - aggressive"
-; V08 cse1 [V08,T01] ( 6, 13.50) int -> rsi multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> rsi "CSE - aggressive"
+; V08 cse1 [V08,T06] ( 3, 8.50) int -> rbx "CSE - aggressive"
+; V09 cse2 [V09,T09] ( 4, 6.50) int -> rax "CSE - aggressive"
+; V10 cse3 [V10,T03] ( 3, 12 ) int -> rsi "CSE - aggressive"
;
; Lcl frame size = 40
@@ -38,59 +40,47 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {},
;; size=3 bbWeight=2 PerfScore 0.50
G_M6389_IG04: ; bbWeight=8, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
cmp r11d, r10d
- jge SHORT G_M6389_IG06
+ jge SHORT G_M6389_IG08
;; size=5 bbWeight=8 PerfScore 10.00
G_M6389_IG05: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
cmp r11d, eax
- jae SHORT G_M6389_IG11
+ jae SHORT G_M6389_IG10
mov ebx, r11d
movzx rbx, word ptr [rcx+2*rbx+0x0C]
lea esi, [r8+r11]
cmp esi, dword ptr [rdx+0x08]
- jae SHORT G_M6389_IG11
- cmp bx, word ptr [rdx+2*rsi+0x0C]
+ jae SHORT G_M6389_IG10
+ movzx rsi, word ptr [rdx+2*rsi+0x0C]
+ cmp ebx, esi
je SHORT G_M6389_IG03
- ;; size=29 bbWeight=4 PerfScore 48.00
-G_M6389_IG06: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
- cmp r11d, r10d
- jge SHORT G_M6389_IG09
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
- cmp r11d, eax
- jae SHORT G_M6389_IG11
- mov eax, r11d
- movzx rax, word ptr [rcx+2*rax+0x0C]
- lea esi, [r8+r11]
- cmp esi, dword ptr [rdx+0x08]
- jae SHORT G_M6389_IG11
- mov r9d, esi
- movzx rcx, word ptr [rdx+2*r9+0x0C]
- ; gcrRegs -[rcx]
- sub eax, ecx
- ;; size=33 bbWeight=0.50 PerfScore 5.25
-G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=31 bbWeight=4 PerfScore 45.00
+G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx rdx]
+ mov eax, ebx
+ sub eax, esi
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rdx]
+G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub eax, r9d
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 122, prolog size 6, PerfScore 74.62, instruction count 44, allocated bytes for code 122 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 90, prolog size 6, PerfScore 65.38, instruction count 35, allocated bytes for code 90 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================
Unwind Info:
-32 (-24.62%) : 296608.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -9,108 +9,93 @@
;
; V00 arg0 [V00,T03] ( 4, 8 ) byref -> rcx ld-addr-op single-def
; V01 arg1 [V01,T04] ( 4, 8 ) byref -> rdx ld-addr-op single-def
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> registers
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> r10
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r9 "dup spill"
-; V05 tmp2 [V05,T07] ( 3, 5.50) byref -> r10 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T06] ( 5, 7 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T08] ( 3, 5.50) byref -> r8 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T05] ( 6, 7.50) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> r10 "dup spill"
+; V05 tmp2 [V05,T09] ( 2, 5 ) byref -> r8 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T08] ( 4, 6.50) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T10] ( 2, 5 ) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T07] ( 5, 7 ) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[uint]>
;* V10 tmp7 [V10 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[uint]>
-; V11 cse0 [V11,T02] ( 6, 13.50) long -> r11 multi-def "CSE - aggressive"
+; V11 cse0 [V11,T05] ( 3, 8.50) int -> r11 "CSE - aggressive"
+; V12 cse1 [V12,T06] ( 3, 8.50) int -> r9 "CSE - aggressive"
+; V13 cse2 [V13,T02] ( 3, 12 ) long -> r9 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbx
- sub rsp, 32
- ;; size=5 bbWeight=1 PerfScore 1.25
+ sub rsp, 40
+ ;; size=4 bbWeight=1 PerfScore 0.25
G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, byref, isz
; byrRegs +[rcx rdx]
- mov r8, bword ptr [rdx]
- ; byrRegs +[r8]
+ mov rax, bword ptr [rdx]
+ ; byrRegs +[rax]
mov edx, dword ptr [rdx+0x08]
; byrRegs -[rdx]
- mov r10, bword ptr [rcx]
- ; byrRegs +[r10]
+ mov r8, bword ptr [rcx]
+ ; byrRegs +[r8]
mov ecx, dword ptr [rcx+0x08]
; byrRegs -[rcx]
cmp ecx, edx
je SHORT G_M264_IG04
;; size=16 bbWeight=1 PerfScore 9.25
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r8 r10]
+ ; byrRegs -[rax r8]
cmp ecx, edx
- jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jl SHORT G_M264_IG11
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
-G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref
- ; byrRegs +[r8 r10]
- mov r9d, edx
+G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0101 {rax r8}, byref
+ ; byrRegs +[rax r8]
+ mov r10d, edx
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz
- dec r9d
- mov eax, r9d
- test eax, eax
- jl SHORT G_M264_IG06
- cmp eax, ecx
- jae SHORT G_M264_IG14
- mov r11d, eax
- mov ebx, dword ptr [r10+4*r11]
- cmp eax, edx
- jae SHORT G_M264_IG14
- cmp ebx, dword ptr [r8+4*r11]
- je SHORT G_M264_IG08
- ;; size=31 bbWeight=4 PerfScore 42.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz
- test r9d, r9d
- jge SHORT G_M264_IG09
- xor eax, eax
- ;; size=7 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
- ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M264_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, gcvars, byref, isz
- mov r9d, eax
- jmp SHORT G_M264_IG05
- ;; size=5 bbWeight=2 PerfScore 4.50
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz
- cmp r9d, ecx
- jae SHORT G_M264_IG14
- mov r11d, r9d
- mov eax, dword ptr [r10+4*r11]
- cmp r9d, edx
- jae SHORT G_M264_IG14
- cmp eax, dword ptr [r8+4*r11]
- jb SHORT G_M264_IG12
- ;; size=23 bbWeight=0.50 PerfScore 4.38
-G_M264_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r8 r10]
+G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0101 {rax r8}, byref, isz
+ dec r10d
+ js SHORT G_M264_IG09
+ cmp r10d, ecx
+ jae SHORT G_M264_IG13
+ mov r9d, r10d
+ mov r11d, dword ptr [r8+4*r9]
+ cmp r10d, edx
+ jae SHORT G_M264_IG13
+ mov r9d, dword ptr [rax+4*r9]
+ cmp r11d, r9d
+ je SHORT G_M264_IG05
+ ;; size=31 bbWeight=4 PerfScore 37.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rax r8]
+ cmp r9d, r11d
+ ja SHORT G_M264_IG11
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M264_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
+ ret
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG13: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
+G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 130, prolog size 5, PerfScore 66.75, instruction count 50, allocated bytes for code 130 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 98, prolog size 4, PerfScore 51.12, instruction count 35, allocated bytes for code 98 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -118,10 +103,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
-13 (-12.87%) : 219391.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
@@ -8,10 +8,10 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 10, 20 ) ref -> rbx class-hnd <System.Xml.Schema.XmlSchemaObject>
+; V00 arg0 [V00,T00] ( 9, 19.50) ref -> rbx class-hnd <System.Xml.Schema.XmlSchemaObject>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable"
-; V03 tmp2 [V03,T02] ( 3, 2 ) ref -> rax class-hnd "spilling QMark2" <System.Xml.Schema.XmlSchema>
+; V02 tmp1 [V02,T02] ( 2, 2 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V03 tmp2 [V03,T01] ( 2, 2 ) ref -> rax class-hnd "spilling QMark2" <System.Xml.Schema.XmlSchema>
;
; Lcl frame size = 32
@@ -29,7 +29,7 @@ G_M32300_IG03: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=4 bbWeight=2 PerfScore 4.00
G_M32300_IG04: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
- je SHORT G_M32300_IG06
+ je SHORT G_M32300_IG08
;; size=5 bbWeight=8 PerfScore 10.00
G_M32300_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, rbx
@@ -41,50 +41,32 @@ G_M32300_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
test rax, rax
je SHORT G_M32300_IG03
;; size=23 bbWeight=4 PerfScore 11.00
-G_M32300_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M32300_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- test rbx, rbx
- je SHORT G_M32300_IG12
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M32300_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rcx, 0xD1FFAB1E ; System.Xml.Schema.XmlSchema
- cmp qword ptr [rbx], rcx
- je SHORT G_M32300_IG09
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M32300_IG08: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rdx, rbx
- ; gcrRegs +[rdx]
- call CORINFO_HELP_CHKCASTCLASS_SPECIAL
- ; gcrRegs -[rdx rbx] +[rax]
- ; gcr arg pop 0
- jmp SHORT G_M32300_IG10
- ;; size=10 bbWeight=0.25 PerfScore 0.81
-G_M32300_IG09: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax] +[rbx]
+ mov rax, 0xD1FFAB1E ; System.Xml.Schema.XmlSchema
+ cmp qword ptr [rbx], rax
mov rax, rbx
; gcrRegs +[rax]
- ;; size=3 bbWeight=0.25 PerfScore 0.06
-G_M32300_IG10: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
+ cmove rax, rbx
mov rax, gword ptr [rax+0x30]
- ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M32300_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=24 bbWeight=0.50 PerfScore 2.88
+G_M32300_IG07: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32
pop rbx
ret
;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M32300_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax]
+G_M32300_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rbx]
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
;; size=10 bbWeight=0.50 PerfScore 0.12
-G_M32300_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M32300_IG09: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32
pop rbx
ret
;; size=6 bbWeight=0.50 PerfScore 0.88
-; Total bytes of code 101, prolog size 8, PerfScore 35.62, instruction count 29, allocated bytes for code 101 (MethodHash=8b5f81d3) for method System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 33.25, instruction count 24, allocated bytes for code 88 (MethodHash=8b5f81d3) for method System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
; ============================================================
Unwind Info:
+14 (+2.39%) : 78429.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:g_getInterpolationCloseToken|4342(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
@@ -20,27 +20,27 @@
; V09 tmp1 [V09,T06] ( 3, 6 ) ref -> rcx class-hnd exact single-def "impAppendStmt" <System.String>
; V10 tmp2 [V10,T05] ( 6, 6 ) int -> r10 "Inline stloc first use temp"
; V11 tmp3 [V11,T08] ( 4, 3.50) int -> rdx "Inline stloc first use temp"
-; V12 tmp4 [V12,T13] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V12 tmp4 [V12,T13] ( 3, 2 ) ref -> r14 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V13 tmp5 [V13,T00] ( 11, 12.22) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
;* V14 tmp6 [V14 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
;* V15 tmp7 [V15,T23] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-; V16 tmp8 [V16,T17] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V17 tmp9 [V17,T09] ( 7, 3.36) ref -> rbp class-hnd exact single-def "Inline stloc first use temp" <System.String>
-; V18 tmp10 [V18,T19] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+; V16 tmp8 [V16,T19] ( 3, 1.50) ref -> r14 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V17 tmp9 [V17,T09] ( 7, 3.29) ref -> r14 class-hnd exact single-def "Inline stloc first use temp" <System.String>
+; V18 tmp10 [V18,T17] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
; V19 tmp11 [V19,T14] ( 2, 2 ) byref -> rcx single-def "impAppendStmt"
;* V20 tmp12 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp13 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp14 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp15 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp16 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V25 tmp17 [V25,T20] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+; V25 tmp17 [V25,T18] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
; V26 tmp18 [V26,T15] ( 2, 2 ) byref -> rcx single-def "impAppendStmt"
;* V27 tmp19 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V28 tmp20 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V29 tmp21 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V30 tmp22 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V31 tmp23 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V32 tmp24 [V32,T01] ( 12, 12 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V32 tmp24 [V32,T01] ( 12, 12 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V33 tmp25 [V33,T16] ( 2, 2 ) int -> rcx "Inlining Arg"
; V34 tmp26 [V34,T02] ( 12, 12 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia>
;* V35 tmp27 [V35 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -48,22 +48,23 @@
; V37 tmp29 [V37,T12] ( 3, 2.50) int -> r8 single-def "field V03.<End>k__BackingField (fldOffset=0x4)" P-INDEP
;* V38 tmp30 [V38 ] ( 0, 0 ) int -> zero-ref "field V07._value (fldOffset=0x0)" P-INDEP
;* V39 cse0 [V39,T21] ( 0, 0 ) long -> zero-ref multi-def "CSE - aggressive"
-; V40 cse1 [V40,T18] ( 3, 1.50) long -> r14 "CSE - moderate"
+; V40 cse1 [V40,T20] ( 3, 1.50) long -> r15 "CSE - moderate"
; V41 cse2 [V41,T22] ( 2, 1 ) int -> rcx "CSE - moderate"
-; V42 cse3 [V42,T07] ( 9, 3.86) int -> rdi multi-def "CSE - aggressive"
+; V42 cse3 [V42,T07] ( 9, 3.79) int -> rdi multi-def "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M58175_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r15
push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=13 bbWeight=1 PerfScore 5.50
+ ;; size=15 bbWeight=1 PerfScore 6.50
G_M58175_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0100 {r8}, byref, isz
; byrRegs +[r8]
mov rcx, gword ptr [r8+0x08]
@@ -104,7 +105,7 @@ G_M58175_IG05: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
G_M58175_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
test byte ptr [(reloc)], 1 ; global ptr
- je G_M58175_IG23
+ je G_M58175_IG26
;; size=13 bbWeight=0.50 PerfScore 2.00
G_M58175_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia
@@ -114,12 +115,12 @@ G_M58175_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov rbp, rax
; gcrRegs +[rbp]
test byte ptr [(reloc)], 1 ; global ptr
- je G_M58175_IG24
+ je G_M58175_IG27
;; size=31 bbWeight=0.50 PerfScore 2.75
G_M58175_IG08: ; bbWeight=0.50, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
test byte ptr [(reloc)], 1 ; global ptr
- je G_M58175_IG25
+ je G_M58175_IG28
;; size=13 bbWeight=0.50 PerfScore 2.00
G_M58175_IG09: ; bbWeight=0.50, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
mov word ptr [rbp+0x0C], 0x200E
@@ -127,8 +128,8 @@ G_M58175_IG09: ; bbWeight=0.50, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000
mov dword ptr [rbp+0x08], ecx
or byte ptr [rbp+0x0E], 32
test rbx, rbx
- je G_M58175_IG21
- jmp G_M58175_IG20
+ je G_M58175_IG23
+ jmp G_M58175_IG22
;; size=29 bbWeight=0.50 PerfScore 4.25
G_M58175_IG10: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp] +[rsi]
@@ -136,63 +137,67 @@ G_M58175_IG10: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
call [<unknown method>]
; gcrRegs +[rax]
; gcr arg pop 0
- mov rbp, rax
- ; gcrRegs +[rbp]
- cmp rsi, rbp
- je G_M58175_IG18
+ mov r14, rax
+ ; gcrRegs +[r14]
+ cmp rsi, r14
+ je G_M58175_IG20
;; size=23 bbWeight=0.50 PerfScore 2.38
-G_M58175_IG11: ; bbWeight=0.43, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M58175_IG11: ; bbWeight=0.43, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
test rsi, rsi
- je SHORT G_M58175_IG15
+ je SHORT G_M58175_IG17
;; size=5 bbWeight=0.43 PerfScore 0.54
-G_M58175_IG12: ; bbWeight=0.43, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
- test rbp, rbp
- je SHORT G_M58175_IG15
+G_M58175_IG12: ; bbWeight=0.43, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
+ test r14, r14
+ je SHORT G_M58175_IG17
;; size=5 bbWeight=0.43 PerfScore 0.54
-G_M58175_IG13: ; bbWeight=0.43, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M58175_IG13: ; bbWeight=0.43, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
mov edi, dword ptr [rsi+0x08]
- cmp edi, dword ptr [rbp+0x08]
- jne SHORT G_M58175_IG15
- ;; size=8 bbWeight=0.43 PerfScore 2.58
-G_M58175_IG14: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+ cmp edi, dword ptr [r14+0x08]
+ jne SHORT G_M58175_IG17
+ ;; size=9 bbWeight=0.43 PerfScore 2.58
+G_M58175_IG14: ; bbWeight=0.50, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
lea rcx, bword ptr [rsi+0x0C]
; byrRegs +[rcx]
lea r8d, [rdi+rdi]
- mov r14d, r8d
- mov r8, r14
- lea rdx, bword ptr [rbp+0x0C]
+ mov r15d, r8d
+ mov r8, r15
+ lea rdx, bword ptr [r14+0x0C]
; byrRegs +[rdx]
call [<unknown method>]
; byrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- je SHORT G_M58175_IG15
- cmp dword ptr [rbp+0x08], edi
- jne SHORT G_M58175_IG15
+ je SHORT G_M58175_IG17
+ ;; size=28 bbWeight=0.50 PerfScore 3.12
+G_M58175_IG15: ; bbWeight=0.43, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
+ cmp dword ptr [r14+0x08], edi
+ jne SHORT G_M58175_IG17
+ ;; size=6 bbWeight=0.43 PerfScore 1.73
+G_M58175_IG16: ; bbWeight=0.50, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
lea rcx, bword ptr [rsi+0x0C]
; byrRegs +[rcx]
- mov r8, r14
- lea rdx, bword ptr [rbp+0x0C]
+ mov r8, r15
+ lea rdx, bword ptr [r14+0x0C]
; byrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rbp]
+ ; gcrRegs -[r14]
; byrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- jne G_M58175_IG18
- ;; size=58 bbWeight=0.50 PerfScore 7.88
-G_M58175_IG15: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ jne G_M58175_IG20
+ ;; size=25 bbWeight=0.50 PerfScore 2.75
+G_M58175_IG17: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
test byte ptr [(reloc)], 1 ; global ptr
- je G_M58175_IG26
+ je G_M58175_IG29
;; size=13 bbWeight=0.50 PerfScore 2.00
-G_M58175_IG16: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M58175_IG18: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
- mov rbp, rax
- ; gcrRegs +[rbp]
+ mov r14, rax
+ ; gcrRegs +[r14]
mov rcx, 0xD1FFAB1E
mov edx, 50
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
@@ -204,17 +209,17 @@ G_M58175_IG16: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcr arg pop 0
mov edi, dword ptr [rsi+0x08]
mov ecx, edi
- mov word ptr [rbp+0x0C], 0x200E
- mov dword ptr [rbp+0x08], ecx
- or byte ptr [rbp+0x0E], 32
- lea rcx, bword ptr [rbp+0x10]
+ mov word ptr [r14+0x0C], 0x200E
+ mov dword ptr [r14+0x08], ecx
+ or byte ptr [r14+0x0E], 32
+ lea rcx, bword ptr [r14+0x10]
; byrRegs +[rcx]
mov rdx, rsi
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rdx]
; byrRegs -[rcx]
- lea rcx, bword ptr [rbp+0x18]
+ lea rcx, bword ptr [r14+0x18]
; byrRegs +[rcx]
mov rdx, rsi
; gcrRegs +[rdx]
@@ -222,27 +227,25 @@ G_M58175_IG16: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcrRegs -[rdx rsi]
; byrRegs -[rcx]
test rbx, rbx
- je SHORT G_M58175_IG17
+ je SHORT G_M58175_IG19
movzx rcx, byte ptr [rbx+0x0E]
and ecx, 63
- or byte ptr [rbp+0x0E], cl
+ or byte ptr [r14+0x0E], cl
add edi, dword ptr [rbx+0x08]
- mov dword ptr [rbp+0x08], edi
- lea rcx, bword ptr [rbp+0x20]
+ mov dword ptr [r14+0x08], edi
+ lea rcx, bword ptr [r14+0x20]
; byrRegs +[rcx]
mov rdx, rbx
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rdx rbx]
; byrRegs -[rcx]
- ;; size=133 bbWeight=0.50 PerfScore 13.75
-G_M58175_IG17: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
- mov rax, rbp
- ; gcrRegs +[rax]
- jmp SHORT G_M58175_IG19
- ;; size=5 bbWeight=0.50 PerfScore 1.12
-G_M58175_IG18: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbp] +[rbx]
+ ;; size=138 bbWeight=0.50 PerfScore 13.75
+G_M58175_IG19: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
...
+3 (+3.23%) : 211300.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
@@ -14,14 +14,16 @@
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlDocument>
; V04 tmp2 [V04,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
; V05 tmp3 [V05,T04] ( 3, 1.25) long -> rdx "fgMakeTemp is creating a new local variable"
-; V06 tmp4 [V06,T00] ( 6, 8.75) ref -> rcx class-hnd "spilling QMark2" <System.Xml.XmlElement>
-; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> rcx single-def "argument with side effect"
+; V06 tmp4 [V06,T01] ( 5, 5.75) ref -> rcx class-hnd "spilling QMark2" <System.Xml.XmlElement>
+; V07 tmp5 [V07,T00] ( 3, 6 ) ref -> rcx single-def "argument with side effect"
+; V08 cse0 [V08,T05] ( 3, 1 ) long -> rbx "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M56653_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- sub rsp, 40
- ;; size=4 bbWeight=1 PerfScore 0.25
+ push rbx
+ sub rsp, 32
+ ;; size=5 bbWeight=1 PerfScore 1.25
G_M56653_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
mov rcx, gword ptr [rcx+0x08]
@@ -37,10 +39,11 @@ G_M56653_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
je SHORT G_M56653_IG07
;; size=30 bbWeight=1 PerfScore 10.75
G_M56653_IG03: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
+ mov rbx, qword ptr [rcx]
mov rdx, 0xD1FFAB1E ; System.Xml.XmlElement
- cmp qword ptr [rcx], rdx
+ cmp rbx, rdx
je SHORT G_M56653_IG05
- ;; size=15 bbWeight=0.25 PerfScore 1.06
+ ;; size=18 bbWeight=0.25 PerfScore 0.88
G_M56653_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
mov rcx, rdx
@@ -52,26 +55,27 @@ G_M56653_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {},
mov rcx, rax
; gcrRegs +[rcx]
;; size=14 bbWeight=0.12 PerfScore 0.22
-G_M56653_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M56653_IG05: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- mov rax, qword ptr [rcx]
- mov rax, qword ptr [rax+0x70]
- ;; size=7 bbWeight=1 PerfScore 4.00
-G_M56653_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
+ mov rax, qword ptr [rbx+0x70]
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M56653_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 32
+ pop rbx
tail.jmp [rax+0x18]<unknown method>
- ;; size=8 bbWeight=1 PerfScore 2.25
+ ;; size=9 bbWeight=0.50 PerfScore 1.38
G_M56653_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx]
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M56653_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 32
+ pop rbx
ret
- ;; size=5 bbWeight=0.50 PerfScore 0.62
+ ;; size=6 bbWeight=0.50 PerfScore 0.88
-; Total bytes of code 93, prolog size 4, PerfScore 19.28, instruction count 23, allocated bytes for code 93 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
+; Total bytes of code 96, prolog size 5, PerfScore 16.47, instruction count 26, allocated bytes for code 96 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -79,9 +83,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+19 (+4.32%) : 208559.dasm - System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
@@ -19,7 +19,7 @@
; V09 arg9 [V09,T21] ( 2, 1.50) byref -> [rsp+0xC8] single-def
; V10 arg10 [V10,T18] ( 3, 1.50) byref -> r13 single-def
; V11 loc0 [V11,T16] ( 5, 2.50) int -> [rsp+0x34]
-; V12 loc1 [V12,T05] ( 9, 15 ) int -> rdx
+; V12 loc1 [V12,T05] ( 8, 14.50) int -> rdx
; V13 loc2 [V13,T12] ( 6, 6.50) int -> rax
; V14 loc3 [V14,T00] ( 7, 24.50) int -> rcx
; V15 OutArgs [V15 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -65,18 +65,16 @@ G_M61432_IG02: ; bbWeight=1, gcrefRegs=00A0 {rbp rdi}, byrefRegs=6001 {ra
mov dword ptr [r14], edx
;; size=5 bbWeight=1 PerfScore 1.25
G_M61432_IG03: ; bbWeight=1, gcrefRegs=00A0 {rbp rdi}, byrefRegs=6001 {rax r13 r14}, byref, isz
- mov bword ptr [rsp+0xC8], rax
mov dword ptr [rax], edx
mov edx, dword ptr [rbp+0x20]
test edx, edx
jg SHORT G_M61432_IG06
- ;; size=17 bbWeight=1 PerfScore 5.25
-G_M61432_IG04: ; bbWeight=0.50, gcrefRegs=00A0 {rbp rdi}, byrefRegs=6000 {r13 r14}, byref
- ; byrRegs -[rax]
+ ;; size=9 bbWeight=1 PerfScore 4.25
+G_M61432_IG04: ; bbWeight=0.50, gcrefRegs=00A0 {rbp rdi}, byrefRegs=6001 {rax r13 r14}, byref
xor r10d, r10d
jmp G_M61432_IG10
;; size=8 bbWeight=0.50 PerfScore 1.12
-G_M61432_IG05: ; bbWeight=2, gcrefRegs=00A0 {rbp rdi}, byrefRegs=6000 {r13 r14}, byref
+G_M61432_IG05: ; bbWeight=2, gcrefRegs=00A0 {rbp rdi}, byrefRegs=6001 {rax r13 r14}, byref
mov rcx, gword ptr [rbp+0x18]
; gcrRegs +[rcx]
mov r11d, dword ptr [rdi+0x08]
@@ -93,19 +91,19 @@ G_M61432_IG05: ; bbWeight=2, gcrefRegs=00A0 {rbp rdi}, byrefRegs=6000 {r1
inc dword ptr [r14]
inc edx
;; size=52 bbWeight=2 PerfScore 33.00
-G_M61432_IG06: ; bbWeight=4, gcrefRegs=00A0 {rbp rdi}, byrefRegs=6000 {r13 r14}, byref, isz
+G_M61432_IG06: ; bbWeight=4, gcrefRegs=00A0 {rbp rdi}, byrefRegs=6001 {rax r13 r14}, byref, isz
; gcrRegs -[rcx]
cmp edx, 4
- jge SHORT G_M61432_IG07
+ jge SHORT G_M61432_IG09
test ebx, ebx
jg SHORT G_M61432_IG05
;; size=9 bbWeight=4 PerfScore 10.00
-G_M61432_IG07: ; bbWeight=0.50, gcrefRegs=00A0 {rbp rdi}, byrefRegs=6000 {r13 r14}, byref, isz
- cmp edx, 4
- jge SHORT G_M61432_IG09
+G_M61432_IG07: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=2000 {r13}, byref
+ ; gcrRegs -[rdi]
+ ; byrRegs -[rax r14]
mov dword ptr [rbp+0x20], edx
mov byte ptr [r13], 1
- ;; size=13 bbWeight=0.50 PerfScore 1.62
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
G_M61432_IG08: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 56
pop rbx
@@ -118,7 +116,10 @@ G_M61432_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop r15
ret
;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M61432_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00A0 {rbp rdi}, byrefRegs=6000 {r13 r14}, gcvars, byref
+G_M61432_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00A0 {rbp rdi}, byrefRegs=6001 {rax r13 r14}, gcvars, byref
+ ; gcrRegs +[rdi]
+ ; byrRegs +[rax r14]
+ mov bword ptr [rsp+0xC8], rax
mov r11, gword ptr [rsp+0xA0]
; gcrRegs +[r11]
mov gword ptr [rsp+0x20], r11
@@ -134,29 +135,34 @@ G_M61432_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00A
mov r10, qword ptr [r10+0x58]
call [r10]<unknown method>
; gcrRegs -[rcx rdx r11]
+ ; byrRegs -[rax]
; gcr arg pop 0
add r15d, eax
mov dword ptr [rsp+0x34], eax
sub r12d, eax
xor ecx, ecx
mov dword ptr [rbp+0x20], ecx
+ mov rax, bword ptr [rsp+0xC8]
+ ; byrRegs +[rax]
mov r10d, dword ptr [rsp+0x34]
- ;; size=65 bbWeight=0.50 PerfScore 8.25
-G_M61432_IG10: ; bbWeight=0.50, gcrefRegs=00A0 {rbp rdi}, byrefRegs=6000 {r13 r14}, byref, isz
+ ;; size=81 bbWeight=0.50 PerfScore 9.25
+G_M61432_IG10: ; bbWeight=0.50, gcrefRegs=00A0 {rbp rdi}, byrefRegs=6001 {rax r13 r14}, byref, isz
lea ecx, [4*r12]
cmp ecx, ebx
jge SHORT G_M61432_IG11
mov ebx, ecx
mov byte ptr [r13], 0
mov dword ptr [rsp+0x34], r10d
+ mov bword ptr [rsp+0xC8], rax
jmp SHORT G_M61432_IG12
- ;; size=26 bbWeight=0.50 PerfScore 3.00
-G_M61432_IG11: ; bbWeight=0.50, gcrefRegs=00A0 {rbp rdi}, byrefRegs=6000 {r13 r14}, byref
+ ;; size=34 bbWeight=0.50 PerfScore 3.50
+G_M61432_IG11: ; bbWeight=0.50, gcrefRegs=00A0 {rbp rdi}, byrefRegs=6001 {rax r13 r14}, byref
mov byte ptr [r13], 1
mov dword ptr [rsp+0x34], r10d
- ;; size=10 bbWeight=0.50 PerfScore 1.00
+ mov bword ptr [rsp+0xC8], rax
+ ;; size=18 bbWeight=0.50 PerfScore 1.50
G_M61432_IG12: ; bbWeight=0.50, gcrefRegs=00A0 {rbp rdi}, byrefRegs=4000 {r14}, byref, isz
- ; byrRegs -[r13]
+ ; byrRegs -[rax r13]
add dword ptr [r14], ebx
mov r14, gword ptr [rsp+0xA0]
; gcrRegs +[r14]
@@ -230,7 +236,7 @@ G_M61432_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 440, prolog size 68, PerfScore 140.38, instruction count 133, allocated bytes for code 440 (MethodHash=b6eb1007) for method System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
+; Total bytes of code 459, prolog size 68, PerfScore 140.75, instruction count 134, allocated bytes for code 459 (MethodHash=b6eb1007) for method System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
; ============================================================
Unwind Info:
libraries_tests.run.windows.x64.Release.mch
-35 (-26.52%) : 524400.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (Tier1)
@@ -5,28 +5,29 @@
; optimized using Dynamic PGO
; rsp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 8
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 8
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-; V01 arg1 [V01,T02] ( 4, 8 ) byref -> rdx ld-addr-op single-def
-; V02 loc0 [V02,T03] ( 7, 7 ) int -> registers
+; V00 arg0 [V00,T00] ( 4, 8 ) byref -> rcx ld-addr-op single-def
+; V01 arg1 [V01,T01] ( 4, 8 ) byref -> rdx ld-addr-op single-def
+; V02 loc0 [V02,T02] ( 7, 7 ) int -> r10
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 6, 12 ) int -> r10 "dup spill"
-; V05 tmp2 [V05,T07] ( 3, 3 ) byref -> r8 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T06] ( 5, 4 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T08] ( 3, 3 ) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T05] ( 6, 5 ) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
+; V04 tmp1 [V04,T04] ( 2, 4 ) int -> r10 "dup spill"
+; V05 tmp2 [V05,T09] ( 2, 2 ) byref -> r8 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T05] ( 4, 3 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T10] ( 2, 2 ) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 4 ) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[uint]>
;* V10 tmp7 [V10 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[uint]>
-; V11 cse0 [V11,T04] ( 6, 6 ) long -> r11 multi-def "CSE - aggressive"
+; V11 cse0 [V11,T06] ( 3, 3 ) int -> r11 "CSE - aggressive"
+; V12 cse1 [V12,T07] ( 3, 3 ) int -> r9 "CSE - aggressive"
+; V13 cse2 [V13,T08] ( 3, 3 ) long -> r9 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbx
- sub rsp, 32
- ;; size=5 bbWeight=1 PerfScore 1.25
+ sub rsp, 40
+ ;; size=4 bbWeight=1 PerfScore 0.25
G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, byref, isz
; byrRegs +[rcx rdx]
mov rax, bword ptr [rdx]
@@ -43,53 +44,41 @@ G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, b
;; size=19 bbWeight=1 PerfScore 9.50
G_M264_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0101 {rax r8}, byref, isz
dec r10d
- mov r9d, r10d
- test r9d, r9d
- jl SHORT G_M264_IG04
- cmp r9d, ecx
- jae SHORT G_M264_IG10
- mov r11d, r9d
- mov ebx, dword ptr [r8+4*r11]
- cmp r9d, edx
- jae SHORT G_M264_IG10
- cmp ebx, dword ptr [rax+4*r11]
- je SHORT G_M264_IG07
- ;; size=34 bbWeight=1 PerfScore 10.50
-G_M264_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0101 {rax r8}, byref, isz
- test r10d, r10d
- jl SHORT G_M264_IG12
+ js SHORT G_M264_IG06
cmp r10d, ecx
jae SHORT G_M264_IG10
- mov r11d, r10d
- mov ecx, dword ptr [r8+4*r11]
+ mov r9d, r10d
+ mov r11d, dword ptr [r8+4*r9]
cmp r10d, edx
jae SHORT G_M264_IG10
- cmp ecx, dword ptr [rax+4*r11]
- jb SHORT G_M264_IG08
- ;; size=28 bbWeight=1 PerfScore 10.00
-G_M264_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r9d, dword ptr [rax+4*r9]
+ cmp r11d, r9d
+ je SHORT G_M264_IG03
+ cmp r9d, r11d
+ ja SHORT G_M264_IG08
+ ;; size=36 bbWeight=1 PerfScore 10.50
+G_M264_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rax r8]
mov eax, 1
;; size=5 bbWeight=1 PerfScore 0.25
-G_M264_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
- pop rbx
+G_M264_IG05: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 40
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
-G_M264_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0101 {rax r8}, gcvars, byref, isz
- ; byrRegs +[rax r8]
- mov r10d, r9d
- jmp SHORT G_M264_IG03
- ;; size=5 bbWeight=0.50 PerfScore 1.12
-G_M264_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rax r8]
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M264_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M264_IG07: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 40
+ ret
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M264_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1
;; size=5 bbWeight=0 PerfScore 0.00
G_M264_IG09: ; bbWeight=0, epilog, nogc, extend
- add rsp, 32
- pop rbx
+ add rsp, 40
ret
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=0 PerfScore 0.00
G_M264_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
@@ -97,18 +86,10 @@ G_M264_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
G_M264_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp ecx, edx
jl SHORT G_M264_IG08
- jmp SHORT G_M264_IG05
- ;; size=6 bbWeight=0 PerfScore 0.00
-G_M264_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- xor eax, eax
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M264_IG13: ; bbWeight=0, epilog, nogc, extend
- add rsp, 32
- pop rbx
- ret
+ jmp SHORT G_M264_IG04
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 132, prolog size 5, PerfScore 34.38, instruction count 49, allocated bytes for code 132 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 97, prolog size 4, PerfScore 23.25, instruction count 34, allocated bytes for code 97 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================
Unwind Info:
@@ -116,10 +97,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
-32 (-26.23%) : 425263.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
@@ -8,15 +8,17 @@
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 26
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 5, 6.62) ref -> rcx class-hnd single-def <System.String>
-; V01 arg1 [V01,T01] ( 6, 9.23) ref -> rdx class-hnd single-def <System.String>
-; V02 arg2 [V02,T05] ( 4, 5.62) int -> r8 single-def
-; V03 arg3 [V03,T06] ( 5, 4.08) int -> r9 single-def
-; V04 loc0 [V04,T04] ( 6, 7.77) int -> r10
-; V05 loc1 [V05,T00] ( 11, 19.15) int -> r11
+; V00 arg0 [V00,T03] ( 4, 5.69) ref -> rcx class-hnd single-def <System.String>
+; V01 arg1 [V01,T01] ( 4, 7.38) ref -> rdx class-hnd single-def <System.String>
+; V02 arg2 [V02,T05] ( 3, 4.69) int -> r8 single-def
+; V03 arg3 [V03,T08] ( 5, 4.08) int -> r9 single-def
+; V04 loc0 [V04,T04] ( 5, 6.77) int -> r10
+; V05 loc1 [V05,T00] ( 7, 15.38) int -> r11
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T07] ( 5, 5.69) int -> rax "CSE - aggressive"
-; V08 cse1 [V08,T02] ( 6, 10.85) int -> rsi multi-def "CSE - aggressive"
+; V07 cse0 [V07,T06] ( 3, 6.31) int -> rsi "CSE - aggressive"
+; V08 cse1 [V08,T07] ( 3, 6.31) int -> rbx "CSE - aggressive"
+; V09 cse2 [V09,T02] ( 3, 8.08) int -> rsi "CSE - aggressive"
+; V10 cse3 [V10,T09] ( 4, 4.77) int -> rax "CSE - aggressive"
;
; Lcl frame size = 40
@@ -39,59 +41,47 @@ G_M6389_IG03: ; bbWeight=1.77, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {
;; size=3 bbWeight=1.77 PerfScore 0.44
G_M6389_IG04: ; bbWeight=2.77, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
cmp r11d, r10d
- jge SHORT G_M6389_IG06
+ jge SHORT G_M6389_IG08
;; size=5 bbWeight=2.77 PerfScore 3.46
G_M6389_IG05: ; bbWeight=2.69, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
cmp r11d, eax
- jae SHORT G_M6389_IG11
+ jae SHORT G_M6389_IG10
mov ebx, r11d
movzx rbx, word ptr [rcx+2*rbx+0x0C]
lea esi, [r8+r11]
cmp esi, dword ptr [rdx+0x08]
- jae SHORT G_M6389_IG11
- cmp bx, word ptr [rdx+2*rsi+0x0C]
+ jae SHORT G_M6389_IG10
+ movzx rsi, word ptr [rdx+2*rsi+0x0C]
+ cmp ebx, esi
je SHORT G_M6389_IG03
- ;; size=29 bbWeight=2.69 PerfScore 32.31
-G_M6389_IG06: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
- cmp r11d, r10d
- jge SHORT G_M6389_IG09
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M6389_IG07: ; bbWeight=0.92, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
- cmp r11d, eax
- jae SHORT G_M6389_IG11
- mov eax, r11d
- movzx rax, word ptr [rcx+2*rax+0x0C]
- lea esi, [r8+r11]
- cmp esi, dword ptr [rdx+0x08]
- jae SHORT G_M6389_IG11
- mov r9d, esi
- movzx rcx, word ptr [rdx+2*r9+0x0C]
- ; gcrRegs -[rcx]
- sub eax, ecx
- ;; size=33 bbWeight=0.92 PerfScore 9.69
-G_M6389_IG08: ; bbWeight=0.92, epilog, nogc, extend
+ ;; size=31 bbWeight=2.69 PerfScore 30.29
+G_M6389_IG06: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx rdx]
+ mov eax, ebx
+ sub eax, esi
+ ;; size=4 bbWeight=0.92 PerfScore 0.46
+G_M6389_IG07: ; bbWeight=0.92, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=0.92 PerfScore 2.08
-G_M6389_IG09: ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rdx]
+G_M6389_IG08: ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub eax, r9d
;; size=3 bbWeight=0.08 PerfScore 0.02
-G_M6389_IG10: ; bbWeight=0.08, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.08, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=0.08 PerfScore 0.17
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 122, prolog size 6, PerfScore 56.67, instruction count 44, allocated bytes for code 122 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
+; Total bytes of code 90, prolog size 6, PerfScore 44.17, instruction count 35, allocated bytes for code 90 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
; ============================================================
Unwind Info:
-30 (-23.44%) : 471651.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (Tier1)
@@ -5,116 +5,93 @@
; optimized using Dynamic PGO
; rsp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 522
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 522
; Final local variable assignments
;
; V00 arg0 [V00,T05] ( 4, 8 ) byref -> rcx ld-addr-op single-def
; V01 arg1 [V01,T06] ( 4, 8 ) byref -> rdx ld-addr-op single-def
-; V02 loc0 [V02,T00] ( 7, 48.52) int -> registers
+; V02 loc0 [V02,T00] ( 7, 48.52) int -> r10
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 36.28) int -> r9 "dup spill"
-; V05 tmp2 [V05,T07] ( 3, 9.13) byref -> r10 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 10.38) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp1 [V04,T01] ( 2, 32.62) int -> r10 "dup spill"
+; V05 tmp2 [V05,T07] ( 3, 9.13) byref -> rdx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 10.02) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
; V07 tmp4 [V07,T08] ( 3, 9.13) byref -> r8 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 11.13) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 10.77) int -> rax "field V01._length (fldOffset=0x8)" P-INDEP
;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[uint]>
;* V10 tmp7 [V10 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[uint]>
-; V11 cse0 [V11,T02] ( 6, 24.39) long -> r11 multi-def "CSE - aggressive"
+; V11 cse0 [V11,T02] ( 5, 24.02) long -> r9 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbx
- sub rsp, 32
- ;; size=5 bbWeight=1 PerfScore 1.25
+ sub rsp, 40
+ ;; size=4 bbWeight=1 PerfScore 0.25
G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, byref, isz
; byrRegs +[rcx rdx]
mov r8, bword ptr [rdx]
; byrRegs +[r8]
- mov edx, dword ptr [rdx+0x08]
- ; byrRegs -[rdx]
- mov r10, bword ptr [rcx]
- ; byrRegs +[r10]
+ mov eax, dword ptr [rdx+0x08]
+ mov rdx, bword ptr [rcx]
mov ecx, dword ptr [rcx+0x08]
; byrRegs -[rcx]
- cmp ecx, edx
- jne SHORT G_M264_IG13
+ cmp ecx, eax
+ jne SHORT G_M264_IG11
;; size=16 bbWeight=1 PerfScore 9.25
-G_M264_IG03: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref
- mov r9d, edx
+G_M264_IG03: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0104 {rdx r8}, byref
+ mov r10d, eax
;; size=3 bbWeight=0.75 PerfScore 0.19
-G_M264_IG04: ; bbWeight=8.16, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz
- dec r9d
- mov eax, r9d
- test eax, eax
- jl SHORT G_M264_IG06
- ;; size=10 bbWeight=8.16 PerfScore 14.27
-G_M264_IG05: ; bbWeight=7.77, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz
- cmp eax, ecx
- jae SHORT G_M264_IG16
- mov r11d, eax
- mov ebx, dword ptr [r10+4*r11]
- cmp eax, edx
- jae SHORT G_M264_IG16
- cmp ebx, dword ptr [r8+4*r11]
- je SHORT G_M264_IG09
- ;; size=21 bbWeight=7.77 PerfScore 67.97
-G_M264_IG06: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz
- test r9d, r9d
- jge SHORT G_M264_IG10
- ;; size=5 bbWeight=0.75 PerfScore 0.93
-G_M264_IG07: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r8 r10]
- xor eax, eax
- ;; size=2 bbWeight=0.39 PerfScore 0.10
-G_M264_IG08: ; bbWeight=0.39, epilog, nogc, extend
- add rsp, 32
- pop rbx
- ret
- ;; size=6 bbWeight=0.39 PerfScore 0.68
-G_M264_IG09: ; bbWeight=3.88, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, gcvars, byref, isz
- ; byrRegs +[r8 r10]
- mov r9d, eax
- jmp SHORT G_M264_IG04
- ;; size=5 bbWeight=3.88 PerfScore 8.74
-G_M264_IG10: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz
- cmp r9d, ecx
- jae SHORT G_M264_IG16
- mov r11d, r9d
- mov eax, dword ptr [r10+4*r11]
- cmp r9d, edx
- jae SHORT G_M264_IG16
- cmp eax, dword ptr [r8+4*r11]
- jb SHORT G_M264_IG14
- ;; size=23 bbWeight=0.36 PerfScore 3.15
-G_M264_IG11: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r8 r10]
+G_M264_IG04: ; bbWeight=8.16, gcrefRegs=0000 {}, byrefRegs=0104 {rdx r8}, byref, isz
+ dec r10d
+ js SHORT G_M264_IG09
+ ;; size=5 bbWeight=8.16 PerfScore 10.19
+G_M264_IG05: ; bbWeight=7.77, gcrefRegs=0000 {}, byrefRegs=0104 {rdx r8}, byref, isz
+ cmp r10d, ecx
+ jae SHORT G_M264_IG14
+ mov r9d, r10d
+ mov r11d, dword ptr [rdx+4*r9]
+ cmp r10d, eax
+ jae SHORT G_M264_IG14
+ cmp r11d, dword ptr [r8+4*r9]
+ je SHORT G_M264_IG04
+ ;; size=23 bbWeight=7.77 PerfScore 67.97
+G_M264_IG06: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0104 {rdx r8}, byref, isz
+ mov eax, dword ptr [rdx+4*r9]
+ cmp eax, dword ptr [r8+4*r9]
+ jb SHORT G_M264_IG12
+ ;; size=10 bbWeight=0.36 PerfScore 2.16
+G_M264_IG07: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[rdx r8]
mov eax, 1
;; size=5 bbWeight=0.32 PerfScore 0.08
-G_M264_IG12: ; bbWeight=0.32, epilog, nogc, extend
- add rsp, 32
- pop rbx
+G_M264_IG08: ; bbWeight=0.32, epilog, nogc, extend
+ add rsp, 40
ret
- ;; size=6 bbWeight=0.32 PerfScore 0.56
-G_M264_IG13: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- cmp ecx, edx
- jge SHORT G_M264_IG11
+ ;; size=5 bbWeight=0.32 PerfScore 0.40
+G_M264_IG09: ; bbWeight=0.75, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.75 PerfScore 0.19
+G_M264_IG10: ; bbWeight=0.75, epilog, nogc, extend
+ add rsp, 40
+ ret
+ ;; size=5 bbWeight=0.75 PerfScore 0.93
+G_M264_IG11: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ cmp ecx, eax
+ jge SHORT G_M264_IG07
;; size=4 bbWeight=0.25 PerfScore 0.32
-G_M264_IG14: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M264_IG12: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, -1
;; size=5 bbWeight=0.29 PerfScore 0.07
-G_M264_IG15: ; bbWeight=0.29, epilog, nogc, extend
- add rsp, 32
- pop rbx
+G_M264_IG13: ; bbWeight=0.29, epilog, nogc, extend
+ add rsp, 40
ret
- ;; size=6 bbWeight=0.29 PerfScore 0.51
-G_M264_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=0.29 PerfScore 0.37
+G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 128, prolog size 5, PerfScore 108.07, instruction count 49, allocated bytes for code 128 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 98, prolog size 4, PerfScore 92.37, instruction count 34, allocated bytes for code 98 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================
Unwind Info:
@@ -122,10 +99,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+12 (+6.45%) : 618312.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
@@ -9,20 +9,20 @@
; 4 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 9, 5.23) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V00 this [V00,T00] ( 9, 5.23) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Version>
-; V02 loc1 [V02,T03] ( 5, 5 ) ref -> rsi class-hnd <System.Version>
+; V02 loc1 [V02,T06] ( 5, 3 ) ref -> rsi class-hnd <System.Version>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V06 tmp2 [V06,T06] ( 5, 4 ) ref -> rdi class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
-; V07 tmp3 [V07,T04] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1"
+; V06 tmp2 [V06,T05] ( 5, 4 ) ref -> rdi class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
+; V07 tmp3 [V07,T03] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1"
; V08 tmp4 [V08,T07] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable"
-; V09 tmp5 [V09,T00] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V09 tmp5 [V09,T01] ( 5, 5.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
-; V11 tmp7 [V11,T05] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1"
+; V11 tmp7 [V11,T04] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1"
; V12 tmp8 [V12,T08] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable"
-; V13 tmp9 [V13,T01] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V13 tmp9 [V13,T02] ( 5, 5.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;
; Lcl frame size = 32
@@ -41,11 +41,11 @@ G_M53393_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov rdi, gword ptr [rbx+0x88]
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M53393_IG15
+ je SHORT G_M53393_IG13
;; size=14 bbWeight=1 PerfScore 3.50
G_M53393_IG03: ; bbWeight=0.94, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
test byte ptr [rdi+0x18], 2
- je SHORT G_M53393_IG15
+ je SHORT G_M53393_IG13
;; size=6 bbWeight=0.94 PerfScore 3.76
G_M53393_IG04: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [rdi+0x08]
@@ -53,32 +53,29 @@ G_M53393_IG04: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
mov rax, rdx
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M53393_IG08
+ je SHORT G_M53393_IG07
;; size=12 bbWeight=1 PerfScore 3.50
-G_M53393_IG05: ; bbWeight=0.50, gcrefRegs=000D {rax rdx rbx}, byrefRegs=0000 {}, byref, isz
+G_M53393_IG05: ; bbWeight=0.50, gcrefRegs=000D {rax rdx rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi rdi]
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]
cmp qword ptr [rax], rcx
- je SHORT G_M53393_IG07
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M53393_IG06: ; bbWeight=0.25, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
+ je G_M53393_IG15
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M53393_IG06: ; bbWeight=0.25, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M53393_IG07: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
- mov rsi, gword ptr [rax+0x20]
- ; gcrRegs +[rsi]
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M53393_IG08: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
+ jmp SHORT G_M53393_IG15
+ ;; size=7 bbWeight=0.25 PerfScore 0.75
+G_M53393_IG07: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax] +[rsi]
test rsi, rsi
- jne SHORT G_M53393_IG13
+ jne SHORT G_M53393_IG11
cmp gword ptr [rbx+0x90], 0
- je SHORT G_M53393_IG16
+ je SHORT G_M53393_IG14
;; size=15 bbWeight=1 PerfScore 5.25
-G_M53393_IG09: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M53393_IG08: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x90]
; gcrRegs +[rcx]
mov rdx, gword ptr [rcx+0x08]
@@ -86,37 +83,34 @@ G_M53393_IG09: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
mov rax, rdx
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M53393_IG13
+ je SHORT G_M53393_IG11
;; size=19 bbWeight=1 PerfScore 5.50
-G_M53393_IG10: ; bbWeight=0.50, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
+G_M53393_IG09: ; bbWeight=0.50, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx rbx rsi]
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]
cmp qword ptr [rax], rcx
- je SHORT G_M53393_IG12
+ je SHORT G_M53393_IG16
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M53393_IG11: ; bbWeight=0.25, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
+G_M53393_IG10: ; bbWeight=0.25, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M53393_IG12: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- mov rsi, gword ptr [rax+0x20]
- ; gcrRegs +[rsi]
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M53393_IG13: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+ jmp SHORT G_M53393_IG16
+ ;; size=7 bbWeight=0.25 PerfScore 0.75
+G_M53393_IG11: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax] +[rsi]
mov rax, rsi
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
-G_M53393_IG14: ; bbWeight=1, epilog, nogc, extend
+G_M53393_IG12: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=1 PerfScore 2.75
-G_M53393_IG15: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M53393_IG13: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] +[rbx]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -128,7 +122,7 @@ G_M53393_IG15: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=004
; gcrRegs +[rdi]
jmp G_M53393_IG04
;; size=27 bbWeight=0.06 PerfScore 0.45
-G_M53393_IG16: ; bbWeight=0.05, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M53393_IG14: ; bbWeight=0.05, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
lea rdx, bword ptr [rbx+0x90]
; byrRegs +[rdx]
@@ -139,10 +133,22 @@ G_M53393_IG16: ; bbWeight=0.05, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcrRegs -[rcx]
; byrRegs -[rdx]
; gcr arg pop 0
- jmp SHORT G_M53393_IG09
+ jmp SHORT G_M53393_IG08
;; size=24 bbWeight=0.05 PerfScore 0.32
+G_M53393_IG15: ; bbWeight=0, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rsi] +[rax]
+ mov rsi, gword ptr [rax+0x20]
+ ; gcrRegs +[rsi]
+ jmp SHORT G_M53393_IG07
+ ;; size=6 bbWeight=0 PerfScore 0.00
+G_M53393_IG16: ; bbWeight=0, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx rsi]
+ mov rsi, gword ptr [rax+0x20]
+ ; gcrRegs +[rsi]
+ jmp SHORT G_M53393_IG11
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 186, prolog size 7, PerfScore 37.53, instruction count 50, allocated bytes for code 186 (MethodHash=53202f6e) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
+; Total bytes of code 198, prolog size 7, PerfScore 34.53, instruction count 54, allocated bytes for code 198 (MethodHash=53202f6e) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
; ============================================================
Unwind Info:
+40 (+7.48%) : 356645.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
@@ -10,33 +10,33 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 18, 9.31) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Buffers.SharedArrayPoolPartitions+Partition>
-; V01 arg1 [V01,T03] ( 4, 2.53) int -> rsi single-def
-; V02 arg2 [V02,T04] ( 3, 2 ) int -> rdi single-def
-; V03 arg3 [V03,T02] ( 5, 3.59) int -> rbx single-def
+; V01 arg1 [V01,T04] ( 4, 2.53) int -> rsi single-def
+; V02 arg2 [V02,T05] ( 3, 2 ) int -> rdi single-def
+; V03 arg3 [V03,T03] ( 5, 3.59) int -> rbx single-def
; V04 arg4 [V04,T21] ( 1, 0 ) int -> [rbp+0x30] single-def
;* V05 loc0 [V05 ] ( 0, 0 ) int -> zero-ref
; V06 loc1 [V06,T11] ( 4, 2 ) int -> r14
;* V07 loc2 [V07,T20] ( 0, 0 ) ref -> zero-ref class-hnd exact EH-live single-def <System.Buffers.SharedArrayPoolPartitions+Partition>
; V08 loc3 [V08 ] ( 6, 2.66) ubyte -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op
; V09 loc4 [V09,T14] ( 3, 1.06) ref -> rsi class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V10 loc5 [V10,T09] ( 11, 2.53) int -> registers
+; V10 loc5 [V10,T02] ( 11, 5.66) int -> registers
; V11 loc6 [V11,T13] ( 5, 1.06) ref -> rbx class-hnd <System.Array>
; V12 loc7 [V12,T10] ( 4, 2.12) int -> rbx
; V13 OutArgs [V13 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V14 tmp1 [V14,T16] ( 2, 1.06) int -> r14
;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref
-; V17 tmp4 [V17,T15] ( 3, 1.06) int -> rax
+; V17 tmp4 [V17,T15] ( 3, 1.06) int -> rsi
; V18 tmp5 [V18,T01] ( 3, 6 ) int -> r15 "impSpillLclRefs"
-; V19 tmp6 [V19,T06] ( 3, 3.19) ref -> rdx class-hnd "impSpillLclRefs" <<unknown class>>
+; V19 tmp6 [V19,T07] ( 3, 3.19) ref -> rdx class-hnd "impSpillLclRefs" <<unknown class>>
; V20 tmp7 [V20,T18] ( 2, 0 ) int -> r8 "impAppendStmt"
;* V21 tmp8 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp9 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V23 tmp10 [V23,T19] ( 2, 0 ) int -> r9 "Inlining Arg"
-; V24 tmp11 [V24,T07] ( 3, 3.19) ref -> rax "arr expr"
-; V25 tmp12 [V25,T08] ( 3, 3.19) int -> rdx "index expr"
+; V24 tmp11 [V24,T08] ( 3, 3.19) ref -> rax "arr expr"
+; V25 tmp12 [V25,T09] ( 3, 3.19) int -> rdx "index expr"
; V26 PSPSym [V26,T17] ( 1, 1 ) long -> [rbp-0x48] do-not-enreg[V] "PSPSym"
-; V27 cse0 [V27,T05] ( 4, 3.19) int -> rbx "CSE - aggressive"
+; V27 cse0 [V27,T06] ( 4, 3.19) int -> rbx "CSE - aggressive"
; V28 cse1 [V28,T12] ( 3, 1.59) int -> rdx "CSE - moderate"
;
; Lcl frame size = 64
@@ -111,126 +111,37 @@ G_M62513_IG05: ; bbWeight=0.53, gcrefRegs=0002 {rcx}, byrefRegs=0000 {},
; gcrRegs +[rsi]
mov r15d, 1
cmp ebx, 1
- je SHORT G_M62513_IG14
+ je G_M62513_IG16
cmp ebx, 2
je SHORT G_M62513_IG11
- ;; size=94 bbWeight=0.53 PerfScore 12.35
-G_M62513_IG06: ; bbWeight=1.06, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=98 bbWeight=0.53 PerfScore 12.35
+G_M62513_IG06: ; bbWeight=1.06, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref
mov ebx, dword ptr [rcx+0x14]
test ebx, ebx
- jle SHORT G_M62513_IG08
- ;; size=7 bbWeight=1.06 PerfScore 3.45
-G_M62513_IG07: ; bbWeight=1, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
+ jle G_M62513_IG20
+ ;; size=11 bbWeight=1.06 PerfScore 3.45
+G_M62513_IG07: ; bbWeight=1, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref
lea edx, [r15-0x01]
mov r13d, edx
test r15d, r15d
- jg SHORT G_M62513_IG16
- ;; size=12 bbWeight=1 PerfScore 2.00
-G_M62513_IG08: ; bbWeight=0.53, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jg G_M62513_IG17
+ ;; size=16 bbWeight=1 PerfScore 2.00
+G_M62513_IG08: ; bbWeight=0.47, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
- test ebx, ebx
- jle SHORT G_M62513_IG15
- ;; size=4 bbWeight=0.53 PerfScore 0.66
-G_M62513_IG09: ; bbWeight=0.47, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov eax, r14d
- sar eax, 31
- and eax, 3
- add eax, r14d
- sar eax, 2
- add eax, dword ptr [rcx+0x18]
- ;; size=18 bbWeight=0.47 PerfScore 2.23
-G_M62513_IG10: ; bbWeight=0.53, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov dword ptr [rcx+0x18], eax
- jmp G_M62513_IG22
- ;; size=8 bbWeight=0.53 PerfScore 1.59
-G_M62513_IG11: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rsi]
- mov r13d, 32
- mov eax, 33
- cmp dword ptr [rbp+0x30], 0x4000
- cmovg r13d, eax
- cmp dword ptr [rcx+0x10], 16
- mov r15d, r13d
- jle SHORT G_M62513_IG06
- inc r15d
- cmp dword ptr [rcx+0x10], 32
+ mov esi, r14d
+ sar esi, 31
+ and esi, 3
+ add esi, r14d
+ sar esi, 2
+ add esi, dword ptr [rcx+0x18]
mov rcx, gword ptr [rbp+0x10]
- jle SHORT G_M62513_IG06
- inc r15d
- jmp SHORT G_M62513_IG06
- ;; size=49 bbWeight=0 PerfScore 0.00
-G_M62513_IG12: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi]
+ ;; size=22 bbWeight=0.47 PerfScore 2.70
+G_M62513_IG09: ; bbWeight=0.53, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
mov dword ptr [rcx+0x18], esi
jmp G_M62513_IG22
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M62513_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx]
- call [System.Threading.Monitor:ThrowLockTakenException()]
- ; gcr arg pop 0
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M62513_IG14: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rcx rsi]
- mov r15d, 2
- jmp SHORT G_M62513_IG06
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M62513_IG15: ; bbWeight=0.06, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rsi]
- xor eax, eax
- jmp SHORT G_M62513_IG10
- ;; size=4 bbWeight=0.06 PerfScore 0.14
-G_M62513_IG16: ; bbWeight=0.53, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rsi]
- mov rdx, gword ptr [rcx+0x08]
- ; gcrRegs +[rdx]
- dec ebx
- mov dword ptr [rcx+0x14], ebx
- cmp ebx, dword ptr [rdx+0x08]
- jae SHORT G_M62513_IG20
- mov eax, ebx
- mov rbx, gword ptr [rdx+8*rax+0x10]
- ; gcrRegs +[rbx]
- test rbx, rbx
- jne SHORT G_M62513_IG18
- ;; size=26 bbWeight=0.53 PerfScore 5.71
-G_M62513_IG17: ; bbWeight=2.12, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx rdx]
- mov rcx, 0xD1FFAB1E
- ; gcrRegs +[rcx]
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx]
- ; gcr arg pop 0
- ;; size=26 bbWeight=2.12 PerfScore 7.44
-G_M62513_IG18: ; bbWeight=0.53, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov rcx, gword ptr [rbp+0x10]
- ; gcrRegs +[rcx]
- mov rax, gword ptr [rcx+0x08]
- ; gcrRegs +[rax]
- mov edx, dword ptr [rcx+0x14]
- cmp edx, dword ptr [rax+0x08]
- jae SHORT G_M62513_IG20
- xor r8, r8
- ; gcrRegs +[r8]
- mov gword ptr [rax+8*rdx+0x10], r8
- cmp byte ptr [rsi+0x9D], 0
- jne SHORT G_M62513_IG21
- mov r15d, r13d
- jmp G_M62513_IG06
- ;; size=41 bbWeight=0.53 PerfScore 8.77
-G_M62513_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rcx rbx rsi r8]
- call CORINFO_HELP_OVERFLOW
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M62513_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M62513_IG21: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx rsi]
+ ;; size=8 bbWeight=0.53 PerfScore 1.59
+G_M62513_IG10: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx] +[rbx rsi]
mov rcx, rbx
; gcrRegs +[rcx]
mov rax, qword ptr [rbx]
@@ -241,7 +152,7 @@ G_M62513_IG21: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
mov r8d, eax
mov ecx, dword ptr [rbx+0x08]
test ecx, ecx
- jl SHORT G_M62513_IG19
+ jl SHORT G_M62513_IG14
mov r9d, ecx
mov dword ptr [rsp+0x20], edi
mov rcx, rsi
@@ -253,10 +164,97 @@ G_M62513_IG21: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
mov r15d, r13d
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
+ jmp SHORT G_M62513_IG06
+ ;; size=53 bbWeight=0 PerfScore 0.00
+G_M62513_IG11: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref
+ mov ebx, dword ptr [rbp+0x30]
+ mov r13d, 32
+ mov eax, 33
+ cmp ebx, 0x4000
+ cmovg r13d, eax
+ cmp dword ptr [rcx+0x10], 16
+ mov r15d, r13d
+ jle G_M62513_IG06
+ inc r15d
+ cmp dword ptr [rcx+0x10], 32
+ mov rcx, gword ptr [rbp+0x10]
+ jle G_M62513_IG06
+ inc r15d
jmp G_M62513_IG06
- ;; size=56 bbWeight=0 PerfScore 0.00
-G_M62513_IG22: ; bbWeight=0.53, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ ;; size=62 bbWeight=0 PerfScore 0.00
+G_M62513_IG12: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
+ mov dword ptr [rcx+0x18], esi
+ jmp G_M62513_IG22
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M62513_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx]
+ call [System.Threading.Monitor:ThrowLockTakenException()]
+ ; gcr arg pop 0
+ int3
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M62513_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call CORINFO_HELP_OVERFLOW
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M62513_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M62513_IG16: ; bbWeight=3.12, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rcx rsi]
+ mov r15d, 2
+ jmp G_M62513_IG06
+ ;; size=11 bbWeight=3.12 PerfScore 7.03
+G_M62513_IG17: ; bbWeight=0.53, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
+ mov rdx, gword ptr [rcx+0x08]
+ ; gcrRegs +[rdx]
...
+32 (+11.03%) : 615668.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
@@ -20,16 +20,16 @@
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions>
;* V09 tmp7 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V10 tmp8 [V10,T10] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-; V11 tmp9 [V11,T03] ( 5, 5 ) ubyte -> rsi "Inline stloc first use temp"
+; V11 tmp9 [V11,T06] ( 5, 3 ) ubyte -> rdi "Inline stloc first use temp"
;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V14 tmp12 [V14,T06] ( 5, 4 ) ref -> rdi class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
-; V15 tmp13 [V15,T04] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1"
+; V14 tmp12 [V14,T05] ( 5, 4 ) ref -> rsi class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
+; V15 tmp13 [V15,T03] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1"
; V16 tmp14 [V16,T08] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable"
-; V17 tmp15 [V17,T01] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V18 tmp16 [V18,T05] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1"
+; V17 tmp15 [V17,T01] ( 5, 5.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V18 tmp16 [V18,T04] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1"
; V19 tmp17 [V19,T09] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable"
-; V20 tmp18 [V20,T02] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V20 tmp18 [V20,T02] ( 5, 5.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V21 tmp19 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
; V22 tmp20 [V22 ] ( 4, 2 ) ubyte -> [rsp+0x28] do-not-enreg[X] addr-exposed "field V01.hasValue (fldOffset=0x0)" P-DEP
; V23 tmp21 [V23 ] ( 3, 1 ) ubyte -> [rsp+0x29] do-not-enreg[X] addr-exposed "field V01.value (fldOffset=0x1)" P-DEP
@@ -37,7 +37,7 @@
;
; Lcl frame size = 48
-G_M43884_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M43884_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbx
@@ -45,7 +45,7 @@ G_M43884_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov rbx, rcx
; gcrRegs +[rbx]
;; size=10 bbWeight=1 PerfScore 3.50
-G_M43884_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M43884_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0x68]
; gcrRegs +[rcx]
mov rsi, gword ptr [rcx+0x68]
@@ -54,51 +54,47 @@ G_M43884_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rcx]
mov word ptr [rsp+0x28], cx
cmp byte ptr [rsp+0x28], 0
- jne G_M43884_IG17
+ jne G_M43884_IG15
cmp byte ptr [rsi+0x88], 0
- jne G_M43884_IG19
- xor esi, esi
- ; gcrRegs -[rsi]
- mov rdi, gword ptr [rbx+0x88]
- ; gcrRegs +[rdi]
- test rdi, rdi
- je SHORT G_M43884_IG15
- ;; size=58 bbWeight=1 PerfScore 17.50
-G_M43884_IG03: ; bbWeight=0.94, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
- test byte ptr [rdi+0x18], 2
- je SHORT G_M43884_IG15
+ jne G_M43884_IG17
+ xor edi, edi
+ mov rsi, gword ptr [rbx+0x88]
+ test rsi, rsi
+ je G_M43884_IG13
+ ;; size=62 bbWeight=1 PerfScore 17.50
+G_M43884_IG03: ; bbWeight=0.94, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ test byte ptr [rsi+0x18], 2
+ je SHORT G_M43884_IG13
;; size=6 bbWeight=0.94 PerfScore 3.76
-G_M43884_IG04: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
- mov rdx, gword ptr [rdi+0x08]
+G_M43884_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ mov rdx, gword ptr [rsi+0x08]
; gcrRegs +[rdx]
mov rax, rdx
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M43884_IG08
+ je SHORT G_M43884_IG07
;; size=12 bbWeight=1 PerfScore 3.50
-G_M43884_IG05: ; bbWeight=0.50, gcrefRegs=000D {rax rdx rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
+G_M43884_IG05: ; bbWeight=0.50, gcrefRegs=000D {rax rdx rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi]
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]
cmp qword ptr [rax], rcx
- je SHORT G_M43884_IG07
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ je G_M43884_IG19
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
G_M43884_IG06: ; bbWeight=0.25, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M43884_IG07: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
- movzx rsi, byte ptr [rax+0x94]
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M43884_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M43884_IG19
+ ;; size=10 bbWeight=0.25 PerfScore 0.75
+G_M43884_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- test esi, esi
- jne SHORT G_M43884_IG13
+ test edi, edi
+ jne SHORT G_M43884_IG11
cmp gword ptr [rbx+0x90], 0
- je SHORT G_M43884_IG16
+ je SHORT G_M43884_IG14
;; size=14 bbWeight=1 PerfScore 5.25
-G_M43884_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M43884_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x90]
; gcrRegs +[rcx]
mov rdx, gword ptr [rcx+0x08]
@@ -106,37 +102,35 @@ G_M43884_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov rax, rdx
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M43884_IG13
+ je SHORT G_M43884_IG11
;; size=19 bbWeight=1 PerfScore 5.50
-G_M43884_IG10: ; bbWeight=0.50, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
+G_M43884_IG09: ; bbWeight=0.50, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rbx]
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]
cmp qword ptr [rax], rcx
- je SHORT G_M43884_IG12
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M43884_IG11: ; bbWeight=0.25, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
+ je G_M43884_IG20
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M43884_IG10: ; bbWeight=0.25, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M43884_IG12: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- movzx rsi, byte ptr [rax+0x94]
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M43884_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jmp G_M43884_IG20
+ ;; size=10 bbWeight=0.25 PerfScore 0.75
+G_M43884_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
xor eax, eax
- cmp esi, 2
+ cmp edi, 2
sete al
;; size=8 bbWeight=1 PerfScore 1.50
-G_M43884_IG14: ; bbWeight=1, epilog, nogc, extend
+G_M43884_IG12: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=1 PerfScore 2.75
-G_M43884_IG15: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M43884_IG13: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -144,12 +138,12 @@ G_M43884_IG15: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=000
call [rax]Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:EnsureAttributesAreBound():this
; gcrRegs -[rcx]
; gcr arg pop 0
- mov rdi, gword ptr [rbx+0x88]
- ; gcrRegs +[rdi]
+ mov rsi, gword ptr [rbx+0x88]
+ ; gcrRegs +[rsi]
jmp G_M43884_IG04
;; size=27 bbWeight=0.06 PerfScore 0.45
-G_M43884_IG16: ; bbWeight=0.05, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
+G_M43884_IG14: ; bbWeight=0.05, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rsi]
lea rdx, bword ptr [rbx+0x90]
; byrRegs +[rdx]
mov rcx, rbx
@@ -159,9 +153,9 @@ G_M43884_IG16: ; bbWeight=0.05, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rcx]
; byrRegs -[rdx]
; gcr arg pop 0
- jmp SHORT G_M43884_IG09
+ jmp SHORT G_M43884_IG08
;; size=24 bbWeight=0.05 PerfScore 0.32
-G_M43884_IG17: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M43884_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] +[rsi]
mov cx, word ptr [rsi+0x98]
mov word ptr [rsp+0x28], cx
@@ -172,6 +166,16 @@ G_M43884_IG17: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
; gcr arg pop 0
nop
;; size=30 bbWeight=0 PerfScore 0.00
+G_M43884_IG16: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 48
+ pop rbx
+ pop rsi
+ pop rdi
+ ret
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M43884_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0 PerfScore 0.00
G_M43884_IG18: ; bbWeight=0, epilog, nogc, extend
add rsp, 48
pop rbx
@@ -179,18 +183,18 @@ G_M43884_IG18: ; bbWeight=0, epilog, nogc, extend
pop rdi
ret
;; size=8 bbWeight=0 PerfScore 0.00
-G_M43884_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- xor eax, eax
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M43884_IG20: ; bbWeight=0, epilog, nogc, extend
- add rsp, 48
- pop rbx
- pop rsi
- pop rdi
- ret
- ;; size=8 bbWeight=0 PerfScore 0.00
+G_M43884_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rax rbx]
+ movzx rdi, byte ptr [rax+0x94]
+ jmp G_M43884_IG07
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M43884_IG20: ; bbWeight=0, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
+ movzx rdi, byte ptr [rax+0x94]
+ jmp G_M43884_IG11
+ ;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 290, prolog size 7, PerfScore 52.78, instruction count 77, allocated bytes for code 290 (MethodHash=8b225493) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
+; Total bytes of code 322, prolog size 7, PerfScore 49.78, instruction count 81, allocated bytes for code 322 (MethodHash=8b225493) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
; ============================================================
Unwind Info:
librariestestsnotieredcompilation.run.windows.x64.Release.mch
-32 (-26.23%) : 99226.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
@@ -7,15 +7,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> rcx class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 6, 11 ) ref -> rdx class-hnd single-def <System.String>
-; V02 arg2 [V02,T05] ( 4, 6.50) int -> r8 single-def
-; V03 arg3 [V03,T07] ( 5, 4.50) int -> r9 single-def
-; V04 loc0 [V04,T03] ( 6, 13 ) int -> r10
-; V05 loc1 [V05,T00] ( 11, 27.50) int -> r11
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String>
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rdx class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 3, 6 ) int -> r8 single-def
+; V03 arg3 [V03,T08] ( 5, 4.50) int -> r9 single-def
+; V04 loc0 [V04,T01] ( 5, 12 ) int -> r10
+; V05 loc1 [V05,T00] ( 7, 25 ) int -> r11
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> rax "CSE - aggressive"
-; V08 cse1 [V08,T01] ( 6, 13.50) int -> rsi multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> rsi "CSE - aggressive"
+; V08 cse1 [V08,T06] ( 3, 8.50) int -> rbx "CSE - aggressive"
+; V09 cse2 [V09,T09] ( 4, 6.50) int -> rax "CSE - aggressive"
+; V10 cse3 [V10,T03] ( 3, 12 ) int -> rsi "CSE - aggressive"
;
; Lcl frame size = 40
@@ -38,59 +40,47 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {},
;; size=3 bbWeight=2 PerfScore 0.50
G_M6389_IG04: ; bbWeight=8, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
cmp r11d, r10d
- jge SHORT G_M6389_IG06
+ jge SHORT G_M6389_IG08
;; size=5 bbWeight=8 PerfScore 10.00
G_M6389_IG05: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
cmp r11d, eax
- jae SHORT G_M6389_IG11
+ jae SHORT G_M6389_IG10
mov ebx, r11d
movzx rbx, word ptr [rcx+2*rbx+0x0C]
lea esi, [r8+r11]
cmp esi, dword ptr [rdx+0x08]
- jae SHORT G_M6389_IG11
- cmp bx, word ptr [rdx+2*rsi+0x0C]
+ jae SHORT G_M6389_IG10
+ movzx rsi, word ptr [rdx+2*rsi+0x0C]
+ cmp ebx, esi
je SHORT G_M6389_IG03
- ;; size=29 bbWeight=4 PerfScore 48.00
-G_M6389_IG06: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
- cmp r11d, r10d
- jge SHORT G_M6389_IG09
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
- cmp r11d, eax
- jae SHORT G_M6389_IG11
- mov eax, r11d
- movzx rax, word ptr [rcx+2*rax+0x0C]
- lea esi, [r8+r11]
- cmp esi, dword ptr [rdx+0x08]
- jae SHORT G_M6389_IG11
- mov r9d, esi
- movzx rcx, word ptr [rdx+2*r9+0x0C]
- ; gcrRegs -[rcx]
- sub eax, ecx
- ;; size=33 bbWeight=0.50 PerfScore 5.25
-G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=31 bbWeight=4 PerfScore 45.00
+G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx rdx]
+ mov eax, ebx
+ sub eax, esi
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rdx]
+G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub eax, r9d
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 122, prolog size 6, PerfScore 74.62, instruction count 44, allocated bytes for code 122 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 90, prolog size 6, PerfScore 65.38, instruction count 35, allocated bytes for code 90 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================
Unwind Info:
-32 (-24.62%) : 32119.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -9,108 +9,93 @@
;
; V00 arg0 [V00,T03] ( 4, 8 ) byref -> rcx ld-addr-op single-def
; V01 arg1 [V01,T04] ( 4, 8 ) byref -> rdx ld-addr-op single-def
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> registers
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> r10
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r9 "dup spill"
-; V05 tmp2 [V05,T07] ( 3, 5.50) byref -> r10 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T06] ( 5, 7 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T08] ( 3, 5.50) byref -> r8 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T05] ( 6, 7.50) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> r10 "dup spill"
+; V05 tmp2 [V05,T09] ( 2, 5 ) byref -> r8 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T08] ( 4, 6.50) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T10] ( 2, 5 ) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T07] ( 5, 7 ) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[uint]>
;* V10 tmp7 [V10 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[uint]>
-; V11 cse0 [V11,T02] ( 6, 13.50) long -> r11 multi-def "CSE - aggressive"
+; V11 cse0 [V11,T05] ( 3, 8.50) int -> r11 "CSE - aggressive"
+; V12 cse1 [V12,T06] ( 3, 8.50) int -> r9 "CSE - aggressive"
+; V13 cse2 [V13,T02] ( 3, 12 ) long -> r9 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbx
- sub rsp, 32
- ;; size=5 bbWeight=1 PerfScore 1.25
+ sub rsp, 40
+ ;; size=4 bbWeight=1 PerfScore 0.25
G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, byref, isz
; byrRegs +[rcx rdx]
- mov r8, bword ptr [rdx]
- ; byrRegs +[r8]
+ mov rax, bword ptr [rdx]
+ ; byrRegs +[rax]
mov edx, dword ptr [rdx+0x08]
; byrRegs -[rdx]
- mov r10, bword ptr [rcx]
- ; byrRegs +[r10]
+ mov r8, bword ptr [rcx]
+ ; byrRegs +[r8]
mov ecx, dword ptr [rcx+0x08]
; byrRegs -[rcx]
cmp ecx, edx
je SHORT G_M264_IG04
;; size=16 bbWeight=1 PerfScore 9.25
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r8 r10]
+ ; byrRegs -[rax r8]
cmp ecx, edx
- jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jl SHORT G_M264_IG11
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
-G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref
- ; byrRegs +[r8 r10]
- mov r9d, edx
+G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0101 {rax r8}, byref
+ ; byrRegs +[rax r8]
+ mov r10d, edx
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz
- dec r9d
- mov eax, r9d
- test eax, eax
- jl SHORT G_M264_IG06
- cmp eax, ecx
- jae SHORT G_M264_IG14
- mov r11d, eax
- mov ebx, dword ptr [r10+4*r11]
- cmp eax, edx
- jae SHORT G_M264_IG14
- cmp ebx, dword ptr [r8+4*r11]
- je SHORT G_M264_IG08
- ;; size=31 bbWeight=4 PerfScore 42.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz
- test r9d, r9d
- jge SHORT G_M264_IG09
- xor eax, eax
- ;; size=7 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
- ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M264_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, gcvars, byref, isz
- mov r9d, eax
- jmp SHORT G_M264_IG05
- ;; size=5 bbWeight=2 PerfScore 4.50
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz
- cmp r9d, ecx
- jae SHORT G_M264_IG14
- mov r11d, r9d
- mov eax, dword ptr [r10+4*r11]
- cmp r9d, edx
- jae SHORT G_M264_IG14
- cmp eax, dword ptr [r8+4*r11]
- jb SHORT G_M264_IG12
- ;; size=23 bbWeight=0.50 PerfScore 4.38
-G_M264_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r8 r10]
+G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0101 {rax r8}, byref, isz
+ dec r10d
+ js SHORT G_M264_IG09
+ cmp r10d, ecx
+ jae SHORT G_M264_IG13
+ mov r9d, r10d
+ mov r11d, dword ptr [r8+4*r9]
+ cmp r10d, edx
+ jae SHORT G_M264_IG13
+ mov r9d, dword ptr [rax+4*r9]
+ cmp r11d, r9d
+ je SHORT G_M264_IG05
+ ;; size=31 bbWeight=4 PerfScore 37.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rax r8]
+ cmp r9d, r11d
+ ja SHORT G_M264_IG11
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M264_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
+ ret
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG13: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
+G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 130, prolog size 5, PerfScore 66.75, instruction count 50, allocated bytes for code 130 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 98, prolog size 4, PerfScore 51.12, instruction count 35, allocated bytes for code 98 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -118,10 +103,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
-15 (-9.38%) : 95810.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
@@ -8,12 +8,13 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 11, 21 ) ref -> rcx this class-hnd single-def <System.Data.ExpressionParser>
-; V01 loc0 [V01,T04] ( 6, 14 ) ref -> rax class-hnd single-def <<unknown class>>
+; V01 loc0 [V01,T04] ( 5, 13 ) ref -> rax class-hnd single-def <<unknown class>>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 24 ) int -> r10 "index expr"
-; V04 tmp2 [V04,T05] ( 3, 6 ) int -> r10 "index expr"
-; V05 cse0 [V05,T00] ( 9, 31 ) int -> r8 "CSE - aggressive"
-; V06 cse1 [V06,T03] ( 5, 22 ) int -> rdx "CSE - aggressive"
+;* V04 tmp2 [V04,T06] ( 0, 0 ) int -> zero-ref "index expr"
+; V05 cse0 [V05,T05] ( 3, 9 ) int -> rdx "CSE - aggressive"
+; V06 cse1 [V06,T00] ( 7, 29 ) int -> r8 "CSE - aggressive"
+; V07 cse2 [V07,T03] ( 3, 20 ) int -> rdx "CSE - aggressive"
;
; Lcl frame size = 40
@@ -31,28 +32,24 @@ G_M44374_IG03: ; bbWeight=8, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {},
mov dword ptr [rcx+0x30], r8d
mov edx, dword ptr [rax+0x08]
cmp edx, r8d
- jle SHORT G_M44374_IG05
+ jle SHORT G_M44374_IG08
;; size=19 bbWeight=8 PerfScore 52.00
G_M44374_IG04: ; bbWeight=4, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
- mov r10d, r8d
- cmp r10d, edx
- jae SHORT G_M44374_IG07
- cmp word ptr [rax+2*r10+0x10], 35
- jne SHORT G_M44374_IG03
- ;; size=17 bbWeight=4 PerfScore 22.00
-G_M44374_IG05: ; bbWeight=1, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
- cmp edx, r8d
- jle SHORT G_M44374_IG08
mov r10d, r8d
cmp r10d, edx
jae SHORT G_M44374_IG07
mov edx, r10d
- cmp word ptr [rax+2*rdx+0x10], 35
+ movzx rdx, word ptr [rax+2*rdx+0x10]
+ cmp edx, 35
+ jne SHORT G_M44374_IG03
+ ;; size=21 bbWeight=4 PerfScore 20.00
+G_M44374_IG05: ; bbWeight=1, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
+ cmp edx, 35
jne SHORT G_M44374_IG09
mov dword ptr [rcx+0x38], 7
inc r8d
mov dword ptr [rcx+0x30], r8d
- ;; size=38 bbWeight=1 PerfScore 9.25
+ ;; size=19 bbWeight=1 PerfScore 3.50
G_M44374_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
@@ -103,7 +100,7 @@ G_M44374_IG09: ; bbWeight=0, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {},
int3
;; size=33 bbWeight=0 PerfScore 0.00
-; Total bytes of code 160, prolog size 4, PerfScore 86.75, instruction count 45, allocated bytes for code 160 (MethodHash=962252a9) for method System.Data.ExpressionParser:ScanDate():this (FullOpts)
+; Total bytes of code 145, prolog size 4, PerfScore 79.00, instruction count 41, allocated bytes for code 145 (MethodHash=962252a9) for method System.Data.ExpressionParser:ScanDate():this (FullOpts)
; ============================================================
Unwind Info:
+23 (+4.75%) : 196289.dasm - System.Tests.ConvertToStringTests:FromUInt16Array() (FullOpts)
@@ -10,7 +10,7 @@
;
; V00 loc0 [V00,T06] ( 5, 17.00) ref -> rbx class-hnd exact single-def <<unknown class>>
; V01 loc1 [V01,T07] ( 5, 17 ) int -> rsi
-; V02 loc2 [V02,T00] ( 10, 28 ) ref -> registers class-hnd <System.String>
+; V02 loc2 [V02,T00] ( 10, 24 ) ref -> registers class-hnd <System.String>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T22] ( 3, 6 ) ref -> rbx class-hnd exact single-def "dup spill" <<unknown class>>
;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
@@ -19,7 +19,7 @@
; V08 tmp5 [V08,T20] ( 4, 6.00) ref -> rbp class-hnd "Inline return value spill temp" <System.String>
; V09 tmp6 [V09,T02] ( 4, 20.00) int -> rcx "Inlining Arg"
;* V10 tmp7 [V10 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V11 tmp8 [V11,T10] ( 7, 12 ) ref -> rax class-hnd "Inline return value spill temp" <System.String>
+; V11 tmp8 [V11,T10] ( 6, 10 ) ref -> rax class-hnd "Inline return value spill temp" <System.String>
; V12 tmp9 [V12,T03] ( 4, 20.00) int -> rcx "Inlining Arg"
;* V13 tmp10 [V13 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V14 tmp11 [V14 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
@@ -40,7 +40,7 @@
;* V29 tmp26 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Globalization.NumberFormatInfo>
; V30 tmp27 [V30,T21] ( 4, 6.00) ref -> r14 class-hnd "Inline return value spill temp" <System.String>
; V31 tmp28 [V31,T04] ( 4, 20.00) int -> rcx "Inlining Arg"
-; V32 tmp29 [V32,T11] ( 7, 12 ) ref -> rax class-hnd "Inline return value spill temp" <System.String>
+; V32 tmp29 [V32,T11] ( 6, 10 ) ref -> rax class-hnd "Inline return value spill temp" <System.String>
; V33 tmp30 [V33,T05] ( 4, 20.00) int -> rcx "Inlining Arg"
;* V34 tmp31 [V34 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V35 tmp32 [V35 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
@@ -136,13 +136,13 @@ G_M52435_IG05: ; bbWeight=4.00, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000
; gcrRegs +[r14]
movzx rcx, word ptr [rbx+2*rdi+0x10]
cmp ecx, 300
- jae SHORT G_M52435_IG08
+ jae SHORT G_M52435_IG09
;; size=16 bbWeight=4.00 PerfScore 14.00
G_M52435_IG06: ; bbWeight=1.75, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000 {}, byref, isz
call [System.Number:UInt32ToDecStrForKnownSmallNumber(uint):System.String]
; gcrRegs +[rax]
; gcr arg pop 0
- jmp SHORT G_M52435_IG09
+ jmp SHORT G_M52435_IG10
;; size=8 bbWeight=1.75 PerfScore 8.76
G_M52435_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rbp r14]
@@ -153,24 +153,90 @@ G_M52435_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs +[rbp]
jmp SHORT G_M52435_IG05
;; size=11 bbWeight=0.25 PerfScore 1.30
-G_M52435_IG08: ; bbWeight=0.25, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax] +[r14]
+G_M52435_IG08: ; bbWeight=2, gcrefRegs=4029 {rax rbx rbp r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r14]
+ test r14, r14
+ je G_M52435_IG26
+ jmp G_M52435_IG20
+ ;; size=14 bbWeight=2 PerfScore 6.50
+G_M52435_IG09: ; bbWeight=0.25, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
call [System.Number:UInt32ToDecStr_NoSmallNumberCheck(uint):System.String]
; gcrRegs +[rax]
; gcr arg pop 0
;; size=6 bbWeight=0.25 PerfScore 0.74
-G_M52435_IG09: ; bbWeight=4, gcrefRegs=4029 {rax rbx rbp r14}, byrefRegs=0000 {}, byref, isz
- mov rcx, rax
- ; gcrRegs +[rcx]
- or rcx, r14
- ; gcrRegs -[rcx]
- je SHORT G_M52435_IG12
- ;; size=8 bbWeight=4 PerfScore 6.00
-G_M52435_IG10: ; bbWeight=2, gcrefRegs=4029 {rax rbx rbp r14}, byrefRegs=0000 {}, byref
+G_M52435_IG10: ; bbWeight=4, gcrefRegs=4029 {rax rbx rbp r14}, byrefRegs=0000 {}, byref, isz
test rax, rax
- je G_M52435_IG23
+ jne SHORT G_M52435_IG08
+ ;; size=5 bbWeight=4 PerfScore 5.00
+G_M52435_IG11: ; bbWeight=2, gcrefRegs=4029 {rax rbx rbp r14}, byrefRegs=0000 {}, byref
test r14, r14
- je G_M52435_IG23
+ jne G_M52435_IG26
+ ;; size=9 bbWeight=2 PerfScore 2.50
+G_M52435_IG12: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rbp r14]
+ movzx r14, word ptr [rbx+2*rdi+0x10]
+ call [System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo]
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov ecx, r14d
+ cmp ecx, 300
+ jae G_M52435_IG22
+ ;; size=27 bbWeight=4.00 PerfScore 26.00
+G_M52435_IG13: ; bbWeight=1.75, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ call [System.Number:UInt32ToDecStrForKnownSmallNumber(uint):System.String]
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov r14, rax
+ ; gcrRegs +[r14]
+ ;; size=9 bbWeight=1.75 PerfScore 5.69
+G_M52435_IG14: ; bbWeight=4.00, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ mov rbp, r14
+ ; gcrRegs +[rbp]
+ lea rdi, bword ptr [rbx+2*rdi+0x10]
+ ; byrRegs +[rdi]
+ call [System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo]
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ movzx rcx, word ptr [rdi]
+ cmp ecx, 300
+ jae G_M52435_IG25
+ ;; size=29 bbWeight=4.00 PerfScore 30.00
+G_M52435_IG15: ; bbWeight=1.75, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ ; byrRegs -[rdi]
+ call [System.Number:UInt32ToDecStrForKnownSmallNumber(uint):System.String]
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ ;; size=6 bbWeight=1.75 PerfScore 5.26
+G_M52435_IG16: ; bbWeight=4, gcrefRegs=4029 {rax rbx rbp r14}, byrefRegs=0000 {}, byref, isz
+ test rax, rax
+ jne SHORT G_M52435_IG23
+ ;; size=5 bbWeight=4 PerfScore 5.00
+G_M52435_IG17: ; bbWeight=2, gcrefRegs=4029 {rax rbx rbp r14}, byrefRegs=0000 {}, byref
+ test rbp, rbp
+ jne G_M52435_IG27
+ ;; size=9 bbWeight=2 PerfScore 2.50
+G_M52435_IG18: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rbp r14]
+ inc esi
+ cmp esi, 5
+ jl G_M52435_IG03
+ ;; size=11 bbWeight=4 PerfScore 6.00
+G_M52435_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rbx]
+ add rsp, 80
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r14
+ ret
+ ;; size=11 bbWeight=1 PerfScore 3.75
+G_M52435_IG20: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=4009 {rax rbx r14}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rax rbx r14]
lea rcx, bword ptr [rax+0x0C]
; byrRegs +[rcx]
mov edx, dword ptr [rax+0x08]
@@ -184,9 +250,9 @@ G_M52435_IG10: ; bbWeight=2, gcrefRegs=4029 {rax rbx rbp r14}, byrefRegs=
xor ecx, ecx
; byrRegs -[rcx]
mov dword ptr [rsp+0x20], ecx
- ;; size=58 bbWeight=2 PerfScore 25.50
-G_M52435_IG11: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbp r14]
+ ;; size=40 bbWeight=2 PerfScore 20.50
+G_M52435_IG21: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax r14]
; byrRegs -[r8]
mov dword ptr [rsp+0x28], ecx
lea rcx, [rsp+0x40]
@@ -195,72 +261,20 @@ G_M52435_IG11: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
xor r9d, r9d
call [<unknown method>]
; gcr arg pop 0
- ;; size=26 bbWeight=2 PerfScore 11.00
-G_M52435_IG12: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- movzx r14, word ptr [rbx+2*rdi+0x10]
- call [System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo]
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov ecx, r14d
- cmp ecx, 300
- jae SHORT G_M52435_IG16
- ;; size=23 bbWeight=4.00 PerfScore 26.00
-G_M52435_IG13: ; bbWeight=1.75, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- call [System.Number:UInt32ToDecStrForKnownSmallNumber(uint):System.String]
+ jmp G_M52435_IG12
+ ;; size=31 bbWeight=2 PerfScore 15.00
+G_M52435_IG22: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ call [System.Number:UInt32ToDecStr_NoSmallNumberCheck(uint):System.String]
; gcrRegs +[rax]
; gcr arg pop 0
mov r14, rax
; gcrRegs +[r14]
- ;; size=9 bbWeight=1.75 PerfScore 5.69
-G_M52435_IG14: ; bbWeight=4.00, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov rbp, r14
+ jmp G_M52435_IG14
+ ;; size=14 bbWeight=0.25 PerfScore 1.30
+G_M52435_IG23: ; bbWeight=2, gcrefRegs=4029 {rax rbx rbp r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbp]
- lea rdi, bword ptr [rbx+2*rdi+0x10]
- ; byrRegs +[rdi]
- call [System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo]
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- movzx rcx, word ptr [rdi]
- cmp ecx, 300
- jae SHORT G_M52435_IG17
- ;; size=25 bbWeight=4.00 PerfScore 30.00
-G_M52435_IG15: ; bbWeight=1.75, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- ; byrRegs -[rdi]
- call [System.Number:UInt32ToDecStrForKnownSmallNumber(uint):System.String]
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- jmp SHORT G_M52435_IG18
- ;; size=8 bbWeight=1.75 PerfScore 8.76
-G_M52435_IG16: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax rbp r14]
- call [System.Number:UInt32ToDecStr_NoSmallNumberCheck(uint):System.String]
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov r14, rax
- ; gcrRegs +[r14]
- jmp SHORT G_M52435_IG14
- ;; size=11 bbWeight=0.25 PerfScore 1.30
-G_M52435_IG17: ; bbWeight=0.25, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax] +[rbp]
- call [System.Number:UInt32ToDecStr_NoSmallNumberCheck(uint):System.String]
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- ;; size=6 bbWeight=0.25 PerfScore 0.74
-G_M52435_IG18: ; bbWeight=4, gcrefRegs=4029 {rax rbx rbp r14}, byrefRegs=0000 {}, byref, isz
- mov rcx, rax
- ; gcrRegs +[rcx]
- or rcx, rbp
- ; gcrRegs -[rcx]
- je SHORT G_M52435_IG21
- ;; size=8 bbWeight=4 PerfScore 6.00
-G_M52435_IG19: ; bbWeight=2, gcrefRegs=4029 {rax rbx rbp r14}, byrefRegs=0000 {}, byref, isz
- test rax, rax
- je G_M52435_IG24
test rbp, rbp
- je SHORT G_M52435_IG24
+ je SHORT G_M52435_IG27
lea rcx, bword ptr [rax+0x0C]
; byrRegs +[rcx]
mov edx, dword ptr [rax+0x08]
@@ -274,8 +288,8 @@ G_M52435_IG19: ; bbWeight=2, gcrefRegs=4029 {rax rbx rbp r14}, byrefRegs=
xor ecx, ecx
; byrRegs -[rcx]
mov dword ptr [rsp+0x20], ecx
- ;; size=54 bbWeight=2 PerfScore 25.50
-G_M52435_IG20: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=45 bbWeight=2 PerfScore 23.00
+G_M52435_IG24: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbp r14]
; byrRegs -[r8]
...
+23 (+4.79%) : 196332.dasm - System.Tests.ConvertToStringTests:FromByte() (FullOpts)
@@ -10,7 +10,7 @@
;
; V00 loc0 [V00,T06] ( 5, 17.00) ref -> rbx class-hnd exact single-def <<unknown class>>
; V01 loc1 [V01,T07] ( 5, 17 ) int -> rsi
-; V02 loc2 [V02,T00] ( 10, 28 ) ref -> registers class-hnd <System.String>
+; V02 loc2 [V02,T00] ( 10, 24 ) ref -> registers class-hnd <System.String>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T22] ( 3, 6 ) ref -> rbx class-hnd exact single-def "dup spill" <<unknown class>>
;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
@@ -19,7 +19,7 @@
; V08 tmp5 [V08,T20] ( 4, 6.00) ref -> rbp class-hnd "Inline return value spill temp" <System.String>
; V09 tmp6 [V09,T02] ( 4, 20.00) int -> rcx "Inlining Arg"
;* V10 tmp7 [V10 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V11 tmp8 [V11,T10] ( 7, 12 ) ref -> rax class-hnd "Inline return value spill temp" <System.String>
+; V11 tmp8 [V11,T10] ( 6, 10 ) ref -> rax class-hnd "Inline return value spill temp" <System.String>
; V12 tmp9 [V12,T03] ( 4, 20.00) int -> rcx "Inlining Arg"
;* V13 tmp10 [V13 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V14 tmp11 [V14 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
@@ -40,7 +40,7 @@
;* V29 tmp26 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Globalization.NumberFormatInfo>
; V30 tmp27 [V30,T21] ( 4, 6.00) ref -> r14 class-hnd "Inline return value spill temp" <System.String>
; V31 tmp28 [V31,T04] ( 4, 20.00) int -> rcx "Inlining Arg"
-; V32 tmp29 [V32,T11] ( 7, 12 ) ref -> rax class-hnd "Inline return value spill temp" <System.String>
+; V32 tmp29 [V32,T11] ( 6, 10 ) ref -> rax class-hnd "Inline return value spill temp" <System.String>
; V33 tmp30 [V33,T05] ( 4, 20.00) int -> rcx "Inlining Arg"
;* V34 tmp31 [V34 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V35 tmp32 [V35 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
@@ -136,13 +136,13 @@ G_M54337_IG05: ; bbWeight=4.00, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000
; gcrRegs +[r14]
movzx rcx, byte ptr [rbx+rdi+0x10]
cmp ecx, 300
- jae SHORT G_M54337_IG08
+ jae SHORT G_M54337_IG09
;; size=16 bbWeight=4.00 PerfScore 14.00
G_M54337_IG06: ; bbWeight=1.75, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000 {}, byref, isz
call [System.Number:UInt32ToDecStrForKnownSmallNumber(uint):System.String]
; gcrRegs +[rax]
; gcr arg pop 0
- jmp SHORT G_M54337_IG09
+ jmp SHORT G_M54337_IG10
;; size=8 bbWeight=1.75 PerfScore 8.76
G_M54337_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rbp r14]
@@ -153,24 +153,90 @@ G_M54337_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs +[rbp]
jmp SHORT G_M54337_IG05
;; size=11 bbWeight=0.25 PerfScore 1.30
-G_M54337_IG08: ; bbWeight=0.25, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax] +[r14]
+G_M54337_IG08: ; bbWeight=2, gcrefRegs=4029 {rax rbx rbp r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r14]
+ test r14, r14
+ je G_M54337_IG26
+ jmp G_M54337_IG20
+ ;; size=14 bbWeight=2 PerfScore 6.50
+G_M54337_IG09: ; bbWeight=0.25, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
call [System.Number:UInt32ToDecStr_NoSmallNumberCheck(uint):System.String]
; gcrRegs +[rax]
; gcr arg pop 0
;; size=6 bbWeight=0.25 PerfScore 0.74
-G_M54337_IG09: ; bbWeight=4, gcrefRegs=4029 {rax rbx rbp r14}, byrefRegs=0000 {}, byref, isz
- mov rcx, rax
- ; gcrRegs +[rcx]
- or rcx, r14
- ; gcrRegs -[rcx]
- je SHORT G_M54337_IG12
- ;; size=8 bbWeight=4 PerfScore 6.00
-G_M54337_IG10: ; bbWeight=2, gcrefRegs=4029 {rax rbx rbp r14}, byrefRegs=0000 {}, byref
+G_M54337_IG10: ; bbWeight=4, gcrefRegs=4029 {rax rbx rbp r14}, byrefRegs=0000 {}, byref, isz
test rax, rax
- je G_M54337_IG23
+ jne SHORT G_M54337_IG08
+ ;; size=5 bbWeight=4 PerfScore 5.00
+G_M54337_IG11: ; bbWeight=2, gcrefRegs=4029 {rax rbx rbp r14}, byrefRegs=0000 {}, byref
test r14, r14
- je G_M54337_IG23
+ jne G_M54337_IG26
+ ;; size=9 bbWeight=2 PerfScore 2.50
+G_M54337_IG12: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rbp r14]
+ movzx r14, byte ptr [rbx+rdi+0x10]
+ call [System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo]
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov ecx, r14d
+ cmp ecx, 300
+ jae G_M54337_IG22
+ ;; size=27 bbWeight=4.00 PerfScore 26.00
+G_M54337_IG13: ; bbWeight=1.75, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ call [System.Number:UInt32ToDecStrForKnownSmallNumber(uint):System.String]
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov r14, rax
+ ; gcrRegs +[r14]
+ ;; size=9 bbWeight=1.75 PerfScore 5.69
+G_M54337_IG14: ; bbWeight=4.00, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ mov rbp, r14
+ ; gcrRegs +[rbp]
+ lea rdi, bword ptr [rbx+rdi+0x10]
+ ; byrRegs +[rdi]
+ call [System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo]
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ movzx rcx, byte ptr [rdi]
+ cmp ecx, 300
+ jae G_M54337_IG25
+ ;; size=29 bbWeight=4.00 PerfScore 30.00
+G_M54337_IG15: ; bbWeight=1.75, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ ; byrRegs -[rdi]
+ call [System.Number:UInt32ToDecStrForKnownSmallNumber(uint):System.String]
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ ;; size=6 bbWeight=1.75 PerfScore 5.26
+G_M54337_IG16: ; bbWeight=4, gcrefRegs=4029 {rax rbx rbp r14}, byrefRegs=0000 {}, byref, isz
+ test rax, rax
+ jne SHORT G_M54337_IG23
+ ;; size=5 bbWeight=4 PerfScore 5.00
+G_M54337_IG17: ; bbWeight=2, gcrefRegs=4029 {rax rbx rbp r14}, byrefRegs=0000 {}, byref
+ test rbp, rbp
+ jne G_M54337_IG27
+ ;; size=9 bbWeight=2 PerfScore 2.50
+G_M54337_IG18: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rbp r14]
+ inc esi
+ cmp esi, 5
+ jl G_M54337_IG03
+ ;; size=11 bbWeight=4 PerfScore 6.00
+G_M54337_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rbx]
+ add rsp, 80
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r14
+ ret
+ ;; size=11 bbWeight=1 PerfScore 3.75
+G_M54337_IG20: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=4009 {rax rbx r14}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rax rbx r14]
lea rcx, bword ptr [rax+0x0C]
; byrRegs +[rcx]
mov edx, dword ptr [rax+0x08]
@@ -184,9 +250,9 @@ G_M54337_IG10: ; bbWeight=2, gcrefRegs=4029 {rax rbx rbp r14}, byrefRegs=
xor ecx, ecx
; byrRegs -[rcx]
mov dword ptr [rsp+0x20], ecx
- ;; size=58 bbWeight=2 PerfScore 25.50
-G_M54337_IG11: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbp r14]
+ ;; size=40 bbWeight=2 PerfScore 20.50
+G_M54337_IG21: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax r14]
; byrRegs -[r8]
mov dword ptr [rsp+0x28], ecx
lea rcx, [rsp+0x40]
@@ -195,72 +261,20 @@ G_M54337_IG11: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
xor r9d, r9d
call [<unknown method>]
; gcr arg pop 0
- ;; size=26 bbWeight=2 PerfScore 11.00
-G_M54337_IG12: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- movzx r14, byte ptr [rbx+rdi+0x10]
- call [System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo]
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov ecx, r14d
- cmp ecx, 300
- jae SHORT G_M54337_IG16
- ;; size=23 bbWeight=4.00 PerfScore 26.00
-G_M54337_IG13: ; bbWeight=1.75, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- call [System.Number:UInt32ToDecStrForKnownSmallNumber(uint):System.String]
+ jmp G_M54337_IG12
+ ;; size=31 bbWeight=2 PerfScore 15.00
+G_M54337_IG22: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ call [System.Number:UInt32ToDecStr_NoSmallNumberCheck(uint):System.String]
; gcrRegs +[rax]
; gcr arg pop 0
mov r14, rax
; gcrRegs +[r14]
- ;; size=9 bbWeight=1.75 PerfScore 5.69
-G_M54337_IG14: ; bbWeight=4.00, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov rbp, r14
+ jmp G_M54337_IG14
+ ;; size=14 bbWeight=0.25 PerfScore 1.30
+G_M54337_IG23: ; bbWeight=2, gcrefRegs=4029 {rax rbx rbp r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbp]
- lea rdi, bword ptr [rbx+rdi+0x10]
- ; byrRegs +[rdi]
- call [System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo]
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- movzx rcx, byte ptr [rdi]
- cmp ecx, 300
- jae SHORT G_M54337_IG17
- ;; size=25 bbWeight=4.00 PerfScore 30.00
-G_M54337_IG15: ; bbWeight=1.75, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- ; byrRegs -[rdi]
- call [System.Number:UInt32ToDecStrForKnownSmallNumber(uint):System.String]
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- jmp SHORT G_M54337_IG18
- ;; size=8 bbWeight=1.75 PerfScore 8.76
-G_M54337_IG16: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax rbp r14]
- call [System.Number:UInt32ToDecStr_NoSmallNumberCheck(uint):System.String]
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov r14, rax
- ; gcrRegs +[r14]
- jmp SHORT G_M54337_IG14
- ;; size=11 bbWeight=0.25 PerfScore 1.30
-G_M54337_IG17: ; bbWeight=0.25, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax] +[rbp]
- call [System.Number:UInt32ToDecStr_NoSmallNumberCheck(uint):System.String]
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- ;; size=6 bbWeight=0.25 PerfScore 0.74
-G_M54337_IG18: ; bbWeight=4, gcrefRegs=4029 {rax rbx rbp r14}, byrefRegs=0000 {}, byref, isz
- mov rcx, rax
- ; gcrRegs +[rcx]
- or rcx, rbp
- ; gcrRegs -[rcx]
- je SHORT G_M54337_IG21
- ;; size=8 bbWeight=4 PerfScore 6.00
-G_M54337_IG19: ; bbWeight=2, gcrefRegs=4029 {rax rbx rbp r14}, byrefRegs=0000 {}, byref, isz
- test rax, rax
- je G_M54337_IG24
test rbp, rbp
- je SHORT G_M54337_IG24
+ je SHORT G_M54337_IG27
lea rcx, bword ptr [rax+0x0C]
; byrRegs +[rcx]
mov edx, dword ptr [rax+0x08]
@@ -274,8 +288,8 @@ G_M54337_IG19: ; bbWeight=2, gcrefRegs=4029 {rax rbx rbp r14}, byrefRegs=
xor ecx, ecx
; byrRegs -[rcx]
mov dword ptr [rsp+0x20], ecx
- ;; size=54 bbWeight=2 PerfScore 25.50
-G_M54337_IG20: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=45 bbWeight=2 PerfScore 23.00
+G_M54337_IG24: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbp r14]
; byrRegs -[r8]
...
+25 (+6.07%) : 22032.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
@@ -13,38 +13,42 @@
; V02 arg2 [V02,T09] ( 5, 4 ) byref -> rbx single-def
; V03 arg3 [V03,T01] ( 12, 14.50) byref -> r9 single-def
; V04 loc0 [V04,T14] ( 6, 3 ) ubyte -> r8
-; V05 loc1 [V05,T07] ( 6, 8 ) ubyte -> rcx
-; V06 loc2 [V06,T11] ( 5, 5.50) ubyte -> rdx
-; V07 loc3 [V07,T03] ( 7, 14 ) int -> r8
-; V08 loc4 [V08,T02] ( 5, 14.50) int -> rax
-; V09 loc5 [V09,T04] ( 4, 12 ) ubyte -> r11
+; V05 loc1 [V05,T07] ( 6, 8 ) ubyte -> rbp
+; V06 loc2 [V06,T13] ( 4, 3.50) ubyte -> r14
+; V07 loc3 [V07,T03] ( 7, 14 ) int -> rdx
+; V08 loc4 [V08,T02] ( 5, 14.50) int -> r15
+; V09 loc5 [V09,T04] ( 4, 12 ) ubyte -> r13
; V10 OutArgs [V10 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V11 tmp1 [V11,T15] ( 3, 3 ) int -> rcx "Span.get_Item index"
-; V12 tmp2 [V12,T16] ( 3, 1.50) int -> rdx
-; V13 tmp3 [V13,T00] ( 3, 24 ) int -> r11 "Span.get_Item index"
+; V12 tmp2 [V12,T16] ( 3, 1.50) int -> rcx
+; V13 tmp3 [V13,T00] ( 3, 24 ) int -> rcx "Span.get_Item index"
; V14 tmp4 [V14 ] ( 3, 3 ) struct ( 8) [rsp+0x28] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
; V15 tmp5 [V15 ] ( 3, 3 ) struct ( 8) [rsp+0x20] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-; V16 tmp6 [V16,T13] ( 4, 4 ) int -> rax "Single return block return value"
-; V17 tmp7 [V17,T12] ( 3, 5.50) byref -> rsi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V16 tmp6 [V16,T12] ( 4, 4 ) int -> rax "Single return block return value"
+; V17 tmp7 [V17,T11] ( 3, 5.50) byref -> rsi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V18 tmp8 [V18,T08] ( 5, 7 ) int -> rdi "field V00._length (fldOffset=0x8)" P-INDEP
; V19 tmp9 [V19 ] ( 3, 3 ) ubyte -> [rsp+0x28] do-not-enreg[X] addr-exposed "field V14.hasValue (fldOffset=0x0)" P-DEP
; V20 tmp10 [V20 ] ( 3, 3 ) int -> [rsp+0x2C] do-not-enreg[X] addr-exposed "field V14.value (fldOffset=0x4)" P-DEP
; V21 tmp11 [V21 ] ( 3, 3 ) ubyte -> [rsp+0x20] do-not-enreg[X] addr-exposed "field V15.hasValue (fldOffset=0x0)" P-DEP
; V22 tmp12 [V22 ] ( 3, 3 ) int -> [rsp+0x24] do-not-enreg[X] addr-exposed "field V15.value (fldOffset=0x4)" P-DEP
;* V23 tmp13 [V23 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
-; V24 cse0 [V24,T05] ( 3, 12 ) int -> r10 "CSE - aggressive"
+; V24 cse0 [V24,T05] ( 3, 12 ) int -> rax "CSE - aggressive"
; V25 cse1 [V25,T17] ( 3, 1.50) int -> rax "CSE - moderate"
;
; Lcl frame size = 48
G_M45882_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r15
+ push r14
+ push r13
push rdi
push rsi
+ push rbp
push rbx
sub rsp, 48
mov rbx, r8
; byrRegs +[rbx]
- ;; size=10 bbWeight=1 PerfScore 3.50
+ ;; size=17 bbWeight=1 PerfScore 7.50
G_M45882_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=020A {rcx rbx r9}, byref
; byrRegs +[rcx r9]
mov rsi, bword ptr [rcx]
@@ -78,10 +82,14 @@ G_M45882_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0248 {rbx rs
G_M45882_IG05: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 48
pop rbx
+ pop rbp
pop rsi
pop rdi
+ pop r13
+ pop r14
+ pop r15
ret
- ;; size=8 bbWeight=0.50 PerfScore 1.38
+ ;; size=15 bbWeight=0.50 PerfScore 2.38
G_M45882_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0248 {rbx rsi r9}, gcvars, byref, isz
cmp r8d, 128
jge SHORT G_M45882_IG07
@@ -107,8 +115,8 @@ G_M45882_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0248 {rbx rs
;; size=25 bbWeight=0.50 PerfScore 2.38
G_M45882_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0248 {rbx rsi r9}, byref, isz
and r8d, -129
- movzx rcx, r8b
- lea eax, [rcx+0x01]
+ movzx rbp, r8b
+ lea eax, [rbp+0x01]
cmp eax, edi
jle SHORT G_M45882_IG11
xor eax, eax
@@ -121,29 +129,33 @@ G_M45882_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
G_M45882_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 48
pop rbx
+ pop rbp
pop rsi
pop rdi
+ pop r13
+ pop r14
+ pop r15
ret
- ;; size=8 bbWeight=0.50 PerfScore 1.38
+ ;; size=15 bbWeight=0.50 PerfScore 2.38
G_M45882_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0248 {rbx rsi r9}, gcvars, byref, isz
; byrRegs +[rbx rsi r9]
cmp edx, 2
je SHORT G_M45882_IG12
+ xor ecx, ecx
cmp edx, 1
- sete dl
- movzx rdx, dl
+ sete cl
jmp SHORT G_M45882_IG13
- ;; size=16 bbWeight=0.50 PerfScore 2.38
+ ;; size=15 bbWeight=0.50 PerfScore 2.38
G_M45882_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0248 {rbx rsi r9}, byref
- mov edx, 1
+ mov ecx, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M45882_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0248 {rbx rsi r9}, byref, isz
- movzx rdx, dl
- test edx, edx
+ movzx r14, cl
+ test r14d, r14d
je SHORT G_M45882_IG15
- cmp ecx, 4
+ cmp ebp, 4
jle SHORT G_M45882_IG15
- ;; size=12 bbWeight=0.50 PerfScore 1.38
+ ;; size=14 bbWeight=0.50 PerfScore 1.38
G_M45882_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0200 {r9}, byref
; byrRegs -[rbx rsi]
xor ecx, ecx
@@ -153,76 +165,74 @@ G_M45882_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0200 {r9}, b
;; size=15 bbWeight=0.50 PerfScore 1.75
G_M45882_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0248 {rbx rsi r9}, byref, isz
; byrRegs +[rbx rsi]
- xor r8d, r8d
- xor eax, eax
- test ecx, ecx
+ xor edx, edx
+ xor r15d, r15d
+ test ebp, ebp
jle SHORT G_M45882_IG20
;; size=9 bbWeight=0.50 PerfScore 0.88
G_M45882_IG16: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0248 {rbx rsi r9}, byref, isz
- mov r10d, dword ptr [r9]
- mov r11d, r10d
- cmp r11d, edi
+ mov eax, dword ptr [r9]
+ mov ecx, eax
+ cmp ecx, edi
jae G_M45882_IG27
- movzx r11, byte ptr [rsi+r11]
- inc r10d
- mov dword ptr [r9], r10d
- test r8d, r8d
- jne SHORT G_M45882_IG19
- ;; size=31 bbWeight=4 PerfScore 32.00
-G_M45882_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0248 {rbx rsi r9}, byref, isz
- test edx, edx
- je SHORT G_M45882_IG18
- test r11d, r11d
- je SHORT G_M45882_IG21
- ;; size=9 bbWeight=2 PerfScore 5.00
-G_M45882_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0248 {rbx rsi r9}, byref, isz
- test edx, edx
- jne SHORT G_M45882_IG19
- test r11d, r11d
- je SHORT G_M45882_IG19
- mov r10d, ecx
- sub r10d, eax
- cmp r10d, 4
- jg SHORT G_M45882_IG14
- ;; size=21 bbWeight=2 PerfScore 8.50
-G_M45882_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0248 {rbx rsi r9}, byref, isz
- shl r8d, 8
- or r8d, r11d
+ movzx r13, byte ptr [rsi+rcx]
inc eax
- cmp eax, ecx
+ mov dword ptr [r9], eax
+ test edx, edx
+ jne SHORT G_M45882_IG19
+ ;; size=27 bbWeight=4 PerfScore 32.00
+G_M45882_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0248 {rbx rsi r9}, byref, isz
+ test r14d, r14d
+ je SHORT G_M45882_IG18
+ test r13d, r13d
+ je SHORT G_M45882_IG21
+ jmp SHORT G_M45882_IG19
+ ;; size=12 bbWeight=2 PerfScore 9.00
+G_M45882_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0248 {rbx rsi r9}, byref, isz
+ test r13d, r13d
+ je SHORT G_M45882_IG19
+ mov ecx, ebp
+ sub ecx, r15d
+ cmp ecx, 4
+ jg SHORT G_M45882_IG14
+ ;; size=15 bbWeight=2 PerfScore 6.00
+G_M45882_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0248 {rbx rsi r9}, byref, isz
+ shl edx, 8
+ or edx, r13d
+ inc r15d
+ cmp r15d, ebp
jl SHORT G_M45882_IG16
- ;; size=13 bbWeight=4 PerfScore 9.00
+ ;; size=14 bbWeight=4 PerfScore 9.00
G_M45882_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0208 {rbx r9}, byref, isz
; byrRegs -[rsi]
- test r8d, r8d
- jl SHORT G_M45882_IG14
test edx, edx
+ jl SHORT G_M45882_IG14
+ test r14d, r14d
je SHORT G_M45882_IG23
jmp SHORT G_M45882_IG22
;; size=11 bbWeight=0.50 PerfScore 2.25
G_M45882_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0200 {r9}, byref, isz
; byrRegs -[rbx]
- xor r8d, r8d
- mov dword ptr [r9], r8d
+ xor edx, edx
+ mov dword ptr [r9], edx
mov eax, 4
jmp SHORT G_M45882_IG26
- ;; size=13 bbWeight=0.50 PerfScore 1.75
+ ;; size=12 bbWeight=0.50 PerfScore 1.75
G_M45882_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0208 {rbx r9}, byref, isz
; byrRegs +[rbx]
- cmp r8d, 128
+ cmp edx, 128
jb SHORT G_M45882_IG21
- ;; size=9 bbWeight=0.50 PerfScore 0.62
+ ;; size=8 bbWeight=0.50 PerfScore 0.62
G_M45882_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
; byrRegs -[r9]
xor ecx, ecx
mov qword ptr [rsp+0x28], rcx
lea rcx, [rsp+0x28]
- mov edx, r8d
call [<unknown method>]
; gcr arg pop 0
mov rax, qword ptr [rsp+0x28]
mov qword ptr [rbx], rax
- ;; size=29 bbWeight=0.50 PerfScore 3.50
+ ;; size=26 bbWeight=0.50 PerfScore 3.38
G_M45882_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
mov eax, 5
@@ -230,24 +240,32 @@ G_M45882_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
G_M45882_IG25: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 48
pop rbx
+ pop rbp
pop rsi
pop rdi
+ pop r13
+ pop r14
...
realworld.run.windows.x64.checked.mch
-18 (-8.18%) : 22608.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
@@ -8,28 +8,32 @@
; 0 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 3, 3 ) ref -> rcx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder>
+; V00 this [V00,T06] ( 3, 3 ) ref -> rcx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder>
; V01 arg1 [V01,T02] ( 8, 8.50) int -> rbx
-; V02 loc0 [V02,T00] ( 13, 28.50) ref -> rsi class-hnd <<unknown class>>
+; V02 loc0 [V02,T00] ( 11, 27 ) ref -> rsi class-hnd <<unknown class>>
;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T05] ( 4, 4 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.UnsupportedMetadataTypeSymbol>
+; V05 tmp1 [V05,T07] ( 4, 4 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.UnsupportedMetadataTypeSymbol>
;* V06 tmp2 [V06 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V08 tmp4 [V08,T06] ( 3, 1.50) ref -> rax "field V03.array (fldOffset=0x0)" P-INDEP
-; V09 tmp5 [V09,T03] ( 2, 8 ) ref -> rdx "argument with side effect"
-; V10 cse0 [V10,T01] ( 9, 16.50) long -> rdi multi-def "CSE - aggressive"
+; V08 tmp4 [V08,T08] ( 3, 1.50) ref -> rax "field V03.array (fldOffset=0x0)" P-INDEP
+; V09 tmp5 [V09,T05] ( 2, 8 ) ref -> rdx "argument with side effect"
+; V10 cse0 [V10,T03] ( 4, 9 ) long -> rbp "CSE - aggressive"
+; V11 cse1 [V11,T04] ( 4, 9 ) long -> r15 "CSE - aggressive"
+; V12 cse2 [V12,T01] ( 4, 14 ) long -> rdi "CSE - aggressive"
;
; Lcl frame size = 40
G_M4215_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r15
+ push r14
push rdi
push rsi
push rbp
push rbx
sub rsp, 40
mov ebx, edx
- ;; size=10 bbWeight=1 PerfScore 4.50
+ ;; size=14 bbWeight=1 PerfScore 6.50
G_M4215_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
mov rsi, gword ptr [rcx+0x28]
@@ -56,43 +60,37 @@ G_M4215_IG03: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byre
G_M4215_IG04: ; bbWeight=8, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
test rsi, rsi
- je SHORT G_M4215_IG06
+ je SHORT G_M4215_IG07
;; size=5 bbWeight=8 PerfScore 10.00
G_M4215_IG05: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, rsi
; gcrRegs +[rcx]
mov rdi, qword ptr [rsi]
- mov rax, qword ptr [rdi+0x130]
- call [rax+0x30]<unknown method>
+ mov rbp, qword ptr [rdi+0x130]
+ call [rbp+0x30]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- mov ebp, eax
+ mov r14d, eax
mov rcx, rsi
; gcrRegs +[rcx]
- mov rax, qword ptr [rdi+0x100]
- call [rax+0x20]<unknown method>
+ mov r15, qword ptr [rdi+0x100]
+ call [r15+0x20]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- sub ebp, eax
- cmp ebp, ebx
+ sub r14d, eax
+ cmp r14d, ebx
jg SHORT G_M4215_IG03
- ;; size=37 bbWeight=4 PerfScore 57.00
-G_M4215_IG06: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- test rsi, rsi
- je SHORT G_M4215_IG08
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M4215_IG07: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=41 bbWeight=4 PerfScore 57.00
+G_M4215_IG06: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, rsi
; gcrRegs +[rcx]
- mov rdi, qword ptr [rsi]
- mov rax, qword ptr [rdi+0x130]
- call [rax+0x30]<unknown method>
+ call [rbp+0x30]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
cmp eax, ebx
- jg SHORT G_M4215_IG11
- ;; size=20 bbWeight=0.50 PerfScore 4.25
-G_M4215_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jg SHORT G_M4215_IG10
+ ;; size=10 bbWeight=0.50 PerfScore 2.25
+G_M4215_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.UnsupportedMetadataTypeSymbol
call CORINFO_HELP_NEWSFAST
@@ -102,62 +100,63 @@ G_M4215_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
; gcrRegs +[rcx]
mov gword ptr [rax+0x20], rcx
;; size=21 bbWeight=0.50 PerfScore 1.25
-G_M4215_IG09: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+G_M4215_IG08: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
mov gword ptr [rax+0x40], rcx
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M4215_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M4215_IG09: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
+ pop r14
+ pop r15
ret
- ;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M4215_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
+G_M4215_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rsi]
mov rcx, rsi
; gcrRegs +[rcx]
- mov rax, qword ptr [rdi+0x130]
- call [rax+0x30]<unknown method>
+ call [rbp+0x30]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- mov ebp, eax
+ mov edi, eax
mov rcx, rsi
; gcrRegs +[rcx]
- mov rax, qword ptr [rdi+0x100]
- call [rax+0x20]<unknown method>
+ call [r15+0x20]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- sub ebp, eax
- sub ebx, ebp
+ sub edi, eax
+ sub ebx, edi
mov rcx, rsi
; gcrRegs +[rcx]
- mov rax, qword ptr [rdi+0x100]
- call [rax+0x28]<unknown method>
+ call [r15+0x28]<unknown method>
; gcrRegs -[rcx rsi] +[rax]
; gcr arg pop 0
cmp ebx, dword ptr [rax+0x08]
- jae SHORT G_M4215_IG13
+ jae SHORT G_M4215_IG12
mov ecx, ebx
mov rax, gword ptr [rax+8*rcx+0x10]
- ;; size=57 bbWeight=0.50 PerfScore 11.38
-G_M4215_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=38 bbWeight=0.50 PerfScore 8.38
+G_M4215_IG11: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
+ pop r14
+ pop r15
ret
- ;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M4215_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
+G_M4215_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 8, PerfScore 111.38, instruction count 71, allocated bytes for code 220 (MethodHash=5d77ef88) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
+; Total bytes of code 202, prolog size 12, PerfScore 108.12, instruction count 70, allocated bytes for code 202 (MethodHash=5d77ef88) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
; ============================================================
Unwind Info:
@@ -165,13 +164,15 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
-13 (-4.96%) : 402.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
@@ -12,7 +12,7 @@
; V01 arg1 [V01,T07] ( 7, 4.50) byref -> rdx single-def
; V02 loc0 [V02,T08] ( 5, 3 ) ushort -> r8
; V03 loc1 [V03,T06] ( 5, 7 ) int -> r10
-; V04 loc2 [V04,T00] ( 7, 13.50) int -> r9
+; V04 loc2 [V04,T00] ( 5, 12.50) int -> r9
; V05 loc3 [V05,T10] ( 3, 1.50) int -> r10
; V06 loc4 [V06,T11] ( 3, 1.50) int -> r10
; V07 loc5 [V07,T12] ( 3, 1.50) int -> r9
@@ -20,10 +20,10 @@
; V09 tmp1 [V09,T04] ( 2, 8 ) int -> r9 "impSpillLclRefs"
;* V10 tmp2 [V10 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
; V11 tmp3 [V11,T09] ( 2, 2 ) int -> r8 "Single return block return value"
-; V12 tmp4 [V12,T05] ( 7, 7.50) byref -> rax single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp5 [V13,T03] ( 8, 8.50) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
+; V12 tmp4 [V12,T05] ( 6, 7 ) byref -> rax single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp5 [V13,T03] ( 7, 8 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
;* V14 tmp6 [V14 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V15 cse0 [V15,T01] ( 5, 11 ) int -> r11 multi-def "CSE - aggressive"
+; V15 cse0 [V15,T01] ( 4, 10.50) int -> r11 "CSE - aggressive"
;
; Lcl frame size = 32
@@ -94,23 +94,19 @@ G_M3969_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0005 {rax rdx},
;; size=21 bbWeight=2 PerfScore 6.00
G_M3969_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {rax rdx}, byref, isz
cmp r9d, ecx
- jae SHORT G_M3969_IG09
+ jae SHORT G_M3969_IG10
mov r11d, r9d
movzx r11, word ptr [rax+2*r11]
lea ebx, [r11-0x30]
cmp ebx, 9
jbe SHORT G_M3969_IG07
;; size=22 bbWeight=4 PerfScore 21.00
-G_M3969_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {rax rdx}, byref, isz
- cmp r9d, ecx
- jae SHORT G_M3969_IG10
- mov r11d, r9d
- movzx r11, word ptr [rax+2*r11]
+G_M3969_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref, isz
+ ; byrRegs -[rax]
test r11d, r11d
jne SHORT G_M3969_IG13
- ;; size=18 bbWeight=0.50 PerfScore 2.38
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
G_M3969_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref
- ; byrRegs -[rax]
mov dword ptr [rdx], r10d
;; size=3 bbWeight=0.50 PerfScore 0.50
G_M3969_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -151,7 +147,7 @@ G_M3969_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 262, prolog size 5, PerfScore 56.75, instruction count 81, allocated bytes for code 262 (MethodHash=db41f07e) for method System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
+; Total bytes of code 249, prolog size 5, PerfScore 55.00, instruction count 77, allocated bytes for code 249 (MethodHash=db41f07e) for method System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
; ============================================================
Unwind Info:
-12 (-4.92%) : 21296.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
@@ -15,8 +15,8 @@
; V04 loc3 [V04,T01] ( 8, 25 ) int -> r11
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T06] ( 2, 16 ) int -> r11 "dup spill"
-; V08 tmp2 [V08,T03] ( 3, 17 ) int -> rax "dup spill"
+; V07 tmp1 [V07,T05] ( 2, 16 ) int -> r11 "dup spill"
+; V08 tmp2 [V08,T06] ( 2, 16 ) int -> r11 "dup spill"
; V09 tmp3 [V09,T07] ( 2, 16 ) int -> r9 "dup spill"
; V10 tmp4 [V10,T08] ( 2, 16 ) int -> r8 "dup spill"
; V11 tmp5 [V11,T09] ( 2, 16 ) int -> r9 "dup spill"
@@ -28,8 +28,8 @@
;* V17 tmp11 [V17 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V18 tmp12 [V18 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
; V19 tmp13 [V19,T14] ( 3, 6 ) ref -> r8 single-def "arr expr"
-; V20 tmp14 [V20,T04] ( 2, 16 ) ref -> r8 "arr expr"
-; V21 tmp15 [V21,T05] ( 2, 16 ) ref -> r8 "arr expr"
+; V20 tmp14 [V20,T03] ( 2, 16 ) ref -> r8 "arr expr"
+; V21 tmp15 [V21,T04] ( 2, 16 ) ref -> r8 "arr expr"
; V22 cse0 [V22,T11] ( 5, 10.50) ref -> rdx "CSE - aggressive"
; V23 cse1 [V23,T12] ( 4, 10 ) int -> r10 "CSE - aggressive"
;
@@ -82,14 +82,14 @@ G_M61853_IG05: ; bbWeight=4, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byr
mov r8, rdx
; gcrRegs +[r8]
cmp r9d, r10d
- jae G_M61853_IG15
+ jae SHORT G_M61853_IG15
mov ecx, r9d
movzx r8, word ptr [r8+2*rcx+0x0C]
; gcrRegs -[r8]
lea ecx, [r8-0x30]
cmp ecx, 9
jbe SHORT G_M61853_IG05
- ;; size=41 bbWeight=4 PerfScore 29.00
+ ;; size=37 bbWeight=4 PerfScore 29.00
G_M61853_IG06: ; bbWeight=0.50, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
test r11d, r11d
je SHORT G_M61853_IG13
@@ -110,30 +110,27 @@ G_M61853_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
jne SHORT G_M61853_IG13
;; size=6 bbWeight=0.50 PerfScore 0.62
G_M61853_IG09: ; bbWeight=4, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- lea eax, [r11-0x01]
- mov r11d, eax
+ dec r11d
test r11d, r11d
- jle SHORT G_M61853_IG10
+ jle SHORT G_M61853_IG13
inc r9d
mov r8, rdx
; gcrRegs +[r8]
cmp r9d, r10d
jae SHORT G_M61853_IG15
- mov ecx, r9d
- movzx r8, word ptr [r8+2*rcx+0x0C]
+ mov eax, r9d
+ movzx r8, word ptr [r8+2*rax+0x0C]
; gcrRegs -[r8]
- lea ecx, [r8-0x30]
- cmp ecx, 9
+ lea eax, [r8-0x30]
+ cmp eax, 9
jbe SHORT G_M61853_IG09
- ;; size=41 bbWeight=4 PerfScore 31.00
-G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=37 bbWeight=4 PerfScore 29.00
+G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
- test eax, eax
- jle SHORT G_M61853_IG13
xor edx, edx
cmp r8d, 125
sete dl
- ;; size=13 bbWeight=0.50 PerfScore 1.38
+ ;; size=9 bbWeight=0.50 PerfScore 0.75
G_M61853_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movzx rax, dl
;; size=3 bbWeight=0.50 PerfScore 0.12
@@ -154,7 +151,7 @@ G_M61853_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 4, PerfScore 84.25, instruction count 73, allocated bytes for code 244 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
+; Total bytes of code 232, prolog size 4, PerfScore 81.62, instruction count 70, allocated bytes for code 232 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
+20 (+1.83%) : 20001.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
@@ -24,7 +24,7 @@
;* V13 loc9 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Threading.CancellationToken>
;* V14 loc10 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Range>
;* V15 loc11 [V15 ] ( 0, 0 ) int -> zero-ref
-; V16 loc12 [V16,T31] ( 2, 2 ) ref -> rbx class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax>
+; V16 loc12 [V16,T31] ( 2, 2 ) ref -> rsi class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax>
; V17 OutArgs [V17 ] ( 1, 1 ) struct (64) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V18 tmp1 [V18 ] ( 0, 0 ) struct ( 8) zero-ref <System.Range>
; V19 tmp2 [V19,T16] ( 2, 4 ) ref -> r15 class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.Text.SourceText>
@@ -62,10 +62,10 @@
; V51 tmp34 [V51,T18] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
; V52 tmp35 [V52,T19] ( 2, 4 ) int -> rax "argument with side effect"
; V53 PSPSym [V53,T38] ( 1, 1 ) long -> [rbp-0xB0] do-not-enreg[V] "PSPSym"
-; V54 cse0 [V54,T35] ( 3, 1.50) int -> [rbp-0x7C] spill-single-def "CSE - moderate"
-; V55 cse1 [V55,T36] ( 3, 1.50) long -> [rbp-0x88] spill-single-def "CSE - moderate"
+; V54 cse0 [V54,T35] ( 3, 1.50) int -> [rbp-0x7C] "CSE - moderate"
+; V55 cse1 [V55,T36] ( 3, 1.50) long -> [rbp-0x88] "CSE - moderate"
; V56 cse2 [V56,T14] ( 8, 4 ) int -> [rbp-0x8C] multi-def "CSE - moderate"
-; V57 cse3 [V57,T29] ( 4, 2 ) int -> [rbp-0x90] spill-single-def "CSE - moderate"
+; V57 cse3 [V57,T29] ( 4, 2 ) int -> [rbp-0x90] "CSE - moderate"
;
; Lcl frame size = 184
@@ -301,8 +301,8 @@ G_M12557_IG10: ; bbWeight=0.50, gcrefRegs=B0C8 {rbx rsi rdi r12 r13 r15},
je G_M12557_IG12
mov eax, dword ptr [rbx+0x08]
mov edx, dword ptr [r12+0x08]
- mov dword ptr [rbp-0x90], edx
mov dword ptr [rbp-0x8C], eax
+ mov dword ptr [rbp-0x90], edx
cmp eax, edx
jne G_M12557_IG12
mov ecx, 1
@@ -333,8 +333,13 @@ G_M12557_IG10: ; bbWeight=0.50, gcrefRegs=B0C8 {rbx rsi rdi r12 r13 r15},
; gcr arg pop 0
test eax, eax
je SHORT G_M12557_IG12
- mov eax, dword ptr [rbp-0x8C]
- cmp dword ptr [rbp-0x90], eax
+ mov eax, dword ptr [rbp-0x90]
+ mov ecx, dword ptr [rbp-0x8C]
+ mov edx, dword ptr [rbp-0x7C]
+ mov r8, qword ptr [rbp-0x88]
+ cmp eax, ecx
+ mov dword ptr [rbp-0x7C], edx
+ mov qword ptr [rbp-0x88], r8
jne SHORT G_M12557_IG12
mov ecx, 1
call [<unknown method>]
@@ -345,20 +350,20 @@ G_M12557_IG10: ; bbWeight=0.50, gcrefRegs=B0C8 {rbx rsi rdi r12 r13 r15},
mov ecx, dword ptr [rbp-0x7C]
call [<unknown method>]
; gcr arg pop 0
+ ;; size=209 bbWeight=0.50 PerfScore 25.38
+G_M12557_IG11: ; bbWeight=0.50, isz, extend
lea rcx, bword ptr [rbx+0x0C]
; byrRegs +[rcx]
mov r8, qword ptr [rbp-0x88]
lea rdx, bword ptr [r12+0x0C]
; byrRegs +[rdx]
- ;; size=203 bbWeight=0.50 PerfScore 24.75
-G_M12557_IG11: ; bbWeight=0.50, isz, extend
call [<unknown method>]
; gcrRegs -[r12]
; byrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
jne SHORT G_M12557_IG14
- ;; size=10 bbWeight=0.50 PerfScore 2.12
+ ;; size=26 bbWeight=0.50 PerfScore 3.12
G_M12557_IG12: ; bbWeight=0.50, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
@@ -393,9 +398,8 @@ G_M12557_IG12: ; bbWeight=0.50, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byr
and ecx, 63
or byte ptr [r12+0x0E], cl
mov ebx, dword ptr [rbp-0x8C]
- mov eax, ebx
- add eax, dword ptr [rdi+0x08]
- mov dword ptr [r12+0x08], eax
+ add ebx, dword ptr [rdi+0x08]
+ mov dword ptr [r12+0x08], ebx
lea rcx, bword ptr [r12+0x28]
; byrRegs +[rcx]
mov rdx, rdi
@@ -403,7 +407,7 @@ G_M12557_IG12: ; bbWeight=0.50, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byr
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rdx rdi]
; byrRegs -[rcx]
- ;; size=120 bbWeight=0.50 PerfScore 13.38
+ ;; size=118 bbWeight=0.50 PerfScore 13.25
G_M12557_IG13: ; bbWeight=0.50, gcrefRegs=B040 {rsi r12 r13 r15}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M12557_IG15
;; size=2 bbWeight=0.50 PerfScore 1.00
@@ -433,10 +437,10 @@ G_M12557_IG15: ; bbWeight=1, gcrefRegs=B040 {rsi r12 r13 r15}, byrefRegs=
call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax:this]
; gcrRegs -[rcx rdx rsi r12] +[rax]
; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
+ mov rsi, rax
+ ; gcrRegs +[rsi]
;; size=27 bbWeight=1 PerfScore 5.50
-G_M12557_IG16: ; bbWeight=1, gcVars=0000008000000000 {V05}, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M12557_IG16: ; bbWeight=1, gcVars=0000008000000000 {V05}, gcrefRegs=A040 {rsi r13 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
; GC ptr vars -{V07}
mov rcx, r15
@@ -446,14 +450,14 @@ G_M12557_IG16: ; bbWeight=1, gcVars=0000008000000000 {V05}, gcrefRegs=A00
; gcr arg pop 0
nop
;; size=10 bbWeight=1 PerfScore 3.50
-G_M12557_IG17: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, gcvars, byref
+G_M12557_IG17: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=2040 {rsi r13}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V05}
mov rcx, r13
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rcx r13]
; gcr arg pop 0
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax]
;; size=12 bbWeight=1 PerfScore 3.50
G_M12557_IG18: ; bbWeight=1, epilog, nogc, extend
@@ -469,7 +473,7 @@ G_M12557_IG18: ; bbWeight=1, epilog, nogc, extend
ret
;; size=20 bbWeight=1 PerfScore 5.25
G_M12557_IG19: ; bbWeight=0, gcVars=0000018000000000 {V05 V07}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
- ; gcrRegs -[rax rbx]
+ ; gcrRegs -[rax rsi]
; GC ptr vars +{V05 V07 V39 V40}
push rbp
push r15
@@ -543,7 +547,7 @@ G_M12557_IG24: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1093, prolog size 64, PerfScore 168.08, instruction count 282, allocated bytes for code 1093 (MethodHash=d88dcef2) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
+; Total bytes of code 1113, prolog size 64, PerfScore 169.58, instruction count 286, allocated bytes for code 1113 (MethodHash=d88dcef2) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
; ============================================================
Unwind Info:
+21 (+2.11%) : 20018.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:g_getFormatAndCloseBrace|4341(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
@@ -29,13 +29,13 @@
; V18 tmp8 [V18,T17] ( 5, 2.50) int -> r10 "Inline stloc first use temp"
; V19 tmp9 [V19,T20] ( 4, 2 ) int -> r8 "Inline stloc first use temp"
; V20 tmp10 [V20,T03] ( 9, 9 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.String>
-; V21 tmp11 [V21,T38] ( 3, 1.50) ref -> r15 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V21 tmp11 [V21,T38] ( 3, 1.50) ref -> r12 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V22 tmp12 [V22,T10] ( 8, 4 ) ref -> r15 class-hnd exact single-def "Inline stloc first use temp" <System.String>
; V23 tmp13 [V23,T21] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
; V24 tmp14 [V24,T28] ( 2, 2 ) byref -> rcx single-def "impAppendStmt"
; V25 tmp15 [V25,T22] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
; V26 tmp16 [V26,T29] ( 2, 2 ) byref -> rcx single-def "impAppendStmt"
-; V27 tmp17 [V27,T00] ( 12, 12 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V27 tmp17 [V27,T00] ( 12, 12 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V28 tmp18 [V28,T36] ( 2, 2 ) int -> rcx "Inlining Arg"
;* V29 tmp19 [V29 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V30 tmp20 [V30 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -49,19 +49,19 @@
;* V38 tmp28 [V38 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V39 tmp29 [V39,T19] ( 5, 2.50) int -> r10 "Inline stloc first use temp"
; V40 tmp30 [V40,T24] ( 4, 2 ) int -> r8 "Inline stloc first use temp"
-; V41 tmp31 [V41,T39] ( 3, 1.50) ref -> r14 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V42 tmp32 [V42,T02] ( 11, 10.50) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String>
+; V41 tmp31 [V41,T39] ( 3, 1.50) ref -> rbx class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V42 tmp32 [V42,T02] ( 11, 10.50) ref -> rbp class-hnd exact single-def "Inlining Arg" <System.String>
;* V43 tmp33 [V43 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
;* V44 tmp34 [V44,T57] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-; V45 tmp35 [V45,T40] ( 3, 1.50) ref -> r14 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V46 tmp36 [V46,T11] ( 8, 4 ) ref -> r14 class-hnd exact single-def "Inline stloc first use temp" <System.String>
+; V45 tmp35 [V45,T40] ( 3, 1.50) ref -> rbx class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V46 tmp36 [V46,T11] ( 8, 4 ) ref -> r12 class-hnd exact single-def "Inline stloc first use temp" <System.String>
; V47 tmp37 [V47,T25] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
; V48 tmp38 [V48,T30] ( 2, 2 ) byref -> rcx single-def "impAppendStmt"
; V49 tmp39 [V49,T26] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
; V50 tmp40 [V50,T31] ( 2, 2 ) byref -> rcx single-def "impAppendStmt"
-; V51 tmp41 [V51,T04] ( 8, 8 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V52 tmp42 [V52,T37] ( 2, 2 ) int -> rbp "Inlining Arg"
-; V53 tmp43 [V53,T05] ( 8, 8 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia>
+; V51 tmp41 [V51,T04] ( 8, 8 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V52 tmp42 [V52,T37] ( 2, 2 ) int -> r13 "Inlining Arg"
+; V53 tmp43 [V53,T05] ( 8, 8 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia>
;* V54 tmp44 [V54 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V55 tmp45 [V55,T32] ( 2, 2 ) ref -> rdx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V56 tmp46 [V56,T44] ( 3, 1.50) int -> r8 single-def "field V04.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
@@ -71,7 +71,7 @@
;* V60 tmp50 [V60,T58] ( 0, 0 ) ref -> zero-ref single-def "field V11.Item1 (fldOffset=0x0)" P-INDEP
; V61 tmp51 [V61,T54] ( 2, 1 ) ref -> rdx single-def "field V11.Item2 (fldOffset=0x8)" P-INDEP
; V62 tmp52 [V62,T55] ( 2, 1 ) ref -> rdx single-def "field V17.Item1 (fldOffset=0x0)" P-INDEP
-; V63 tmp53 [V63,T56] ( 2, 1 ) ref -> r14 single-def "field V17.Item2 (fldOffset=0x8)" P-INDEP
+; V63 tmp53 [V63,T56] ( 2, 1 ) ref -> rbx single-def "field V17.Item2 (fldOffset=0x8)" P-INDEP
; V64 tmp54 [V64,T48] ( 3, 1.50) int -> r8 single-def "field V33.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
; V65 tmp55 [V65,T49] ( 3, 1.50) int -> rdx single-def "field V33.<End>k__BackingField (fldOffset=0x4)" P-INDEP
;* V66 tmp56 [V66 ] ( 0, 0 ) int -> zero-ref "field V36._value (fldOffset=0x0)" P-INDEP
@@ -79,11 +79,11 @@
; V68 tmp58 [V68,T33] ( 2, 2 ) ref -> r8 single-def "argument with side effect"
; V69 tmp59 [V69,T34] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
; V70 cse0 [V70,T50] ( 3, 1.50) int -> r12 "CSE - conservative"
-; V71 cse1 [V71,T51] ( 3, 1.50) int -> r15 "CSE - conservative"
-; V72 cse2 [V72,T52] ( 3, 1.50) long -> [rsp+0x20] spill-single-def "CSE - conservative"
-; V73 cse3 [V73,T53] ( 3, 1.50) long -> r13 "CSE - conservative"
+; V71 cse1 [V71,T51] ( 3, 1.50) int -> r14 "CSE - conservative"
+; V72 cse2 [V72,T52] ( 3, 1.50) long -> [rsp+0x20] "CSE - conservative"
+; V73 cse3 [V73,T53] ( 3, 1.50) long -> r15 "CSE - conservative"
; V74 cse4 [V74,T12] ( 8, 4 ) int -> r13 multi-def "CSE - aggressive"
-; V75 cse5 [V75,T09] ( 9, 4 ) int -> rbp multi-def "CSE - aggressive"
+; V75 cse5 [V75,T09] ( 9, 4 ) int -> r13 multi-def "CSE - aggressive"
;
; Lcl frame size = 40
@@ -195,7 +195,9 @@ G_M21658_IG05: ; bbWeight=0.50, gcrefRegs=00A2 {rcx rbp rdi}, byrefRegs=0
; gcr arg pop 0
test eax, eax
je SHORT G_M21658_IG07
+ mov rax, qword ptr [rsp+0x20]
cmp dword ptr [r15+0x08], r13d
+ mov qword ptr [rsp+0x20], rax
jne SHORT G_M21658_IG07
mov ecx, 1
call [<unknown method>]
@@ -204,7 +206,7 @@ G_M21658_IG05: ; bbWeight=0.50, gcrefRegs=00A2 {rcx rbp rdi}, byrefRegs=0
call [<unknown method>]
; gcr arg pop 0
mov ecx, r12d
- ;; size=177 bbWeight=0.50 PerfScore 25.25
+ ;; size=187 bbWeight=0.50 PerfScore 26.25
G_M21658_IG06: ; bbWeight=0.50, isz, extend
call [<unknown method>]
; gcr arg pop 0
@@ -225,21 +227,21 @@ G_M21658_IG07: ; bbWeight=0.50, gcrefRegs=40A0 {rbp rdi r14}, byrefRegs=0
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
- mov r15, rax
- ; gcrRegs +[r15]
+ mov r12, rax
+ ; gcrRegs +[r12]
mov r13d, dword ptr [r14+0x08]
mov ecx, r13d
- mov word ptr [r15+0x0C], 0x2013
- mov dword ptr [r15+0x08], ecx
- or byte ptr [r15+0x0E], 32
- lea rcx, bword ptr [r15+0x10]
+ mov word ptr [r12+0x0C], 0x2013
+ mov dword ptr [r12+0x08], ecx
+ or byte ptr [r12+0x0E], 32
+ lea rcx, bword ptr [r12+0x10]
; byrRegs +[rcx]
mov rdx, r14
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- lea rcx, bword ptr [r15+0x18]
+ lea rcx, bword ptr [r12+0x18]
; byrRegs +[rcx]
mov rdx, r14
; gcrRegs +[rdx]
@@ -250,22 +252,22 @@ G_M21658_IG07: ; bbWeight=0.50, gcrefRegs=40A0 {rbp rdi r14}, byrefRegs=0
je SHORT G_M21658_IG08
movzx rcx, byte ptr [rbp+0x0E]
and ecx, 63
- or byte ptr [r15+0x0E], cl
+ or byte ptr [r12+0x0E], cl
add r13d, dword ptr [rbp+0x08]
- mov dword ptr [r15+0x08], r13d
- lea rcx, bword ptr [r15+0x20]
+ mov dword ptr [r12+0x08], r13d
+ lea rcx, bword ptr [r12+0x20]
; byrRegs +[rcx]
mov rdx, rbp
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rdx rbp]
; byrRegs -[rcx]
- ;; size=101 bbWeight=0.50 PerfScore 12.25
-G_M21658_IG08: ; bbWeight=0.50, gcrefRegs=8080 {rdi r15}, byrefRegs=0048 {rbx rsi}, byref, isz
+ ;; size=109 bbWeight=0.50 PerfScore 12.25
+G_M21658_IG08: ; bbWeight=0.50, gcrefRegs=1080 {rdi r12}, byrefRegs=0048 {rbx rsi}, byref, isz
jmp SHORT G_M21658_IG10
;; size=2 bbWeight=0.50 PerfScore 1.00
G_M21658_IG09: ; bbWeight=0.50, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0048 {rbx rsi}, byref
- ; gcrRegs -[r15] +[rbp]
+ ; gcrRegs -[r12] +[rbp]
mov rdx, rbp
; gcrRegs +[rdx]
mov ecx, 0x2013
@@ -274,10 +276,10 @@ G_M21658_IG09: ; bbWeight=0.50, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0048
call [<unknown method>]
; gcrRegs -[rdx rbp r8] +[rax]
; gcr arg pop 0
- mov r15, rax
- ; gcrRegs +[r15]
+ mov r12, rax
+ ; gcrRegs +[r12]
;; size=20 bbWeight=0.50 PerfScore 2.00
-G_M21658_IG10: ; bbWeight=0.50, gcrefRegs=8080 {rdi r15}, byrefRegs=0048 {rbx rsi}, byref, isz
+G_M21658_IG10: ; bbWeight=0.50, gcrefRegs=1080 {rdi r12}, byrefRegs=0048 {rbx rsi}, byref, isz
; gcrRegs -[rax]
mov ebp, dword ptr [rbx+0x10]
mov rcx, gword ptr [rbx+0x08]
@@ -290,13 +292,13 @@ G_M21658_IG10: ; bbWeight=0.50, gcrefRegs=8080 {rdi r15}, byrefRegs=0048
jge SHORT G_M21658_IG11
lea r10d, [r8+rax+0x01]
;; size=30 bbWeight=0.50 PerfScore 6.25
-G_M21658_IG11: ; bbWeight=0.50, gcrefRegs=8082 {rcx rdi r15}, byrefRegs=0048 {rbx rsi}, byref, isz
+G_M21658_IG11: ; bbWeight=0.50, gcrefRegs=1082 {rcx rdi r12}, byrefRegs=0048 {rbx rsi}, byref, isz
mov r8d, edx
test r8d, r8d
jge SHORT G_M21658_IG12
lea r8d, [rdx+rax+0x01]
;; size=13 bbWeight=0.50 PerfScore 1.25
-G_M21658_IG12: ; bbWeight=0.50, gcrefRegs=8082 {rcx rdi r15}, byrefRegs=0048 {rbx rsi}, byref, isz
+G_M21658_IG12: ; bbWeight=0.50, gcrefRegs=1082 {rcx rdi r12}, byrefRegs=0048 {rbx rsi}, byref, isz
sub r8d, r10d
mov edx, r10d
call [System.String:Substring(int,int):System.String:this]
@@ -312,10 +314,10 @@ G_M21658_IG12: ; bbWeight=0.50, gcrefRegs=8082 {rcx rdi r15}, byrefRegs=0
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- mov rcx, r15
+ mov rcx, r12
; gcrRegs +[rcx]
call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxFactory:InterpolationFormatClause(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax]
- ; gcrRegs -[rcx rdx r15]
+ ; gcrRegs -[rcx rdx r12]
; gcr arg pop 0
mov rdi, rax
; gcrRegs +[rdi]
@@ -343,48 +345,48 @@ G_M21658_IG14: ; bbWeight=0.50, gcrefRegs=0082 {rcx rdi}, byrefRegs=0040
call [System.String:Substring(int,int):System.String:this]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
- test rbx, rbx
+ mov rbp, rax
+ ; gcrRegs +[rbp]
+ test rbp, rbp
je SHORT G_M21658_IG17
;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M21658_IG15: ; bbWeight=0.25, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref, isz
+G_M21658_IG15: ; bbWeight=0.25, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0040 {rsi}, byref, isz
; gcrRegs -[rax]
- mov ebp, dword ptr [rbx+0x08]
- test ebp, ebp
+ mov r13d, dword ptr [rbp+0x08]
+ test r13d, r13d
jne SHORT G_M21658_IG17
- ;; size=7 bbWeight=0.25 PerfScore 0.81
+ ;; size=9 bbWeight=0.25 PerfScore 0.81
G_M21658_IG16: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
- ; gcrRegs -[rbx]
+ ; gcrRegs -[rbp]
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
- mov r14, rax
- ; gcrRegs +[r14]
- mov word ptr [r14+0x0C], 0x200E
+ mov rbx, rax
+ ; gcrRegs +[rbx]
+ mov word ptr [rbx+0x0C], 0x200E
xor ecx, ecx
- mov dword ptr [r14+0x08], ecx
- or byte ptr [r14+0x0E], 32
- and byte ptr [r14+0x0E], 223
+ mov dword ptr [rbx+0x08], ecx
+ or byte ptr [rbx+0x0E], 32
+ and byte ptr [rbx+0x0E], 223
jmp G_M21658_IG21
- ;; size=46 bbWeight=0.50 PerfScore 5.88
-G_M21658_IG17: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref, isz
- ; gcrRegs -[rax r14] +[rbx]
+ ;; size=42 bbWeight=0.50 PerfScore 5.88
+G_M21658_IG17: ; bbWeight=0.50, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0040 {rsi}, byref, isz
+ ; gcrRegs -[rax rbx] +[rbp]
mov ecx, 0x200E
call [<unknown method>]
; gcrRegs +[rax]
; gcr arg pop 0
- mov r14, rax
- ; gcrRegs +[r14]
- cmp rbx, r14
+ mov r12, rax
+ ; gcrRegs +[r12]
+ cmp rbp, r12
je G_M21658_IG20
- test rbx, rbx
+ test rbp, rbp
...
+11 (+2.27%) : 20019.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:g_getInterpolationCloseToken|4342(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
@@ -20,19 +20,19 @@
; V09 tmp1 [V09,T06] ( 3, 6 ) ref -> rcx class-hnd exact single-def "impAppendStmt" <System.String>
; V10 tmp2 [V10,T05] ( 6, 6 ) int -> r10 "Inline stloc first use temp"
; V11 tmp3 [V11,T08] ( 4, 3.50) int -> rdx "Inline stloc first use temp"
-; V12 tmp4 [V12,T16] ( 3, 2 ) ref -> rbp class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V12 tmp4 [V12,T16] ( 3, 2 ) ref -> r14 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V13 tmp5 [V13,T00] ( 11, 12.50) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
;* V14 tmp6 [V14 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
;* V15 tmp7 [V15,T24] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-; V16 tmp8 [V16,T20] ( 3, 1.50) ref -> rbp class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V16 tmp8 [V16,T20] ( 3, 1.50) ref -> r14 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V17 tmp9 [V17,T09] ( 6, 3 ) ref -> rbp class-hnd exact single-def "Inline stloc first use temp" <System.String>
; V18 tmp10 [V18,T13] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
; V19 tmp11 [V19,T17] ( 2, 2 ) byref -> rcx single-def "impAppendStmt"
; V20 tmp12 [V20,T14] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
; V21 tmp13 [V21,T18] ( 2, 2 ) byref -> rcx single-def "impAppendStmt"
-; V22 tmp14 [V22,T01] ( 12, 12 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V22 tmp14 [V22,T01] ( 12, 12 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V23 tmp15 [V23,T19] ( 2, 2 ) int -> rcx "Inlining Arg"
-; V24 tmp16 [V24,T02] ( 12, 12 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia>
+; V24 tmp16 [V24,T02] ( 12, 12 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia>
;* V25 tmp17 [V25 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V26 tmp18 [V26,T10] ( 3, 3 ) int -> rdx single-def "field V03.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
; V27 tmp19 [V27,T12] ( 3, 2.50) int -> r8 single-def "field V03.<End>k__BackingField (fldOffset=0x4)" P-INDEP
@@ -100,19 +100,19 @@ G_M58175_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
- mov rbp, rax
- ; gcrRegs +[rbp]
- mov word ptr [rbp+0x0C], 0x200E
+ mov r14, rax
+ ; gcrRegs +[r14]
+ mov word ptr [r14+0x0C], 0x200E
xor eax, eax
; gcrRegs -[rax]
- mov dword ptr [rbp+0x08], eax
- or byte ptr [rbp+0x0E], 32
+ mov dword ptr [r14+0x08], eax
+ or byte ptr [r14+0x0E], 32
test rbx, rbx
je G_M58175_IG13
jmp G_M58175_IG12
- ;; size=47 bbWeight=0.50 PerfScore 5.00
+ ;; size=50 bbWeight=0.50 PerfScore 5.00
G_M58175_IG07: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbp] +[rsi]
+ ; gcrRegs -[r14] +[rsi]
mov ecx, 0x200E
call [<unknown method>]
; gcrRegs +[rax]
@@ -182,21 +182,21 @@ G_M58175_IG08: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
- mov rbp, rax
- ; gcrRegs +[rbp]
+ mov r14, rax
+ ; gcrRegs +[r14]
mov edi, dword ptr [rsi+0x08]
mov ecx, edi
- mov word ptr [rbp+0x0C], 0x200E
- mov dword ptr [rbp+0x08], ecx
- or byte ptr [rbp+0x0E], 32
- lea rcx, bword ptr [rbp+0x10]
+ mov word ptr [r14+0x0C], 0x200E
+ mov dword ptr [r14+0x08], ecx
+ or byte ptr [r14+0x0E], 32
+ lea rcx, bword ptr [r14+0x10]
; byrRegs +[rcx]
mov rdx, rsi
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- lea rcx, bword ptr [rbp+0x18]
+ lea rcx, bword ptr [r14+0x18]
; byrRegs +[rcx]
mov rdx, rsi
; gcrRegs +[rdx]
@@ -207,22 +207,22 @@ G_M58175_IG08: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
je SHORT G_M58175_IG09
movzx rcx, byte ptr [rbx+0x0E]
and ecx, 63
- or byte ptr [rbp+0x0E], cl
+ or byte ptr [r14+0x0E], cl
add edi, dword ptr [rbx+0x08]
- mov dword ptr [rbp+0x08], edi
- lea rcx, bword ptr [rbp+0x20]
+ mov dword ptr [r14+0x08], edi
+ lea rcx, bword ptr [r14+0x20]
; byrRegs +[rcx]
mov rdx, rbx
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rdx rbx]
; byrRegs -[rcx]
- ;; size=93 bbWeight=0.50 PerfScore 12.25
-G_M58175_IG09: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
+ ;; size=98 bbWeight=0.50 PerfScore 12.25
+G_M58175_IG09: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M58175_IG11
;; size=2 bbWeight=0.50 PerfScore 1.00
G_M58175_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbp] +[rbx]
+ ; gcrRegs -[r14] +[rbx]
mov rdx, rbx
; gcrRegs +[rdx]
mov ecx, 0x200E
@@ -231,33 +231,33 @@ G_M58175_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
call [<unknown method>]
; gcrRegs -[rdx rbx r8] +[rax]
; gcr arg pop 0
- mov rbp, rax
- ; gcrRegs +[rbp]
+ mov r14, rax
+ ; gcrRegs +[r14]
;; size=20 bbWeight=0.50 PerfScore 2.00
-G_M58175_IG11: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
+G_M58175_IG11: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
jmp SHORT G_M58175_IG14
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M58175_IG12: ; bbWeight=0.50, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
+G_M58175_IG12: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx]
movzx rcx, byte ptr [rbx+0x0E]
and ecx, 63
- or byte ptr [rbp+0x0E], cl
+ or byte ptr [r14+0x0E], cl
mov ecx, dword ptr [rbx+0x08]
- mov dword ptr [rbp+0x08], ecx
- lea rcx, bword ptr [rbp+0x10]
+ mov dword ptr [r14+0x08], ecx
+ lea rcx, bword ptr [r14+0x10]
; byrRegs +[rcx]
mov rdx, rbx
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rdx rbx]
; byrRegs -[rcx]
- ;; size=28 bbWeight=0.50 PerfScore 5.00
-G_M58175_IG13: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
- and byte ptr [rbp+0x0E], 223
- ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M58175_IG14: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
- mov rax, rbp
+ ;; size=30 bbWeight=0.50 PerfScore 5.00
+G_M58175_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+ and byte ptr [r14+0x0E], 223
+ ;; size=5 bbWeight=0.50 PerfScore 1.50
+G_M58175_IG14: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+ mov rax, r14
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
G_M58175_IG15: ; bbWeight=1, epilog, nogc, extend
@@ -272,7 +272,7 @@ G_M58175_IG15: ; bbWeight=1, epilog, nogc, extend
ret
;; size=15 bbWeight=1 PerfScore 4.75
-; Total bytes of code 485, prolog size 14, PerfScore 81.31, instruction count 135, allocated bytes for code 485 (MethodHash=a2b31cc0) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getInterpolationCloseToken|434_2(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
+; Total bytes of code 496, prolog size 14, PerfScore 81.31, instruction count 135, allocated bytes for code 496 (MethodHash=a2b31cc0) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getInterpolationCloseToken|434_2(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
; ============================================================
Unwind Info:
smoke_tests.nativeaot.windows.x64.checked.mch
-16 (-8.47%) : 12457.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
@@ -7,18 +7,19 @@
; fully interruptible
; Final local variable assignments
;
-; V00 arg0 [V00,T07] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-; V01 arg1 [V01,T08] ( 4, 3.50) int -> rdx single-def
-; V02 arg2 [V02,T09] ( 3, 2.50) int -> r8 single-def
-; V03 arg3 [V03,T02] ( 6, 18 ) ushort -> r9 single-def
-; V04 loc0 [V04,T00] ( 24, 79 ) int -> rbx
-; V05 loc1 [V05,T06] ( 8, 10.50) int -> r11
+; V00 arg0 [V00,T08] ( 4, 8 ) byref -> rcx ld-addr-op single-def
+; V01 arg1 [V01,T09] ( 4, 3.50) int -> rdx single-def
+; V02 arg2 [V02,T10] ( 3, 2.50) int -> r8 single-def
+; V03 arg3 [V03,T06] ( 4, 10 ) ushort -> r9 single-def
+; V04 loc0 [V04,T00] ( 22, 77.50) int -> rbx
+; V05 loc1 [V05,T07] ( 8, 10.50) int -> r11
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T04] ( 2, 16 ) int -> rbx "dup spill"
; V08 tmp2 [V08,T05] ( 2, 16 ) int -> rbx "dup spill"
; V09 tmp3 [V09,T03] ( 5, 17 ) byref -> r10 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp4 [V10,T01] ( 8, 25.50) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
+; V10 tmp4 [V10,T01] ( 7, 25 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
+; V12 cse0 [V12,T02] ( 6, 24 ) int -> rsi multi-def "CSE - aggressive"
;
; Lcl frame size = 40
@@ -42,113 +43,105 @@ G_M48691_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byr
;; size=2 bbWeight=2 PerfScore 0.50
G_M48691_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
test ebx, ebx
- jl SHORT G_M48691_IG06
+ jl SHORT G_M48691_IG12
;; size=4 bbWeight=8 PerfScore 10.00
G_M48691_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
cmp ebx, ecx
- jae G_M48691_IG22
+ jae G_M48691_IG21
mov eax, ebx
movzx rax, word ptr [r10+2*rax]
movzx rsi, r9w
cmp eax, esi
jne SHORT G_M48691_IG03
;; size=23 bbWeight=4 PerfScore 20.00
-G_M48691_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
- test ebx, ebx
- jl SHORT G_M48691_IG13
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M48691_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
- jmp SHORT G_M48691_IG09
+G_M48691_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
+ jmp SHORT G_M48691_IG08
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M48691_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref
+G_M48691_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref
inc r11d
;; size=3 bbWeight=2 PerfScore 0.50
-G_M48691_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
+G_M48691_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
dec ebx
- js SHORT G_M48691_IG10
+ js SHORT G_M48691_IG09
cmp ebx, ecx
- jae SHORT G_M48691_IG22
+ jae SHORT G_M48691_IG21
mov eax, ebx
movzx rax, word ptr [r10+2*rax]
- movzx rsi, r9w
cmp eax, esi
- je SHORT G_M48691_IG08
- ;; size=23 bbWeight=4 PerfScore 25.00
-G_M48691_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
+ je SHORT G_M48691_IG07
+ ;; size=19 bbWeight=4 PerfScore 24.00
+G_M48691_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
cmp r11d, 1
- jg SHORT G_M48691_IG13
+ jg SHORT G_M48691_IG12
;; size=6 bbWeight=0.50 PerfScore 0.62
-G_M48691_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M48691_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r10]
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M48691_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M48691_IG11: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M48691_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, gcvars, byref, isz
+G_M48691_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, gcvars, byref, isz
; byrRegs +[r10]
lea ebx, [rdx+r8]
- jmp SHORT G_M48691_IG15
+ jmp SHORT G_M48691_IG14
;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M48691_IG14: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref
+G_M48691_IG13: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref
inc ebx
;; size=2 bbWeight=2 PerfScore 0.50
-G_M48691_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
- cmp ebx, ecx
- jge SHORT G_M48691_IG16
- cmp ebx, ecx
- jae SHORT G_M48691_IG22
- mov r11d, ebx
- movzx rax, word ptr [r10+2*r11]
- movzx rdx, r9w
- cmp eax, edx
- jne SHORT G_M48691_IG14
- ;; size=24 bbWeight=4 PerfScore 25.00
-G_M48691_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
- cmp ebx, ecx
- jge SHORT G_M48691_IG20
- xor r11d, r11d
- jmp SHORT G_M48691_IG18
- ;; size=9 bbWeight=0.50 PerfScore 1.75
-G_M48691_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref
- inc r11d
- ;; size=3 bbWeight=2 PerfScore 0.50
-G_M48691_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
- inc ebx
+G_M48691_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
cmp ebx, ecx
jge SHORT G_M48691_IG19
cmp ebx, ecx
- jae SHORT G_M48691_IG22
+ jae SHORT G_M48691_IG21
+ mov r11d, ebx
+ movzx rax, word ptr [r10+2*r11]
+ movzx rsi, r9w
+ cmp eax, esi
+ jne SHORT G_M48691_IG13
+ ;; size=24 bbWeight=4 PerfScore 25.00
+G_M48691_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
+ xor r11d, r11d
+ jmp SHORT G_M48691_IG17
+ ;; size=5 bbWeight=0.50 PerfScore 1.12
+G_M48691_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref
+ inc r11d
+ ;; size=3 bbWeight=2 PerfScore 0.50
+G_M48691_IG17: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
+ inc ebx
+ cmp ebx, ecx
+ jge SHORT G_M48691_IG18
+ cmp ebx, ecx
+ jae SHORT G_M48691_IG21
mov eax, ebx
movzx rax, word ptr [r10+2*rax]
- movzx rdx, r9w
- cmp eax, edx
- je SHORT G_M48691_IG17
- ;; size=25 bbWeight=4 PerfScore 26.00
-G_M48691_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp eax, esi
+ je SHORT G_M48691_IG16
+ ;; size=21 bbWeight=4 PerfScore 25.00
+G_M48691_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r10]
cmp r11d, 1
- jle SHORT G_M48691_IG11
+ jle SHORT G_M48691_IG10
;; size=6 bbWeight=0.50 PerfScore 0.62
-G_M48691_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M48691_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M48691_IG21: ; bbWeight=0.50, epilog, nogc, extend
+G_M48691_IG20: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M48691_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M48691_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 189, prolog size 6, PerfScore 126.00, instruction count 74, allocated bytes for code 189 (MethodHash=af0b41cc) for method System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
+; Total bytes of code 173, prolog size 6, PerfScore 122.12, instruction count 68, allocated bytes for code 173 (MethodHash=af0b41cc) for method System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
; ============================================================
Unwind Info:
-16 (-8.47%) : 7362.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
@@ -8,18 +8,19 @@
; control-flow guard enabled
; Final local variable assignments
;
-; V00 arg0 [V00,T07] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-; V01 arg1 [V01,T08] ( 4, 3.50) int -> rdx single-def
-; V02 arg2 [V02,T09] ( 3, 2.50) int -> r8 single-def
-; V03 arg3 [V03,T02] ( 6, 18 ) ushort -> r9 single-def
-; V04 loc0 [V04,T00] ( 24, 79 ) int -> rbx
-; V05 loc1 [V05,T06] ( 8, 10.50) int -> r11
+; V00 arg0 [V00,T08] ( 4, 8 ) byref -> rcx ld-addr-op single-def
+; V01 arg1 [V01,T09] ( 4, 3.50) int -> rdx single-def
+; V02 arg2 [V02,T10] ( 3, 2.50) int -> r8 single-def
+; V03 arg3 [V03,T06] ( 4, 10 ) ushort -> r9 single-def
+; V04 loc0 [V04,T00] ( 22, 77.50) int -> rbx
+; V05 loc1 [V05,T07] ( 8, 10.50) int -> r11
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T04] ( 2, 16 ) int -> rbx "dup spill"
; V08 tmp2 [V08,T05] ( 2, 16 ) int -> rbx "dup spill"
; V09 tmp3 [V09,T03] ( 5, 17 ) byref -> r10 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp4 [V10,T01] ( 8, 25.50) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
+; V10 tmp4 [V10,T01] ( 7, 25 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
+; V12 cse0 [V12,T02] ( 6, 24 ) int -> rsi multi-def "CSE - aggressive"
;
; Lcl frame size = 40
@@ -43,113 +44,105 @@ G_M48691_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byr
;; size=2 bbWeight=2 PerfScore 0.50
G_M48691_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
test ebx, ebx
- jl SHORT G_M48691_IG06
+ jl SHORT G_M48691_IG12
;; size=4 bbWeight=8 PerfScore 10.00
G_M48691_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
cmp ebx, ecx
- jae G_M48691_IG22
+ jae G_M48691_IG21
mov eax, ebx
movzx rax, word ptr [r10+2*rax]
movzx rsi, r9w
cmp eax, esi
jne SHORT G_M48691_IG03
;; size=23 bbWeight=4 PerfScore 20.00
-G_M48691_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
- test ebx, ebx
- jl SHORT G_M48691_IG13
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M48691_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
- jmp SHORT G_M48691_IG09
+G_M48691_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
+ jmp SHORT G_M48691_IG08
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M48691_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref
+G_M48691_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref
inc r11d
;; size=3 bbWeight=2 PerfScore 0.50
-G_M48691_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
+G_M48691_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
dec ebx
- js SHORT G_M48691_IG10
+ js SHORT G_M48691_IG09
cmp ebx, ecx
- jae SHORT G_M48691_IG22
+ jae SHORT G_M48691_IG21
mov eax, ebx
movzx rax, word ptr [r10+2*rax]
- movzx rsi, r9w
cmp eax, esi
- je SHORT G_M48691_IG08
- ;; size=23 bbWeight=4 PerfScore 25.00
-G_M48691_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
+ je SHORT G_M48691_IG07
+ ;; size=19 bbWeight=4 PerfScore 24.00
+G_M48691_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
cmp r11d, 1
- jg SHORT G_M48691_IG13
+ jg SHORT G_M48691_IG12
;; size=6 bbWeight=0.50 PerfScore 0.62
-G_M48691_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M48691_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r10]
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M48691_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M48691_IG11: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M48691_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, gcvars, byref, isz
+G_M48691_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, gcvars, byref, isz
; byrRegs +[r10]
lea ebx, [rdx+r8]
- jmp SHORT G_M48691_IG15
+ jmp SHORT G_M48691_IG14
;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M48691_IG14: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref
+G_M48691_IG13: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref
inc ebx
;; size=2 bbWeight=2 PerfScore 0.50
-G_M48691_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
- cmp ebx, ecx
- jge SHORT G_M48691_IG16
- cmp ebx, ecx
- jae SHORT G_M48691_IG22
- mov r11d, ebx
- movzx rax, word ptr [r10+2*r11]
- movzx rdx, r9w
- cmp eax, edx
- jne SHORT G_M48691_IG14
- ;; size=24 bbWeight=4 PerfScore 25.00
-G_M48691_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
- cmp ebx, ecx
- jge SHORT G_M48691_IG20
- xor r11d, r11d
- jmp SHORT G_M48691_IG18
- ;; size=9 bbWeight=0.50 PerfScore 1.75
-G_M48691_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref
- inc r11d
- ;; size=3 bbWeight=2 PerfScore 0.50
-G_M48691_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
- inc ebx
+G_M48691_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
cmp ebx, ecx
jge SHORT G_M48691_IG19
cmp ebx, ecx
- jae SHORT G_M48691_IG22
+ jae SHORT G_M48691_IG21
+ mov r11d, ebx
+ movzx rax, word ptr [r10+2*r11]
+ movzx rsi, r9w
+ cmp eax, esi
+ jne SHORT G_M48691_IG13
+ ;; size=24 bbWeight=4 PerfScore 25.00
+G_M48691_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
+ xor r11d, r11d
+ jmp SHORT G_M48691_IG17
+ ;; size=5 bbWeight=0.50 PerfScore 1.12
+G_M48691_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref
+ inc r11d
+ ;; size=3 bbWeight=2 PerfScore 0.50
+G_M48691_IG17: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz
+ inc ebx
+ cmp ebx, ecx
+ jge SHORT G_M48691_IG18
+ cmp ebx, ecx
+ jae SHORT G_M48691_IG21
mov eax, ebx
movzx rax, word ptr [r10+2*rax]
- movzx rdx, r9w
- cmp eax, edx
- je SHORT G_M48691_IG17
- ;; size=25 bbWeight=4 PerfScore 26.00
-G_M48691_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp eax, esi
+ je SHORT G_M48691_IG16
+ ;; size=21 bbWeight=4 PerfScore 25.00
+G_M48691_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r10]
cmp r11d, 1
- jle SHORT G_M48691_IG11
+ jle SHORT G_M48691_IG10
;; size=6 bbWeight=0.50 PerfScore 0.62
-G_M48691_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M48691_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M48691_IG21: ; bbWeight=0.50, epilog, nogc, extend
+G_M48691_IG20: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M48691_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M48691_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 189, prolog size 6, PerfScore 126.00, instruction count 74, allocated bytes for code 189 (MethodHash=af0b41cc) for method System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
+; Total bytes of code 173, prolog size 6, PerfScore 122.12, instruction count 68, allocated bytes for code 173 (MethodHash=af0b41cc) for method System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
; ============================================================
Unwind Info:
-9 (-7.44%) : 31818.dasm - FinalizeTest:Run():int (FullOpts)
@@ -38,7 +38,7 @@ G_M43469_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
;; size=32 bbWeight=2 PerfScore 7.00
G_M43469_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [(reloc)], 0
- jne SHORT G_M43469_IG06
+ jne SHORT G_M43469_IG08
;; size=9 bbWeight=8 PerfScore 32.00
G_M43469_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lea ecx, [rbx+0x01]
@@ -46,25 +46,7 @@ G_M43469_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
cmp ebx, 0xD1FFAB1E
jl SHORT G_M43469_IG03
;; size=13 bbWeight=4 PerfScore 8.00
-G_M43469_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp byte ptr [(reloc)], 0
- je SHORT G_M43469_IG09
- ;; size=9 bbWeight=1 PerfScore 4.00
-G_M43469_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rcx, gword ptr [(reloc)]
- ; gcrRegs +[rcx]
- call <unknown method>
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- mov eax, 100
- ;; size=17 bbWeight=0.50 PerfScore 0.88
-G_M43469_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rsi
- ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M43469_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M43469_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, gword ptr [(reloc)]
; gcrRegs +[rcx]
call <unknown method>
@@ -72,14 +54,28 @@ G_M43469_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcr arg pop 0
mov eax, -1
;; size=17 bbWeight=0.50 PerfScore 0.88
-G_M43469_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M43469_IG07: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
+G_M43469_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ lea rcx, gword ptr [(reloc)]
+ ; gcrRegs +[rcx]
+ call <unknown method>
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
+ mov eax, 100
+ ;; size=17 bbWeight=1 PerfScore 1.75
+G_M43469_IG09: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rsi
+ ret
+ ;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 121, prolog size 6, PerfScore 59.50, instruction count 34, allocated bytes for code 121 (MethodHash=e2fb5632) for method FinalizeTest:Run():int (FullOpts)
+; Total bytes of code 112, prolog size 6, PerfScore 57.50, instruction count 32, allocated bytes for code 112 (MethodHash=e2fb5632) for method FinalizeTest:Run():int (FullOpts)
; ============================================================
Unwind Info:
+27 (+3.16%) : 17671.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
@@ -8,9 +8,9 @@
; Final local variable assignments
;
; V00 arg0 [V00,T06] ( 18, 21 ) ref -> rbx class-hnd exact single-def <System.Collections.Generic.List`1[System.String]>
-; V01 loc0 [V01,T02] ( 13, 47.50) ref -> rsi class-hnd exact single-def <System.String>
+; V01 loc0 [V01,T03] ( 13, 47.50) ref -> rsi class-hnd exact single-def <System.String>
; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [rbp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 39,149.08) int -> r14
+; V03 loc2 [V03,T00] ( 41,183.08) int -> r14
; V04 loc3 [V04,T19] ( 4, 2 ) int -> rcx
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
; V06 loc5 [V06,T04] ( 8, 25 ) int -> r14
@@ -41,11 +41,11 @@
; V31 cse3 [V31,T10] ( 3, 12 ) ref -> rcx "CSE - aggressive"
; V32 cse4 [V32,T24] ( 3, 1.50) long -> r15 "CSE - moderate"
; V33 cse5 [V33,T25] ( 3, 1.50) int -> rdi "CSE - moderate"
-; V34 cse6 [V34,T03] ( 15, 30.54) int -> rdi "CSE - aggressive"
+; V34 cse6 [V34,T01] ( 17, 64.54) int -> rdi "CSE - aggressive"
; V35 cse7 [V35,T15] ( 2, 8 ) int -> r8 "CSE - aggressive"
; V36 cse8 [V36,T13] ( 3, 11.88) int -> rcx "CSE - aggressive"
; V37 cse9 [V37,T16] ( 7, 3.50) int -> r13 "CSE - moderate"
-; V38 cse10 [V38,T01] ( 3, 48 ) long -> rdx "CSE - aggressive"
+; V38 cse10 [V38,T02] ( 3, 48 ) long -> rdx "CSE - aggressive"
; V39 cse11 [V39,T12] ( 3, 12 ) long -> rdx "CSE - aggressive"
;
; Lcl frame size = 64
@@ -69,24 +69,24 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=39 bbWeight=1 PerfScore 12.25
G_M28069_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp dword ptr [rbx+0x10], 0
- je G_M28069_IG23
+ je G_M28069_IG22
;; size=10 bbWeight=1 PerfScore 4.00
G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rbx+0x08]
; gcrRegs +[rax]
cmp dword ptr [rax+0x08], 0
- jbe G_M28069_IG29
+ jbe G_M28069_IG28
mov rsi, gword ptr [rax+0x10]
; gcrRegs +[rsi]
mov edi, dword ptr [rsi+0x08]
cmp edi, 100
- jg G_M28069_IG23
+ jg G_M28069_IG22
lea ecx, [rdi+0x02]
mov eax, ecx
; gcrRegs -[rax]
mov r8d, 2
mul rdx:rax, r8
- jb G_M28069_IG28
+ jb G_M28069_IG27
mov rdx, rax
test rdx, rdx
je SHORT G_M28069_IG05
@@ -110,97 +110,97 @@ G_M28069_IG04: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
;; size=30 bbWeight=0.50 PerfScore 4.25
G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
test ecx, ecx
- jl G_M28069_IG30
+ jl G_M28069_IG29
mov bword ptr [rbp+0x10], rdx
mov dword ptr [rbp+0x18], ecx
xor r14d, r14d
test edi, edi
- jle G_M28069_IG14
+ jle G_M28069_IG13
;; size=26 bbWeight=0.50 PerfScore 2.38
G_M28069_IG06: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov ecx, r14d
movzx rcx, word ptr [rsi+2*rcx+0x0C]
cmp ecx, 39
- jne SHORT G_M28069_IG10
+ jne SHORT G_M28069_IG09
;; size=13 bbWeight=4 PerfScore 14.00
G_M28069_IG07: ; bbWeight=16, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp r14d, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10]
; byrRegs +[rcx]
mov edx, r14d
+ cmp r14d, edi
+ jae G_M28069_IG28
movzx rax, word ptr [rsi+2*rdx+0x0C]
mov word ptr [rcx+2*rdx], ax
inc r14d
cmp edi, r14d
- jle SHORT G_M28069_IG08
+ jle G_M28069_IG22
+ cmp r14d, edi
+ jae G_M28069_IG28
mov ecx, r14d
; byrRegs -[rcx]
cmp word ptr [rsi+2*rcx+0x0C], 39
jne SHORT G_M28069_IG07
- ;; size=45 bbWeight=16 PerfScore 208.00
-G_M28069_IG08: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- cmp edi, r14d
- jg SHORT G_M28069_IG11
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M28069_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rsi]
- jmp G_M28069_IG23
- ;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M28069_IG10: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx rsi]
+ ;; size=67 bbWeight=16 PerfScore 248.00
+G_M28069_IG08: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M28069_IG10
+ ;; size=2 bbWeight=4 PerfScore 8.00
+G_M28069_IG09: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp ecx, 121
- je SHORT G_M28069_IG13
+ je SHORT G_M28069_IG12
;; size=5 bbWeight=2 PerfScore 2.50
-G_M28069_IG11: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG10: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
cmp r14d, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10]
; byrRegs +[rcx]
mov edx, r14d
+ cmp r14d, edi
+ jae G_M28069_IG28
movzx rax, word ptr [rsi+2*rdx+0x0C]
mov word ptr [rcx+2*rdx], ax
inc r14d
cmp edi, r14d
- jg SHORT G_M28069_IG06
- ;; size=34 bbWeight=4 PerfScore 35.00
-G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ jg G_M28069_IG06
+ ;; size=47 bbWeight=4 PerfScore 40.00
+G_M28069_IG11: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rcx]
- jmp SHORT G_M28069_IG14
+ jmp SHORT G_M28069_IG13
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
cmp r14d, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10]
; byrRegs +[rcx]
mov edx, r14d
mov word ptr [rcx+2*rdx], 121
;; size=23 bbWeight=0.50 PerfScore 2.62
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rcx]
lea ecx, [rdi-0x01]
cmp ecx, r14d
- jle G_M28069_IG23
+ jle G_M28069_IG22
lea ecx, [r14+0x01]
cmp ecx, edi
- jae G_M28069_IG29
+ jae G_M28069_IG28
lea ecx, [r14+0x01]
mov r15d, ecx
cmp word ptr [rsi+2*r15+0x0C], 121
- jne G_M28069_IG23
+ jne G_M28069_IG22
lea r13d, [r14+0x02]
cmp edi, r13d
- jle SHORT G_M28069_IG15
+ jle SHORT G_M28069_IG14
cmp r13d, edi
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov ecx, r13d
cmp word ptr [rsi+2*rcx+0x0C], 121
- je G_M28069_IG23
+ je G_M28069_IG22
;; size=77 bbWeight=0.50 PerfScore 7.75
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
lea ecx, [r14+0x03]
cmp ecx, dword ptr [rbp+0x18]
- jl SHORT G_M28069_IG16
+ jl SHORT G_M28069_IG15
lea rcx, gword ptr [(reloc)]
; gcrRegs +[rcx]
lea rdx, gword ptr [(reloc)]
@@ -209,37 +209,37 @@ G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=28 bbWeight=0.50 PerfScore 2.75
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
lea ecx, [r14+0x01]
cmp ecx, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10]
; byrRegs +[rcx]
mov word ptr [rcx+2*r15], 121
cmp r13d, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10]
mov eax, r13d
mov word ptr [rcx+2*rax], 121
lea ecx, [r14+0x03]
; byrRegs -[rcx]
cmp ecx, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10]
; byrRegs +[rcx]
lea eax, [r14+0x03]
mov word ptr [rcx+2*rax], 121
mov r14d, r13d
cmp edi, r14d
- jle SHORT G_M28069_IG20
+ jle SHORT G_M28069_IG19
test r14d, r14d
- jl SHORT G_M28069_IG19
+ jl SHORT G_M28069_IG18
;; size=87 bbWeight=0.50 PerfScore 9.75
-G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG16: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rcx]
lea ecx, [r14+0x02]
cmp ecx, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rax, bword ptr [rbp+0x10]
; byrRegs +[rax]
mov edx, r14d
@@ -247,29 +247,29 @@ G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
mov word ptr [rax+2*rcx], dx
inc r14d
cmp edi, r14d
- jg SHORT G_M28069_IG17
+ jg SHORT G_M28069_IG16
;; size=37 bbWeight=3.96 PerfScore 36.63
-G_M28069_IG18: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
- jmp SHORT G_M28069_IG20
+ jmp SHORT G_M28069_IG19
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M28069_IG19: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG18: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
lea ecx, [r14+0x02]
cmp ecx, dword ptr [rbp+0x18]
...
+27 (+3.16%) : 20271.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
@@ -8,9 +8,9 @@
; Final local variable assignments
;
; V00 arg0 [V00,T06] ( 18, 21 ) ref -> rbx class-hnd exact single-def <System.Collections.Generic.List`1[System.String]>
-; V01 loc0 [V01,T02] ( 13, 47.50) ref -> rsi class-hnd exact single-def <System.String>
+; V01 loc0 [V01,T03] ( 13, 47.50) ref -> rsi class-hnd exact single-def <System.String>
; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [rbp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 39,149.08) int -> r14
+; V03 loc2 [V03,T00] ( 41,183.08) int -> r14
; V04 loc3 [V04,T19] ( 4, 2 ) int -> rcx
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
; V06 loc5 [V06,T04] ( 8, 25 ) int -> r14
@@ -41,11 +41,11 @@
; V31 cse3 [V31,T10] ( 3, 12 ) ref -> rcx "CSE - aggressive"
; V32 cse4 [V32,T24] ( 3, 1.50) long -> r15 "CSE - moderate"
; V33 cse5 [V33,T25] ( 3, 1.50) int -> rdi "CSE - moderate"
-; V34 cse6 [V34,T03] ( 15, 30.54) int -> rdi "CSE - aggressive"
+; V34 cse6 [V34,T01] ( 17, 64.54) int -> rdi "CSE - aggressive"
; V35 cse7 [V35,T15] ( 2, 8 ) int -> r8 "CSE - aggressive"
; V36 cse8 [V36,T13] ( 3, 11.88) int -> rcx "CSE - aggressive"
; V37 cse9 [V37,T16] ( 7, 3.50) int -> r13 "CSE - moderate"
-; V38 cse10 [V38,T01] ( 3, 48 ) long -> rdx "CSE - aggressive"
+; V38 cse10 [V38,T02] ( 3, 48 ) long -> rdx "CSE - aggressive"
; V39 cse11 [V39,T12] ( 3, 12 ) long -> rdx "CSE - aggressive"
;
; Lcl frame size = 64
@@ -69,24 +69,24 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=39 bbWeight=1 PerfScore 12.25
G_M28069_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp dword ptr [rbx+0x10], 0
- je G_M28069_IG23
+ je G_M28069_IG22
;; size=10 bbWeight=1 PerfScore 4.00
G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rbx+0x08]
; gcrRegs +[rax]
cmp dword ptr [rax+0x08], 0
- jbe G_M28069_IG29
+ jbe G_M28069_IG28
mov rsi, gword ptr [rax+0x10]
; gcrRegs +[rsi]
mov edi, dword ptr [rsi+0x08]
cmp edi, 100
- jg G_M28069_IG23
+ jg G_M28069_IG22
lea ecx, [rdi+0x02]
mov eax, ecx
; gcrRegs -[rax]
mov r8d, 2
mul rdx:rax, r8
- jb G_M28069_IG28
+ jb G_M28069_IG27
mov rdx, rax
test rdx, rdx
je SHORT G_M28069_IG05
@@ -110,97 +110,97 @@ G_M28069_IG04: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
;; size=30 bbWeight=0.50 PerfScore 4.25
G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
test ecx, ecx
- jl G_M28069_IG30
+ jl G_M28069_IG29
mov bword ptr [rbp+0x10], rdx
mov dword ptr [rbp+0x18], ecx
xor r14d, r14d
test edi, edi
- jle G_M28069_IG14
+ jle G_M28069_IG13
;; size=26 bbWeight=0.50 PerfScore 2.38
G_M28069_IG06: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov ecx, r14d
movzx rcx, word ptr [rsi+2*rcx+0x0C]
cmp ecx, 39
- jne SHORT G_M28069_IG10
+ jne SHORT G_M28069_IG09
;; size=13 bbWeight=4 PerfScore 14.00
G_M28069_IG07: ; bbWeight=16, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp r14d, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10]
; byrRegs +[rcx]
mov edx, r14d
+ cmp r14d, edi
+ jae G_M28069_IG28
movzx rax, word ptr [rsi+2*rdx+0x0C]
mov word ptr [rcx+2*rdx], ax
inc r14d
cmp edi, r14d
- jle SHORT G_M28069_IG08
+ jle G_M28069_IG22
+ cmp r14d, edi
+ jae G_M28069_IG28
mov ecx, r14d
; byrRegs -[rcx]
cmp word ptr [rsi+2*rcx+0x0C], 39
jne SHORT G_M28069_IG07
- ;; size=45 bbWeight=16 PerfScore 208.00
-G_M28069_IG08: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- cmp edi, r14d
- jg SHORT G_M28069_IG11
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M28069_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rsi]
- jmp G_M28069_IG23
- ;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M28069_IG10: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx rsi]
+ ;; size=67 bbWeight=16 PerfScore 248.00
+G_M28069_IG08: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M28069_IG10
+ ;; size=2 bbWeight=4 PerfScore 8.00
+G_M28069_IG09: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp ecx, 121
- je SHORT G_M28069_IG13
+ je SHORT G_M28069_IG12
;; size=5 bbWeight=2 PerfScore 2.50
-G_M28069_IG11: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG10: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
cmp r14d, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10]
; byrRegs +[rcx]
mov edx, r14d
+ cmp r14d, edi
+ jae G_M28069_IG28
movzx rax, word ptr [rsi+2*rdx+0x0C]
mov word ptr [rcx+2*rdx], ax
inc r14d
cmp edi, r14d
- jg SHORT G_M28069_IG06
- ;; size=34 bbWeight=4 PerfScore 35.00
-G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ jg G_M28069_IG06
+ ;; size=47 bbWeight=4 PerfScore 40.00
+G_M28069_IG11: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rcx]
- jmp SHORT G_M28069_IG14
+ jmp SHORT G_M28069_IG13
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
cmp r14d, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10]
; byrRegs +[rcx]
mov edx, r14d
mov word ptr [rcx+2*rdx], 121
;; size=23 bbWeight=0.50 PerfScore 2.62
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rcx]
lea ecx, [rdi-0x01]
cmp ecx, r14d
- jle G_M28069_IG23
+ jle G_M28069_IG22
lea ecx, [r14+0x01]
cmp ecx, edi
- jae G_M28069_IG29
+ jae G_M28069_IG28
lea ecx, [r14+0x01]
mov r15d, ecx
cmp word ptr [rsi+2*r15+0x0C], 121
- jne G_M28069_IG23
+ jne G_M28069_IG22
lea r13d, [r14+0x02]
cmp edi, r13d
- jle SHORT G_M28069_IG15
+ jle SHORT G_M28069_IG14
cmp r13d, edi
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov ecx, r13d
cmp word ptr [rsi+2*rcx+0x0C], 121
- je G_M28069_IG23
+ je G_M28069_IG22
;; size=77 bbWeight=0.50 PerfScore 7.75
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
lea ecx, [r14+0x03]
cmp ecx, dword ptr [rbp+0x18]
- jl SHORT G_M28069_IG16
+ jl SHORT G_M28069_IG15
lea rcx, gword ptr [(reloc)]
; gcrRegs +[rcx]
lea rdx, gword ptr [(reloc)]
@@ -209,37 +209,37 @@ G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=28 bbWeight=0.50 PerfScore 2.75
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
lea ecx, [r14+0x01]
cmp ecx, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10]
; byrRegs +[rcx]
mov word ptr [rcx+2*r15], 121
cmp r13d, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10]
mov eax, r13d
mov word ptr [rcx+2*rax], 121
lea ecx, [r14+0x03]
; byrRegs -[rcx]
cmp ecx, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10]
; byrRegs +[rcx]
lea eax, [r14+0x03]
mov word ptr [rcx+2*rax], 121
mov r14d, r13d
cmp edi, r14d
- jle SHORT G_M28069_IG20
+ jle SHORT G_M28069_IG19
test r14d, r14d
- jl SHORT G_M28069_IG19
+ jl SHORT G_M28069_IG18
;; size=87 bbWeight=0.50 PerfScore 9.75
-G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG16: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rcx]
lea ecx, [r14+0x02]
cmp ecx, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rax, bword ptr [rbp+0x10]
; byrRegs +[rax]
mov edx, r14d
@@ -247,29 +247,29 @@ G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
mov word ptr [rax+2*rcx], dx
inc r14d
cmp edi, r14d
- jg SHORT G_M28069_IG17
+ jg SHORT G_M28069_IG16
;; size=37 bbWeight=3.96 PerfScore 36.63
-G_M28069_IG18: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
- jmp SHORT G_M28069_IG20
+ jmp SHORT G_M28069_IG19
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M28069_IG19: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG18: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
lea ecx, [r14+0x02]
cmp ecx, dword ptr [rbp+0x18]
...
+27 (+3.16%) : 22931.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
@@ -8,9 +8,9 @@
; Final local variable assignments
;
; V00 arg0 [V00,T06] ( 18, 21 ) ref -> rbx class-hnd exact single-def <System.Collections.Generic.List`1[System.String]>
-; V01 loc0 [V01,T02] ( 13, 47.50) ref -> rsi class-hnd exact single-def <System.String>
+; V01 loc0 [V01,T03] ( 13, 47.50) ref -> rsi class-hnd exact single-def <System.String>
; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [rbp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 39,149.08) int -> r14
+; V03 loc2 [V03,T00] ( 41,183.08) int -> r14
; V04 loc3 [V04,T19] ( 4, 2 ) int -> rcx
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
; V06 loc5 [V06,T04] ( 8, 25 ) int -> r14
@@ -41,11 +41,11 @@
; V31 cse3 [V31,T10] ( 3, 12 ) ref -> rcx "CSE - aggressive"
; V32 cse4 [V32,T24] ( 3, 1.50) long -> r15 "CSE - moderate"
; V33 cse5 [V33,T25] ( 3, 1.50) int -> rdi "CSE - moderate"
-; V34 cse6 [V34,T03] ( 15, 30.54) int -> rdi "CSE - aggressive"
+; V34 cse6 [V34,T01] ( 17, 64.54) int -> rdi "CSE - aggressive"
; V35 cse7 [V35,T15] ( 2, 8 ) int -> r8 "CSE - aggressive"
; V36 cse8 [V36,T13] ( 3, 11.88) int -> rcx "CSE - aggressive"
; V37 cse9 [V37,T16] ( 7, 3.50) int -> r13 "CSE - moderate"
-; V38 cse10 [V38,T01] ( 3, 48 ) long -> rdx "CSE - aggressive"
+; V38 cse10 [V38,T02] ( 3, 48 ) long -> rdx "CSE - aggressive"
; V39 cse11 [V39,T12] ( 3, 12 ) long -> rdx "CSE - aggressive"
;
; Lcl frame size = 64
@@ -69,24 +69,24 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=39 bbWeight=1 PerfScore 12.25
G_M28069_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp dword ptr [rbx+0x10], 0
- je G_M28069_IG23
+ je G_M28069_IG22
;; size=10 bbWeight=1 PerfScore 4.00
G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rbx+0x08]
; gcrRegs +[rax]
cmp dword ptr [rax+0x08], 0
- jbe G_M28069_IG29
+ jbe G_M28069_IG28
mov rsi, gword ptr [rax+0x10]
; gcrRegs +[rsi]
mov edi, dword ptr [rsi+0x08]
cmp edi, 100
- jg G_M28069_IG23
+ jg G_M28069_IG22
lea ecx, [rdi+0x02]
mov eax, ecx
; gcrRegs -[rax]
mov r8d, 2
mul rdx:rax, r8
- jb G_M28069_IG28
+ jb G_M28069_IG27
mov rdx, rax
test rdx, rdx
je SHORT G_M28069_IG05
@@ -110,97 +110,97 @@ G_M28069_IG04: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
;; size=30 bbWeight=0.50 PerfScore 4.25
G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
test ecx, ecx
- jl G_M28069_IG30
+ jl G_M28069_IG29
mov bword ptr [rbp+0x10], rdx
mov dword ptr [rbp+0x18], ecx
xor r14d, r14d
test edi, edi
- jle G_M28069_IG14
+ jle G_M28069_IG13
;; size=26 bbWeight=0.50 PerfScore 2.38
G_M28069_IG06: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov ecx, r14d
movzx rcx, word ptr [rsi+2*rcx+0x0C]
cmp ecx, 39
- jne SHORT G_M28069_IG10
+ jne SHORT G_M28069_IG09
;; size=13 bbWeight=4 PerfScore 14.00
G_M28069_IG07: ; bbWeight=16, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp r14d, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10]
; byrRegs +[rcx]
mov edx, r14d
+ cmp r14d, edi
+ jae G_M28069_IG28
movzx rax, word ptr [rsi+2*rdx+0x0C]
mov word ptr [rcx+2*rdx], ax
inc r14d
cmp edi, r14d
- jle SHORT G_M28069_IG08
+ jle G_M28069_IG22
+ cmp r14d, edi
+ jae G_M28069_IG28
mov ecx, r14d
; byrRegs -[rcx]
cmp word ptr [rsi+2*rcx+0x0C], 39
jne SHORT G_M28069_IG07
- ;; size=45 bbWeight=16 PerfScore 208.00
-G_M28069_IG08: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- cmp edi, r14d
- jg SHORT G_M28069_IG11
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M28069_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rsi]
- jmp G_M28069_IG23
- ;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M28069_IG10: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx rsi]
+ ;; size=67 bbWeight=16 PerfScore 248.00
+G_M28069_IG08: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M28069_IG10
+ ;; size=2 bbWeight=4 PerfScore 8.00
+G_M28069_IG09: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp ecx, 121
- je SHORT G_M28069_IG13
+ je SHORT G_M28069_IG12
;; size=5 bbWeight=2 PerfScore 2.50
-G_M28069_IG11: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG10: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
cmp r14d, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10]
; byrRegs +[rcx]
mov edx, r14d
+ cmp r14d, edi
+ jae G_M28069_IG28
movzx rax, word ptr [rsi+2*rdx+0x0C]
mov word ptr [rcx+2*rdx], ax
inc r14d
cmp edi, r14d
- jg SHORT G_M28069_IG06
- ;; size=34 bbWeight=4 PerfScore 35.00
-G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ jg G_M28069_IG06
+ ;; size=47 bbWeight=4 PerfScore 40.00
+G_M28069_IG11: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rcx]
- jmp SHORT G_M28069_IG14
+ jmp SHORT G_M28069_IG13
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
cmp r14d, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10]
; byrRegs +[rcx]
mov edx, r14d
mov word ptr [rcx+2*rdx], 121
;; size=23 bbWeight=0.50 PerfScore 2.62
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rcx]
lea ecx, [rdi-0x01]
cmp ecx, r14d
- jle G_M28069_IG23
+ jle G_M28069_IG22
lea ecx, [r14+0x01]
cmp ecx, edi
- jae G_M28069_IG29
+ jae G_M28069_IG28
lea ecx, [r14+0x01]
mov r15d, ecx
cmp word ptr [rsi+2*r15+0x0C], 121
- jne G_M28069_IG23
+ jne G_M28069_IG22
lea r13d, [r14+0x02]
cmp edi, r13d
- jle SHORT G_M28069_IG15
+ jle SHORT G_M28069_IG14
cmp r13d, edi
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov ecx, r13d
cmp word ptr [rsi+2*rcx+0x0C], 121
- je G_M28069_IG23
+ je G_M28069_IG22
;; size=77 bbWeight=0.50 PerfScore 7.75
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
lea ecx, [r14+0x03]
cmp ecx, dword ptr [rbp+0x18]
- jl SHORT G_M28069_IG16
+ jl SHORT G_M28069_IG15
lea rcx, gword ptr [(reloc)]
; gcrRegs +[rcx]
lea rdx, gword ptr [(reloc)]
@@ -209,37 +209,37 @@ G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=28 bbWeight=0.50 PerfScore 2.75
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
lea ecx, [r14+0x01]
cmp ecx, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10]
; byrRegs +[rcx]
mov word ptr [rcx+2*r15], 121
cmp r13d, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10]
mov eax, r13d
mov word ptr [rcx+2*rax], 121
lea ecx, [r14+0x03]
; byrRegs -[rcx]
cmp ecx, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10]
; byrRegs +[rcx]
lea eax, [r14+0x03]
mov word ptr [rcx+2*rax], 121
mov r14d, r13d
cmp edi, r14d
- jle SHORT G_M28069_IG20
+ jle SHORT G_M28069_IG19
test r14d, r14d
- jl SHORT G_M28069_IG19
+ jl SHORT G_M28069_IG18
;; size=87 bbWeight=0.50 PerfScore 9.75
-G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG16: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rcx]
lea ecx, [r14+0x02]
cmp ecx, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rax, bword ptr [rbp+0x10]
; byrRegs +[rax]
mov edx, r14d
@@ -247,29 +247,29 @@ G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
mov word ptr [rax+2*rcx], dx
inc r14d
cmp edi, r14d
- jg SHORT G_M28069_IG17
+ jg SHORT G_M28069_IG16
;; size=37 bbWeight=3.96 PerfScore 36.63
-G_M28069_IG18: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
- jmp SHORT G_M28069_IG20
+ jmp SHORT G_M28069_IG19
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M28069_IG19: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG18: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
lea ecx, [r14+0x02]
cmp ecx, dword ptr [rbp+0x18]
...
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
aspnet.run.windows.x64.checked.mch |
252 |
200 |
34 |
18 |
-2,325 |
+402 |
benchmarks.run.windows.x64.checked.mch |
63 |
52 |
6 |
5 |
-562 |
+44 |
benchmarks.run_pgo.windows.x64.checked.mch |
244 |
123 |
115 |
6 |
-1,160 |
+1,561 |
benchmarks.run_tiered.windows.x64.checked.mch |
20 |
14 |
2 |
4 |
-164 |
+25 |
coreclr_tests.run.windows.x64.checked.mch |
376 |
263 |
47 |
66 |
-2,130 |
+972 |
libraries.crossgen2.windows.x64.checked.mch |
184 |
151 |
26 |
7 |
-1,530 |
+229 |
libraries.pmi.windows.x64.checked.mch |
337 |
247 |
58 |
32 |
-2,456 |
+467 |
libraries_tests.run.windows.x64.Release.mch |
1,522 |
1,120 |
253 |
149 |
-13,087 |
+3,460 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
944 |
570 |
265 |
109 |
-4,519 |
+3,615 |
realworld.run.windows.x64.checked.mch |
51 |
32 |
10 |
9 |
-368 |
+153 |
smoke_tests.nativeaot.windows.x64.checked.mch |
67 |
41 |
12 |
14 |
-265 |
+207 |
|
4,060 |
2,813 |
828 |
419 |
-28,566 |
+11,135 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
aspnet.run.windows.x64.checked.mch |
129,290 |
61,702 |
67,588 |
0 (0.00%) |
0 (0.00%) |
benchmarks.run.windows.x64.checked.mch |
27,926 |
4 |
27,922 |
0 (0.00%) |
0 (0.00%) |
benchmarks.run_pgo.windows.x64.checked.mch |
103,179 |
50,327 |
52,852 |
4 (0.00%) |
4 (0.00%) |
benchmarks.run_tiered.windows.x64.checked.mch |
53,510 |
36,872 |
16,638 |
1 (0.00%) |
1 (0.00%) |
coreclr_tests.run.windows.x64.checked.mch |
574,382 |
341,481 |
232,901 |
3 (0.00%) |
3 (0.00%) |
libraries.crossgen2.windows.x64.checked.mch |
243,731 |
15 |
243,716 |
0 (0.00%) |
0 (0.00%) |
libraries.pmi.windows.x64.checked.mch |
309,228 |
6 |
309,222 |
0 (0.00%) |
0 (0.00%) |
libraries_tests.run.windows.x64.Release.mch |
681,424 |
485,046 |
196,378 |
0 (0.00%) |
0 (0.00%) |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
320,536 |
21,924 |
298,612 |
0 (0.00%) |
0 (0.00%) |
realworld.run.windows.x64.checked.mch |
36,610 |
3 |
36,607 |
0 (0.00%) |
0 (0.00%) |
smoke_tests.nativeaot.windows.x64.checked.mch |
32,388 |
11 |
32,377 |
0 (0.00%) |
0 (0.00%) |
|
2,512,204 |
997,391 |
1,514,813 |
8 (0.00%) |
8 (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: 47041738 (overridden on cmd)
Total bytes of diff: 47039815 (overridden on cmd)
Total bytes of delta: -1923 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
26 : 23005.dasm (0.34 % of base)
24 : 70616.dasm (0.38 % of base)
19 : 57424.dasm (4.09 % of base)
19 : 56158.dasm (4.09 % of base)
19 : 71072.dasm (4.09 % of base)
19 : 80495.dasm (3.97 % of base)
17 : 119194.dasm (3.59 % of base)
17 : 128098.dasm (3.59 % of base)
17 : 129018.dasm (3.59 % of base)
17 : 101387.dasm (3.59 % of base)
17 : 118067.dasm (3.59 % of base)
17 : 80044.dasm (0.28 % of base)
17 : 80893.dasm (0.27 % of base)
17 : 96938.dasm (3.59 % of base)
15 : 126143.dasm (0.68 % of base)
13 : 77281.dasm (0.79 % of base)
13 : 57720.dasm (0.79 % of base)
11 : 51091.dasm (0.28 % of base)
10 : 113544.dasm (2.92 % of base)
9 : 25114.dasm (0.12 % of base)
Top file improvements (bytes):
-62 : 25579.dasm (-0.80 % of base)
-43 : 124582.dasm (-1.30 % of base)
-40 : 126535.dasm (-1.00 % of base)
-40 : 123421.dasm (-1.20 % of base)
-39 : 66890.dasm (-1.44 % of base)
-39 : 47348.dasm (-1.44 % of base)
-35 : 35137.dasm (-3.22 % of base)
-34 : 69146.dasm (-0.50 % of base)
-34 : 34777.dasm (-0.50 % of base)
-34 : 58848.dasm (-0.50 % of base)
-34 : 78239.dasm (-0.50 % of base)
-33 : 36831.dasm (-14.67 % of base)
-33 : 115836.dasm (-2.28 % of base)
-33 : 126349.dasm (-2.28 % of base)
-33 : 57488.dasm (-14.86 % of base)
-31 : 66877.dasm (-16.15 % of base)
-30 : 60466.dasm (-3.39 % of base)
-30 : 47349.dasm (-3.39 % of base)
-30 : 84837.dasm (-3.39 % of base)
-27 : 113543.dasm (-2.47 % of base)
61 total files with Code Size differences (39 improved, 22 regressed), 18 unchanged.
Top method regressions (bytes):
26 (0.34 % of base) : 23005.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (Tier1)
24 (0.38 % of base) : 70616.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
19 (4.09 % of base) : 57424.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
19 (4.09 % of base) : 56158.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
19 (4.09 % of base) : 71072.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
19 (3.97 % of base) : 80495.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
17 (0.28 % of base) : 80044.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
17 (0.27 % of base) : 80893.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
17 (3.59 % of base) : 119194.dasm - System.Reflection.PseudoCustomAttribute:GetCustomAttributes(System.Reflection.RuntimeMethodInfo,System.RuntimeType,byref) (Instrumented Tier1)
17 (3.59 % of base) : 128098.dasm - System.Reflection.PseudoCustomAttribute:GetCustomAttributes(System.Reflection.RuntimeMethodInfo,System.RuntimeType,byref) (Instrumented Tier1)
17 (3.59 % of base) : 129018.dasm - System.Reflection.PseudoCustomAttribute:GetCustomAttributes(System.Reflection.RuntimeMethodInfo,System.RuntimeType,byref) (Instrumented Tier1)
17 (3.59 % of base) : 101387.dasm - System.Reflection.PseudoCustomAttribute:GetCustomAttributes(System.Reflection.RuntimeMethodInfo,System.RuntimeType,byref) (Instrumented Tier1)
17 (3.59 % of base) : 118067.dasm - System.Reflection.PseudoCustomAttribute:GetCustomAttributes(System.Reflection.RuntimeMethodInfo,System.RuntimeType,byref) (Instrumented Tier1)
17 (3.59 % of base) : 96938.dasm - System.Reflection.PseudoCustomAttribute:GetCustomAttributes(System.Reflection.RuntimeMethodInfo,System.RuntimeType,byref) (Instrumented Tier1)
15 (0.68 % of base) : 126143.dasm - Parlot.Scanner:ReadQuotedString(ushort,byref):ubyte:this (FullOpts)
13 (0.79 % of base) : 77281.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1-OSR)
13 (0.79 % of base) : 57720.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1-OSR)
11 (0.28 % of base) : 51091.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (FullOpts)
10 (2.92 % of base) : 113544.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)
9 (0.12 % of base) : 25114.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (Tier1)
Top method improvements (bytes):
-62 (-0.80 % of base) : 25579.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (Tier1)
-43 (-1.30 % of base) : 124582.dasm - Jint.Runtime.Interop.DefaultTypeConverter:TryConvert(System.Object,System.Type,System.IFormatProvider,ubyte,byref,byref):ubyte:this (FullOpts)
-40 (-1.20 % of base) : 123421.dasm - Esprima.JavaScriptParser:ParseLeftHandSideExpressionAllowCall():Esprima.Ast.Expression:this (FullOpts)
-40 (-1.00 % of base) : 126535.dasm - Markdig.Extensions.Tables.PipeTableParser:PostProcess(Markdig.Parsers.InlineProcessor,Markdig.Syntax.Inlines.Inline,Markdig.Syntax.Inlines.Inline,int,ubyte):ubyte:this (FullOpts)
-39 (-1.44 % of base) : 66890.dasm - System.Diagnostics.Tracing.EventSource:WriteEventVarargs(int,ulong,System.Object[]):this (Tier1)
-39 (-1.44 % of base) : 47348.dasm - System.Diagnostics.Tracing.EventSource:WriteEventVarargs(int,ulong,System.Object[]):this (Tier1)
-35 (-3.22 % of base) : 35137.dasm - Microsoft.AspNetCore.Mvc.ViewFeatures.Filters.SaveTempDataPropertyFilterBase:GetTempDataProperties(Microsoft.AspNetCore.Mvc.ViewFeatures.Infrastructure.TempDataSerializer,System.Type):System.Collections.Generic.IReadOnlyList`1[Microsoft.AspNetCore.Mvc.ViewFeatures.Filters.LifecycleProperty] (Tier1-OSR)
-34 (-0.50 % of base) : 69146.dasm - Microsoft.AspNetCore.Mvc.Controllers.ControllerFeatureProvider:PopulateFeature(System.Collections.Generic.IEnumerable`1[Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPart],Microsoft.AspNetCore.Mvc.Controllers.ControllerFeature):this (Tier1-OSR)
-34 (-0.50 % of base) : 34777.dasm - Microsoft.AspNetCore.Mvc.Controllers.ControllerFeatureProvider:PopulateFeature(System.Collections.Generic.IEnumerable`1[Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPart],Microsoft.AspNetCore.Mvc.Controllers.ControllerFeature):this (Tier1-OSR)
-34 (-0.50 % of base) : 58848.dasm - Microsoft.AspNetCore.Mvc.Controllers.ControllerFeatureProvider:PopulateFeature(System.Collections.Generic.IEnumerable`1[Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPart],Microsoft.AspNetCore.Mvc.Controllers.ControllerFeature):this (Tier1-OSR)
-34 (-0.50 % of base) : 78239.dasm - Microsoft.AspNetCore.Mvc.Controllers.ControllerFeatureProvider:PopulateFeature(System.Collections.Generic.IEnumerable`1[Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPart],Microsoft.AspNetCore.Mvc.Controllers.ControllerFeature):this (Tier1-OSR)
-33 (-14.67 % of base) : 36831.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.PathNormalizer:ContainsDotSegments(ulong,ulong):ubyte (Tier1-OSR)
-33 (-14.86 % of base) : 57488.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.PathNormalizer:ContainsDotSegments(ulong,ulong):ubyte (Tier1-OSR)
-33 (-2.28 % of base) : 126349.dasm - OrchardCore.DisplayManagement.Zones.FlatPositionComparer:Compare(System.String,System.String):int:this (FullOpts)
-33 (-2.28 % of base) : 115836.dasm - OrchardCore.DisplayManagement.Zones.FlatPositionComparer:Compare(System.String,System.String):int:this (Tier1)
-31 (-16.15 % of base) : 66877.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.PathNormalizer:ContainsDotSegments(ulong,ulong):ubyte (Tier1)
-30 (-3.39 % of base) : 60466.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (Tier1)
-30 (-3.39 % of base) : 47349.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (Tier1)
-30 (-3.39 % of base) : 84837.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (Tier1)
-27 (-2.47 % of base) : 113543.dasm - System.Reflection.TypeNameParser:GetTypeHelper(ulong,System.Reflection.RuntimeAssembly,ubyte,ubyte):System.RuntimeType (Tier1)
Top method regressions (percentages):
19 (4.09 % of base) : 57424.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
19 (4.09 % of base) : 56158.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
19 (4.09 % of base) : 71072.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
19 (3.97 % of base) : 80495.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
17 (3.59 % of base) : 119194.dasm - System.Reflection.PseudoCustomAttribute:GetCustomAttributes(System.Reflection.RuntimeMethodInfo,System.RuntimeType,byref) (Instrumented Tier1)
17 (3.59 % of base) : 128098.dasm - System.Reflection.PseudoCustomAttribute:GetCustomAttributes(System.Reflection.RuntimeMethodInfo,System.RuntimeType,byref) (Instrumented Tier1)
17 (3.59 % of base) : 129018.dasm - System.Reflection.PseudoCustomAttribute:GetCustomAttributes(System.Reflection.RuntimeMethodInfo,System.RuntimeType,byref) (Instrumented Tier1)
17 (3.59 % of base) : 101387.dasm - System.Reflection.PseudoCustomAttribute:GetCustomAttributes(System.Reflection.RuntimeMethodInfo,System.RuntimeType,byref) (Instrumented Tier1)
17 (3.59 % of base) : 118067.dasm - System.Reflection.PseudoCustomAttribute:GetCustomAttributes(System.Reflection.RuntimeMethodInfo,System.RuntimeType,byref) (Instrumented Tier1)
17 (3.59 % of base) : 96938.dasm - System.Reflection.PseudoCustomAttribute:GetCustomAttributes(System.Reflection.RuntimeMethodInfo,System.RuntimeType,byref) (Instrumented Tier1)
10 (2.92 % of base) : 113544.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)
13 (0.79 % of base) : 77281.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1-OSR)
13 (0.79 % of base) : 57720.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1-OSR)
2 (0.70 % of base) : 126759.dasm - AngleSharp.Dom.EventTarget:InvokeEventListener(AngleSharp.Dom.Events.Event):this (FullOpts)
15 (0.68 % of base) : 126143.dasm - Parlot.Scanner:ReadQuotedString(ushort,byref):ubyte:this (FullOpts)
2 (0.40 % of base) : 34133.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
24 (0.38 % of base) : 70616.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
26 (0.34 % of base) : 23005.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (Tier1)
11 (0.28 % of base) : 51091.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (FullOpts)
17 (0.28 % of base) : 80044.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
Top method improvements (percentages):
-31 (-16.15 % of base) : 66877.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.PathNormalizer:ContainsDotSegments(ulong,ulong):ubyte (Tier1)
-33 (-14.86 % of base) : 57488.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.PathNormalizer:ContainsDotSegments(ulong,ulong):ubyte (Tier1-OSR)
-33 (-14.67 % of base) : 36831.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.PathNormalizer:ContainsDotSegments(ulong,ulong):ubyte (Tier1-OSR)
-16 (-8.89 % of base) : 34131.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.PathNormalizer:ContainsDotSegments(ulong,ulong):ubyte (Tier1)
-9 (-5.63 % of base) : 100312.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
-9 (-5.63 % of base) : 53884.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
-9 (-5.63 % of base) : 118242.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
-9 (-5.63 % of base) : 128315.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
-5 (-3.57 % of base) : 67723.dasm - Dapper.SqlMapper:IsValueTuple(System.Type):ubyte (FullOpts)
-30 (-3.39 % of base) : 60466.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (Tier1)
-30 (-3.39 % of base) : 47349.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (Tier1)
-30 (-3.39 % of base) : 84837.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (Tier1)
-5 (-3.36 % of base) : 121747.dasm - Dapper.SqlMapper:IsValueTuple(System.Type):ubyte (FullOpts)
-35 (-3.22 % of base) : 35137.dasm - Microsoft.AspNetCore.Mvc.ViewFeatures.Filters.SaveTempDataPropertyFilterBase:GetTempDataProperties(Microsoft.AspNetCore.Mvc.ViewFeatures.Infrastructure.TempDataSerializer,System.Type):System.Collections.Generic.IReadOnlyList`1[Microsoft.AspNetCore.Mvc.ViewFeatures.Filters.LifecycleProperty] (Tier1-OSR)
-26 (-3.02 % of base) : 35140.dasm - Microsoft.AspNetCore.Mvc.ViewFeatures.Filters.ViewDataAttributePropertyProvider:GetViewDataProperties(System.Type):System.Collections.Generic.IReadOnlyList`1[Microsoft.AspNetCore.Mvc.ViewFeatures.Filters.LifecycleProperty] (Tier1-OSR)
-16 (-2.95 % of base) : 113300.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (Tier1)
-13 (-2.74 % of base) : 11024.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (Tier1)
-23 (-2.56 % of base) : 117799.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (Tier1)
-22 (-2.53 % of base) : 78805.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (Tier1)
-22 (-2.53 % of base) : 72041.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (Tier1)
benchmarks.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 8742508 (overridden on cmd)
Total bytes of diff: 8741990 (overridden on cmd)
Total bytes of delta: -518 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
30 : 11955.dasm (0.79 % of base)
5 : 12728.dasm (2.28 % of base)
4 : 17882.dasm (0.04 % of base)
2 : 26372.dasm (0.12 % of base)
2 : 5521.dasm (0.36 % of base)
1 : 7149.dasm (0.41 % of base)
Top file improvements (bytes):
-49 : 19770.dasm (-1.67 % of base)
-40 : 6824.dasm (-0.96 % of base)
-40 : 9397.dasm (-0.37 % of base)
-39 : 18934.dasm (-8.16 % of base)
-32 : 2319.dasm (-24.62 % of base)
-31 : 11969.dasm (-1.91 % of base)
-23 : 17335.dasm (-2.27 % of base)
-19 : 14991.dasm (-8.23 % of base)
-18 : 23168.dasm (-8.82 % of base)
-17 : 19287.dasm (-0.41 % of base)
-16 : 7707.dasm (-0.57 % of base)
-16 : 13660.dasm (-5.19 % of base)
-15 : 20401.dasm (-0.53 % of base)
-14 : 8429.dasm (-2.27 % of base)
-13 : 418.dasm (-4.96 % of base)
-12 : 17344.dasm (-5.00 % of base)
-12 : 2028.dasm (-4.92 % of base)
-9 : 8726.dasm (-1.76 % of base)
-7 : 12459.dasm (-0.05 % of base)
-7 : 16583.dasm (-0.97 % of base)
47 total files with Code Size differences (41 improved, 6 regressed), 5 unchanged.
Top method regressions (bytes):
30 (0.79 % of base) : 11955.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
5 (2.28 % of base) : 12728.dasm - System.Xml.Serialization.CodeGenerator:StoreMember(System.Reflection.MemberInfo):this (FullOpts)
4 (0.04 % of base) : 17882.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
2 (0.36 % of base) : 5521.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
2 (0.12 % of base) : 26372.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (FullOpts)
1 (0.41 % of base) : 7149.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
Top method improvements (bytes):
-49 (-1.67 % of base) : 19770.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
-40 (-0.37 % of base) : 9397.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (FullOpts)
-40 (-0.96 % of base) : 6824.dasm - Utf8Json.Internal.Emit.MetaType:.ctor(System.Type,System.Func`2[System.String,System.String],ubyte):this (FullOpts)
-39 (-8.16 % of base) : 18934.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-32 (-24.62 % of base) : 2319.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-31 (-1.91 % of base) : 11969.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
-23 (-2.27 % of base) : 17335.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportSpecialMapping(System.Type,System.Xml.Serialization.TypeDesc,System.String,int):System.Xml.Serialization.SpecialMapping:this (FullOpts)
-19 (-8.23 % of base) : 14991.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
-18 (-8.82 % of base) : 23168.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
-17 (-0.41 % of base) : 19287.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseMemberDeclarationOrStatementCore(ushort):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax:this (FullOpts)
-16 (-0.57 % of base) : 7707.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (FullOpts)
-16 (-5.19 % of base) : 13660.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
-15 (-0.53 % of base) : 20401.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-14 (-2.27 % of base) : 8429.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (FullOpts)
-13 (-4.96 % of base) : 418.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-12 (-4.92 % of base) : 2028.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-12 (-5.00 % of base) : 17344.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
-9 (-1.76 % of base) : 8726.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (FullOpts)
-7 (-0.97 % of base) : 16583.dasm - Microsoft.Extensions.Configuration.ConfigurationKeyComparer:Compare(System.String,System.String):int:this (FullOpts)
-7 (-0.05 % of base) : 12459.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.XmlAttributes,System.String,System.Type,ubyte,ubyte,System.Xml.Serialization.RecursionLimiter):this (FullOpts)
Top method regressions (percentages):
5 (2.28 % of base) : 12728.dasm - System.Xml.Serialization.CodeGenerator:StoreMember(System.Reflection.MemberInfo):this (FullOpts)
30 (0.79 % of base) : 11955.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
1 (0.41 % of base) : 7149.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
2 (0.36 % of base) : 5521.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
2 (0.12 % of base) : 26372.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (FullOpts)
4 (0.04 % of base) : 17882.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
Top method improvements (percentages):
-32 (-24.62 % of base) : 2319.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-18 (-8.82 % of base) : 23168.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
-19 (-8.23 % of base) : 14991.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
-39 (-8.16 % of base) : 18934.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-5 (-5.49 % of base) : 8409.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
-16 (-5.19 % of base) : 13660.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
-12 (-5.00 % of base) : 17344.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
-13 (-4.96 % of base) : 418.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-12 (-4.92 % of base) : 2028.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-4 (-2.78 % of base) : 5651.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-14 (-2.27 % of base) : 8429.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (FullOpts)
-23 (-2.27 % of base) : 17335.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportSpecialMapping(System.Type,System.Xml.Serialization.TypeDesc,System.String,int):System.Xml.Serialization.SpecialMapping:this (FullOpts)
-31 (-1.91 % of base) : 11969.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
-9 (-1.76 % of base) : 8726.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (FullOpts)
-49 (-1.67 % of base) : 19770.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
-4 (-1.56 % of base) : 8514.dasm - System.Text.Json.Tests.Perf_Reader:ReadMultiSpanSequenceEmptyLoop():this (FullOpts)
-4 (-1.56 % of base) : 3349.dasm - System.Text.Json.Tests.Perf_Reader:ReadSingleSpanSequenceEmptyLoop():this (FullOpts)
-4 (-1.56 % of base) : 25958.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (FullOpts)
-5 (-1.36 % of base) : 23545.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:ResetStack():this (FullOpts)
-2 (-1.32 % of base) : 8253.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (FullOpts)
benchmarks.run_pgo.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 36236407 (overridden on cmd)
Total bytes of diff: 36236808 (overridden on cmd)
Total bytes of delta: 401 (0.00 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
51 : 27992.dasm (15.69 % of base)
51 : 101507.dasm (15.69 % of base)
47 : 74777.dasm (0.95 % of base)
46 : 33953.dasm (2.50 % of base)
45 : 101463.dasm (2.65 % of base)
45 : 94732.dasm (2.65 % of base)
45 : 101495.dasm (2.65 % of base)
45 : 96037.dasm (2.65 % of base)
40 : 75540.dasm (3.17 % of base)
37 : 27089.dasm (10.69 % of base)
36 : 56661.dasm (5.90 % of base)
33 : 77666.dasm (2.54 % of base)
31 : 698.dasm (3.43 % of base)
30 : 27991.dasm (1.08 % of base)
30 : 99751.dasm (4.55 % of base)
29 : 35528.dasm (6.44 % of base)
29 : 94705.dasm (6.43 % of base)
28 : 94734.dasm (4.35 % of base)
27 : 101506.dasm (0.97 % of base)
27 : 102255.dasm (1.53 % of base)
Top file improvements (bytes):
-45 : 91946.dasm (-2.02 % of base)
-40 : 40056.dasm (-4.20 % of base)
-36 : 37406.dasm (-3.61 % of base)
-35 : 73874.dasm (-4.25 % of base)
-34 : 91947.dasm (-26.15 % of base)
-32 : 37423.dasm (-3.36 % of base)
-29 : 39659.dasm (-2.91 % of base)
-29 : 40045.dasm (-2.91 % of base)
-24 : 36013.dasm (-0.91 % of base)
-19 : 42228.dasm (-7.51 % of base)
-19 : 42233.dasm (-8.09 % of base)
-16 : 40046.dasm (-1.80 % of base)
-16 : 30549.dasm (-0.85 % of base)
-16 : 34692.dasm (-4.66 % of base)
-14 : 101332.dasm (-0.87 % of base)
-14 : 98578.dasm (-5.91 % of base)
-13 : 34684.dasm (-3.69 % of base)
-13 : 34695.dasm (-3.69 % of base)
-12 : 21381.dasm (-0.24 % of base)
-12 : 85885.dasm (-0.24 % of base)
78 total files with Code Size differences (48 improved, 30 regressed), 6 unchanged.
Top method regressions (bytes):
51 (15.69 % of base) : 27992.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
51 (15.69 % of base) : 101507.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
47 (0.95 % of base) : 74777.dasm - Microsoft.CodeAnalysis.MetadataHelpers:GetInfoForImmediateNamespaceMembers(ubyte,int,System.Collections.Generic.IEnumerable`1[System.Linq.IGrouping`2[System.String,System.Reflection.Metadata.TypeDefinitionHandle]],System.StringComparer,byref,byref) (Tier1)
46 (2.50 % of base) : 33953.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1-OSR)
45 (2.65 % of base) : 101463.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
45 (2.65 % of base) : 94732.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
45 (2.65 % of base) : 101495.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
45 (2.65 % of base) : 96037.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
40 (3.17 % of base) : 75540.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.RuntimeType,System.RuntimeType,ubyte):System.Object[] (Tier1)
37 (10.69 % of base) : 27089.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
36 (5.90 % of base) : 56661.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
33 (2.54 % of base) : 77666.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.RuntimeType,System.RuntimeType,ubyte):System.Object[] (Tier1)
31 (3.43 % of base) : 698.dasm - System.IO.StreamReader:ReadLine():System.String:this (Tier0-FullOpts)
30 (1.08 % of base) : 27991.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1)
30 (4.55 % of base) : 99751.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
29 (6.44 % of base) : 35528.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
29 (6.43 % of base) : 94705.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
28 (4.35 % of base) : 94734.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex12_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
27 (0.97 % of base) : 101506.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1)
27 (1.53 % of base) : 102255.dasm - System.Net.IPEndPoint:Create(System.Net.SocketAddress):System.Net.EndPoint:this (Tier1)
Top method improvements (bytes):
-45 (-2.02 % of base) : 91946.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
-40 (-4.20 % of base) : 40056.dasm - System.Collections.Generic.Dictionary`2[System.ValueTuple`2[System.__Canon,System.__Canon],ubyte]:TryGetValue(System.ValueTuple`2[System.__Canon,System.__Canon],byref):ubyte:this (Tier1)
-36 (-3.61 % of base) : 37406.dasm - System.Collections.Generic.Dictionary`2[System.ValueTuple`3[System.__Canon,ulong,uint],System.__Canon]:TryGetValue(System.ValueTuple`3[System.__Canon,ulong,uint],byref):ubyte:this (Tier1)
-35 (-4.25 % of base) : 73874.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:WriteConsideredUse(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
-34 (-26.15 % of base) : 91947.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-32 (-3.36 % of base) : 37423.dasm - System.Collections.Generic.Dictionary`2[System.ValueTuple`2[System.__Canon,System.__Canon],ubyte]:TryGetValue(System.ValueTuple`2[System.__Canon,System.__Canon],byref):ubyte:this (Tier1)
-29 (-2.91 % of base) : 39659.dasm - System.Collections.Generic.Dictionary`2[System.ValueTuple`3[System.__Canon,ulong,uint],System.__Canon]:TryGetValue(System.ValueTuple`3[System.__Canon,ulong,uint],byref):ubyte:this (Tier1)
-29 (-2.91 % of base) : 40045.dasm - System.Collections.Generic.Dictionary`2[System.ValueTuple`3[System.__Canon,ulong,uint],System.__Canon]:TryGetValue(System.ValueTuple`3[System.__Canon,ulong,uint],byref):ubyte:this (Tier1)
-24 (-0.91 % of base) : 36013.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1-OSR)
-19 (-8.09 % of base) : 42233.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1)
-19 (-7.51 % of base) : 42228.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-16 (-4.66 % of base) : 34692.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1)
-16 (-1.80 % of base) : 40046.dasm - System.Collections.Generic.Dictionary`2[System.ValueTuple`3[System.__Canon,ulong,uint],System.__Canon]:FindValue(System.ValueTuple`3[System.__Canon,ulong,uint]):byref:this (Tier1)
-16 (-0.85 % of base) : 30549.dasm - System.Net.Sockets.SocketAsyncEventArgs:DoOperationReceiveFromSingleBuffer(System.Net.Sockets.SafeSocketHandle,System.Threading.CancellationToken):int:this (Tier1)
-14 (-0.87 % of base) : 101332.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
-14 (-5.91 % of base) : 98578.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-13 (-3.69 % of base) : 34684.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-13 (-3.69 % of base) : 34695.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-12 (-0.24 % of base) : 21381.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
-12 (-0.24 % of base) : 85885.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
Top method regressions (percentages):
51 (15.69 % of base) : 27992.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
51 (15.69 % of base) : 101507.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
20 (11.83 % of base) : 69696.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
37 (10.69 % of base) : 27089.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
25 (8.59 % of base) : 68340.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
29 (6.44 % of base) : 35528.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
29 (6.43 % of base) : 94705.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
8 (6.11 % of base) : 9182.dasm - System.Runtime.CompilerServices.ConfiguredTaskAwaitable:.ctor(System.Threading.Tasks.Task,int):this (Tier1)
36 (5.90 % of base) : 56661.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
8 (5.71 % of base) : 42120.dasm - System.Threading.Tasks.Task:ConfigureAwait(ubyte):System.Runtime.CompilerServices.ConfiguredTaskAwaitable:this (Tier1)
14 (4.68 % of base) : 37877.dasm - System.Number:FormatDouble(double,System.String,System.Globalization.NumberFormatInfo):System.String (Tier1)
30 (4.55 % of base) : 99751.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
8 (4.44 % of base) : 65896.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
28 (4.35 % of base) : 94734.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex12_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
22 (4.19 % of base) : 14420.dasm - System.Environment:get_CurrentDirectoryCore():System.String (Tier0-FullOpts)
23 (3.78 % of base) : 83424.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
16 (3.71 % of base) : 94737.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex13_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
31 (3.43 % of base) : 698.dasm - System.IO.StreamReader:ReadLine():System.String:this (Tier0-FullOpts)
40 (3.17 % of base) : 75540.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.RuntimeType,System.RuntimeType,ubyte):System.Object[] (Tier1)
17 (2.95 % of base) : 84630.dasm - System.Net.Security.SslStream:CopyDecryptedData(System.Memory`1[ubyte]):int:this (Tier1)
Top method improvements (percentages):
-34 (-26.15 % of base) : 91947.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-19 (-8.09 % of base) : 42233.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1)
-19 (-7.51 % of base) : 42228.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-14 (-5.91 % of base) : 98578.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-9 (-5.52 % of base) : 75504.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
-9 (-5.52 % of base) : 77603.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
-10 (-5.41 % of base) : 75636.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-10 (-5.41 % of base) : 76458.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-10 (-5.41 % of base) : 49670.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-10 (-5.41 % of base) : 82381.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-16 (-4.66 % of base) : 34692.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1)
-8 (-4.49 % of base) : 94337.dasm - System.Globalization.NumberFormatInfo:NegativeSignTChar[ubyte]():System.ReadOnlySpan`1[ubyte]:this (Tier1)
-8 (-4.49 % of base) : 95691.dasm - System.Globalization.NumberFormatInfo:NegativeSignTChar[ubyte]():System.ReadOnlySpan`1[ubyte]:this (Tier1)
-8 (-4.49 % of base) : 97678.dasm - System.Globalization.NumberFormatInfo:NegativeSignTChar[ubyte]():System.ReadOnlySpan`1[ubyte]:this (Tier1)
-8 (-4.49 % of base) : 99677.dasm - System.Globalization.NumberFormatInfo:NegativeSignTChar[ubyte]():System.ReadOnlySpan`1[ubyte]:this (Tier1)
-8 (-4.49 % of base) : 94326.dasm - System.Globalization.NumberFormatInfo:NumberDecimalSeparatorTChar[ubyte]():System.ReadOnlySpan`1[ubyte]:this (Tier1)
-8 (-4.49 % of base) : 95693.dasm - System.Globalization.NumberFormatInfo:NumberDecimalSeparatorTChar[ubyte]():System.ReadOnlySpan`1[ubyte]:this (Tier1)
-8 (-4.49 % of base) : 99670.dasm - System.Globalization.NumberFormatInfo:PositiveSignTChar[ubyte]():System.ReadOnlySpan`1[ubyte]:this (Tier1)
-8 (-4.49 % of base) : 97682.dasm - System.Globalization.NumberFormatInfo:PositiveSignTChar[ubyte]():System.ReadOnlySpan`1[ubyte]:this (Tier1)
-8 (-4.49 % of base) : 94328.dasm - System.Globalization.NumberFormatInfo:PositiveSignTChar[ubyte]():System.ReadOnlySpan`1[ubyte]:this (Tier1)
benchmarks.run_tiered.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 12416111 (overridden on cmd)
Total bytes of diff: 12415972 (overridden on cmd)
Total bytes of delta: -139 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
23 : 45122.dasm (0.89 % of base)
2 : 16969.dasm (0.36 % of base)
Top file improvements (bytes):
-32 : 50772.dasm (-24.62 % of base)
-31 : 24591.dasm (-2.02 % of base)
-19 : 28532.dasm (-7.51 % of base)
-16 : 49840.dasm (-0.59 % of base)
-13 : 5092.dasm (-4.96 % of base)
-13 : 27090.dasm (-3.80 % of base)
-12 : 42986.dasm (-4.92 % of base)
-6 : 2017.dasm (-0.08 % of base)
-5 : 18259.dasm (-0.18 % of base)
-4 : 23654.dasm (-0.54 % of base)
-4 : 51278.dasm (-2.92 % of base)
-4 : 31573.dasm (-2.92 % of base)
-3 : 7255.dasm (-0.26 % of base)
-2 : 5436.dasm (-1.11 % of base)
16 total files with Code Size differences (14 improved, 2 regressed), 4 unchanged.
Top method regressions (bytes):
23 (0.89 % of base) : 45122.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
2 (0.36 % of base) : 16969.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
Top method improvements (bytes):
-32 (-24.62 % of base) : 50772.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-31 (-2.02 % of base) : 24591.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (Tier1)
-19 (-7.51 % of base) : 28532.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-16 (-0.59 % of base) : 49840.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (Tier1)
-13 (-3.80 % of base) : 27090.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-13 (-4.96 % of base) : 5092.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
-12 (-4.92 % of base) : 42986.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-6 (-0.08 % of base) : 2017.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
-5 (-0.18 % of base) : 18259.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
-4 (-2.92 % of base) : 31573.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequence(int):this (Tier1-OSR)
-4 (-2.92 % of base) : 51278.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (Tier1-OSR)
-4 (-0.54 % of base) : 23654.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequenceByN(int):this (Tier1-OSR)
-3 (-0.26 % of base) : 7255.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier0-FullOpts)
-2 (-1.11 % of base) : 5436.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
Top method regressions (percentages):
23 (0.89 % of base) : 45122.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
2 (0.36 % of base) : 16969.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
Top method improvements (percentages):
-32 (-24.62 % of base) : 50772.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-19 (-7.51 % of base) : 28532.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-13 (-4.96 % of base) : 5092.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
-12 (-4.92 % of base) : 42986.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-13 (-3.80 % of base) : 27090.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-4 (-2.92 % of base) : 31573.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequence(int):this (Tier1-OSR)
-4 (-2.92 % of base) : 51278.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (Tier1-OSR)
-31 (-2.02 % of base) : 24591.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (Tier1)
-2 (-1.11 % of base) : 5436.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-16 (-0.59 % of base) : 49840.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (Tier1)
-4 (-0.54 % of base) : 23654.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequenceByN(int):this (Tier1-OSR)
-3 (-0.26 % of base) : 7255.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier0-FullOpts)
-5 (-0.18 % of base) : 18259.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
-6 (-0.08 % of base) : 2017.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
16 total methods with Code Size differences (14 improved, 2 regressed).
coreclr_tests.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 393193439 (overridden on cmd)
Total bytes of diff: 393192281 (overridden on cmd)
Total bytes of delta: -1158 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
75 : 190745.dasm (1.78 % of base)
75 : 462281.dasm (1.80 % of base)
73 : 190722.dasm (1.66 % of base)
73 : 462276.dasm (1.68 % of base)
35 : 462283.dasm (1.99 % of base)
35 : 190759.dasm (1.93 % of base)
34 : 511243.dasm (0.74 % of base)
30 : 479674.dasm (0.78 % of base)
30 : 496838.dasm (1.14 % of base)
29 : 257998.dasm (2.17 % of base)
29 : 268665.dasm (2.17 % of base)
29 : 276548.dasm (2.17 % of base)
22 : 335397.dasm (4.00 % of base)
20 : 1003.dasm (1.42 % of base)
20 : 218733.dasm (4.31 % of base)
20 : 22984.dasm (1.38 % of base)
20 : 249083.dasm (1.38 % of base)
20 : 251850.dasm (1.52 % of base)
20 : 264382.dasm (1.52 % of base)
20 : 272316.dasm (1.38 % of base)
Top file improvements (bytes):
-114 : 394049.dasm (-7.29 % of base)
-57 : 372282.dasm (-1.90 % of base)
-57 : 370137.dasm (-1.90 % of base)
-49 : 476108.dasm (-1.67 % of base)
-32 : 480902.dasm (-24.62 % of base)
-24 : 177568.dasm (-0.29 % of base)
-24 : 268673.dasm (-0.29 % of base)
-24 : 371938.dasm (-1.49 % of base)
-24 : 276564.dasm (-0.29 % of base)
-24 : 368967.dasm (-1.49 % of base)
-24 : 45138.dasm (-0.29 % of base)
-22 : 273149.dasm (-2.53 % of base)
-22 : 510684.dasm (-1.38 % of base)
-21 : 241663.dasm (-2.19 % of base)
-20 : 371937.dasm (-3.19 % of base)
-20 : 368958.dasm (-3.19 % of base)
-19 : 481450.dasm (-8.23 % of base)
-18 : 203775.dasm (-0.26 % of base)
-18 : 2696.dasm (-0.26 % of base)
-18 : 480920.dasm (-8.82 % of base)
69 total files with Code Size differences (42 improved, 27 regressed), 20 unchanged.
Top method regressions (bytes):
75 (1.78 % of base) : 190745.dasm - NetClient.StringTests:Marshal_LPWString():this (FullOpts)
75 (1.80 % of base) : 462281.dasm - NetClient.StringTests:Marshal_LPWString():this (FullOpts)
73 (1.66 % of base) : 190722.dasm - NetClient.StringTests:Marshal_LPString():this (FullOpts)
73 (1.68 % of base) : 462276.dasm - NetClient.StringTests:Marshal_LPString():this (FullOpts)
35 (1.99 % of base) : 462283.dasm - NetClient.StringTests:Marshal_BStrString():this (FullOpts)
35 (1.93 % of base) : 190759.dasm - NetClient.StringTests:Marshal_BStrString():this (FullOpts)
34 (0.74 % of base) : 511243.dasm - IlasmPortablePdbTests.IlasmPortablePdbTester:TestPortablePdbLocalScope(System.String):this (FullOpts)
30 (0.78 % of base) : 479674.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
30 (1.14 % of base) : 496838.dasm - Test_DictionaryExpansion:DoTest(int) (FullOpts)
29 (2.17 % of base) : 257998.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (Tier1)
29 (2.17 % of base) : 268665.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (Tier1)
29 (2.17 % of base) : 276548.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (Tier1)
22 (4.00 % of base) : 335397.dasm - System.Environment:get_CurrentDirectoryCore():System.String (Tier0-FullOpts)
20 (1.42 % of base) : 1003.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Instrumented Tier1)
20 (1.38 % of base) : 22984.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
20 (1.38 % of base) : 249083.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
20 (1.52 % of base) : 251850.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
20 (1.52 % of base) : 264382.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
20 (1.38 % of base) : 272316.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
20 (1.38 % of base) : 30752.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
Top method improvements (bytes):
-114 (-7.29 % of base) : 394049.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
-57 (-1.90 % of base) : 372282.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.AttributePresenceFilterNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1-OSR)
-57 (-1.90 % of base) : 370137.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.AttributePresenceFilterNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1-OSR)
-49 (-1.67 % of base) : 476108.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
-32 (-24.62 % of base) : 480902.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-24 (-1.49 % of base) : 371938.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.__Canon]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.__Canon],ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.Nullable`1[int],System.__Canon,ubyte,ubyte,byref):ubyte:this (Tier1)
-24 (-1.49 % of base) : 368967.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.__Canon]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.__Canon],ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.Nullable`1[int],System.__Canon,ubyte,ubyte,byref):ubyte:this (Tier1)
-24 (-0.29 % of base) : 177568.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
-24 (-0.29 % of base) : 268673.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
-24 (-0.29 % of base) : 276564.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
-24 (-0.29 % of base) : 45138.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
-22 (-1.38 % of base) : 510684.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
-22 (-2.53 % of base) : 273149.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
-21 (-2.19 % of base) : 241663.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (Tier1)
-20 (-3.19 % of base) : 371937.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.__Canon],ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,int,byref):ubyte (Tier1)
-20 (-3.19 % of base) : 368958.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.__Canon],ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,int,byref):ubyte (Tier1)
-19 (-8.23 % of base) : 481450.dasm - Span.SpanBench:TestQuickSortArray(int[],int,int) (FullOpts)
-18 (-8.82 % of base) : 480920.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
-18 (-0.26 % of base) : 203775.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
-18 (-0.26 % of base) : 2696.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
Top method regressions (percentages):
20 (4.31 % of base) : 218733.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)
22 (4.00 % of base) : 335397.dasm - System.Environment:get_CurrentDirectoryCore():System.String (Tier0-FullOpts)
14 (2.89 % of base) : 277830.dasm - System.Text.UTF8Encoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
29 (2.17 % of base) : 257998.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (Tier1)
29 (2.17 % of base) : 268665.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (Tier1)
29 (2.17 % of base) : 276548.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (Tier1)
11 (2.04 % of base) : 245940.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
35 (1.99 % of base) : 462283.dasm - NetClient.StringTests:Marshal_BStrString():this (FullOpts)
35 (1.93 % of base) : 190759.dasm - NetClient.StringTests:Marshal_BStrString():this (FullOpts)
75 (1.80 % of base) : 462281.dasm - NetClient.StringTests:Marshal_LPWString():this (FullOpts)
75 (1.78 % of base) : 190745.dasm - NetClient.StringTests:Marshal_LPWString():this (FullOpts)
73 (1.68 % of base) : 462276.dasm - NetClient.StringTests:Marshal_LPString():this (FullOpts)
73 (1.66 % of base) : 190722.dasm - NetClient.StringTests:Marshal_LPString():this (FullOpts)
20 (1.52 % of base) : 251850.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
20 (1.52 % of base) : 264382.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
20 (1.52 % of base) : 106116.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
20 (1.42 % of base) : 1003.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Instrumented Tier1)
12 (1.41 % of base) : 23927.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
20 (1.38 % of base) : 22984.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
20 (1.38 % of base) : 249083.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Tier1)
Top method improvements (percentages):
-32 (-24.62 % of base) : 480902.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-18 (-8.82 % of base) : 480920.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
-5 (-8.33 % of base) : 464458.dasm - System.Runtime.InteropServices.ComEventsMethod:Remove(System.Runtime.InteropServices.ComEventsMethod,System.Runtime.InteropServices.ComEventsMethod):System.Runtime.InteropServices.ComEventsMethod (FullOpts)
-19 (-8.23 % of base) : 481450.dasm - Span.SpanBench:TestQuickSortArray(int[],int,int) (FullOpts)
-114 (-7.29 % of base) : 394049.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
-15 (-6.25 % of base) : 233765.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-9 (-5.63 % of base) : 233798.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
-9 (-5.63 % of base) : 235209.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
-9 (-5.63 % of base) : 253562.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
-9 (-5.63 % of base) : 267057.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
-9 (-5.63 % of base) : 289802.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
-9 (-5.63 % of base) : 373717.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
-9 (-5.63 % of base) : 288973.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
-9 (-5.63 % of base) : 340805.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
-9 (-5.63 % of base) : 341165.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
-9 (-5.63 % of base) : 360173.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
-9 (-5.63 % of base) : 281809.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
-9 (-5.63 % of base) : 287141.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
-9 (-5.63 % of base) : 30817.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
-9 (-5.63 % of base) : 356450.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
libraries.crossgen2.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 39486202 (overridden on cmd)
Total bytes of diff: 39484901 (overridden on cmd)
Total bytes of delta: -1301 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
44 : 92820.dasm (0.88 % of base)
27 : 37384.dasm (3.12 % of base)
19 : 167335.dasm (4.00 % of base)
18 : 8964.dasm (7.00 % of base)
16 : 206806.dasm (2.54 % of base)
16 : 8949.dasm (6.67 % of base)
15 : 34917.dasm (1.27 % of base)
9 : 37751.dasm (0.44 % of base)
7 : 162339.dasm (0.38 % of base)
7 : 187109.dasm (0.38 % of base)
6 : 37489.dasm (5.45 % of base)
5 : 214474.dasm (0.57 % of base)
5 : 233615.dasm (2.08 % of base)
5 : 195882.dasm (0.47 % of base)
4 : 199636.dasm (0.38 % of base)
4 : 228929.dasm (0.08 % of base)
4 : 228997.dasm (0.08 % of base)
3 : 98597.dasm (0.26 % of base)
2 : 96247.dasm (0.44 % of base)
2 : 125796.dasm (0.27 % of base)
Top file improvements (bytes):
-74 : 189336.dasm (-2.06 % of base)
-57 : 4904.dasm (-1.60 % of base)
-57 : 4946.dasm (-1.60 % of base)
-52 : 4162.dasm (-4.53 % of base)
-46 : 37750.dasm (-1.69 % of base)
-37 : 2107.dasm (-4.01 % of base)
-35 : 210848.dasm (-5.58 % of base)
-32 : 127433.dasm (-26.02 % of base)
-32 : 241359.dasm (-24.43 % of base)
-31 : 223470.dasm (-7.35 % of base)
-31 : 235329.dasm (-7.35 % of base)
-30 : 128868.dasm (-0.27 % of base)
-25 : 195013.dasm (-1.22 % of base)
-24 : 235016.dasm (-3.87 % of base)
-24 : 93137.dasm (-2.30 % of base)
-21 : 225273.dasm (-1.05 % of base)
-19 : 60077.dasm (-3.41 % of base)
-19 : 95374.dasm (-3.61 % of base)
-19 : 192529.dasm (-1.54 % of base)
-19 : 136812.dasm (-1.39 % of base)
66 total files with Code Size differences (42 improved, 24 regressed), 7 unchanged.
Top method regressions (bytes):
44 (0.88 % of base) : 92820.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
27 (3.12 % of base) : 37384.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
19 (4.00 % of base) : 167335.dasm - System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
18 (7.00 % of base) : 8964.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
16 (6.67 % of base) : 8949.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
16 (2.54 % of base) : 206806.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
15 (1.27 % of base) : 34917.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
9 (0.44 % of base) : 37751.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeText(System.String,System.String):ubyte (FullOpts)
7 (0.38 % of base) : 162339.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
7 (0.38 % of base) : 187109.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
6 (5.45 % of base) : 37489.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
5 (2.08 % of base) : 233615.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
5 (0.47 % of base) : 195882.dasm - System.Data.ProviderBase.DbConnectionFactory:TryGetConnection(System.Data.Common.DbConnection,System.Threading.Tasks.TaskCompletionSource`1[System.Data.ProviderBase.DbConnectionInternal],System.Data.Common.DbConnectionOptions,System.Data.ProviderBase.DbConnectionInternal,byref):ubyte:this (FullOpts)
5 (0.57 % of base) : 214474.dasm - System.Linq.Parallel.AsynchronousChannelMergeEnumerator`1[System.__Canon]:MoveNextSlowPath():ubyte:this (FullOpts)
4 (0.38 % of base) : 199636.dasm - System.Data.ProviderBase.DbConnectionFactory:TryGetConnection(System.Data.Common.DbConnection,System.Threading.Tasks.TaskCompletionSource`1[System.Data.ProviderBase.DbConnectionInternal],System.Data.Common.DbConnectionOptions,System.Data.ProviderBase.DbConnectionInternal,byref):ubyte:this (FullOpts)
4 (0.08 % of base) : 228929.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.__Canon]:MoveNext():this (FullOpts)
4 (0.08 % of base) : 228997.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
3 (0.26 % of base) : 98597.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
2 (0.27 % of base) : 125796.dasm - Internal.TypeSystem.CastingHelper:<IsEquivalentToDefType>g__CompareStructuresForEquivalence|24_2(Internal.TypeSystem.MetadataType,Internal.TypeSystem.MetadataType,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (FullOpts)
2 (0.44 % of base) : 96247.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
Top method improvements (bytes):
-74 (-2.06 % of base) : 189336.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyData[System.__Canon,System.__Canon]],int):this (FullOpts)
-57 (-1.60 % of base) : 4946.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-57 (-1.60 % of base) : 4904.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-52 (-4.53 % of base) : 4162.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
-46 (-1.69 % of base) : 37750.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeBinary(System.String,System.String):ubyte (FullOpts)
-37 (-4.01 % of base) : 2107.dasm - System.Data.Common.DataAdapter:Fill(System.Data.DataTable[],System.Data.IDataReader,int,int):int:this (FullOpts)
-35 (-5.58 % of base) : 210848.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-32 (-24.43 % of base) : 241359.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-32 (-26.02 % of base) : 127433.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-31 (-7.35 % of base) : 223470.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-31 (-7.35 % of base) : 235329.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-30 (-0.27 % of base) : 128868.dasm - System.DirectoryServices.ActiveDirectory.Utils:GetReplicaList(System.DirectoryServices.ActiveDirectory.DirectoryContext,System.String,System.String,ubyte,ubyte,ubyte):System.Collections.ArrayList (FullOpts)
-25 (-1.22 % of base) : 195013.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (FullOpts)
-24 (-2.30 % of base) : 93137.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
-24 (-3.87 % of base) : 235016.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
-21 (-1.05 % of base) : 225273.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (FullOpts)
-19 (-3.41 % of base) : 60077.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
-19 (-1.39 % of base) : 136812.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:GetExtenders(System.Collections.ICollection,System.Object,System.Collections.IDictionary):System.ComponentModel.IExtenderProvider[] (FullOpts)
-19 (-1.54 % of base) : 192529.dasm - System.Runtime.Serialization.ReflectionXmlClassWriter:ReflectionWriteMembers(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.ClassDataContract,System.Runtime.Serialization.DataContracts.ClassDataContract,int,System.Xml.XmlDictionaryString[]):int:this (FullOpts)
-19 (-3.61 % of base) : 95374.dasm - System.Speech.Internal.SrgsParser.XmlParser:ParseText(System.Speech.Internal.SrgsParser.IElement,System.String,System.String,System.String,float,System.Speech.Internal.SrgsParser.CreateTokenCallback) (FullOpts)
Top method regressions (percentages):
18 (7.00 % of base) : 8964.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
16 (6.67 % of base) : 8949.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
6 (5.45 % of base) : 37489.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
19 (4.00 % of base) : 167335.dasm - System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
27 (3.12 % of base) : 37384.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
16 (2.54 % of base) : 206806.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
5 (2.08 % of base) : 233615.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
15 (1.27 % of base) : 34917.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
44 (0.88 % of base) : 92820.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
2 (0.63 % of base) : 174130.dasm - System.Xml.Xsl.XsltOld.ProcessingInstructionAction:IsProcessingInstructionName(System.String):ubyte (FullOpts)
5 (0.57 % of base) : 214474.dasm - System.Linq.Parallel.AsynchronousChannelMergeEnumerator`1[System.__Canon]:MoveNextSlowPath():ubyte:this (FullOpts)
5 (0.47 % of base) : 195882.dasm - System.Data.ProviderBase.DbConnectionFactory:TryGetConnection(System.Data.Common.DbConnection,System.Threading.Tasks.TaskCompletionSource`1[System.Data.ProviderBase.DbConnectionInternal],System.Data.Common.DbConnectionOptions,System.Data.ProviderBase.DbConnectionInternal,byref):ubyte:this (FullOpts)
2 (0.44 % of base) : 96247.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
9 (0.44 % of base) : 37751.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeText(System.String,System.String):ubyte (FullOpts)
7 (0.38 % of base) : 162339.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
7 (0.38 % of base) : 187109.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
4 (0.38 % of base) : 199636.dasm - System.Data.ProviderBase.DbConnectionFactory:TryGetConnection(System.Data.Common.DbConnection,System.Threading.Tasks.TaskCompletionSource`1[System.Data.ProviderBase.DbConnectionInternal],System.Data.Common.DbConnectionOptions,System.Data.ProviderBase.DbConnectionInternal,byref):ubyte:this (FullOpts)
2 (0.36 % of base) : 208443.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
2 (0.35 % of base) : 36266.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
2 (0.30 % of base) : 208448.dasm - System.Xml.Linq.Extensions+<GetDescendants>d__23`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
Top method improvements (percentages):
-32 (-26.02 % of base) : 127433.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-32 (-24.43 % of base) : 241359.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-18 (-9.73 % of base) : 154259.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
-18 (-9.73 % of base) : 179166.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
-15 (-9.09 % of base) : 4690.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-16 (-8.42 % of base) : 36042.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
-5 (-8.20 % of base) : 137654.dasm - System.Runtime.InteropServices.ComEventsMethod:Remove(System.Runtime.InteropServices.ComEventsMethod,System.Runtime.InteropServices.ComEventsMethod):System.Runtime.InteropServices.ComEventsMethod (FullOpts)
-31 (-7.35 % of base) : 223470.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-31 (-7.35 % of base) : 235329.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-5 (-7.04 % of base) : 208596.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (FullOpts)
-11 (-6.92 % of base) : 135441.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String):this (FullOpts)
-8 (-6.90 % of base) : 152503.dasm - System.Transactions.CheapUnfairReaderWriterLock:EnterWriteLock():this (FullOpts)
-5 (-6.85 % of base) : 175715.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-5 (-6.41 % of base) : 208373.dasm - System.Xml.Linq.XObject:get_BaseUri():System.String:this (FullOpts)
-5 (-5.88 % of base) : 137342.dasm - System.Runtime.InteropServices.ComEventsSink:Remove(System.Runtime.InteropServices.ComEventsSink,System.Runtime.InteropServices.ComEventsSink):System.Runtime.InteropServices.ComEventsSink (FullOpts)
-16 (-5.61 % of base) : 204252.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-35 (-5.58 % of base) : 210848.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-12 (-5.58 % of base) : 209084.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:SymmetricExceptWithSameComparer(System.__Canon[],int):this (FullOpts)
-12 (-5.38 % of base) : 137353.dasm - System.Runtime.InteropServices.ComEventsSink:RemoveHandler(int,System.Object):this (FullOpts)
-13 (-4.96 % of base) : 34223.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
libraries.pmi.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 61662273 (overridden on cmd)
Total bytes of diff: 61660284 (overridden on cmd)
Total bytes of delta: -1989 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
68 : 190557.dasm (1.29 % of base)
51 : 102285.dasm (3.17 % of base)
30 : 205359.dasm (0.79 % of base)
22 : 163816.dasm (1.41 % of base)
22 : 185473.dasm (1.41 % of base)
19 : 208559.dasm (4.32 % of base)
18 : 198219.dasm (0.86 % of base)
15 : 78425.dasm (2.19 % of base)
15 : 208372.dasm (0.90 % of base)
14 : 78429.dasm (2.39 % of base)
14 : 273808.dasm (0.65 % of base)
12 : 292216.dasm (1.41 % of base)
12 : 287496.dasm (1.35 % of base)
9 : 78421.dasm (1.77 % of base)
9 : 305279.dasm (0.14 % of base)
8 : 16799.dasm (1.65 % of base)
7 : 59509.dasm (0.16 % of base)
7 : 59551.dasm (0.16 % of base)
6 : 107802.dasm (2.08 % of base)
6 : 78428.dasm (0.55 % of base)
Top file improvements (bytes):
-114 : 305865.dasm (-7.29 % of base)
-57 : 19363.dasm (-1.60 % of base)
-57 : 19424.dasm (-1.60 % of base)
-46 : 57606.dasm (-1.58 % of base)
-39 : 207692.dasm (-8.16 % of base)
-39 : 274699.dasm (-0.47 % of base)
-38 : 57951.dasm (-2.01 % of base)
-37 : 21313.dasm (-3.83 % of base)
-36 : 270929.dasm (-3.43 % of base)
-33 : 240035.dasm (-3.74 % of base)
-32 : 230348.dasm (-26.23 % of base)
-32 : 240042.dasm (-4.23 % of base)
-32 : 296608.dasm (-24.62 % of base)
-31 : 287865.dasm (-6.90 % of base)
-31 : 284792.dasm (-6.90 % of base)
-24 : 163811.dasm (-0.64 % of base)
-24 : 185468.dasm (-0.64 % of base)
-23 : 219854.dasm (-2.21 % of base)
-22 : 296549.dasm (-0.38 % of base)
-22 : 59421.dasm (-1.34 % of base)
70 total files with Code Size differences (44 improved, 26 regressed), 20 unchanged.
Top method regressions (bytes):
68 (1.29 % of base) : 190557.dasm - System.DirectoryServices.ActiveDirectory.ActiveDirectorySite:GetBridgeheadServers():System.DirectoryServices.ActiveDirectory.ReadOnlyDirectoryServerCollection:this (FullOpts)
51 (3.17 % of base) : 102285.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
30 (0.79 % of base) : 205359.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
22 (1.41 % of base) : 163816.dasm - System.Configuration.ConfigurationElement:ParseLockedAttributes(System.Configuration.ConfigurationValue,int):System.Configuration.ConfigurationLockCollection:this (FullOpts)
22 (1.41 % of base) : 185473.dasm - System.Configuration.ConfigurationElement:ParseLockedAttributes(System.Configuration.ConfigurationValue,int):System.Configuration.ConfigurationLockCollection:this (FullOpts)
19 (4.32 % of base) : 208559.dasm - System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
18 (0.86 % of base) : 198219.dasm - System.Net.Http.Http3RequestStream+<ReadHeadersAsync>d__46:MoveNext():this (FullOpts)
15 (2.19 % of base) : 78425.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getCloseQuote|428_5(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
15 (0.90 % of base) : 208372.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
14 (2.39 % of base) : 78429.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getInterpolationCloseToken|434_2(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
14 (0.65 % of base) : 273808.dasm - System.DirectoryServices.Protocols.LdapSessionOptions:ProcessNotifyConnection(long,long,long,long,long,int,ulong,ulong,int):int:this (FullOpts)
12 (1.35 % of base) : 287496.dasm - System.Net.NetworkInformation.Ping:PingCallback():this (FullOpts)
12 (1.41 % of base) : 292216.dasm - System.UriHelper:UnescapeString(ulong,int,int,ushort[],byref,ushort,ushort,ushort,int,System.UriParser,ubyte):ushort[] (FullOpts)
9 (1.77 % of base) : 78421.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
9 (0.14 % of base) : 305279.dasm - Program:Main(System.String[]):int (FullOpts)
8 (1.65 % of base) : 16799.dasm - System.Xml.XmlDataDocument:OnDataSetRelationsChanging(System.Object,System.ComponentModel.CollectionChangeEventArgs):this (FullOpts)
7 (0.16 % of base) : 59509.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindExtensionMethod(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.MethodGroupResolution:this (FullOpts)
7 (0.16 % of base) : 59551.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetMethodGroupOrLambdaDelegateType(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Nullable`1[System.Collections.Immutable.ImmutableArray`1[ubyte]],System.Nullable`1[System.Collections.Immutable.ImmutableArray`1[ubyte]],System.Nullable`1[ubyte],System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
6 (0.55 % of base) : 78428.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
6 (2.08 % of base) : 107802.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:GetSymbolInfo(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax,System.Threading.CancellationToken):Microsoft.CodeAnalysis.SymbolInfo:this (FullOpts)
Top method improvements (bytes):
-114 (-7.29 % of base) : 305865.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
-57 (-1.60 % of base) : 19363.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-57 (-1.60 % of base) : 19424.dasm - System.Data.RBTree`1[ubyte]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-46 (-1.58 % of base) : 57606.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeBinary(System.String,System.String):ubyte (FullOpts)
-39 (-0.47 % of base) : 274699.dasm - System.Formats.Asn1.WellKnownOids:GetContents(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ubyte] (FullOpts)
-39 (-8.16 % of base) : 207692.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-38 (-2.01 % of base) : 57951.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (FullOpts)
-37 (-3.83 % of base) : 21313.dasm - System.Data.Common.DataAdapter:Fill(System.Data.DataTable[],System.Data.IDataReader,int,int):int:this (FullOpts)
-36 (-3.43 % of base) : 270929.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-33 (-3.74 % of base) : 240035.dasm - ILCompiler.LazyGenericsSupport+Graph`1[System.__Canon]:FindCyclesWorker(ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon],System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]],byref,System.Diagnostics.Stopwatch) (FullOpts)
-32 (-4.23 % of base) : 240042.dasm - ILCompiler.LazyGenericsSupport+Graph`1[ubyte]:FindCyclesWorker(ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte],System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte]],byref,System.Diagnostics.Stopwatch) (FullOpts)
-32 (-24.62 % of base) : 296608.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-32 (-26.23 % of base) : 230348.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-31 (-6.90 % of base) : 287865.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-31 (-6.90 % of base) : 284792.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-24 (-0.64 % of base) : 163811.dasm - System.Configuration.ConfigurationElement:Unmerge(System.Configuration.ConfigurationElement,System.Configuration.ConfigurationElement,int):this (FullOpts)
-24 (-0.64 % of base) : 185468.dasm - System.Configuration.ConfigurationElement:Unmerge(System.Configuration.ConfigurationElement,System.Configuration.ConfigurationElement,int):this (FullOpts)
-23 (-2.21 % of base) : 219854.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportSpecialMapping(System.Type,System.Xml.Serialization.TypeDesc,System.String,int):System.Xml.Serialization.SpecialMapping:this (FullOpts)
-22 (-1.34 % of base) : 59421.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
-22 (-0.38 % of base) : 296549.dasm - System.Globalization.FormatProvider+Number:NumberToStringFormat(byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
Top method regressions (percentages):
19 (4.32 % of base) : 208559.dasm - System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
3 (3.23 % of base) : 211300.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
51 (3.17 % of base) : 102285.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
14 (2.39 % of base) : 78429.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getInterpolationCloseToken|434_2(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
3 (2.34 % of base) : 183486.dasm - System.ComponentModel.TypeConverter+SimplePropertyDescriptor:ResetValue(System.Object):this (FullOpts)
15 (2.19 % of base) : 78425.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getCloseQuote|428_5(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
6 (2.08 % of base) : 107802.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:GetSymbolInfo(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax,System.Threading.CancellationToken):Microsoft.CodeAnalysis.SymbolInfo:this (FullOpts)
9 (1.77 % of base) : 78421.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
8 (1.65 % of base) : 16799.dasm - System.Xml.XmlDataDocument:OnDataSetRelationsChanging(System.Object,System.ComponentModel.CollectionChangeEventArgs):this (FullOpts)
2 (1.61 % of base) : 120090.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:VisitEventStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
2 (1.61 % of base) : 120091.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:VisitPropertyStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
4 (1.57 % of base) : 211630.dasm - System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
12 (1.41 % of base) : 292216.dasm - System.UriHelper:UnescapeString(ulong,int,int,ushort[],byref,ushort,ushort,ushort,int,System.UriParser,ubyte):ushort[] (FullOpts)
22 (1.41 % of base) : 163816.dasm - System.Configuration.ConfigurationElement:ParseLockedAttributes(System.Configuration.ConfigurationValue,int):System.Configuration.ConfigurationLockCollection:this (FullOpts)
22 (1.41 % of base) : 185473.dasm - System.Configuration.ConfigurationElement:ParseLockedAttributes(System.Configuration.ConfigurationValue,int):System.Configuration.ConfigurationLockCollection:this (FullOpts)
12 (1.35 % of base) : 287496.dasm - System.Net.NetworkInformation.Ping:PingCallback():this (FullOpts)
68 (1.29 % of base) : 190557.dasm - System.DirectoryServices.ActiveDirectory.ActiveDirectorySite:GetBridgeheadServers():System.DirectoryServices.ActiveDirectory.ReadOnlyDirectoryServerCollection:this (FullOpts)
3 (1.09 % of base) : 16701.dasm - System.Xml.XmlBoundElement:CloneNode(ubyte):System.Xml.XmlNode:this (FullOpts)
15 (0.90 % of base) : 208372.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
18 (0.86 % of base) : 198219.dasm - System.Net.Http.Http3RequestStream+<ReadHeadersAsync>d__46:MoveNext():this (FullOpts)
Top method improvements (percentages):
-32 (-26.23 % of base) : 230348.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-32 (-24.62 % of base) : 296608.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-13 (-12.87 % of base) : 219391.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-21 (-10.29 % of base) : 102275.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
-15 (-9.38 % of base) : 19879.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-16 (-9.25 % of base) : 250122.dasm - R2RDump.Disassembler:TryParseAbsoluteAddress(System.String,byref,byref,byref):ubyte:this (FullOpts)
-5 (-8.33 % of base) : 129672.dasm - System.Runtime.InteropServices.ComEventsMethod:Remove(System.Runtime.InteropServices.ComEventsMethod,System.Runtime.InteropServices.ComEventsMethod):System.Runtime.InteropServices.ComEventsMethod (FullOpts)
-18 (-8.18 % of base) : 91609.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-39 (-8.16 % of base) : 207692.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-114 (-7.29 % of base) : 305865.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
-8 (-7.21 % of base) : 236472.dasm - System.Transactions.CheapUnfairReaderWriterLock:EnterWriteLock():this (FullOpts)
-31 (-6.90 % of base) : 287865.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-31 (-6.90 % of base) : 284792.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-5 (-6.76 % of base) : 293064.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (FullOpts)
-11 (-6.59 % of base) : 165261.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String):this (FullOpts)
-12 (-6.45 % of base) : 216222.dasm - System.Xml.Xsl.XsltOld.ProcessingInstructionAction:IsProcessingInstructionName(System.String):ubyte (FullOpts)
-5 (-6.17 % of base) : 293040.dasm - System.Xml.Linq.XObject:get_BaseUri():System.String:this (FullOpts)
-5 (-5.95 % of base) : 129652.dasm - System.Runtime.InteropServices.ComEventsSink:Remove(System.Runtime.InteropServices.ComEventsSink,System.Runtime.InteropServices.ComEventsSink):System.Runtime.InteropServices.ComEventsSink (FullOpts)
-18 (-5.61 % of base) : 250123.dasm - R2RDump.Disassembler:TryParseRipRelative(System.String,byref,byref,byref):ubyte:this (FullOpts)
-10 (-5.59 % of base) : 120086.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:VisitMethodStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
libraries_tests.run.windows.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 282113061 (overridden on cmd)
Total bytes of diff: 282103434 (overridden on cmd)
Total bytes of delta: -9627 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
158 : 90055.dasm (1.87 % of base)
136 : 584944.dasm (3.82 % of base)
96 : 604567.dasm (2.29 % of base)
88 : 604571.dasm (2.76 % of base)
62 : 207894.dasm (2.27 % of base)
61 : 608619.dasm (2.84 % of base)
61 : 654596.dasm (2.88 % of base)
59 : 51428.dasm (1.21 % of base)
54 : 626742.dasm (1.65 % of base)
50 : 618214.dasm (8.43 % of base)
50 : 586835.dasm (0.64 % of base)
40 : 356645.dasm (7.48 % of base)
40 : 458699.dasm (1.45 % of base)
39 : 180370.dasm (1.53 % of base)
39 : 107840.dasm (0.80 % of base)
37 : 638839.dasm (5.90 % of base)
36 : 208285.dasm (0.42 % of base)
34 : 173461.dasm (3.66 % of base)
33 : 604570.dasm (0.98 % of base)
32 : 615668.dasm (11.03 % of base)
Top file improvements (bytes):
-157 : 616431.dasm (-2.34 % of base)
-151 : 167712.dasm (-1.80 % of base)
-148 : 633178.dasm (-1.44 % of base)
-136 : 626788.dasm (-1.40 % of base)
-122 : 622182.dasm (-2.84 % of base)
-116 : 620295.dasm (-4.17 % of base)
-105 : 429709.dasm (-16.51 % of base)
-104 : 591457.dasm (-1.16 % of base)
-94 : 599635.dasm (-3.06 % of base)
-80 : 362639.dasm (-5.60 % of base)
-77 : 576740.dasm (-0.81 % of base)
-68 : 256061.dasm (-2.35 % of base)
-62 : 418574.dasm (-0.57 % of base)
-62 : 626762.dasm (-4.03 % of base)
-60 : 605114.dasm (-0.89 % of base)
-58 : 680469.dasm (-4.92 % of base)
-54 : 170063.dasm (-0.53 % of base)
-50 : 638827.dasm (-0.92 % of base)
-49 : 237031.dasm (-0.60 % of base)
-48 : 616389.dasm (-1.75 % of base)
85 total files with Code Size differences (54 improved, 31 regressed), 20 unchanged.
Top method regressions (bytes):
158 (1.87 % of base) : 90055.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:ValidateAttributeUsageAndDecodeWellKnownAttributes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Binder],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,short):Microsoft.CodeAnalysis.WellKnownAttributeData:this (Tier1)
136 (3.82 % of base) : 584944.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
96 (2.29 % of base) : 604567.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,float]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
88 (2.76 % of base) : 604571.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.DateTime]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
62 (2.27 % of base) : 207894.dasm - Xunit.Assert:Equal[System.__Canon](System.__Canon,System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]) (Tier1)
61 (2.84 % of base) : 608619.dasm - System.Text.RegularExpressions.RegexCharClass:DescribeSet(System.String):System.String (Tier0-FullOpts)
61 (2.88 % of base) : 654596.dasm - System.Text.RegularExpressions.RegexCharClass:DescribeSet(System.String):System.String (Tier0-FullOpts)
59 (1.21 % of base) : 51428.dasm - Microsoft.CodeAnalysis.MetadataHelpers:GetInfoForImmediateNamespaceMembers(ubyte,int,System.Collections.Generic.IEnumerable`1[System.Linq.IGrouping`2[System.String,System.Reflection.Metadata.TypeDefinitionHandle]],System.StringComparer,byref,byref) (Tier1)
54 (1.65 % of base) : 626742.dasm - Microsoft.Cci.MetadataWriter:PopulateAssemblyTableRows():this (Tier1)
50 (8.43 % of base) : 618214.dasm - Microsoft.CodeAnalysis.Compilation:get_HasStrongName():ubyte:this (Tier1)
50 (0.64 % of base) : 586835.dasm - System.Text.Json.Serialization.Converters.IListConverter`1[System.__Canon]:OnWriteResume(System.Text.Json.Utf8JsonWriter,System.__Canon,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier1-OSR)
40 (7.48 % of base) : 356645.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
40 (1.45 % of base) : 458699.dasm - Xunit.Assert:Equal[System.__Canon](System.__Canon,System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]) (Tier1)
39 (0.80 % of base) : 107840.dasm - Microsoft.CodeAnalysis.MetadataHelpers:GetInfoForImmediateNamespaceMembers(ubyte,int,System.Collections.Generic.IEnumerable`1[System.Linq.IGrouping`2[System.String,System.Reflection.Metadata.TypeDefinitionHandle]],System.StringComparer,byref,byref) (Tier1)
39 (1.53 % of base) : 180370.dasm - Xunit.Assert:Equal[System.__Canon](System.__Canon,System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]) (Tier1)
37 (5.90 % of base) : 638839.dasm - Microsoft.CodeAnalysis.Compilation:get_IsRealSigned():ubyte:this (Tier1)
36 (0.42 % of base) : 208285.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
34 (3.66 % of base) : 173461.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:WriteConsideredUse(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
33 (0.98 % of base) : 604570.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,double]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
32 (11.03 % of base) : 615668.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
Top method improvements (bytes):
-157 (-2.34 % of base) : 616431.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArgumentsEvaluate(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]:this (Tier1)
-151 (-1.80 % of base) : 167712.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:ValidateAttributeUsageAndDecodeWellKnownAttributes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Binder],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,short):Microsoft.CodeAnalysis.WellKnownAttributeData:this (Tier1)
-148 (-1.44 % of base) : 633178.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArrayInitialization(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundArrayInitialization,ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (Tier1)
-136 (-1.40 % of base) : 626788.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodTableRows(int[]):this (Tier1)
-122 (-2.84 % of base) : 622182.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,Microsoft.CodeAnalysis.CSharp.Syntax.ArgumentSyntax,ubyte,ubyte):this (Tier1)
-116 (-4.17 % of base) : 620295.dasm - Microsoft.Cci.MetadataWriter:PopulateImplMapTableRows():this (Tier1-OSR)
-105 (-16.51 % of base) : 429709.dasm - System.Text.EncodingTable:InternalGetCodePageFromName(System.String):int (Tier1)
-104 (-1.16 % of base) : 591457.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
-94 (-3.06 % of base) : 599635.dasm - System.Text.Json.Serialization.JsonCollectionConverter`2[System.__Canon,ushort]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
-80 (-5.60 % of base) : 362639.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (Tier1)
-77 (-0.81 % of base) : 576740.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
-68 (-2.35 % of base) : 256061.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (Tier1)
-62 (-4.03 % of base) : 626762.dasm - Microsoft.Cci.MetadataWriter:PopulateFieldLayoutTableRows():this (Tier1)
-62 (-0.57 % of base) : 418574.dasm - System.Xml.XmlLoader:LoadNode(ubyte):System.Xml.XmlNode:this (Tier1)
-60 (-0.89 % of base) : 605114.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.Text.Json.Serialization.Tests.StructDictionary`2[System.__Canon,int],System.__Canon,int]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
-58 (-4.92 % of base) : 680469.dasm - System.Xml.XmlDiff.XmlDiffDocument:ReadAttributes(System.Xml.XmlDiff.XmlDiffElement,System.Xml.XmlReader,System.Xml.XmlDiff.PositionInfo):this (Tier1)
-54 (-0.53 % of base) : 170063.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (Tier1)
-50 (-0.92 % of base) : 638827.dasm - Microsoft.CodeAnalysis.Compilation:SerializeToPeStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.RebuildData,System.Func`2[Microsoft.DiaSymReader.ISymWriterMetadataProvider,Microsoft.DiaSymReader.SymUnmanagedWriter],Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Emit.EmitOptions,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte:this (Tier1)
-49 (-0.60 % of base) : 237031.dasm - System.Configuration.BaseConfigurationRecord:ScanSectionsRecursive(System.Configuration.XmlUtil,System.String,ubyte,System.String,System.Configuration.OverrideModeSetting,ubyte):this (Tier1)
-48 (-1.75 % of base) : 616389.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttributes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Binder],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData[],Microsoft.CodeAnalysis.CSharp.BoundAttribute[],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (Tier1)
Top method regressions (percentages):
32 (11.03 % of base) : 615668.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
50 (8.43 % of base) : 618214.dasm - Microsoft.CodeAnalysis.Compilation:get_HasStrongName():ubyte:this (Tier1)
40 (7.48 % of base) : 356645.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
12 (6.45 % of base) : 618312.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
18 (6.43 % of base) : 65519.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
18 (6.43 % of base) : 87029.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
37 (5.90 % of base) : 638839.dasm - Microsoft.CodeAnalysis.Compilation:get_IsRealSigned():ubyte:this (Tier1)
14 (4.93 % of base) : 169945.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
8 (4.49 % of base) : 65512.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
8 (4.49 % of base) : 87022.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
8 (4.42 % of base) : 617043.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
27 (3.99 % of base) : 626770.dasm - Microsoft.Cci.MetadataWriter:PopulateFileTableRows():this (Tier1)
136 (3.82 % of base) : 584944.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
34 (3.66 % of base) : 173461.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:WriteConsideredUse(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
7 (3.23 % of base) : 618095.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyAlgorithmIdAttributeSetting():System.Nullable`1[int]:this (Tier1)
61 (2.88 % of base) : 654596.dasm - System.Text.RegularExpressions.RegexCharClass:DescribeSet(System.String):System.String (Tier0-FullOpts)
15 (2.87 % of base) : 539943.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
61 (2.84 % of base) : 608619.dasm - System.Text.RegularExpressions.RegexCharClass:DescribeSet(System.String):System.String (Tier0-FullOpts)
15 (2.82 % of base) : 312585.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
88 (2.76 % of base) : 604571.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.DateTime]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
Top method improvements (percentages):
-35 (-26.52 % of base) : 524400.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-32 (-26.23 % of base) : 425263.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
-30 (-23.44 % of base) : 471651.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-30 (-23.44 % of base) : 491024.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-105 (-16.51 % of base) : 429709.dasm - System.Text.EncodingTable:InternalGetCodePageFromName(System.String):int (Tier1)
-36 (-14.69 % of base) : 491023.dasm - System.Numerics.BigInteger:CompareTo(System.Numerics.BigInteger):int:this (Tier1)
-14 (-13.73 % of base) : 169018.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedIf():ubyte:this (Tier1)
-14 (-13.73 % of base) : 169019.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedRegion():ubyte:this (Tier1)
-14 (-13.73 % of base) : 84811.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedRegion():ubyte:this (Tier1)
-10 (-10.42 % of base) : 84810.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedIf():ubyte:this (Tier1)
-9 (-9.47 % of base) : 53782.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedIf():ubyte:this (Tier1)
-9 (-9.47 % of base) : 53783.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:HasUnfinishedRegion():ubyte:this (Tier1)
-5 (-6.76 % of base) : 216086.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (Tier1)
-5 (-6.76 % of base) : 490542.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (Tier1)
-5 (-6.76 % of base) : 352758.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (Tier1)
-5 (-6.76 % of base) : 252252.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (Tier1)
-5 (-6.76 % of base) : 332118.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (Tier1)
-5 (-6.76 % of base) : 591859.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (Tier1)
-5 (-6.76 % of base) : 678778.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (Tier1)
-15 (-6.17 % of base) : 30570.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
librariestestsnotieredcompilation.run.windows.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 137067068 (overridden on cmd)
Total bytes of diff: 137066164 (overridden on cmd)
Total bytes of delta: -904 (-0.00 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
101 : 190601.dasm (2.44 % of base)
88 : 14110.dasm (1.47 % of base)
78 : 43999.dasm (2.92 % of base)
78 : 49711.dasm (2.92 % of base)
75 : 190614.dasm (1.96 % of base)
74 : 190609.dasm (1.72 % of base)
73 : 76743.dasm (1.43 % of base)
64 : 190359.dasm (2.02 % of base)
64 : 190649.dasm (2.16 % of base)
61 : 308424.dasm (2.88 % of base)
61 : 281538.dasm (2.92 % of base)
55 : 190331.dasm (1.58 % of base)
53 : 190696.dasm (1.42 % of base)
43 : 191092.dasm (1.40 % of base)
43 : 282146.dasm (0.85 % of base)
42 : 5543.dasm (0.90 % of base)
41 : 190602.dasm (1.55 % of base)
40 : 175377.dasm (1.32 % of base)
40 : 289586.dasm (0.98 % of base)
37 : 150240.dasm (1.62 % of base)
Top file improvements (bytes):
-132 : 190068.dasm (-1.99 % of base)
-98 : 1292.dasm (-6.58 % of base)
-57 : 94724.dasm (-1.60 % of base)
-57 : 94731.dasm (-1.60 % of base)
-46 : 60908.dasm (-1.65 % of base)
-39 : 22331.dasm (-0.47 % of base)
-39 : 63584.dasm (-8.16 % of base)
-38 : 60584.dasm (-2.01 % of base)
-37 : 96728.dasm (-4.07 % of base)
-36 : 101459.dasm (-4.03 % of base)
-32 : 37011.dasm (-2.21 % of base)
-32 : 32119.dasm (-24.62 % of base)
-32 : 99226.dasm (-26.23 % of base)
-31 : 157624.dasm (-6.90 % of base)
-31 : 162787.dasm (-6.90 % of base)
-31 : 6990.dasm (-1.76 % of base)
-31 : 159451.dasm (-6.90 % of base)
-30 : 273383.dasm (-0.96 % of base)
-29 : 126658.dasm (-5.60 % of base)
-29 : 127806.dasm (-5.60 % of base)
75 total files with Code Size differences (39 improved, 36 regressed), 20 unchanged.
Top method regressions (bytes):
101 (2.44 % of base) : 190601.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeDefTableMod():this (FullOpts)
88 (1.47 % of base) : 14110.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
78 (2.92 % of base) : 43999.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
78 (2.92 % of base) : 49711.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
75 (1.96 % of base) : 190614.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeDefTable():this (FullOpts)
74 (1.72 % of base) : 190609.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateFieldDef(System.Reflection.Metadata.MetadataReader,uint,uint,ubyte):this (FullOpts)
73 (1.43 % of base) : 76743.dasm - System.Collections.Specialized.Tests.NameValueCollectionAddStringStringTests:Add():this (FullOpts)
64 (2.02 % of base) : 190359.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeRefTable():this (FullOpts)
64 (2.16 % of base) : 190649.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeRefTableMod():this (FullOpts)
61 (2.88 % of base) : 308424.dasm - System.Text.RegularExpressions.RegexCharClass:DescribeSet(System.String):System.String (FullOpts)
61 (2.92 % of base) : 281538.dasm - System.Text.RegularExpressions.RegexCharClass:DescribeSet(System.String):System.String (FullOpts)
55 (1.58 % of base) : 190331.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateAssemblyRefTable():this (FullOpts)
53 (1.42 % of base) : 190696.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateGenericParamTable():this (FullOpts)
43 (1.40 % of base) : 191092.dasm - System.Reflection.Metadata.Tests.AssemblyReferenceTests:ValidateAssemblyNameForMultipleAssemblyReferences():this (FullOpts)
43 (0.85 % of base) : 282146.dasm - System.Text.RegularExpressions.Tests.RegexUnicodeCharTests+<RegexUnicodeChar>d__1:MoveNext():this (FullOpts)
42 (0.90 % of base) : 5543.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
41 (1.55 % of base) : 190602.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateProperty(System.Reflection.Metadata.MetadataReader,uint,uint,uint,ubyte):this (FullOpts)
40 (0.98 % of base) : 289586.dasm - System.Text.RegularExpressions.Tests.GetGroupNamesTests:GroupNamesAndNumbers(System.String,System.String,System.String[],int[],System.String[],int):this (FullOpts)
40 (1.32 % of base) : 175377.dasm - XPathTests.Common.Utils:XPathNodesetTest(int,System.String,System.String,XPathTests.Common.XPathResult,System.Xml.XmlNamespaceManager,System.String) (FullOpts)
37 (1.62 % of base) : 150240.dasm - System.SpanTests.IndexOfAnyInRangeTests_RefType:NullBound_Throws():this (FullOpts)
Top method improvements (bytes):
-132 (-1.99 % of base) : 190068.dasm - System.Reflection.Metadata.Decoding.Tests.SignatureDecoderTests:SimpleSignatureProviderCoverage():this (FullOpts)
-98 (-6.58 % of base) : 1292.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
-57 (-1.60 % of base) : 94724.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-57 (-1.60 % of base) : 94731.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-46 (-1.65 % of base) : 60908.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeBinary(System.String,System.String):ubyte (FullOpts)
-39 (-0.47 % of base) : 22331.dasm - System.Formats.Asn1.WellKnownOids:GetContents(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ubyte] (FullOpts)
-39 (-8.16 % of base) : 63584.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-38 (-2.01 % of base) : 60584.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (FullOpts)
-37 (-4.07 % of base) : 96728.dasm - System.Data.Common.DataAdapter:Fill(System.Data.DataTable[],System.Data.IDataReader,int,int):int:this (FullOpts)
-36 (-4.03 % of base) : 101459.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-32 (-2.21 % of base) : 37011.dasm - FastExpressionCompiler.LightExpression.ExpressionCompiler+EmittingVisitor:TryEmitNestedLambda(FastExpressionCompiler.LightExpression.LambdaExpression,System.Collections.Generic.IReadOnlyList`1[FastExpressionCompiler.LightExpression.ParameterExpression],System.Reflection.Emit.ILGenerator,byref):ubyte (FullOpts)
-32 (-24.62 % of base) : 32119.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-32 (-26.23 % of base) : 99226.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-31 (-1.76 % of base) : 6990.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttributes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Binder],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData[],Microsoft.CodeAnalysis.CSharp.BoundAttribute[],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
-31 (-6.90 % of base) : 157624.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-31 (-6.90 % of base) : 162787.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-31 (-6.90 % of base) : 159451.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-30 (-0.96 % of base) : 273383.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestSkipPartial(System.String,ubyte) (FullOpts)
-29 (-5.60 % of base) : 126658.dasm - System.Globalization.Tests.DateTimeFormatInfoGetMonthName:GetMonthName_Invoke_ReturnsExpected(System.Globalization.DateTimeFormatInfo,System.String[]):this (FullOpts)
-29 (-5.60 % of base) : 127806.dasm - System.Globalization.Tests.DateTimeFormatInfoGetMonthName:GetMonthName_Invoke_ReturnsExpected(System.Globalization.DateTimeFormatInfo,System.String[]):this (FullOpts)
Top method regressions (percentages):
25 (6.07 % of base) : 22032.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
23 (4.79 % of base) : 196332.dasm - System.Tests.ConvertToStringTests:FromByte() (FullOpts)
23 (4.75 % of base) : 196289.dasm - System.Tests.ConvertToStringTests:FromUInt16Array() (FullOpts)
22 (4.37 % of base) : 196293.dasm - System.Tests.ConvertToStringTests:FromUInt32Array() (FullOpts)
19 (4.32 % of base) : 99235.dasm - System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
32 (4.07 % of base) : 165896.dasm - System.Net.Tests.WebHeaderCollectionTest:Getter_Success():this (FullOpts)
3 (3.23 % of base) : 175723.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
61 (2.92 % of base) : 281538.dasm - System.Text.RegularExpressions.RegexCharClass:DescribeSet(System.String):System.String (FullOpts)
78 (2.92 % of base) : 43999.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
78 (2.92 % of base) : 49711.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
61 (2.88 % of base) : 308424.dasm - System.Text.RegularExpressions.RegexCharClass:DescribeSet(System.String):System.String (FullOpts)
14 (2.85 % of base) : 24076.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getCloseQuote|427_5(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
18 (2.82 % of base) : 35431.dasm - LamarCodeGeneration.Util.ImHashMap:UpdateEntry[System.__Canon,System.__Canon](LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon],LamarCodeGeneration.Util.ImHashMapEntry`2[System.__Canon,System.__Canon]):LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon] (FullOpts)
26 (2.56 % of base) : 221105.dasm - System.Tests.StringTests:IndexerUsingRangeTest() (FullOpts)
26 (2.56 % of base) : 201352.dasm - System.Tests.StringTests:IndexerUsingRangeTest() (FullOpts)
26 (2.56 % of base) : 219796.dasm - System.Tests.StringTests:SubstringUsingRangeTest() (FullOpts)
26 (2.56 % of base) : 200565.dasm - System.Tests.StringTests:SubstringUsingRangeTest() (FullOpts)
4 (2.48 % of base) : 180611.dasm - System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
101 (2.44 % of base) : 190601.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeDefTableMod():this (FullOpts)
4 (2.44 % of base) : 183307.dasm - OLEDB.Test.ModuleCore.CVariation:Execute():int:this (FullOpts)
Top method improvements (percentages):
-32 (-26.23 % of base) : 99226.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-32 (-24.62 % of base) : 32119.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-15 (-9.38 % of base) : 95810.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-18 (-8.22 % of base) : 45806.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-39 (-8.16 % of base) : 63584.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-17 (-7.14 % of base) : 92003.dasm - System.Configuration.BaseConfigurationRecord:FindFactoryRecord(System.String,ubyte,byref):System.Configuration.FactoryRecord:this (FullOpts)
-31 (-6.90 % of base) : 157624.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-31 (-6.90 % of base) : 162787.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-31 (-6.90 % of base) : 159451.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-5 (-6.76 % of base) : 762.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (FullOpts)
-98 (-6.58 % of base) : 1292.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
-5 (-6.17 % of base) : 64698.dasm - System.Xml.Linq.XObject:get_BaseUri():System.String:this (FullOpts)
-13 (-5.94 % of base) : 7562.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-29 (-5.60 % of base) : 126658.dasm - System.Globalization.Tests.DateTimeFormatInfoGetMonthName:GetMonthName_Invoke_ReturnsExpected(System.Globalization.DateTimeFormatInfo,System.String[]):this (FullOpts)
-29 (-5.60 % of base) : 127806.dasm - System.Globalization.Tests.DateTimeFormatInfoGetMonthName:GetMonthName_Invoke_ReturnsExpected(System.Globalization.DateTimeFormatInfo,System.String[]):this (FullOpts)
-5 (-5.49 % of base) : 17170.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
-28 (-5.42 % of base) : 126782.dasm - System.Globalization.Tests.DateTimeFormatInfoGetAbbreviatedMonthName:GetAbbreviatedMonthName_Invoke_ReturnsExpected(System.Globalization.DateTimeFormatInfo,System.String[]):this (FullOpts)
-28 (-5.42 % of base) : 127373.dasm - System.Globalization.Tests.DateTimeFormatInfoGetAbbreviatedMonthName:GetAbbreviatedMonthName_Invoke_ReturnsExpected(System.Globalization.DateTimeFormatInfo,System.String[]):this (FullOpts)
-15 (-5.23 % of base) : 308290.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-12 (-5.00 % of base) : 34533.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
realworld.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 14130922 (overridden on cmd)
Total bytes of diff: 14130707 (overridden on cmd)
Total bytes of delta: -215 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
32 : 12919.dasm (0.75 % of base)
30 : 17033.dasm (0.84 % of base)
23 : 25090.dasm (0.42 % of base)
21 : 20018.dasm (2.11 % of base)
20 : 20001.dasm (1.83 % of base)
11 : 20019.dasm (2.27 % of base)
7 : 26197.dasm (0.18 % of base)
4 : 19981.dasm (0.76 % of base)
3 : 8955.dasm (0.29 % of base)
2 : 5276.dasm (0.38 % of base)
Top file improvements (bytes):
-102 : 16480.dasm (-3.57 % of base)
-49 : 21005.dasm (-1.67 % of base)
-21 : 18619.dasm (-2.64 % of base)
-18 : 22608.dasm (-8.18 % of base)
-15 : 22799.dasm (-0.53 % of base)
-15 : 20191.dasm (-1.72 % of base)
-15 : 21852.dasm (-0.96 % of base)
-14 : 34755.dasm (-0.46 % of base)
-13 : 402.dasm (-4.96 % of base)
-12 : 21296.dasm (-4.92 % of base)
-10 : 24021.dasm (-0.41 % of base)
-7 : 35609.dasm (-0.52 % of base)
-6 : 1723.dasm (-0.41 % of base)
-6 : 919.dasm (-0.08 % of base)
-5 : 21070.dasm (-0.53 % of base)
-5 : 22381.dasm (-0.52 % of base)
-5 : 27690.dasm (-1.36 % of base)
-5 : 19260.dasm (-0.48 % of base)
-5 : 21066.dasm (-0.25 % of base)
-5 : 27465.dasm (-0.97 % of base)
40 total files with Code Size differences (30 improved, 10 regressed), 9 unchanged.
Top method regressions (bytes):
32 (0.75 % of base) : 12919.dasm - FSharp.Compiler.CheckExpressions:TcRecdExpr(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`5[FSharp.Compiler.Syntax.SynType,FSharp.Compiler.Syntax.SynExpr,FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Position]]],FSharp.Compiler.Text.Range]],Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.Syntax.SynExpr,System.Tuple`2[FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Position]]]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExprRecordField],FSharp.Compiler.Text.Range):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
30 (0.84 % of base) : 17033.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyInto[float,float,float](byref,byref,byref,System.Func`4[int,float,float,float]) (FullOpts)
23 (0.42 % of base) : 25090.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
21 (2.11 % of base) : 20018.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
20 (1.83 % of base) : 20001.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
11 (2.27 % of base) : 20019.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getInterpolationCloseToken|434_2(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
7 (0.18 % of base) : 26197.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindExtensionMethod(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.MethodGroupResolution:this (FullOpts)
4 (0.76 % of base) : 19981.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
3 (0.29 % of base) : 8955.dasm - FSharp.Compiler.MethodCalls:BuildILMethInfoCall(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,FSharp.Compiler.Text.Range,ubyte,FSharp.Compiler.Infos+ILMethInfo,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+TType] (FullOpts)
2 (0.38 % of base) : 5276.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
Top method improvements (bytes):
-102 (-3.57 % of base) : 16480.dasm - Microsoft.ML.Data.SchemaDefinition:Create(System.Type,int):Microsoft.ML.Data.SchemaDefinition (FullOpts)
-49 (-1.67 % of base) : 21005.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
-21 (-2.64 % of base) : 18619.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
-18 (-8.18 % of base) : 22608.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-15 (-0.96 % of base) : 21852.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
-15 (-0.53 % of base) : 22799.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-15 (-1.72 % of base) : 20191.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-14 (-0.46 % of base) : 34755.dasm - System.Management.Automation.Adapter:FindBestMethodImpl(System.Management.Automation.MethodInformation[],System.Management.Automation.PSMethodInvocationConstraints,ubyte,System.Object[],byref,byref,byref):System.Management.Automation.MethodInformation (FullOpts)
-13 (-4.96 % of base) : 402.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-12 (-4.92 % of base) : 21296.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-10 (-0.41 % of base) : 24021.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-7 (-0.52 % of base) : 35609.dasm - System.Management.Automation.PowerShell:CoreInvoke[System.__Canon,System.__Canon](System.Management.Automation.PSDataCollection`1[System.__Canon],System.Management.Automation.PSDataCollection`1[System.__Canon],System.Management.Automation.PSInvocationSettings):this (FullOpts)
-6 (-0.08 % of base) : 919.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-6 (-0.41 % of base) : 1723.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (FullOpts)
-5 (-0.25 % of base) : 21066.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics:FromOptions(Microsoft.CodeAnalysis.CSharp.CSharpCompilation):Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics (FullOpts)
-5 (-0.97 % of base) : 27465.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:FindLocalFunction(Microsoft.CodeAnalysis.CSharp.Syntax.LocalFunctionStatementSyntax,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Symbols.LocalFunctionSymbol (FullOpts)
-5 (-0.53 % of base) : 21070.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-5 (-0.52 % of base) : 22381.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceModuleSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-5 (-0.48 % of base) : 19260.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
-5 (-0.98 % of base) : 28642.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+NumericValueSet`2[int,Microsoft.CodeAnalysis.CSharp.ValueSetFactory+IntTC]:Union(Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]):Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]:this (FullOpts)
Top method regressions (percentages):
11 (2.27 % of base) : 20019.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getInterpolationCloseToken|434_2(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
21 (2.11 % of base) : 20018.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
20 (1.83 % of base) : 20001.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
30 (0.84 % of base) : 17033.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyInto[float,float,float](byref,byref,byref,System.Func`4[int,float,float,float]) (FullOpts)
4 (0.76 % of base) : 19981.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
32 (0.75 % of base) : 12919.dasm - FSharp.Compiler.CheckExpressions:TcRecdExpr(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`5[FSharp.Compiler.Syntax.SynType,FSharp.Compiler.Syntax.SynExpr,FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Position]]],FSharp.Compiler.Text.Range]],Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.Syntax.SynExpr,System.Tuple`2[FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Position]]]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExprRecordField],FSharp.Compiler.Text.Range):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
23 (0.42 % of base) : 25090.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
2 (0.38 % of base) : 5276.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
3 (0.29 % of base) : 8955.dasm - FSharp.Compiler.MethodCalls:BuildILMethInfoCall(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,FSharp.Compiler.Text.Range,ubyte,FSharp.Compiler.Infos+ILMethInfo,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+TType] (FullOpts)
7 (0.18 % of base) : 26197.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindExtensionMethod(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.MethodGroupResolution:this (FullOpts)
Top method improvements (percentages):
-18 (-8.18 % of base) : 22608.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-13 (-4.96 % of base) : 402.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-12 (-4.92 % of base) : 21296.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-102 (-3.57 % of base) : 16480.dasm - Microsoft.ML.Data.SchemaDefinition:Create(System.Type,int):Microsoft.ML.Data.SchemaDefinition (FullOpts)
-4 (-2.78 % of base) : 18101.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-21 (-2.64 % of base) : 18619.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
-15 (-1.72 % of base) : 20191.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-49 (-1.67 % of base) : 21005.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
-5 (-1.36 % of base) : 27690.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ResetStack():this (FullOpts)
-2 (-1.32 % of base) : 3155.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (FullOpts)
-5 (-1.24 % of base) : 7499.dasm - System.Xml.Linq.XContainer+<GetDescendants>d__38:MoveNext():ubyte:this (FullOpts)
-2 (-1.11 % of base) : 660.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-5 (-0.98 % of base) : 28642.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+NumericValueSet`2[int,Microsoft.CodeAnalysis.CSharp.ValueSetFactory+IntTC]:Union(Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]):Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]:this (FullOpts)
-5 (-0.97 % of base) : 27465.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:FindLocalFunction(Microsoft.CodeAnalysis.CSharp.Syntax.LocalFunctionStatementSyntax,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Symbols.LocalFunctionSymbol (FullOpts)
-15 (-0.96 % of base) : 21852.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
-3 (-0.73 % of base) : 31343.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
-1 (-0.59 % of base) : 27583.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsFixedStatementExpression(Microsoft.CodeAnalysis.SyntaxNode):ubyte (FullOpts)
-15 (-0.53 % of base) : 22799.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-5 (-0.53 % of base) : 21070.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-5 (-0.52 % of base) : 22381.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceModuleSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
smoke_tests.nativeaot.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 5083011 (overridden on cmd)
Total bytes of diff: 5082953 (overridden on cmd)
Total bytes of delta: -58 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
27 : 22931.dasm (3.16 % of base)
27 : 17671.dasm (3.16 % of base)
27 : 20271.dasm (3.16 % of base)
27 : 2563.dasm (3.16 % of base)
27 : 8322.dasm (3.16 % of base)
16 : 14349.dasm (1.40 % of base)
16 : 8632.dasm (1.40 % of base)
8 : 17188.dasm (1.84 % of base)
8 : 19865.dasm (1.84 % of base)
8 : 2140.dasm (1.84 % of base)
8 : 6725.dasm (1.84 % of base)
8 : 22506.dasm (1.84 % of base)
Top file improvements (bytes):
-19 : 12831.dasm (-1.03 % of base)
-17 : 9762.dasm (-1.85 % of base)
-16 : 4212.dasm (-1.73 % of base)
-16 : 7362.dasm (-8.47 % of base)
-16 : 12457.dasm (-8.47 % of base)
-13 : 1149.dasm (-4.98 % of base)
-13 : 21670.dasm (-4.98 % of base)
-13 : 4408.dasm (-4.98 % of base)
-13 : 16313.dasm (-4.98 % of base)
-13 : 18943.dasm (-4.98 % of base)
-9 : 31818.dasm (-7.44 % of base)
-7 : 7113.dasm (-0.36 % of base)
-6 : 11501.dasm (-0.56 % of base)
-6 : 16279.dasm (-0.08 % of base)
-6 : 18958.dasm (-0.08 % of base)
-6 : 21613.dasm (-0.08 % of base)
-6 : 1120.dasm (-0.08 % of base)
-6 : 4381.dasm (-0.08 % of base)
-4 : 19742.dasm (-2.90 % of base)
-4 : 2061.dasm (-2.90 % of base)
41 total files with Code Size differences (29 improved, 12 regressed), 14 unchanged.
Top method regressions (bytes):
27 (3.16 % of base) : 22931.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
27 (3.16 % of base) : 17671.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
27 (3.16 % of base) : 20271.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
27 (3.16 % of base) : 2563.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
27 (3.16 % of base) : 8322.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
16 (1.40 % of base) : 14349.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
16 (1.40 % of base) : 8632.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
8 (1.84 % of base) : 17188.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
8 (1.84 % of base) : 19865.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
8 (1.84 % of base) : 2140.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
8 (1.84 % of base) : 6725.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
8 (1.84 % of base) : 22506.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
Top method improvements (bytes):
-19 (-1.03 % of base) : 12831.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:FindMatchingInterfaceSlot(Internal.Runtime.TypeLoader.NativeFormatModuleInfo,Internal.NativeFormat.NativeReader,byref,byref,Internal.TypeSystem.InstantiatedMethod,Internal.TypeSystem.DefType,ubyte,ubyte):Internal.TypeSystem.InstantiatedMethod (FullOpts)
-17 (-1.85 % of base) : 9762.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:GetMethodImpl(System.String,int,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (FullOpts)
-16 (-8.47 % of base) : 7362.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
-16 (-8.47 % of base) : 12457.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
-16 (-1.73 % of base) : 4212.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:GetMethodImpl(System.String,int,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (FullOpts)
-13 (-4.98 % of base) : 1149.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-13 (-4.98 % of base) : 21670.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-13 (-4.98 % of base) : 4408.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-13 (-4.98 % of base) : 16313.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-13 (-4.98 % of base) : 18943.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-9 (-7.44 % of base) : 31818.dasm - FinalizeTest:Run():int (FullOpts)
-7 (-0.36 % of base) : 7113.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:FindMatchingInterfaceSlot(Internal.Runtime.TypeLoader.NativeFormatModuleInfo,Internal.NativeFormat.NativeReader,byref,byref,Internal.TypeSystem.InstantiatedMethod,Internal.TypeSystem.DefType,ubyte,ubyte):Internal.TypeSystem.InstantiatedMethod (FullOpts)
-6 (-0.56 % of base) : 11501.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileStringSwitchExpression(System.Linq.Expressions.SwitchExpression):this (FullOpts)
-6 (-0.08 % of base) : 16279.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-6 (-0.08 % of base) : 18958.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-6 (-0.08 % of base) : 21613.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-6 (-0.08 % of base) : 1120.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-6 (-0.08 % of base) : 4381.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-4 (-1.90 % of base) : 6476.dasm - System.Diagnostics.NtProcessManager:GetProcessInfos(System.Diagnostics.PerformanceCounterLib):System.Diagnostics.ProcessInfo[] (FullOpts)
-4 (-2.90 % of base) : 19742.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
Top method regressions (percentages):
27 (3.16 % of base) : 22931.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
27 (3.16 % of base) : 17671.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
27 (3.16 % of base) : 20271.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
27 (3.16 % of base) : 2563.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
27 (3.16 % of base) : 8322.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
8 (1.84 % of base) : 17188.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
8 (1.84 % of base) : 19865.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
8 (1.84 % of base) : 2140.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
8 (1.84 % of base) : 6725.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
8 (1.84 % of base) : 22506.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
16 (1.40 % of base) : 14349.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
16 (1.40 % of base) : 8632.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
Top method improvements (percentages):
-16 (-8.47 % of base) : 7362.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
-16 (-8.47 % of base) : 12457.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
-9 (-7.44 % of base) : 31818.dasm - FinalizeTest:Run():int (FullOpts)
-13 (-4.98 % of base) : 1149.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-13 (-4.98 % of base) : 21670.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-13 (-4.98 % of base) : 4408.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-13 (-4.98 % of base) : 16313.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-13 (-4.98 % of base) : 18943.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-4 (-2.90 % of base) : 19742.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-4 (-2.90 % of base) : 2061.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-4 (-2.90 % of base) : 6404.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-4 (-2.90 % of base) : 17093.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-4 (-2.90 % of base) : 22372.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-4 (-1.90 % of base) : 6476.dasm - System.Diagnostics.NtProcessManager:GetProcessInfos(System.Diagnostics.PerformanceCounterLib):System.Diagnostics.ProcessInfo[] (FullOpts)
-17 (-1.85 % of base) : 9762.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:GetMethodImpl(System.String,int,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (FullOpts)
-4 (-1.75 % of base) : 6180.dasm - System.Globalization.DateTimeFormatInfo:get_DateTimeOffsetPattern():System.String:this (FullOpts)
-4 (-1.75 % of base) : 11939.dasm - System.Globalization.DateTimeFormatInfo:get_DateTimeOffsetPattern():System.String:this (FullOpts)
-16 (-1.73 % of base) : 4212.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:GetMethodImpl(System.String,int,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (FullOpts)
-2 (-1.32 % of base) : 3893.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (FullOpts)
-2 (-1.32 % of base) : 970.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (FullOpts)